diff --git a/.gitignore b/.gitignore index 5eefc994..d3f68c9b 100644 --- a/.gitignore +++ b/.gitignore @@ -1,10 +1,7 @@ .idea/* .venv/ *.mov -*.json *.pyc -*.mp4 -*.png *.jpg .DS_Store *.o @@ -43,6 +40,7 @@ UserInterface.xcuserstate !default.mode2v3 *.perspectivev3 !default.perspectivev3 +.vscode profile *.moved-aside DerivedData @@ -53,3 +51,18 @@ Pods !Podfile !Podfile.lock !Manifest.lock + +bmf_lite/android/.idea/ +bmf_lite/android/.gradle +bmf_lite/android/app/build +bmf_lite/android/.gradle +bmf_lite/android/.idea +bmf_lite/android/lite/.cxx +bmf_lite/android/lite/build +bmf_lite/android/local.properties +bmf_lite/build_android +bmf_lite/demo/ios_demo/bmf_demo/bmf_demo.xcodeproj/xcshareddata/xcschemes/bmf_demo.xcscheme + +*.air +bmf_lite/build_ios/ +bmf_lite/demo/ios_demo/bmf_demo/bmf_demo.xcodeproj/xcshareddata/ diff --git a/bmf_lite/.gitignore b/bmf_lite/.gitignore new file mode 100644 index 00000000..d5925943 --- /dev/null +++ b/bmf_lite/.gitignore @@ -0,0 +1,5 @@ +build_ohos/ + +output/ + +adb_run_cmd.txt diff --git a/bmf_lite/CMakeLists.txt b/bmf_lite/CMakeLists.txt new file mode 100644 index 00000000..6db76831 --- /dev/null +++ b/bmf_lite/CMakeLists.txt @@ -0,0 +1,31 @@ +cmake_minimum_required(VERSION 3.5 FATAL_ERROR) + +cmake_policy(SET CMP0077 NEW) + +project(HML CXX C) + +### general settings +set(CMAKE_CXX_STANDARD 20) + +set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/lib) +set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/lib) +set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/bin) + +### options + +option(BMF_LITE_ENABLE_CVPIXELBUFFER "Enable build CVpixelBuffer" OFF) +option(BMF_LITE_ENABLE_METALBUFFER "Enable build Metal texture buffer" OFF) +option(BMF_LITE_ENABLE_OPENGLTEXTUREBUFFER "Enable build opengl texture buffer" OFF) +option(BMF_LITE_ENABLE_CPUMEMORYBUFFER "Enable build cpu memory buffer" OFF) +option(BMF_LITE_ENABLE_BUFFER_TRANSFORM "Enable build buffer transform" OFF) + +option(BMF_LITE_ENABLE_SUPER_RESOLUTION "Enable build super resolution" OFF) +option(BMF_LITE_ENABLE_DENOISE "Enable build denoise" OFF) +option(BMF_LITE_ENABLE_CANNY "Enable build canny" OFF) +option(BMF_LITE_ENABLE_TEX_GEN_PIC "Enable build tex_gen_pic" OFF) + +option(BMF_ENABLE_LOG "Enable log" ON) + +add_subdirectory(src) + +add_subdirectory(demo) \ No newline at end of file diff --git a/bmf_lite/README.md b/bmf_lite/README.md new file mode 100644 index 00000000..19e201cf --- /dev/null +++ b/bmf_lite/README.md @@ -0,0 +1,174 @@ +# 1. Building Android Libraries And Running + +### Preliminaries + +a. Install cmake 3.22.1 in Android Studio SDK Manager. + +> Check cmake version with `cmake -version` and make sure cmake version is not less than 3.20.4. + +b. Install build tools with + +> Install the NDK and jdk. +> The NDK version is greater than or equal to r23. +> The JDK version is greater than or equal to 11. + +c. Steps to install QNN SDK + +> Register Qualcomm ID: https://myaccount.qualcomm.com/login. + +> Download Qualcomm Package Manager: https://qpm.qualcomm.com/#/main/tools/details/QPM3. + +> Use Qualcomm Package Manager to extract Quaclomm QNN SDK: https://qpm.qualcomm.com/#/main/tools/details/qualcomm_neural_processing_sdk. + +#### + + 1. qpm-cli --login + 2. qpm-cli --license-activate qualcomm_neural_processing_sdk + 3. qpm-cli --extract qualcomm_neural_processing_sdk + 4. Get header files from include/QNN, copy include/QNN to bmf_lite/src/algorithm/contrib_modules/QnnControlNet/QNN + 5. Get libQnnSystem.so libQnnHtp.so libQnnHtpV75Stub.so from lib/aarch64-android, copy them to bmf_lite/android/app/SRC/main/assets folder + 6. Get libQnnHtpV75Skel.so from lib/hexagon-v75/unsigned, copy them to bmf_lite/android/app/SRC/main/assets folder + +> Download QNN ControlNet Models: https://aihub.qualcomm.com/models/controlnet_quantized. + +> Rename the 4 downloaded model files, i.e. unet.serialized.bin, text_encoder.serialized.bin, vae_decoder.serialized.bin, controlnet.serialized. bin, copy them to the mobile phone's /data/local/TMP/ControlNetData folder. + +> Copy the downloaded configuration file(vocab.txt and merges.txt) to the mobile phone /data/local/tmp/ControlNetData folder. + +### Install + +#### Build modules only + +> ./build_android.sh +> Cpp library output path: bmf_lite/build_android/lib. +> Cpp-test-program output path: bmf_lite/build_android/bin. +> Download [bmf_lite_files.tar.gz](https://github.com/BabitMF/bmf/releases/download/files/bmf_lite_files.tar.gz), extract test.jpg and test-canny.png to demo/test_data. +> Cpp-test-program need android device. +> If you need to run the vincennes chart sample through the cpp test program, you need the 8gen3 chip. In addition, you need to add the dependent resource path and the model library path in the cpp test program (similar to the method in the app code). +> Run-cpp-test-program: bash ci/test_android.sh xxx-device. + +#### Build bmf_lite release aar only + +> cd android +> ./gradlew :lite:assembleRelease +> Arr library output path: bmf_lite/android/lite/build/outputs/arr. + +### Run Android App + +> Open the Android folder using Android studio. +> Download [bmf_lite_files.tar.gz](https://github.com/BabitMF/bmf/releases/download/files/bmf_lite_files.tar.gz), extract test.mp4 to bmf_lite/android/app/SRC/main/assets. +> Copy test-canny.png extracted above to the device album. +> Execute the android studio Run button. + +### App introduction + +Android has prepared three demo examples to demonstrate our Android Bmf framework, including super-resolution, denoising and Vincenzo graphics. Through these examples, we show how to engineering media algorithms into bmf-lite dynamic library, involving GPU processing, rendering, playback and other modules. After running the app, you can see three buttons corresponding to hyperscore, noise reduction and Venison chart. Click in to see the respective effects. + +> #### Super Resolution + +sr + +> #### Denoise + +sr + +> #### Vincent diagram + +sr + +# 2. Building iOS Libraries And Running + +### Preliminaries + +1. Install XCode And CMake + +``` +brew install cmake +``` + +> Check cmake version with `cmake -version` and make sure cmake version is not less than 3.20.4. + +### Build bmf_lite static library + +``` +bash build_ios.sh +``` + +### Run iOS app + +Open the bmf_demo.xcodeproj Using XCode, which in folder iOS/bmf_demo. + +#### Known Issues + +We have prepared four demonstration examples to showcase our framework's capabilities, including super-resolution, denoising, Canny, and Stable diffusion model. Specifically, super-resolution, denoising, and Canny showcase the integration of algorithmic modules into the bmflite dynamic library, while diffusers illustrates how to leverage the framework's capabilities to integrate and manage modules without modifying the bmflite framework.To execute diffusers, it is necessary to have iOS certificates that support 'Extended Virtual Addressing' and 'Increased Memory Limit'. If you run other cases, you can remove these capability. + +> #### Super Resolution +> +> In this example, we have implemented a super resolution algorithm as a BMF module, showcasing a BMF pipeline that combines decoding, super resolution and rendering. +> Download [bmf_lite_files.tar.gz](https://github.com/BabitMF/bmf/releases/download/files/bmf_lite_files.tar.gz), extract test.mp4 and put it into XCode to view the effect. + +sr + +> #### Denoise +> +> This example implements the denoise algorithm as a BMF module, showcasing a BMF pipeline that combines video capture, noise reduction and rendering. + +sr + +> #### Real Time Canny +> +> In this simple demonstration example, we demonstrate the implementation of a Canny algorithm module using Apple MPS, showcasing a BMF pipeline that combines video capture, canny and rendering. + +sr + +> #### CoreML Diffusers +> +> This case illustrates the process of integrating an external algorithm module into the bmf_lite framework and managing its execution. To execute this case, it is necessary to have iOS certificates that support 'Extended Virtual Addressing' and 'Increased Memory Limit'. This model demands high performance, requiring the iOS system version to be 17 or above, running on the Neural Engine and CPU, and consuming significant memory. + +- Kill the app when you are not using. +- Disconnect from XCode during runtime. +- Reboot your device. +- Avoid testing multiple times in a short period of time. + +sr + +# 3. Building OHOS Libraries and running the sample + +### Preliminaries + +Before you start, make sure to get the following requirements ready. + +1. Register on Huawei developer platform to become a developer. + https://developer.huawei.com/consumer/en/doc/start/registration-and-verification-0000001053628148 + +2. Download and install DevEco-Studio. + https://developer.huawei.com/consumer/cn/download/ + https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/ide-software-install-0000001558013317-V5 + +3. Install the OpenHarmony SDK through DevEco-Studio. + +4. Install CMake 3.15 or newer. + +5. Download [bmf_lite_files.tar.gz](https://github.com/BabitMF/bmf/releases/download/files/bmf_lite_files.tar.gz), extract test.mp4 and put it into `ohos/entry/src/main/resources/rawfile`. + +6. A mobile device running HarmonyOS, or an emulator in DevEco-Studio. + +### Building OHOS Libraries + +1. Open the `bmf_lite/ohos` project in DevEco-Studio. + +2. Select the `bmf_lite` item with an `H` icon from the `Run configurations`. + +3. Click the green run button. + +### Running the sample + +1. Open the `bmf_lite/ohos` project in DevEco-Studio. + +2. Select the `entry` item with a yellow square from the `Run configurations`. + +3. Click the green run button. + +4. Click the `Open signing configs` link in the Run terminal, and log in with a Huawei account on the popped up website. + +5. Click the green run button again. diff --git a/bmf_lite/android/app/build.gradle b/bmf_lite/android/app/build.gradle new file mode 100644 index 00000000..6a9ea73d --- /dev/null +++ b/bmf_lite/android/app/build.gradle @@ -0,0 +1,57 @@ +plugins { + id 'com.android.application' +} + + +android { + compileSdk 31 + + defaultConfig { + minSdk 24 + targetSdk 28 + versionCode 1 + versionName "1.0" + ndk { + ndkVersion "21.1.6352462" + } + } + + buildTypes { + release { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' + } + } + compileOptions { + sourceCompatibility JavaVersion.VERSION_1_8 + targetCompatibility JavaVersion.VERSION_1_8 + } + packagingOptions { + pickFirst 'lib/*/libbmf_lite.so' + pickFirst 'lib/*/libbmf_module_sdk.so' + pickFirst 'lib/*/libbytenn.so' + doNotStrip '*.so' + } +} + +dependencies { + implementation project(":lite") + implementation "com.google.code.gson:gson:2.8.5" + implementation 'androidx.appcompat:appcompat:1.4.1' + implementation 'com.google.android.material:material:1.5.0' + implementation 'androidx.constraintlayout:constraintlayout:2.1.3' + implementation 'com.google.code.gson:gson:2.8.5' + testImplementation 'junit:junit:4.13.2' + androidTestImplementation 'androidx.test.ext:junit:1.1.3' + androidTestImplementation 'androidx.test:runner:1.4.0' + androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0' + + implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.3.60" + implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.5.0' + implementation 'androidx.lifecycle:lifecycle-extensions:2.0.0' + implementation 'androidx.appcompat:appcompat:1.1.0' + implementation 'androidx.preference:preference:1.1.0' + implementation 'androidx.activity:activity-ktx:1.1.0' + implementation "androidx.core:core-ktx:1.2.0" + +} \ No newline at end of file diff --git a/bmf_lite/android/app/src/androidTest/AndroidManifest.xml b/bmf_lite/android/app/src/androidTest/AndroidManifest.xml new file mode 100644 index 00000000..a6a13f74 --- /dev/null +++ b/bmf_lite/android/app/src/androidTest/AndroidManifest.xml @@ -0,0 +1,10 @@ + + + + + + \ No newline at end of file diff --git a/bmf_lite/android/app/src/main/AndroidManifest.xml b/bmf_lite/android/app/src/main/AndroidManifest.xml new file mode 100644 index 00000000..25248596 --- /dev/null +++ b/bmf_lite/android/app/src/main/AndroidManifest.xml @@ -0,0 +1,66 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/bmf_lite/android/app/src/main/java/com/bmf/lite/app/algorithm/AlgorithmRenderer.java b/bmf_lite/android/app/src/main/java/com/bmf/lite/app/algorithm/AlgorithmRenderer.java new file mode 100644 index 00000000..4accc483 --- /dev/null +++ b/bmf_lite/android/app/src/main/java/com/bmf/lite/app/algorithm/AlgorithmRenderer.java @@ -0,0 +1,604 @@ +package com.bmf.lite.app.algorithm; + +import android.graphics.SurfaceTexture; +import android.opengl.GLES20; +import android.opengl.GLUtils; +import android.util.Log; + +import com.bmf.lite.VideoFrameOutput; +import com.bmf.lite.app.render.OesTo2dTex; +import com.bmf.lite.app.render.SplitScreenRender; +import com.bmf.lite.app.render.TextureUtils; +import com.bmf.lite.AlgorithmInterface; +import com.bmf.lite.VideoFrame; +import com.bmf.lite.Param; +import android.graphics.Bitmap; + +import java.security.SecureRandom; +import com.bmf.lite.common.ErrorCode; + +public class AlgorithmRenderer { + public enum ALG_TYPE { + NORMAL, + SUPERRESOLUTION, + DENOISE, + TEXGENIMG, + } + + public enum RENDER_MODE { + NORMAL, + LEFT_RIGHT_SPLIT_SCREEN, + UP_DOWN_SPLIT_SCREEN, + } + + private String TAG = "bmf-demo-app AlgRenderer"; + private ALG_TYPE algType = ALG_TYPE.SUPERRESOLUTION; + private int videoWidth = 720; + private int videoHeight = 1280; + private int wndWidth = -1; + private int wndHeight = -1; + private int lastVideoWidth = -1; + private int lastVideoHeight = -1; + private int lastWndWidth = -1; + private int lastWndHeight = -1; + private boolean initStatus = false; + private OesTo2dTex oesTo2dTex = null; + private SplitScreenRender screenRender = null; + private boolean textureInitStatus = false; + private int inputTextureId = -1; + private int oesTo2DTextureId = -1; + private int algOutputTextureId = -1; // demo create + private int algReturnTextureId = -1; // alg create + private SurfaceTexture surfaceTexture = null; + boolean isOesTexture = true; + int algTypeIndex = 0; + AlgorithmInterface algorithmInterface = null; + Param initParam = null; + VideoFrame videoFrame = null; + Param processParam = null; + boolean resolutionChangeSts = false; + boolean algInitStatus = false; + boolean isDumpFrame = false; + private final int DUMP_FRMAE_INDEX = 40; + int frameIndex = 0; + private int displayDividerStatus = 1; + private float splitScreenRatio = 0.5f; + private int renderStatus = -1; + private RENDER_MODE renderOnScreenMode = RENDER_MODE.NORMAL; + Bitmap bitmapFrame = null; + Bitmap lastBitmapFrame = null; + + String algRenderParam = ""; + int algProgressSts = 0; + + String[] algDependParams = null; + + private float[] videoDecodeMatrix = { + 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, + 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, + }; + public AlgorithmRenderer() {} + public void setOesStatus(boolean isOes) { + isOesTexture = isOes; + renderStatus = 0; + } + public void switchAlgorithm(int algTypeId) { + if (algTypeIndex != algTypeId) { + closeAlg(); + // close old alg + // open new alg + algTypeIndex = algTypeId; + algInitStatus = false; + switch (algTypeIndex) { + case 1: + algType = ALG_TYPE.SUPERRESOLUTION; + break; + case 2: + algType = ALG_TYPE.DENOISE; + break; + case 3: + algType = ALG_TYPE.TEXGENIMG; + break; + default: + break; + } + } + } + + private int initAlg() { + int ret = 0; + if (algorithmInterface == null) { + algorithmInterface = new AlgorithmInterface(); + if (algorithmInterface == null) { + Log.d(TAG, "AlgorithmInterface new fail "); + return ErrorCode.INSUFFICIENT_CPU_MEMORY; + } + ret = algorithmInterface.init(); + if (ret != 0) { + Log.d(TAG, "algorithmInterface init ret = " + ret); + return ret; + } + } + if (initParam == null) { + initParam = new Param(); + ret = initParam.init(); + if (ret != 0) { + Log.d(TAG, "initParam init ret = " + ret); + return ret; + } + } + if (processParam == null) { + processParam = new Param(); + ret = processParam.init(); + if (ret != 0) { + Log.d(TAG, "processParam init ret = " + ret); + return ret; + } + } + if (videoFrame == null) { + videoFrame = new VideoFrame(); + if (ret != 0) { + Log.d(TAG, "videoFrame init ret = " + ret); + return ret; + } + } + initParam.setInt("change_mode", 6); + initParam.setInt("algorithm_version", 0); + switch (algTypeIndex) { + case 1: + initParam.setString("instance_id", "sr1"); + initParam.setInt("scale_mode", 0); + initParam.setInt("algorithm_type", 0); + initParam.setInt("sharp_levels", 0); + initParam.setString("weight_path", ""); + break; + case 2: + initParam.setString("instance_id", "denoise"); + initParam.setInt("algorithm_type", 1); + break; + case 3: + initParam.setString("instance_id", "tex2pic"); + initParam.setInt("algorithm_type", 3); + if (algDependParams.length < 9) { + Log.e(TAG, + "algorithmInterface init setInitParam fail, algorithm " + + "dependency parameters are not set correctly."); + return ret; + } + initParam.setString("ld_library_path", algDependParams[0]); + initParam.setString("adsp_system_library_path", algDependParams[1]); + initParam.setString("qnn_htp_library_path", algDependParams[2]); + initParam.setString("qnn_system_library_path", algDependParams[3]); + initParam.setString("tokenizer_path", algDependParams[4]); + initParam.setString("unet_path", algDependParams[5]); + initParam.setString("text_encoder_path", algDependParams[6]); + initParam.setString("vae_path", algDependParams[7]); + initParam.setString("control_net_path", algDependParams[8]); + algProgressSts = -1000; + break; + default: + break; + } + initParam.setInt("backend", 3); + initParam.setInt("process_mode", 0); + initParam.setInt("max_width", 1920); + initParam.setInt("max_height", 1080); + initParam.setString("license_module_name", ""); + initParam.setString("program_cache_dir", ""); + ret = algorithmInterface.setParam(initParam); + if (ret != 0) { + Log.e(TAG, "algorithmInterface init setInitParam ret = " + ret + + ", algTypeIndex = " + algTypeIndex); + return ret; + } + algInitStatus = true; + return ret; + } + + int algProcess() { + int ret = 0; + int inputTexId = inputTextureId; + if (isOesTexture == true) { + inputTexId = oesTo2DTextureId; + } + if (false == algInitStatus) { + ret = initAlg(); + if (ret != 0) { + Log.d(TAG, "algorithmInterface initAlg ret = " + ret); + return ret; + } + if (algTypeIndex == 1) { // superresolution + processParam.setInt("sharp_level", 0); + processParam.setInt("scale_mode", 0); + } else if (algTypeIndex == 3) { + String positivePromptEn = "cute,girl"; + String negativePromptEn = ""; + processParam.setString("positive_prompt_en", + positivePromptEn); // for tex2pic only + processParam.setString("negative_prompt_en", + negativePromptEn); // for tex2pic only + } + ret = videoFrame.init(inputTexId, videoWidth, videoHeight); + if (ret != 0) { + Log.d(TAG, "algorithmInterface videoFrame init ret = " + ret + + " w " + videoWidth + " h " + videoHeight); + return ret; + } + resolutionChangeSts = false; + algInitStatus = true; + } + if (resolutionChangeSts == true) { + if (videoFrame != null) { + videoFrame.Free(); + } + ret = videoFrame.init(inputTexId, videoWidth, videoHeight); + if (ret != 0) { + Log.d(TAG, "algorithmInterface videoFrame init ret = " + ret + + " w " + videoWidth + " h " + videoHeight); + return ret; + } + resolutionChangeSts = false; + } + + if (isDumpFrame == true && frameIndex > DUMP_FRMAE_INDEX) { + TextureUtils.SaveTexture2Bitmap(inputTexId, videoWidth, videoHeight, + "/input_" + frameIndex + ".png", + GLES20.GL_TEXTURE_2D); + } + if (algTypeIndex == 3) { + if (algRenderParam == "reservedflagformarkgeneration") { + processParam.setInt("new_prompt", 0); // for tex2pic only + algProgressSts = + algProgressSts <= 100 ? algProgressSts + 25 : 100; + if (algProgressSts >= 100) { + return 1; // generate ok + } + } else if (algRenderParam != "") { + processParam.setString("positive_prompt_en", + algRenderParam); // for tex2pic only + processParam.setString("negative_prompt_en", + ""); // for tex2pic onlySecureRandom + SecureRandom secureRandom = new SecureRandom(); + int randomInt = secureRandom.nextInt(200) - 100; + processParam.setInt("seed", randomInt); // for tex2pic only + processParam.setInt("step", 5); // for tex2pic only + processParam.setInt("new_prompt", 1); // for tex2pic only + algRenderParam = "reservedflagformarkgeneration"; + algProgressSts = 0; + } + } + ret = algorithmInterface.processVideoFrame(videoFrame, processParam); + if (ret != 0) { + Log.d(TAG, "algorithmInterface processVideoFrame ret = " + ret); + return ret; + } + VideoFrameOutput videoFrameOutput = + algorithmInterface.getVideoFrameOutput(); + if (videoFrameOutput.outputStatus != 0) { + Log.d(TAG, "algorithmInterface getVideoFrameOutput ret = " + + videoFrameOutput.outputStatus + " width " + + videoFrameOutput.frame.getWidth() + " height " + + videoFrameOutput.frame.getHeight()); + return videoFrameOutput.outputStatus; + } + algReturnTextureId = videoFrameOutput.frame.getTextureId(); + if (isDumpFrame == true && frameIndex > DUMP_FRMAE_INDEX) { + TextureUtils.SaveTexture2Bitmap( + algReturnTextureId, videoFrameOutput.frame.getWidth(), + videoFrameOutput.frame.getHeight(), + "/output_" + frameIndex + ".png", GLES20.GL_TEXTURE_2D); + isDumpFrame = false; + } + // float psnr = + // TextureUtils.PSNR(inputTexId,algReturnTextureId,videoWidth, + // videoHeight,true);//denoise Logging.d("input + output + // psnr:"+psnr); + frameIndex++; + videoFrameOutput.Free(); + return 0; + } + + private int closeAlg() { + if (algorithmInterface != null) { + algorithmInterface.Free(); + algorithmInterface = null; + } + if (initParam != null) { + initParam.Free(); + initParam = null; + } + if (processParam != null) { + processParam.Free(); + processParam = null; + } + if (videoFrame != null) { + videoFrame.Free(); + videoFrame = null; + } + algInitStatus = false; + return 0; + } + + private void initInstance() { + do { + screenRender = new SplitScreenRender(); // CommonScreenRender(); + initStatus = screenRender.init(); + if (!initStatus) { + Log.e(TAG, "Bmf-modules base shader init failed."); + break; + } + oesTo2dTex = new OesTo2dTex(); + initStatus = oesTo2dTex.init(); + if (!initStatus) { + Log.e(TAG, "Bmf-modules OesTo2d shader init failed."); + break; + } + Log.i(TAG, "ScreenRender init success."); + return; + } while (false); + screenRender = null; + oesTo2dTex = null; + } + + private void resetTexture() { + if (oesTo2DTextureId != -1) { + GLES20.glDeleteTextures(1, new int[] {oesTo2DTextureId}, 0); + } + if (algOutputTextureId != -1) { + GLES20.glDeleteTextures(1, new int[] {algOutputTextureId}, 0); + } + int[] textureArr = TextureUtils.CreateTextures(2); + oesTo2DTextureId = textureArr[0]; + algOutputTextureId = textureArr[1]; + textureInitStatus = false; + initTexture(); + } + private boolean onResolutionChanged() { + boolean resChange = false; + if (lastVideoWidth != videoWidth || lastVideoHeight != videoHeight) { + lastVideoWidth = videoWidth; + lastVideoHeight = videoHeight; + resChange = true; + resetTexture(); + resolutionChangeSts = true; + } + if (lastWndWidth != wndWidth || lastWndHeight != wndHeight) { + lastWndWidth = wndWidth; + lastWndHeight = wndHeight; + resChange = true; + } + return resChange; + } + + public void setRenderImgSize(int width, int height) { + Log.e(TAG, "set videoWidth:" + width + " videoHeight:" + height); + videoWidth = width; + videoHeight = height; + } + + public void setRenderWndSize(int width, int height) { + wndWidth = width; + wndHeight = height; + } + + public void setTextureID(int textureID) { + inputTextureId = textureID; + surfaceTexture = new SurfaceTexture(textureID); + initInstance(); + screenRender.setSplitScreenMode(displayDividerStatus); + screenRender.setSplitScreenPos(splitScreenRatio); + } + + public SurfaceTexture getSurfaceTexture() { + if (surfaceTexture != null) { + renderStatus = 0; + return surfaceTexture; + } + return null; + } + + public int getTextureID() { return inputTextureId; } + + public void updateTexture() { + initTexture(); + if (surfaceTexture != null) { + surfaceTexture.updateTexImage(); + surfaceTexture.getTransformMatrix(videoDecodeMatrix); + } else { + Log.d(TAG, "surfaceTexture is null"); + } + } + + private void initTexture() { + if (!initStatus) { + initInstance(); + } + if (!textureInitStatus) { + Log.d(TAG, "init videoWidth:" + videoWidth + + " videoHeight:" + videoHeight); + GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, oesTo2DTextureId); + GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D, + GLES20.GL_TEXTURE_WRAP_S, + GLES20.GL_CLAMP_TO_EDGE); + GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D, + GLES20.GL_TEXTURE_WRAP_T, + GLES20.GL_CLAMP_TO_EDGE); + GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D, + GLES20.GL_TEXTURE_MIN_FILTER, + GLES20.GL_LINEAR); + GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D, + GLES20.GL_TEXTURE_MAG_FILTER, + GLES20.GL_LINEAR); + GLES20.glTexImage2D(GLES20.GL_TEXTURE_2D, 0, GLES20.GL_RGBA, + videoWidth, videoHeight, 0, GLES20.GL_RGBA, + GLES20.GL_UNSIGNED_BYTE, null); + GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, 0); + textureInitStatus = true; + } + } + public int setRenderBitmap(Bitmap bitmap) { + bitmapFrame = bitmap; + return 0; + } + + public void setAlgDependParams(String[] dependParams) { + algDependParams = dependParams; + } + + public int updateBitmapToTexture(int textId) { + if (lastBitmapFrame == bitmapFrame) { + return 0; + } + videoWidth = bitmapFrame.getWidth(); + videoHeight = bitmapFrame.getHeight(); + GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, textId); + GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D, + GLES20.GL_TEXTURE_MIN_FILTER, + GLES20.GL_LINEAR_MIPMAP_LINEAR); + GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D, + GLES20.GL_TEXTURE_MAG_FILTER, GLES20.GL_LINEAR); + + GLUtils.texImage2D(GLES20.GL_TEXTURE_2D, 0, bitmapFrame, 0); + GLES20.glGenerateMipmap(GLES20.GL_TEXTURE_2D); + + GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, 0); + lastBitmapFrame = bitmapFrame; + if (!bitmapFrame.isRecycled()) { + bitmapFrame.recycle(); + } + TextureUtils.LogOESError("TextureUtils"); + return 0; + } + + public void draw() { + if (renderStatus < 0) { + return; + } + if (renderOnScreenMode == RENDER_MODE.UP_DOWN_SPLIT_SCREEN) { + updateBitmapToTexture(inputTextureId); + } else { + updateTexture(); + } + if (onResolutionChanged() == true) { + Log.d(TAG, "updatePrjMatrix videoWidth:" + videoWidth + + " videoHeight:" + videoHeight + " wndWidth:" + + wndWidth + " wndHeight:" + wndHeight); + screenRender.updatePrjMatrix(videoWidth, videoHeight, wndWidth, + wndHeight); + } + int ret = 0; + if (isOesTexture == true) { + oesTo2dTex.setMatrix(videoDecodeMatrix); + oesTo2dTex.process(inputTextureId, oesTo2DTextureId, videoWidth, + videoHeight); + switch (algType) { + case SUPERRESOLUTION: + case DENOISE: + ret = algProcess(); + Log.d(TAG, "algProcess,type = " + algType + + ",input-oesTexId = " + inputTextureId + + " 2dTexId = " + oesTo2DTextureId + + " algOutputTex = " + algReturnTextureId + + " ret = " + ret); + screenRender.drawToScreen(oesTo2DTextureId, algReturnTextureId, + wndWidth, wndHeight); + break; + case TEXGENIMG: + default: + screenRender.drawToScreen(oesTo2DTextureId, oesTo2DTextureId, + wndWidth, wndHeight); + Log.d(TAG, "draw oes normal "); + break; + } + } else { + switch (algType) { + case SUPERRESOLUTION: + case DENOISE: + break; + case TEXGENIMG: + if (algRenderParam != "") { + ret = algProcess(); + if (algInitStatus == false) { + algProgressSts = -200; // 不支持 + } + if (ret != 0) { + algRenderParam = ""; + } + Log.d(TAG, "algProcess,type = " + algType + + ",input-texId = " + inputTextureId + + " 2dTexId = " + oesTo2DTextureId + + " algOutputTex = " + algReturnTextureId + + " ret = " + ret); + } + screenRender.drawToScreen(inputTextureId, algReturnTextureId, + wndWidth, wndHeight); + break; + default: + screenRender.drawToScreen(inputTextureId, inputTextureId, + wndWidth, wndHeight); + Log.d(TAG, "draw 2d texture normal "); + break; + } + } + } + + @Override + protected void finalize() { + GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, 0); + if (oesTo2DTextureId != -1) { + GLES20.glDeleteTextures(1, new int[] {oesTo2DTextureId}, 0); + oesTo2DTextureId = -1; + } + if (algOutputTextureId != -1) { + GLES20.glDeleteTextures(1, new int[] {algOutputTextureId}, 0); + algOutputTextureId = -1; + } + if (inputTextureId != -1) { + GLES20.glDeleteTextures(1, new int[] {inputTextureId}, 0); + inputTextureId = -1; + } + if (surfaceTexture != null) { + surfaceTexture.release(); + surfaceTexture = null; + } + renderStatus = -1; + closeAlg(); + } + + public void setAlgInputAndOutputTexture(int inputTexture, + int outputTexture) { + oesTo2DTextureId = inputTexture; + algOutputTextureId = outputTexture; + } + + public void setSplitScreenPos(float posRatio) { + if (screenRender != null) { + screenRender.setSplitScreenPos(posRatio); + } else { + splitScreenRatio = posRatio; + } + } + + public void setAlgInputParam(String stringParam) { + if (algRenderParam != stringParam && stringParam != "") { + algRenderParam = stringParam; + algProgressSts = 0; + } + } + public void setSplitScreenMode(int splitScreenMode) { + if (splitScreenMode == 0) { + renderOnScreenMode = RENDER_MODE.NORMAL; + } else if (splitScreenMode == 1) { + renderOnScreenMode = RENDER_MODE.LEFT_RIGHT_SPLIT_SCREEN; + } else if (splitScreenMode == 2) { + renderOnScreenMode = RENDER_MODE.UP_DOWN_SPLIT_SCREEN; + } + if (screenRender != null) { + screenRender.setSplitScreenMode(splitScreenMode); + } else { + displayDividerStatus = splitScreenMode; + } + } + + public int getAlgProgressSts() { return algProgressSts; } +} diff --git a/bmf_lite/android/app/src/main/java/com/bmf/lite/app/playctrl/CameraPlayerWrapper.java b/bmf_lite/android/app/src/main/java/com/bmf/lite/app/playctrl/CameraPlayerWrapper.java new file mode 100644 index 00000000..f4776fce --- /dev/null +++ b/bmf_lite/android/app/src/main/java/com/bmf/lite/app/playctrl/CameraPlayerWrapper.java @@ -0,0 +1,249 @@ +package com.bmf.lite.app.playctrl; + +import androidx.annotation.NonNull; +import android.content.Context; +import android.graphics.ImageFormat; +import android.graphics.SurfaceTexture; +import android.hardware.camera2.CameraAccessException; +import android.hardware.camera2.CameraCaptureSession; +import android.hardware.camera2.CameraCharacteristics; +import android.hardware.camera2.CameraDevice; +import android.hardware.camera2.CameraManager; +import android.hardware.camera2.CaptureRequest; +import android.hardware.camera2.CaptureResult; +import android.hardware.camera2.TotalCaptureResult; +import android.hardware.camera2.params.StreamConfigurationMap; +import android.media.ImageReader; +import android.os.Handler; +import android.os.HandlerThread; +import android.util.Log; +import android.util.Size; +import android.view.Surface; + +import com.bmf.lite.app.render.GLSurfaceViewWrapper; +import com.bmf.lite.app.tool.SingleApplication; + +import java.util.Arrays; + +public class CameraPlayerWrapper { + private final String TAG = "bmf-demo-app CameraPlayerWrapper"; + private CameraManager cameraManager; + private CameraDevice cameraDevice; + private CameraCaptureSession captureSession; + private CaptureRequest previewRequest; + private CaptureRequest.Builder previewRequestBuilder; + private Surface surface; + private String cameraIdStr; + private Handler backgroundHandler; + private final String BACK_CAMERA = "0"; + private final String FRONT_CAMERA = "1"; + private GLSurfaceViewWrapper glSurfaceView; + private int previewWidth = 0; + private int previewHeight = 0; + private int defaultWidth = 1080; + private int defaultHeight = 1920; + public CameraPlayerWrapper(GLSurfaceViewWrapper surfaceView) { + glSurfaceView = surfaceView; + glSurfaceView.setEGLContextClientVersion(3); + initView(surfaceView); + cameraIdStr = BACK_CAMERA; + } + + private void initView(GLSurfaceViewWrapper glSurfaceView) { + glSurfaceView.initRender(); + glSurfaceView.setOesStatus(true); + glSurfaceView.setSplitScreenMode(1); + } + + public void setPreviewSize(int width, int height) { + previewWidth = width; + previewHeight = height; + } + public void openCamera(int cameraId) { + if (cameraId == 0) { + cameraIdStr = BACK_CAMERA; + } else { + cameraIdStr = FRONT_CAMERA; + } + setUpCameraOutputs(); + try { + Log.v(TAG, "openCamera cameraIdStr=" + cameraIdStr); + cameraManager.openCamera(cameraIdStr, stateCallback, + backgroundHandler); + } catch (CameraAccessException e) { + e.printStackTrace(); + } + } + + @SuppressWarnings("SuspiciousNameCombination") + private void setUpCameraOutputs() { + cameraManager = (CameraManager)SingleApplication.getInstance() + .getContext() + .getSystemService(Context.CAMERA_SERVICE); + } + + private final CameraDevice + .StateCallback stateCallback = new CameraDevice.StateCallback() { + @Override + public void onOpened(@NonNull CameraDevice device) { + try { + SurfaceTexture surfaceTexture = null; + while (true) { + surfaceTexture = glSurfaceView.getVideoRender() + .getAlgRender() + .getSurfaceTexture(); + if (surfaceTexture != null) { + break; + } + Thread.sleep(1); + } + previewWidth = glSurfaceView.getWndWidth(); + previewHeight = glSurfaceView.getWndHeight(); + if (previewWidth <= 0 || previewHeight <= 0) { + Log.e(TAG, "current preview width:" + previewWidth + + " height:" + previewHeight + + ", camera open fail."); + return; + } + CameraCharacteristics cameraCharacteristics = + cameraManager.getCameraCharacteristics(cameraIdStr); + StreamConfigurationMap streamConfigurationMap = + cameraCharacteristics.get( + CameraCharacteristics.SCALER_STREAM_CONFIGURATION_MAP); + Size[] sizes = + streamConfigurationMap.getOutputSizes(SurfaceTexture.class); + Size size = CameraUtils.getInstance().getMostSuitableSize( + sizes, previewWidth, previewHeight); + + int orientation = cameraCharacteristics.get( + CameraCharacteristics.SENSOR_ORIENTATION); + Log.d(TAG, "current sample size width:" + size.getWidth() + + " height:" + size.getHeight() + + ". orientation " + orientation); + surfaceTexture.setDefaultBufferSize(size.getWidth(), + size.getHeight()); + + if (orientation == 90 || orientation == 270) { + glSurfaceView.setRenderImgSize(size.getHeight(), + size.getWidth()); + } else { + glSurfaceView.setRenderImgSize(size.getWidth(), + size.getHeight()); + } + + surfaceTexture.setOnFrameAvailableListener( + new SurfaceTexture.OnFrameAvailableListener() { + @Override + public void onFrameAvailable( + final SurfaceTexture surfaceTexture) { + glSurfaceView.requestRender(); + } + }); + surface = new Surface(surfaceTexture); + cameraDevice = device; + previewRequestBuilder = + device.createCaptureRequest(CameraDevice.TEMPLATE_PREVIEW); + previewRequestBuilder.addTarget(surface); + previewRequest = previewRequestBuilder.build(); + device.createCaptureSession(Arrays.asList(surface), + sessionsStateCallback, null); + } catch (CameraAccessException e) { + e.printStackTrace(); + Log.e(TAG, "Open Camera Failed!"); + } catch (Exception e) { + e.printStackTrace(); + Log.e(TAG, "Thread problem!"); + } + } + + @Override + public void onDisconnected(@NonNull CameraDevice device) { + Log.v(TAG, "stateCallback onDisconnected()"); + device.close(); + device = null; + } + + @Override + public void onError(@NonNull CameraDevice device, int error) { + Log.v(TAG, "stateCallback onError()"); + device.close(); + device = null; + } + }; + + CameraCaptureSession.StateCallback sessionsStateCallback = + new CameraCaptureSession.StateCallback() { + @Override + public void onConfigured(CameraCaptureSession session) { + if (null == cameraDevice) { + return; + } + captureSession = session; + try { + // Auto focus should be continuous for camera preview. + previewRequestBuilder.set( + CaptureRequest.CONTROL_AF_MODE, + CaptureRequest.CONTROL_AF_MODE_CONTINUOUS_PICTURE); + + previewRequest = previewRequestBuilder.build(); + Log.v(TAG, "sessionsStateCallback setRepeatingRequest()"); + captureSession.setRepeatingRequest( + previewRequest, mCaptureCallback, backgroundHandler); + } catch (CameraAccessException e) { + e.printStackTrace(); + } + } + + @Override + public void onConfigureFailed(CameraCaptureSession session) { + Log.d(TAG, "onConfigureFailed!"); + } + }; + + private CameraCaptureSession.CaptureCallback mCaptureCallback = + new CameraCaptureSession.CaptureCallback() { + @Override + public void onCaptureProgressed( + @NonNull CameraCaptureSession session, + @NonNull CaptureRequest request, + @NonNull CaptureResult partialResult) { + // Log.v(TAG, "CameraCaptureSession + // onCaptureProgressed()"); + } + + @Override + public void onCaptureCompleted( + @NonNull CameraCaptureSession session, + @NonNull CaptureRequest request, + @NonNull TotalCaptureResult result) { + // Log.v(TAG, "CameraCaptureSession + // onCaptureCompleted()"); + } + }; + + private final ImageReader + .OnImageAvailableListener onImageAvailableListener = + new ImageReader.OnImageAvailableListener() { + @Override + public void onImageAvailable(ImageReader reader) { + Log.v(TAG, "onImageAvailable()"); + } + }; + + public void closeCamera() { + if (null != captureSession) { + captureSession.close(); + captureSession = null; + } + if (null != cameraDevice) { + cameraDevice.close(); + cameraDevice = null; + } + } + + public void switchAlgorithm(int algType) { + if (glSurfaceView != null) { + glSurfaceView.switchAlgorithm(algType); + } + } +} diff --git a/bmf_lite/android/app/src/main/java/com/bmf/lite/app/playctrl/CameraUtils.java b/bmf_lite/android/app/src/main/java/com/bmf/lite/app/playctrl/CameraUtils.java new file mode 100644 index 00000000..d5f96090 --- /dev/null +++ b/bmf_lite/android/app/src/main/java/com/bmf/lite/app/playctrl/CameraUtils.java @@ -0,0 +1,102 @@ +package com.bmf.lite.app.playctrl; + +import android.hardware.camera2.CameraCharacteristics; +import android.hardware.camera2.params.StreamConfigurationMap; + +import android.util.Log; +import android.util.Size; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.Comparator; + +import java.util.List; + +public class CameraUtils { + private static CameraUtils sInstance; + + private final String TAG = "bmf-demo-app CameraUtils"; + + private final String BACK_CAMERA = "0"; + private final String FRONT_CAMERA = "1"; + + public static CameraUtils getInstance() { + if (sInstance == null) { + synchronized (CameraUtils.class) { + if (sInstance == null) { + sInstance = new CameraUtils(); + } + } + } + return sInstance; + } + + public String getCameraId() { return BACK_CAMERA; } + + public Size getMostSuitableSize(Size[] sizeList, int width, int height) { + float targetRatio = (height * 1.f) / (width * 1.f); + Size result = null; + + for (int j = 1; j < sizeList.length; j++) { + if (result == null || + isMoreSuitable(result, sizeList[j], targetRatio)) { + result = sizeList[j]; + } + } + int findNum = 3; + int findIndex = 0; + while (result.getWidth() > 720 && findIndex < findNum) { + float ratio = getRatio(result); + List optionList = new ArrayList(); + + for (int j = 0; j < sizeList.length; j++) { + float current_ratio = getRatio(sizeList[j]); + if (Math.abs(ratio - current_ratio) < 0.05f && + result != sizeList[j] && + getArea(result) > getArea(sizeList[j])) { + optionList.add(sizeList[j]); + } + } + if (optionList.size() > 0) { + float maxArea = 0; + for (int j = 0; j < optionList.size(); j++) { + float currentArea = getArea(optionList.get(j)); + if (currentArea > maxArea) { + maxArea = currentArea; + } + } + for (int j = 0; j < sizeList.length; j++) { + float currentArea = getArea(sizeList[j]); + if (Math.abs(maxArea - currentArea) < 0.05f) { + result = sizeList[j]; + break; + } + } + } else { + break; + } + } + return result; + } + + private boolean isMoreSuitable(Size current, Size target, + float targetRatio) { + if (current == null) { + return true; + } + float currentRatioDif = Math.abs(getRatio(current) - targetRatio); + float targetRatioDif = Math.abs(getRatio(target) - targetRatio); + return targetRatioDif < currentRatioDif || + (currentRatioDif == targetRatioDif && + (getArea(target) > getArea(current))); + } + + private int getArea(Size size) { + return size.getWidth() * size.getHeight(); + } + + private float getRatio(Size size) { + return (size.getWidth() * 1.f) / (size.getHeight() * 1.f); + } +} diff --git a/bmf_lite/android/app/src/main/java/com/bmf/lite/app/playctrl/ImagePlayerWrapper.java b/bmf_lite/android/app/src/main/java/com/bmf/lite/app/playctrl/ImagePlayerWrapper.java new file mode 100644 index 00000000..1832269f --- /dev/null +++ b/bmf_lite/android/app/src/main/java/com/bmf/lite/app/playctrl/ImagePlayerWrapper.java @@ -0,0 +1,138 @@ +package com.bmf.lite.app.playctrl; +import android.graphics.Bitmap; +import android.graphics.BitmapFactory; +import android.graphics.Matrix; +import android.media.ExifInterface; +import android.media.MediaPlayer; +import android.opengl.GLES20; +import android.util.Log; +import android.view.Surface; + +import com.bmf.lite.app.render.GLSurfaceViewWrapper; +import com.bmf.lite.app.render.TextureUtils; + +import java.io.File; +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.io.IOException; +import java.io.InputStream; + +public class ImagePlayerWrapper { + private boolean loopPlaySts = true; + private GLSurfaceViewWrapper glSurfaceView = null; + private String videoPath = + ""; /// storage/emulated/0/DCIM/Camera/VID_20230307_104326.mp4"; + private String TAG = "bmf-demo-app MediaPlayerWrapper"; + Bitmap bitmap = null; + public ImagePlayerWrapper(GLSurfaceViewWrapper surfaceView) { + glSurfaceView = surfaceView; + glSurfaceView.setOesStatus(false); + glSurfaceView.initRender(); + } + + public void setOesStatus(boolean isOes) { + glSurfaceView.setOesStatus(isOes); + } + + public void loadBitmap(String imgPath) { + BitmapFactory.Options bitmapOptions = new BitmapFactory.Options(); + // bitmapOptions.inSampleSize = 8; + int degree = computeImgDegree(new File(imgPath).getAbsolutePath()); + Bitmap cameraBitmap = BitmapFactory.decodeFile(imgPath, bitmapOptions); + bitmap = rotateImage(degree, cameraBitmap); + } + + public static Bitmap rotateImage(int angle, Bitmap bitmap) { + Matrix matrix = new Matrix(); + matrix.postRotate(angle); + int width = bitmap.getWidth(); + int height = bitmap.getHeight(); + Bitmap resultBitmap = + Bitmap.createBitmap(bitmap, 0, 0, width, height, matrix, true); + return resultBitmap; + } + + public static int computeImgDegree(String dir) { + int result = 0; + try { + ExifInterface exifInteface = new ExifInterface(dir); + int orientation = + exifInteface.getAttributeInt(ExifInterface.TAG_ORIENTATION, + ExifInterface.ORIENTATION_NORMAL); + switch (orientation) { + case ExifInterface.ORIENTATION_ROTATE_270: + result = 270; + break; + case ExifInterface.ORIENTATION_ROTATE_180: + result = 180; + break; + case ExifInterface.ORIENTATION_ROTATE_90: + result = 90; + break; + } + } catch (IOException e) { + e.printStackTrace(); + } + return result; + } + + public int setCurImgResource(String imgPath) throws IOException { + int textureID = -1; + try { + while (true) { + textureID = glSurfaceView.getVideoRender() + .getAlgRender() + .getTextureID(); + if (textureID > 0) { + break; + } + Thread.sleep(1); + } + } catch (Exception e) { + e.printStackTrace(); + Log.e(TAG, "load !"); + return -1; + } + loadBitmap(imgPath); + int res = -1; + try { + while (true) { + res = glSurfaceView.setRenderBitmap(bitmap); + if (res == 0) { + break; + } + Thread.sleep(1); + } + } catch (Exception e) { + e.printStackTrace(); + Log.e(TAG, "Thread problem!"); + return -2; + } + glSurfaceView.setOesStatus(false); + glSurfaceView.setSplitScreenPos(0.75f); + glSurfaceView.setSplitScreenMode(2); + return 0; + } + + public void switchAlgorithm(int algType) { + if (glSurfaceView != null) { + glSurfaceView.switchAlgorithm(algType); + } + } + + public int getAlgProgressSts() { + if (glSurfaceView != null) { + return glSurfaceView.getAlgProgressSts(); + } + return 0; + } + public void stop() {} + + public void resume() {} + + public void pause() {} + + public void setLooping(boolean isLoop) {} + + public void destroy() {} +} diff --git a/bmf_lite/android/app/src/main/java/com/bmf/lite/app/playctrl/MediaPlayerWrapper.java b/bmf_lite/android/app/src/main/java/com/bmf/lite/app/playctrl/MediaPlayerWrapper.java new file mode 100644 index 00000000..cf80372a --- /dev/null +++ b/bmf_lite/android/app/src/main/java/com/bmf/lite/app/playctrl/MediaPlayerWrapper.java @@ -0,0 +1,111 @@ +package com.bmf.lite.app.playctrl; +import android.graphics.SurfaceTexture; +import android.media.MediaPlayer; +import android.net.Uri; +import android.util.Log; +import android.view.Surface; + +import com.bmf.lite.app.render.GLSurfaceViewWrapper; +import com.bmf.lite.app.tool.SingleApplication; +import com.bmf.lite.app.tool.SingleApplication; +import java.io.IOException; + +public class MediaPlayerWrapper { + private boolean loopPlaySts = true; + private GLSurfaceViewWrapper glSurfaceView = null; + private String videoPath = + ""; /// storage/emulated/0/DCIM/Camera/VID_20230307_104326.mp4"; + private String TAG = "bmf-demo-app MediaPlayerWrapper"; + private Surface surface = null; + MediaPlayer mediaPlayer = null; + public MediaPlayerWrapper(GLSurfaceViewWrapper surfaceView) { + glSurfaceView = surfaceView; + glSurfaceView.setOesStatus(true); + glSurfaceView.initRender(); + glSurfaceView.setSplitScreenMode(1); + } + + public void setOesStatus(boolean isOes) { + glSurfaceView.setOesStatus(isOes); + } + + public void startPlay(String videoPath) throws IOException { + if (null == mediaPlayer) { + mediaPlayer = new MediaPlayer(); + // mediaPlayer = + // MediaPlayer.create(SingleApplication.getInstance().getContext(), + // Uri.parse(videoPath)); + } + + try { + mediaPlayer.setDataSource(videoPath); + } catch (IOException e) { + e.printStackTrace(); + } + mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() { + @Override + public void onPrepared(MediaPlayer mp) { + mp.start(); + glSurfaceView.setRenderImgSize(mp.getVideoWidth(), + mp.getVideoHeight()); + } + }); + SurfaceTexture st = null; + try { + while (true) { + st = glSurfaceView.getVideoRender() + .getAlgRender() + .getSurfaceTexture(); + if (st != null) { + if (surface == null) { + surface = new Surface(st); + } + Thread.sleep(1); + break; + } + } + } catch (Exception e) { + e.printStackTrace(); + Log.e(TAG, "Thread problem!"); + } + mediaPlayer.setSurface(surface); + mediaPlayer.prepareAsync(); + } + + public void switchAlgorithm(int algType) { + if (glSurfaceView != null) { + glSurfaceView.switchAlgorithm(algType); + } + } + public void stop() { + if (mediaPlayer != null) { + mediaPlayer.stop(); + } + } + + public void resume() { + if (mediaPlayer != null) { + mediaPlayer.pause(); + mediaPlayer.start(); + } + } + + public void pause() { + if (mediaPlayer != null) { + mediaPlayer.pause(); + } + } + + public void setLooping(boolean isLoop) { + loopPlaySts = isLoop; + if (mediaPlayer != null) { + mediaPlayer.setLooping(isLoop); + } + } + + public void destroy() { + if (mediaPlayer != null) { + mediaPlayer.release(); + } + } +} diff --git a/bmf_lite/android/app/src/main/java/com/bmf/lite/app/render/GLSurfaceViewRender.java b/bmf_lite/android/app/src/main/java/com/bmf/lite/app/render/GLSurfaceViewRender.java new file mode 100644 index 00000000..777696a4 --- /dev/null +++ b/bmf_lite/android/app/src/main/java/com/bmf/lite/app/render/GLSurfaceViewRender.java @@ -0,0 +1,100 @@ +package com.bmf.lite.app.render; + +import android.opengl.GLES20; +import android.opengl.GLSurfaceView; +import android.util.Log; + +import androidx.annotation.Nullable; + +import com.bmf.lite.app.algorithm.AlgorithmRenderer; +import javax.microedition.khronos.egl.EGLConfig; +import javax.microedition.khronos.opengles.GL10; +import android.graphics.Bitmap; + +public class GLSurfaceViewRender implements GLSurfaceView.Renderer { + private AlgorithmRenderer algRenderer = new AlgorithmRenderer(); + private String TAG = "bmf-demo-app GLSurfaceViewRender"; + public GLSurfaceViewRender() {} + public void close() {} + @Override + public void onSurfaceCreated(GL10 gl, EGLConfig config) { + GLES20.glClearColor(0f, 0f, 0f, 0f); + GLES20.glEnable(GLES20.GL_BLEND); + GLES20.glBlendFunc(GLES20.GL_SRC_ALPHA, GLES20.GL_ONE_MINUS_SRC_ALPHA); + int[] textureIds = new int[3]; + GLES20.glGenTextures(3, textureIds, 0); + algRenderer.setTextureID(textureIds[0]); + algRenderer.setAlgInputAndOutputTexture(textureIds[1], textureIds[2]); + } + @Override + public void onSurfaceChanged(GL10 gl, int width, int height) { + GLES20.glViewport(0, 0, width, height); + Log.d(TAG, "current mSurfaceViewWidth onSurfaceChanged:" + width + + " height:" + height); + algRenderer.setRenderWndSize(width, height); + } + + public void setRenderImgSize(int width, int height) { + algRenderer.setRenderImgSize(width, height); + } + + @Override + public boolean equals(@Nullable Object obj) { + return super.equals(obj); + } + + public void setRenderWndSize(int width, int height) { + algRenderer.setRenderWndSize(width, height); + } + @Override + public void onDrawFrame(GL10 gl) { + GLES20.glClear(GLES20.GL_COLOR_BUFFER_BIT | GLES20.GL_DEPTH_BUFFER_BIT); + algRenderer.draw(); + } + + public void setOesStatus(boolean isOes) { algRenderer.setOesStatus(isOes); } + + public void switchAlgorithm(int algType) { + if (algRenderer != null) { + algRenderer.switchAlgorithm(algType); + } + } + + public int setRenderBitmap(Bitmap bitmap) { + if (algRenderer != null) { + + return algRenderer.setRenderBitmap(bitmap); + } + return -1; + } + + public void setAlgDependParams(String[] dependParams) { + if (algRenderer != null) { + algRenderer.setAlgDependParams(dependParams); + } + } + + public AlgorithmRenderer getAlgRender() { return algRenderer; } + + public void setSplitScreenPos(float posRatio) { + if (algRenderer != null) { + algRenderer.setSplitScreenPos(posRatio); + } + } + public void setAlgInputParam(String stringParam) { + if (algRenderer != null) { + algRenderer.setAlgInputParam(stringParam); + } + } + public void setSplitScreenMode(int splitScreenMode) { + if (algRenderer != null) { + algRenderer.setSplitScreenMode(splitScreenMode); + } + } + public int getAlgProgressSts() { + if (algRenderer != null) { + return algRenderer.getAlgProgressSts(); + } + return 0; + } +} \ No newline at end of file diff --git a/bmf_lite/android/app/src/main/java/com/bmf/lite/app/render/GLSurfaceViewWrapper.java b/bmf_lite/android/app/src/main/java/com/bmf/lite/app/render/GLSurfaceViewWrapper.java new file mode 100644 index 00000000..049155d0 --- /dev/null +++ b/bmf_lite/android/app/src/main/java/com/bmf/lite/app/render/GLSurfaceViewWrapper.java @@ -0,0 +1,122 @@ +package com.bmf.lite.app.render; + +import android.content.Context; +import android.graphics.SurfaceTexture; +import android.opengl.GLSurfaceView; +import android.util.AttributeSet; +import android.util.Log; +import android.view.SurfaceHolder; +import android.graphics.Bitmap; +public class GLSurfaceViewWrapper + extends GLSurfaceView implements SurfaceTexture.OnFrameAvailableListener { + private String TAG = "bmf-demo-app GLSurfaceViewWrapper"; + private GLSurfaceViewRender videoRender = null; + private int videoWidth = 1080; + private int videoHeight = 1920; + private int wndWidth = 1080; + private int wndHeight = 1920; + private boolean initStatus = false; + public GLSurfaceViewWrapper(Context context) { + super(context); + setEGLContextClientVersion(3); + } + + public GLSurfaceViewWrapper(Context context, AttributeSet attrs) { + super(context, attrs); + setEGLContextClientVersion(3); + } + + @Override + public void onFrameAvailable(SurfaceTexture surfaceTexture) { + Log.i(TAG, "surface onFrame avilable."); + this.requestRender(); + } + @Override + public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) { + super.surfaceChanged(holder, format, w, h); + wndWidth = w; + wndHeight = h; + if (videoRender != null) { + Log.i(TAG, "mSurfaceViewWidth surfaceChanged,width " + w + + " height " + h); + videoRender.setRenderWndSize(w, h); + } + } + + public void setRenderImgSize(int width, int height) { + videoWidth = width; + videoHeight = height; + if (videoRender != null) { + videoRender.setRenderImgSize(videoWidth, videoHeight); + } + } + + public int getWndWidth() { return wndWidth; } + + public int getWndHeight() { return wndHeight; } + + public void initRender() { + if (initStatus) { + return; + } + videoRender = new GLSurfaceViewRender(); + videoRender.setRenderImgSize(videoWidth, videoHeight); + setRenderer(videoRender); + initStatus = true; + } + public void setOesStatus(boolean isOes) { + if (videoRender != null) { + videoRender.setOesStatus(isOes); + } + } + + public void switchAlgorithm(int algType) { + if (videoRender != null) { + videoRender.switchAlgorithm(algType); + } + } + + public int getAlgProgressSts() { + if (videoRender != null) { + return videoRender.getAlgProgressSts(); + } + return 0; + } + public int setRenderBitmap(Bitmap bitmap) { + if (videoRender != null) { + return videoRender.setRenderBitmap(bitmap); + } else { + return -1; + } + } + + public void setSplitScreenPos(float posRatio) { + if (videoRender != null) { + videoRender.setSplitScreenPos(posRatio); + } + } + + public void setAlgInputParam(String stringParam) { + if (videoRender != null) { + videoRender.setAlgInputParam(stringParam); + } + } + + public void setAlgDependParams(String[] dependParams) { + if (videoRender != null) { + videoRender.setAlgDependParams(dependParams); + } + } + + public void setSplitScreenMode(int splitScreenMode) { + if (videoRender != null) { + videoRender.setSplitScreenMode(splitScreenMode); + } + } + public GLSurfaceViewRender getVideoRender() { return videoRender; } + public void closeRender() { + if (videoRender != null) { + videoRender.close(); + } + } +} diff --git a/bmf_lite/android/app/src/main/java/com/bmf/lite/app/render/OesTo2dTex.java b/bmf_lite/android/app/src/main/java/com/bmf/lite/app/render/OesTo2dTex.java new file mode 100644 index 00000000..f15c6dc6 --- /dev/null +++ b/bmf_lite/android/app/src/main/java/com/bmf/lite/app/render/OesTo2dTex.java @@ -0,0 +1,150 @@ +package com.bmf.lite.app.render; + +import android.opengl.GLES11Ext; +import android.opengl.GLES20; +import android.util.Log; + +import java.nio.ByteBuffer; +import java.nio.ByteOrder; +import java.nio.FloatBuffer; + +public class OesTo2dTex { + private final String TAG = "bmf-demo-app OesTo2dTex"; + protected boolean initStatus = false; + protected int glShaderProgram = -1; + protected int vertexShader; + protected int fragmentShader; + protected int positiveHandler; + protected int coordHandler; + protected FloatBuffer vertextBuffer; + protected FloatBuffer texcoordBuffer; + private int frameTexture = -1; + private int frameBuffer = -1; + protected static float[] POSITION_VERTEX = { + -1.0f, -1.0f, 1.0f, -1f, 1.0f, 1.0f, -1.0f, 1.0f, + }; + protected static float[] TEXTURE_VERTEX = { + -1.0f, -1.0f, 1.0f, -1.0f, 1.0f, 1.0f, -1.0f, 1.0f, + }; + private final String vertexShaderCode = + "uniform mat4 uSTMatrix;\n" + + "attribute vec4 vPosition;\n" + + "attribute vec4 vCoord;\n" + + "varying vec2 aCoord;\n" + + "void main() {\n" + + " gl_Position = vPosition;\n" + + " vec2 coord = (vCoord.xy /2.0)+ 0.5; \n" + + " aCoord = (uSTMatrix * vec4(coord,0.0,1.0)).xy;\n" + + "}\n"; + + private final String fragmentShaderCode = + "#extension GL_OES_EGL_image_external : require\n" + + "precision mediump float;\n" + + "varying vec2 aCoord;\n" + + "uniform samplerExternalOES vTexture;\n" + + "void main() {\n" + + " gl_FragColor = texture2D(vTexture, aCoord);\n" + + "}\n"; + private float[] stMatrix = { + 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, + 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, + }; + + private int stMatrixHandle; + private int loadShader(int type, String shaderCode) { + int shader = GLES20.glCreateShader(type); + GLES20.glShaderSource(shader, shaderCode); + GLES20.glCompileShader(shader); + return shader; + } + public void setMatrix(float[] matrix) { stMatrix = matrix; } + public Boolean init() { + if (initStatus) { + return initStatus; + } + ByteBuffer bb = ByteBuffer.allocateDirect(POSITION_VERTEX.length * 4); + vertextBuffer = bb.order(ByteOrder.nativeOrder()).asFloatBuffer(); + vertextBuffer.put(POSITION_VERTEX); + vertextBuffer.position(0); + ByteBuffer m_bb = ByteBuffer.allocateDirect(TEXTURE_VERTEX.length * 4); + texcoordBuffer = m_bb.order(ByteOrder.nativeOrder()).asFloatBuffer(); + texcoordBuffer.put(TEXTURE_VERTEX); + texcoordBuffer.position(0); + // Log.i(TAG,"vertexShaderCode:" + vertexShaderCode); + // Log.i(TAG, "fragmentShaderCode:" + fragmentShaderCode); + vertexShader = loadShader(GLES20.GL_VERTEX_SHADER, vertexShaderCode); + fragmentShader = + loadShader(GLES20.GL_FRAGMENT_SHADER, fragmentShaderCode); + glShaderProgram = GLES20.glCreateProgram(); + + GLES20.glAttachShader(glShaderProgram, vertexShader); + GLES20.glAttachShader(glShaderProgram, fragmentShader); + GLES20.glLinkProgram(glShaderProgram); + GLES20.glDeleteShader(vertexShader); + GLES20.glDeleteShader(fragmentShader); + TextureUtils.LogOESError(TAG); + stMatrixHandle = + GLES20.glGetUniformLocation(glShaderProgram, "uSTMatrix"); + positiveHandler = + GLES20.glGetAttribLocation(glShaderProgram, "vPosition"); + coordHandler = GLES20.glGetAttribLocation(glShaderProgram, "vCoord"); + frameTexture = GLES20.glGetUniformLocation(glShaderProgram, "vTexture"); + + if (GLES20.glGetError() == GLES20.GL_NO_ERROR) { + initStatus = true; + return true; + } + initStatus = false; + return false; + } + public int process(int input_texture, int output_texture, int width, + int height) { + GLES20.glViewport(0, 0, width, height); + GLES20.glActiveTexture(GLES20.GL_TEXTURE0); + GLES20.glBindTexture(GLES11Ext.GL_TEXTURE_EXTERNAL_OES, input_texture); + GLES20.glUseProgram(glShaderProgram); + if (frameBuffer == -1) { + int[] frameBuffers = new int[1]; + GLES20.glGenFramebuffers(1, frameBuffers, 0); + frameBuffer = frameBuffers[0]; + } + GLES20.glBindFramebuffer(GLES20.GL_FRAMEBUFFER, frameBuffer); + GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, output_texture); + GLES20.glFramebufferTexture2D(GLES20.GL_FRAMEBUFFER, + GLES20.GL_COLOR_ATTACHMENT0, + GLES20.GL_TEXTURE_2D, output_texture, 0); + int val = GLES20.glCheckFramebufferStatus(GLES20.GL_FRAMEBUFFER); + if (val != GLES20.GL_FRAMEBUFFER_COMPLETE) { + Log.e(TAG, "glFramebufferTexture2D failed,error code:" + val); + } + GLES20.glEnableVertexAttribArray(positiveHandler); + GLES20.glEnableVertexAttribArray(coordHandler); + GLES20.glUniform1i(frameTexture, 0); + GLES20.glUniformMatrix4fv(stMatrixHandle, 1, false, stMatrix, 0); + GLES20.glVertexAttribPointer(positiveHandler, 2, GLES20.GL_FLOAT, false, + 8, vertextBuffer); + GLES20.glVertexAttribPointer(coordHandler, 2, GLES20.GL_FLOAT, false, 8, + texcoordBuffer); + GLES20.glEnableVertexAttribArray(positiveHandler); + GLES20.glEnableVertexAttribArray(coordHandler); + GLES20.glDrawArrays(GLES20.GL_TRIANGLE_FAN, 0, 4); + GLES20.glDisableVertexAttribArray(positiveHandler); + GLES20.glDisableVertexAttribArray(coordHandler); + GLES20.glFramebufferTexture2D(GLES20.GL_FRAMEBUFFER, + GLES20.GL_COLOR_ATTACHMENT0, + GLES20.GL_TEXTURE_2D, 0, 0); + GLES20.glBindFramebuffer(GLES20.GL_FRAMEBUFFER, 0); + // TextureUtils.LogOESError(TAG); + return 0; + } + @Override + protected void finalize() { + if (0 != glShaderProgram) { + GLES20.glDeleteProgram(glShaderProgram); + } + if (0 != frameBuffer) { + GLES20.glDeleteFramebuffers(1, new int[] {frameBuffer}, 0); + frameBuffer = 0; + } + } +} diff --git a/bmf_lite/android/app/src/main/java/com/bmf/lite/app/render/SplitScreenRender.java b/bmf_lite/android/app/src/main/java/com/bmf/lite/app/render/SplitScreenRender.java new file mode 100644 index 00000000..76982b08 --- /dev/null +++ b/bmf_lite/android/app/src/main/java/com/bmf/lite/app/render/SplitScreenRender.java @@ -0,0 +1,315 @@ +package com.bmf.lite.app.render; + +import android.opengl.GLES20; +import android.opengl.Matrix; +import android.util.Log; + +import java.nio.ByteBuffer; +import java.nio.ByteOrder; +import java.nio.FloatBuffer; + +public class SplitScreenRender { + private String TAG = "bmf-demo-app SplitScreenRender"; + protected boolean initStatus = false; + protected int shaderProgram = 0; + protected int vertexShader; + protected int fragmentShader; + protected int positiveHandler; + protected int coordHandler; + protected FloatBuffer vertextBuffer; + protected FloatBuffer texcoordBuffer; + private int frameTextureLeftHandler = -1; + private int frameTextureRightHandler = -1; + private int splitScreenLRRatioHandler = 0; + private int screenRenderModeHandler = 0; + private int screenRenderMode = 1; + private float splitScreenRatio = 0.5f; + protected static float[] POSITION_VERTEX = { + -1.0f, -1.0f, 0.0f, 1.0f, -1f, 0.0f, + -1.0f, 1.0f, 0.0f, 1.0f, 1.0f, 0.0f, + }; + + protected static float[] TEXTURE_VERTEX = { + 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 1.0f, 1.0f, 1.0f, + }; + private String vertexShaderCode = "attribute vec4 vPosition;" + + "uniform mat4 uMvpMatrix;" + + "attribute vec4 vCoord;" + + "varying vec2 aCoord;" + + "void main() {" + + " gl_Position = uMvpMatrix*vPosition;" + + " aCoord = vCoord.xy;" + + "}"; + private String fragmentShaderCode = + "#extension GL_OES_EGL_image_external : require\n" + + "precision mediump float;" + + "uniform sampler2D leftTexture;" + + "uniform sampler2D rightTexture;" + + "uniform float splitRatio;" + + "uniform int screenRenderMode;" + + "varying vec2 aCoord;" + + "void main() {" + + " float divWidth = 0.003;" + + " vec2 texCoord = aCoord;" + + " if(screenRenderMode != 1)" + + " {" + + " divWidth = 0.0;" + + " }" + + " if(screenRenderMode == 2)" + + " {" + + " texCoord.y = 1.0-texCoord.y;" + + " }" + + " if(aCoord.x<=splitRatio-divWidth)" + + " {" + + " gl_FragColor = texture2D(leftTexture, texCoord);" + + " }" + + " else if(texCoord.x>splitRatio-divWidth && " + + "texCoord.x<=splitRatio+divWidth && screenRenderMode>0)" + + " {" + + " gl_FragColor = vec4(1.0,0.0,0.0,1.0);" + + " }" + + " else" + + " {" + + " gl_FragColor = texture2D(rightTexture, texCoord);" + + " }" + + "}"; + private int mvpMatrixHandle; + private float[] mvpMatrix = { + 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, + 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, + }; + private float[] mvpExtMatrix = { + 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, + 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, + }; + + private float[] projectMatrix = { + 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, + 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, + }; + + private float[] viewMatrix = { + 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, + 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, + }; + + public SplitScreenRender() {} + + public Boolean init() { + if (initStatus) { + return initStatus; + } + createMProgram(); + return initStatus; + } + public static int loadShader(int type, String shaderCode) { + int shader = GLES20.glCreateShader(type); + GLES20.glShaderSource(shader, shaderCode); + GLES20.glCompileShader(shader); + return shader; + } + + public void createMProgram() { + ByteBuffer bb = ByteBuffer.allocateDirect(POSITION_VERTEX.length * 4); + vertextBuffer = bb.order(ByteOrder.nativeOrder()).asFloatBuffer(); + vertextBuffer.put(POSITION_VERTEX); + vertextBuffer.position(0); + ByteBuffer m_bb = ByteBuffer.allocateDirect(TEXTURE_VERTEX.length * 4); + texcoordBuffer = m_bb.order(ByteOrder.nativeOrder()).asFloatBuffer(); + texcoordBuffer.put(TEXTURE_VERTEX); + texcoordBuffer.position(0); + vertexShader = loadShader(GLES20.GL_VERTEX_SHADER, vertexShaderCode); + fragmentShader = + loadShader(GLES20.GL_FRAGMENT_SHADER, fragmentShaderCode); + shaderProgram = GLES20.glCreateProgram(); + GLES20.glAttachShader(shaderProgram, vertexShader); + GLES20.glAttachShader(shaderProgram, fragmentShader); + GLES20.glLinkProgram(shaderProgram); + GLES20.glDeleteShader(vertexShader); + GLES20.glDeleteShader(fragmentShader); + positiveHandler = + GLES20.glGetAttribLocation(shaderProgram, "vPosition"); + coordHandler = GLES20.glGetAttribLocation(shaderProgram, "vCoord"); + mvpMatrixHandle = + GLES20.glGetUniformLocation(shaderProgram, "uMvpMatrix"); + frameTextureLeftHandler = + GLES20.glGetUniformLocation(shaderProgram, "leftTexture"); + frameTextureRightHandler = + GLES20.glGetUniformLocation(shaderProgram, "rightTexture"); + splitScreenLRRatioHandler = + GLES20.glGetUniformLocation(shaderProgram, "splitRatio"); + screenRenderModeHandler = + GLES20.glGetUniformLocation(shaderProgram, "screenRenderMode"); + if (GLES20.glGetError() == GLES20.GL_NO_ERROR) { + initStatus = true; + } + } + + public synchronized void drawToScreen(int texture_id_1, int texture_id_2, + int world_width, int world_height) { + GLES20.glUseProgram(shaderProgram); + // Log.d("","splitScreenRatio "+splitScreenRatio+" + // screenRenderMode "+screenRenderMode); + if (screenRenderMode == 2) { + GLES20.glViewport(0, (int)(world_height * splitScreenRatio), + world_width, + (int)(world_height * (1 - splitScreenRatio))); + } else { + GLES20.glViewport(0, 0, world_width, world_height); + } + GLES20.glVertexAttribPointer(positiveHandler, 3, GLES20.GL_FLOAT, false, + 12, vertextBuffer); + GLES20.glEnableVertexAttribArray(positiveHandler); + GLES20.glVertexAttribPointer(coordHandler, 2, GLES20.GL_FLOAT, false, 8, + texcoordBuffer); + GLES20.glEnableVertexAttribArray(coordHandler); + GLES20.glActiveTexture(GLES20.GL_TEXTURE0); + GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, texture_id_1); + if (screenRenderMode == 1) { + GLES20.glActiveTexture(GLES20.GL_TEXTURE1); + GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, texture_id_2); + } + GLES20.glUniform1i(frameTextureLeftHandler, 0); + GLES20.glUniform1i(frameTextureRightHandler, 1); + + if (screenRenderMode == 2) { + GLES20.glUniform1f(splitScreenLRRatioHandler, 1.0f); + } else { + GLES20.glUniform1f(splitScreenLRRatioHandler, splitScreenRatio); + } + GLES20.glUniform1i(screenRenderModeHandler, screenRenderMode); + GLES20.glUniformMatrix4fv(mvpMatrixHandle, 1, false, mvpMatrix, 0); + GLES20.glDrawArrays(GLES20.GL_TRIANGLE_STRIP, 0, 4); + GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, 0); + GLES20.glDisableVertexAttribArray(positiveHandler); + GLES20.glDisableVertexAttribArray(coordHandler); + + if (screenRenderMode == 2) { + GLES20.glUseProgram(shaderProgram); + GLES20.glViewport(0, 0, world_width, + (int)(world_height * splitScreenRatio)); + GLES20.glVertexAttribPointer(positiveHandler, 3, GLES20.GL_FLOAT, + false, 12, vertextBuffer); + GLES20.glEnableVertexAttribArray(positiveHandler); + GLES20.glVertexAttribPointer(coordHandler, 2, GLES20.GL_FLOAT, + false, 8, texcoordBuffer); + GLES20.glEnableVertexAttribArray(coordHandler); + GLES20.glActiveTexture(GLES20.GL_TEXTURE0); + GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, texture_id_2); + GLES20.glUniform1i(frameTextureLeftHandler, 0); + GLES20.glUniform1i(frameTextureRightHandler, 1); + GLES20.glUniform1f(splitScreenLRRatioHandler, 1.0f); + GLES20.glUniform1i(screenRenderModeHandler, screenRenderMode); + GLES20.glUniformMatrix4fv(mvpMatrixHandle, 1, false, mvpExtMatrix, + 0); + GLES20.glDrawArrays(GLES20.GL_TRIANGLE_STRIP, 0, 4); + GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, 0); + GLES20.glDisableVertexAttribArray(positiveHandler); + GLES20.glDisableVertexAttribArray(coordHandler); + } + } + + @Override + protected void finalize() { + if (0 != shaderProgram) { + GLES20.glDeleteProgram(shaderProgram); + } + } + + public float[] updatePrjMatrix(int imgWidth, int imgHeight, int wndWidth, + int wndHeight) { + int initWndHeight = wndHeight; + if (screenRenderMode == 2) { + // wndHeight = (int)(wndHeight*splitScreenRatio); + wndHeight = (int)(initWndHeight * (1 - splitScreenRatio)); + } + float wndRatio = 1.0f; + float originRatio = 1.0f; + float widthRatio = 1.0f; + float heightRatio = 1.0f; + if (imgWidth != -1 && imgHeight != -1 && wndWidth != -1 && + wndHeight != -1) { + originRatio = imgWidth / (float)imgHeight; + wndRatio = wndWidth / (float)wndHeight; + if (wndWidth > wndHeight) { + if (originRatio > wndRatio) { + heightRatio = originRatio / wndRatio; + Matrix.orthoM(projectMatrix, 0, -widthRatio, widthRatio, + -heightRatio, heightRatio, 3f, 5f); + } else { + widthRatio = wndRatio / originRatio; + Matrix.orthoM(projectMatrix, 0, -widthRatio, widthRatio, + -heightRatio, heightRatio, 3f, 5f); + } + } else { + if (originRatio > wndRatio) { + heightRatio = originRatio / wndRatio; + Matrix.orthoM(projectMatrix, 0, -widthRatio, widthRatio, + -heightRatio, heightRatio, 3f, 5f); + } else { + widthRatio = wndRatio / originRatio; + Matrix.orthoM(projectMatrix, 0, -widthRatio, widthRatio, + -heightRatio, heightRatio, 3f, 5f); + } + } + Matrix.setLookAtM(viewMatrix, 0, 0f, 0f, 5.0f, 0f, 0f, 0f, 0f, 1.0f, + 0f); + Matrix.multiplyMM(mvpMatrix, 0, projectMatrix, 0, viewMatrix, 0); + } + if (screenRenderMode == 2) { + updatePrjMatrixExt(imgWidth, imgHeight, wndWidth, + (int)(initWndHeight * (splitScreenRatio))); + } + return mvpMatrix; + } + + public float[] updatePrjMatrixExt(int imgWidth, int imgHeight, int wndWidth, + int wndHeight) { + float wndRatio = 1.0f; + float originRatio = 1.0f; + float widthRatio = 1.0f; + float heightRatio = 1.0f; + if (imgWidth != -1 && imgHeight != -1 && wndWidth != -1 && + wndHeight != -1) { + originRatio = imgWidth / (float)imgHeight; + wndRatio = wndWidth / (float)wndHeight; + if (wndWidth > wndHeight) { + if (originRatio > wndRatio) { + heightRatio = originRatio / wndRatio; + Matrix.orthoM(projectMatrix, 0, -widthRatio, widthRatio, + -heightRatio, heightRatio, 3f, 5f); + } else { + widthRatio = wndRatio / originRatio; + Matrix.orthoM(projectMatrix, 0, -widthRatio, widthRatio, + -heightRatio, heightRatio, 3f, 5f); + } + } else { + if (originRatio > wndRatio) { + heightRatio = originRatio / wndRatio; + Matrix.orthoM(projectMatrix, 0, -widthRatio, widthRatio, + -heightRatio, heightRatio, 3f, 5f); + } else { + widthRatio = wndRatio / originRatio; + Matrix.orthoM(projectMatrix, 0, -widthRatio, widthRatio, + -heightRatio, heightRatio, 3f, 5f); + } + } + Matrix.setLookAtM(viewMatrix, 0, 0f, 0f, 5.0f, 0f, 0f, 0f, 0f, 1.0f, + 0f); + Matrix.multiplyMM(mvpExtMatrix, 0, projectMatrix, 0, viewMatrix, 0); + } + return mvpExtMatrix; + } + + public void setSplitScreenPos(float posRatio) { + Log.d("", "setSplitScreenPos posRatio " + posRatio + + " screenRenderMode " + screenRenderMode); + if (posRatio > -0.000001f && posRatio < 1.000001f) { + splitScreenRatio = posRatio; + } + } + + public void setSplitScreenMode(int splitScreenMode) { + screenRenderMode = splitScreenMode; + } +} diff --git a/bmf_lite/android/app/src/main/java/com/bmf/lite/app/render/TextureUtils.java b/bmf_lite/android/app/src/main/java/com/bmf/lite/app/render/TextureUtils.java new file mode 100644 index 00000000..7d86853d --- /dev/null +++ b/bmf_lite/android/app/src/main/java/com/bmf/lite/app/render/TextureUtils.java @@ -0,0 +1,276 @@ +package com.bmf.lite.app.render; + +import android.opengl.GLES20; +import android.util.Log; +import android.graphics.Bitmap; +import android.graphics.BitmapFactory; +import android.opengl.GLES11Ext; +import android.opengl.GLES20; +import android.opengl.GLUtils; +import android.util.Log; +import java.io.File; +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.nio.Buffer; +import java.nio.ByteBuffer; +import java.nio.ByteOrder; +import com.bmf.lite.app.tool.SingleApplication; +public class TextureUtils { + private static String TAG = "bmf-demo-app TextureUtils"; + private static String TARGET_PATH = "/sdcard/bmf_test_data/benchmark/"; + + private static int lastWidth = 0; + private static int lastHeight = 0; + private static byte[] inputTexColorBytes = null; + private static byte[] outputTexColorBytes = null; + private static ByteBuffer inputTexColorBuf = null; + private static ByteBuffer outputTexColorBuf = null; + private static int[] textureIdList = null; + + private static int[] textureDatas = null; + public static int[] GenTexture(int n, int start) { + int texture_id[] = new int[n]; + GLES20.glGenTextures(n, texture_id, start); + for (int i = 0; i < n; ++i) { + GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, texture_id[i]); + GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D, + GLES20.GL_TEXTURE_WRAP_S, + GLES20.GL_CLAMP_TO_EDGE); + GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D, + GLES20.GL_TEXTURE_WRAP_T, + GLES20.GL_CLAMP_TO_EDGE); + GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D, + GLES20.GL_TEXTURE_MIN_FILTER, + GLES20.GL_LINEAR); + GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D, + GLES20.GL_TEXTURE_MAG_FILTER, + GLES20.GL_LINEAR); + GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, 0); + } + return texture_id; + } + + public static int[] CreateTextures(int n) { + int[] textures = new int[n]; + GLES20.glGenTextures(n, textures, 0); + return textures; + } + + public static void SaveBitmap(String name, Bitmap bitmap) { + + Log.d(TAG, "SaveBitmap Path = " + TARGET_PATH); + File saveFile = new File(TARGET_PATH, name); + if (saveFile.exists()) { + saveFile.delete(); + } + try { + saveFile.createNewFile(); + } catch (IOException e) { + e.printStackTrace(); + } + try { + FileOutputStream saveImgOut = new FileOutputStream(saveFile); + bitmap.compress(Bitmap.CompressFormat.PNG, 80, saveImgOut); + saveImgOut.flush(); + saveImgOut.close(); + } catch (IOException ex) { + ex.printStackTrace(); + } + } + public static void SaveTexture2Bitmap(int texId, int width, int height, + String path, int texture_type) { + int sizeNeeded = width * height * 4; + ByteBuffer buf = ByteBuffer.allocateDirect(sizeNeeded); + buf.rewind(); + buf.order(ByteOrder.LITTLE_ENDIAN); + // GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, texId); + int[] frameBuffers = new int[1]; + GLES20.glGenFramebuffers(1, frameBuffers, 0); + GLES20.glBindFramebuffer(GLES20.GL_FRAMEBUFFER, frameBuffers[0]); + GLES20.glFramebufferTexture2D(GLES20.GL_FRAMEBUFFER, + GLES20.GL_COLOR_ATTACHMENT0, texture_type, + texId, 0); + int val = GLES20.glCheckFramebufferStatus(GLES20.GL_FRAMEBUFFER); + if (val != GLES20.GL_FRAMEBUFFER_COMPLETE) { + Log.e(TAG, + "SaveTexture2Bitmap glBindFramebuffer failed,error code:" + + val); + } + GLES20.glReadPixels(0, 0, width, height, GLES20.GL_RGBA, + GLES20.GL_UNSIGNED_BYTE, buf); + + // flip the image + Bitmap bmp = + Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888); + buf.rewind(); + bmp.copyPixelsFromBuffer(buf); + if (path != "") { + SaveBitmap(path, bmp); + } + bmp.recycle(); + + GLES20.glBindFramebuffer(GLES20.GL_FRAMEBUFFER, 0); + GLES20.glDeleteFramebuffers(1, new int[] {frameBuffers[0]}, 0); + } + + public static void LogOESError(String moduleTAG) { + int error = GLES20.glGetError(); + switch (error) { + case GLES20.GL_NO_ERROR: + Log.d(moduleTAG, "GL_OK"); + break; + case GLES20.GL_INVALID_ENUM: + Log.e(moduleTAG, "GL_INVALID_ENUM"); + break; + case GLES20.GL_INVALID_VALUE: + Log.e(moduleTAG, "GL_INVALID_VALUE"); + break; + case GLES20.GL_INVALID_OPERATION: + Log.e(moduleTAG, "GL_INVALID_OPERATION"); + break; + case GLES20.GL_INVALID_FRAMEBUFFER_OPERATION: + Log.e(moduleTAG, "GL_INVALID_FRAMEBUFFER_OPERATION"); + break; + case GLES20.GL_OUT_OF_MEMORY: + Log.e(moduleTAG, "GL_OUT_OF_MEMORY"); + break; + default: + Log.e(moduleTAG, "error happen" + String.valueOf(error)); + break; + } + } + + public static void CopyFromTexture(int texture, int width, int height, + Buffer data) { + if (textureIdList == null) { + textureIdList = new int[1]; + GLES20.glGenFramebuffers(1, textureIdList, 0); + } + GLES20.glBindFramebuffer(GLES20.GL_FRAMEBUFFER, textureIdList[0]); + GLES20.glFramebufferTexture2D(GLES20.GL_FRAMEBUFFER, + GLES20.GL_COLOR_ATTACHMENT0, + GLES20.GL_TEXTURE_2D, texture, 0); + int val = GLES20.glCheckFramebufferStatus(GLES20.GL_FRAMEBUFFER); + if (val != GLES20.GL_FRAMEBUFFER_COMPLETE) { + Log.e("TAG", "glBindFramebuffer failed,error code:" + val); + } + GLES20.glReadPixels(0, 0, width, height, GLES20.GL_RGBA, + GLES20.GL_UNSIGNED_BYTE, data); + GLES20.glBindFramebuffer(GLES20.GL_FRAMEBUFFER, 0); + } + public static float PSNR(int inputTextureId, int outputTextureId, int width, + int height, boolean isSameSize) { + if (isSameSize == true) { + int sizeNeeded = width * height * 4; + if (lastWidth != width || lastHeight != height) { + inputTexColorBytes = new byte[sizeNeeded]; + outputTexColorBytes = new byte[sizeNeeded]; + inputTexColorBuf = ByteBuffer.allocateDirect(sizeNeeded); + outputTexColorBuf = ByteBuffer.allocateDirect(sizeNeeded); + lastWidth = width; + lastHeight = height; + } + inputTexColorBuf.rewind(); + inputTexColorBuf.order(ByteOrder.LITTLE_ENDIAN); + CopyFromTexture(inputTextureId, width, height, inputTexColorBuf); + inputTexColorBuf.rewind(); + inputTexColorBuf.get(inputTexColorBytes); + outputTexColorBuf.rewind(); + outputTexColorBuf.order(ByteOrder.LITTLE_ENDIAN); + CopyFromTexture(outputTextureId, width, height, outputTexColorBuf); + outputTexColorBuf.rewind(); + outputTexColorBuf.get(outputTexColorBytes); + if (inputTexColorBuf.hasRemaining()) { + inputTexColorBuf.compact(); + } else { + inputTexColorBuf.clear(); + } + if (outputTexColorBuf.hasRemaining()) { + outputTexColorBuf.compact(); + } else { + outputTexColorBuf.clear(); + } + // long endTime4 = System.currentTimeMillis(); + // Log.d("TextureUtils","PSNR copy data time:" + (endTime4 - + // startTime4) + " ms."); + long sum = 0; + int diff; + for (int i = 0; i < sizeNeeded; i++) { + int ioriginal = inputTexColorBytes[i] & 0xFF; + int iresult = outputTexColorBytes[i] & 0xFF; + diff = ioriginal - iresult; + sum += diff * diff; + } + double MSE = sum / (1.0f * sizeNeeded); + float PSNR = 0; + if (MSE < 10e-10) { + PSNR = 1000; + } else { + PSNR = (float)(10.0 * Math.log10((255.0 * 255.0) / MSE)); + } + // Log.d("TextureUtils ", "Sum : " +sum+" PSNR : " +PSNR); + return PSNR; + } else { + Log.e(TAG, "psnr calculation with different resolutions is not " + + "supported."); + } + return -1000; + } + + public static Bitmap decodeBitmapFromFile(File file) { + InputStream inputStream = null; + try { + inputStream = new FileInputStream(file); + } catch (FileNotFoundException e) { + e.printStackTrace(); + } + Bitmap bitmap = BitmapFactory.decodeStream(inputStream); + + if (bitmap == null) { + Log.e("TextureUtils", " could not be decoded."); + } + try { + inputStream.close(); + } catch (FileNotFoundException e) { + e.printStackTrace(); + } catch (IOException e) { + throw new RuntimeException(e); + } + return bitmap; + } + + public static int[] loadBitmapToTexture(int texture_id, String path) { + if (texture_id == 0) { + Log.e("TextureUtils", " texture not init"); + return new int[] {texture_id, -1, -1}; + } + + int texture_type = GLES20.GL_TEXTURE_2D; + Bitmap bitmap = decodeBitmapFromFile(new File(path)); + + if (bitmap == null) { + Log.e("TextureUtils", path + " could not be decoded."); + return new int[] {texture_id, -1, -1}; + } + if (textureDatas == null) { + textureDatas = new int[3]; + } + textureDatas[0] = texture_id; + textureDatas[1] = bitmap.getWidth(); + textureDatas[2] = bitmap.getHeight(); + GLES20.glBindTexture(texture_type, texture_id); + GLUtils.texImage2D(texture_type, 0, bitmap, 0); + bitmap.recycle(); + GLES20.glBindTexture(texture_type, 0); + TextureUtils.LogOESError("TextureUtils"); + return textureDatas; + } + + public static Bitmap loadBitmapFromFile(String path) { + Bitmap bitmap = decodeBitmapFromFile(new File(path)); + return bitmap; + } +} diff --git a/bmf_lite/android/app/src/main/java/com/bmf/lite/app/tool/FileOperation.java b/bmf_lite/android/app/src/main/java/com/bmf/lite/app/tool/FileOperation.java new file mode 100644 index 00000000..b1b0e0b2 --- /dev/null +++ b/bmf_lite/android/app/src/main/java/com/bmf/lite/app/tool/FileOperation.java @@ -0,0 +1,56 @@ +package com.bmf.lite.app.tool; + +import android.content.Context; +import java.io.File; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; + +public class FileOperation { + public static String getAssetFilePath(Context context, String fileName) { + copyFile(context, fileName); + return context.getFilesDir().getAbsolutePath() + File.separator + + fileName; + } + + private static void copyFile(Context context, String fileName) { + InputStream inputStream = null; + OutputStream outputStream = null; + try { + File dataFile = new File(context.getFilesDir(), fileName); + inputStream = context.getAssets().open(fileName); + if (dataFile.length() == inputStream.available()) { + return; + } + byte[] dataBuffer = new byte[2048]; + outputStream = new FileOutputStream(dataFile); + + int dataLength = inputStream.read(dataBuffer); + while (dataLength > 0) { + outputStream.write(dataBuffer, 0, dataLength); + dataLength = inputStream.read(dataBuffer); + } + outputStream.flush(); + } catch (IOException e) { + e.printStackTrace(); + } finally { + if (inputStream != null) { + try { + inputStream.close(); + inputStream = null; + } catch (IOException e) { + e.printStackTrace(); + } + } + if (outputStream != null) { + try { + outputStream.close(); + outputStream = null; + } catch (IOException e) { + e.printStackTrace(); + } + } + } + } +} diff --git a/bmf_lite/android/app/src/main/java/com/bmf/lite/app/tool/SingleApplication.java b/bmf_lite/android/app/src/main/java/com/bmf/lite/app/tool/SingleApplication.java new file mode 100644 index 00000000..47b78c65 --- /dev/null +++ b/bmf_lite/android/app/src/main/java/com/bmf/lite/app/tool/SingleApplication.java @@ -0,0 +1,21 @@ +package com.bmf.lite.app.tool; + +import android.app.Application; +import android.content.res.Resources; + +public class SingleApplication { + private static SingleApplication instance; + private Application application; + + public static SingleApplication getInstance() { + if (null == instance) { + instance = new SingleApplication(); + } + return instance; + } + public void init(Application application) { + this.application = application; + } + public Application getContext() { return this.application; } + public Resources getResources() { return this.application.getResources(); } +} diff --git a/bmf_lite/android/app/src/main/java/com/bmf/lite/app/ui/CameraPlayActivity.java b/bmf_lite/android/app/src/main/java/com/bmf/lite/app/ui/CameraPlayActivity.java new file mode 100644 index 00000000..9ae14bee --- /dev/null +++ b/bmf_lite/android/app/src/main/java/com/bmf/lite/app/ui/CameraPlayActivity.java @@ -0,0 +1,143 @@ +package com.bmf.lite.app.ui; +import androidx.appcompat.app.AppCompatActivity; +import androidx.core.content.ContextCompat; +import android.Manifest; +import android.content.Context; +import android.content.Intent; +import android.content.pm.PackageManager; +import android.graphics.Point; +import android.os.Bundle; +import android.util.Log; +import android.view.Window; +import android.view.WindowManager; +import android.widget.SeekBar; +import com.bmf.lite.app.R; +import com.bmf.lite.app.playctrl.CameraPlayerWrapper; +import com.bmf.lite.app.render.GLSurfaceViewWrapper; + +public class CameraPlayActivity extends AppCompatActivity { + private final String TAG = "AlgRenderer CameraPlayActivity"; + private GLSurfaceViewWrapper glSurfaceView; + public final int REQUEST_CAMERA_PERMISSION = 101; // 1 或者101 + private CameraPlayerWrapper cameraPlayer = null; + private SeekBar splitScreenSeek; + private float seekPosRatio = 0; + int algType = 0; + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_player); + if (ContextCompat.checkSelfPermission(this, + Manifest.permission.CAMERA) != + PackageManager.PERMISSION_GRANTED) { + requestCameraPermission(); + } else { + initView(); + // initPlay(); + } + } + private void setWindowFlag() { + Window window = getWindow(); + window.addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN); + window.addFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS); + window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); + } + + public void initView() { + splitScreenSeek = (SeekBar)findViewById(R.id.splitSeekbar); + glSurfaceView = (GLSurfaceViewWrapper)findViewById(R.id.surfaceView); + Intent intent = getIntent(); + // Get and use the passed data + algType = intent.getIntExtra("ALG_TYPE", 0); + Log.d(TAG, "current algType:" + algType); + splitScreenSeek.setMax(100); + splitScreenSeek.setMin(0); + splitScreenSeek.setClickable(false); + splitScreenSeek.setOnSeekBarChangeListener( + new SeekBar.OnSeekBarChangeListener() { + @Override + public void onProgressChanged(SeekBar seekBar, int progress, + boolean fromUser) { + seekPosRatio = (float)progress / 100.0f; + glSurfaceView.setSplitScreenPos(seekPosRatio); + } + @Override + public void onStartTrackingTouch(SeekBar seekBar) { + Log.d(TAG, "seekbar start move "); + } + @Override + public void onStopTrackingTouch(SeekBar seekBar) { + Log.d(TAG, "seekbar stop move "); + seekBar.setClickable(false); + } + }); + } + + public void initPlay() { + if (cameraPlayer == null) { + cameraPlayer = new CameraPlayerWrapper(glSurfaceView); + if (glSurfaceView.getWndWidth() <= 0 || + glSurfaceView.getWndHeight() <= 0) { + Log.d(TAG, "camera window is not ready"); + } + + cameraPlayer.switchAlgorithm(algType); + cameraPlayer.openCamera( + 0); // 0->back camera,1->front + // cameracameraPlayer.switchAlgorithm(algType); + } + } + + @Override + public void onResume() { + super.onResume(); + initPlay(); + } + + @Override + public void onPause() { + super.onPause(); + } + + @Override + protected void onDestroy() { + super.onDestroy(); + if (cameraPlayer != null) { + cameraPlayer.closeCamera(); + } + if (glSurfaceView != null) { + glSurfaceView.closeRender(); + } + } + + public void requestCameraPermission() { + if (shouldShowRequestPermissionRationale(Manifest.permission.CAMERA)) { + Log.d(TAG, "requestCameraPermission: have camera permission"); + } else { + requestPermissions( + new String[] {Manifest.permission.CAMERA, + Manifest.permission.WRITE_EXTERNAL_STORAGE, + Manifest.permission.READ_EXTERNAL_STORAGE, + Manifest.permission.RECORD_AUDIO}, + REQUEST_CAMERA_PERMISSION); + } + } + + @Override + public void onRequestPermissionsResult(int requestCode, + String[] permissions, + int[] grantResults) { + super.onRequestPermissionsResult(requestCode, permissions, + grantResults); + if (requestCode == REQUEST_CAMERA_PERMISSION) { + for (int i = 0; i < grantResults.length; i++) { + if (grantResults[i] != PackageManager.PERMISSION_GRANTED) { + requestCameraPermission(); + return; + } + } + initView(); + initPlay(); + } + } +} diff --git a/bmf_lite/android/app/src/main/java/com/bmf/lite/app/ui/MainActivity.java b/bmf_lite/android/app/src/main/java/com/bmf/lite/app/ui/MainActivity.java new file mode 100644 index 00000000..898a4a7c --- /dev/null +++ b/bmf_lite/android/app/src/main/java/com/bmf/lite/app/ui/MainActivity.java @@ -0,0 +1,97 @@ +package com.bmf.lite.app.ui; + +import android.Manifest; +import android.app.Activity; +import android.app.Application; +import android.content.Intent; +import android.content.pm.PackageManager; +import android.os.Bundle; +import android.util.Log; +import android.view.View; +import android.widget.Button; + +import androidx.core.app.ActivityCompat; +import androidx.core.content.ContextCompat; + +import com.bmf.lite.app.R; +import com.bmf.lite.app.tool.SingleApplication; + +public class MainActivity extends Activity { + private Button buttonSuperResolution; + private Button buttonDenoise; + private Button buttonTexGenPic; + private final String TAG = "MainActivity"; + + public final int REQUEST_CAMERA_PERMISSION = 101; // 1 或者101 + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_main); + buttonSuperResolution = + (Button)findViewById(R.id.btnSuperResolutionTest); + buttonDenoise = (Button)findViewById(R.id.btnDenoiseTest); + buttonTexGenPic = (Button)findViewById(R.id.btnTexGenPicTest); + Application application = getApplication(); + SingleApplication single_app = SingleApplication.getInstance(); + single_app.init(application); + if (ContextCompat.checkSelfPermission(this, + Manifest.permission.CAMERA) != + PackageManager.PERMISSION_GRANTED || + ContextCompat.checkSelfPermission( + this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != + PackageManager.PERMISSION_GRANTED || + ContextCompat.checkSelfPermission( + this, Manifest.permission.READ_EXTERNAL_STORAGE) != + PackageManager.PERMISSION_GRANTED) { + requestCameraPermission(); + } else { + Log.d(TAG, "RequesPermissions: have camera permission"); + } + buttonSuperResolution.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + // Create a new Intent to start the new Activity + Intent intent = + new Intent(MainActivity.this, VideoPlayActivity.class); + // intent.putExtra("ALG_TYPE", + // "SuperResolution"); // string + intent.putExtra( + "ALG_TYPE", + 1); // int,0->normal,1->superresolution,2->denoise, + // 3->tex-gen-img + startActivity(intent); + } + }); + buttonDenoise.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + Intent intent = + new Intent(MainActivity.this, CameraPlayActivity.class); + intent.putExtra("ALG_TYPE", 2); + startActivity(intent); + } + }); + buttonTexGenPic.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + Intent intent = + new Intent(MainActivity.this, TexGenPicActivity.class); + intent.putExtra("ALG_TYPE", 3); + startActivity(intent); + } + }); + } + + public void requestCameraPermission() { + if (shouldShowRequestPermissionRationale(Manifest.permission.CAMERA)) { + Log.d(TAG, "requestCameraPermission: have camera permission"); + } else { + requestPermissions( + new String[] {Manifest.permission.CAMERA, + Manifest.permission.WRITE_EXTERNAL_STORAGE, + Manifest.permission.READ_EXTERNAL_STORAGE, + Manifest.permission.RECORD_AUDIO}, + REQUEST_CAMERA_PERMISSION); + } + } +} \ No newline at end of file diff --git a/bmf_lite/android/app/src/main/java/com/bmf/lite/app/ui/TexGenPicActivity.java b/bmf_lite/android/app/src/main/java/com/bmf/lite/app/ui/TexGenPicActivity.java new file mode 100644 index 00000000..183fe7d7 --- /dev/null +++ b/bmf_lite/android/app/src/main/java/com/bmf/lite/app/ui/TexGenPicActivity.java @@ -0,0 +1,349 @@ +package com.bmf.lite.app.ui; + +import android.Manifest; +import android.content.Context; +import android.content.Intent; +import android.content.pm.PackageManager; +import android.os.Bundle; +import android.text.TextWatcher; +import android.util.Log; +import android.widget.Button; +import android.widget.EditText; +import android.widget.LinearLayout; +import androidx.appcompat.app.AppCompatActivity; +import androidx.core.app.ActivityCompat; +import androidx.core.content.ContextCompat; +import com.bmf.lite.app.R; +import com.bmf.lite.app.playctrl.ImagePlayerWrapper; +import com.bmf.lite.app.render.GLSurfaceViewWrapper; +import android.app.Activity; +import android.database.Cursor; +import android.net.Uri; +import android.provider.MediaStore; +import android.widget.Toast; +import android.text.Editable; +import com.bmf.lite.app.tool.FileOperation; + +public class TexGenPicActivity extends AppCompatActivity { + private final String TAG = "AlgRenderer TexGenPicActivity"; + private GLSurfaceViewWrapper glSurfaceView; + private EditText inputEditView; + private int algType = 0; + int charSizeLimit = 30; + private Button buttonChoiceImg; + private Button buttonTexGenPic; + private int algProgressSts = 0; + private int lastAlgProgressSts = 0; + private int imgLoadSts = 0; + String imgPath; + private ImagePlayerWrapper imagePlayerWrapper = null; + private int modelLoadStsIndex = 0; + String assetFilePath = null; + String modelPath = "/data/local/tmp/ControlNetData"; + AlgListenThread listenAlgStsThread = null; + + public class AlgListenThread extends Thread { + private volatile boolean running = true; + public void stopCustomThread() { this.interrupt(); } + + @Override + public void run() { + try { + while (running) { + if (null != imagePlayerWrapper) { + algProgressSts = imagePlayerWrapper.getAlgProgressSts(); + if (algProgressSts == -200) { + buttonTexGenPic.setText("设备不支持"); + buttonTexGenPic.setEnabled(false); + Toast + .makeText(TexGenPicActivity.this, + "The current device does not " + + "support Vincennes", + Toast.LENGTH_SHORT) + .show(); + break; + } + } + runOnUiThread(new Runnable() { + @Override + public void run() { + if (algProgressSts == -1000 && imgLoadSts == 1) { + if ((modelLoadStsIndex / 250) % 2 == 0) { + buttonTexGenPic.setText("模型加载..."); + } else { + buttonTexGenPic.setText("模型加载...."); + } + modelLoadStsIndex++; + if (modelLoadStsIndex >= 10000) { + modelLoadStsIndex = 0; + } + inputEditView.setEnabled(false); + } + if (algProgressSts != lastAlgProgressSts && + imgLoadSts == 1) { + if (algProgressSts < 99 && algProgressSts > 0) { + String progressStr = + "生成" + algProgressSts + "%.."; + Log.d(TAG, + "current progressStr:" + progressStr); + buttonTexGenPic.setText(progressStr); + buttonTexGenPic.setEnabled(false); + inputEditView.setEnabled(false); + } else if (algProgressSts == 100) { + buttonTexGenPic.setText("生成完毕"); + inputEditView.setEnabled(true); + } else { + if (algProgressSts == 0) { + buttonTexGenPic.setText("生成图片"); + buttonTexGenPic.setEnabled(true); + inputEditView.setEnabled(true); + } + } + } + } + }); + Thread.sleep(10); + } + } catch (InterruptedException e) { + running = false; + return; + } catch (Exception e) { + e.printStackTrace(); + } + }; + } + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_player_tex_gen_pic); + RequestFilePermissions(); + initView(); + if (imagePlayerWrapper == null) { + imagePlayerWrapper = new ImagePlayerWrapper(glSurfaceView); + } + String[] algDependParams = { + assetFilePath + ":/vendor/dsp/cdsp:/vendor/lib64:/", + assetFilePath + + (";/vendor/dsp/cdsp;/vendor/lib/rfsa/adsp;/system/lib/rfsa/" + + "adsp;/vendor/dsp/dsp;/vendor/dsp/images;/dsp"), + assetFilePath + "/libQnnHtp.so", + assetFilePath + "/libQnnSystem.so", + modelPath, + modelPath + "/unet.serialized.bin", + modelPath + "/text_encoder.serialized.bin", + modelPath + "/vae_decoder.serialized.bin", + modelPath + "/controlnet.serialized.bin", + }; + glSurfaceView.setAlgDependParams(algDependParams); + } + public void startListentAlgSts() { + if (listenAlgStsThread != null) { + listenAlgStsThread.stopCustomThread(); + } + listenAlgStsThread = new AlgListenThread(); + listenAlgStsThread.start(); + } + public void initView() { + inputEditView = (EditText)findViewById(R.id.inputEditText); + glSurfaceView = findViewById(R.id.surfaceView); + Intent intent = getIntent(); + // Get and use the passed data + algType = intent.getIntExtra("ALG_TYPE", 0); + Log.d(TAG, "current algType:" + algType); + assetFilePath = + this.getApplicationContext().getFilesDir().getAbsolutePath(); + Log.d(TAG, assetFilePath); + + Log.d(TAG, this.getApplicationContext().getApplicationInfo().dataDir); + LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams( + LinearLayout.LayoutParams.MATCH_PARENT, 0, 0.92f); + glSurfaceView.setLayoutParams(layoutParams); + + LinearLayout.LayoutParams layoutParamsTex = + new LinearLayout.LayoutParams( + LinearLayout.LayoutParams.MATCH_PARENT, 0, 0.08f); + inputEditView.setLayoutParams(layoutParamsTex); + buttonChoiceImg = findViewById(R.id.importRefPicBtn); + buttonTexGenPic = findViewById(R.id.generatePicBtn); + buttonChoiceImg.setOnClickListener(v -> { + if (algProgressSts == 0 || algProgressSts >= 100) { + if (listenAlgStsThread != null) { + listenAlgStsThread.stopCustomThread(); + listenAlgStsThread = null; + } + inputEditView.setEnabled(true); + buttonTexGenPic.setEnabled(true); + buttonTexGenPic.setText("生成图片"); + onChoiceImg(); + } else { + Toast + .makeText(TexGenPicActivity.this, + "Model loading or generating..", + Toast.LENGTH_SHORT) + .show(); + return; + } + }); + + buttonTexGenPic.setOnClickListener(v -> { onTexGenPicBty(); }); + + inputEditView.addTextChangedListener(new TextWatcher() { + int beforeLength = 0; + int cursor = 0; + @Override + public void beforeTextChanged(CharSequence s, int start, int count, + int after) { + beforeLength = s.length(); + } + @Override + public void onTextChanged(CharSequence s, int start, int before, + int count) { + if (algProgressSts == 0 || algProgressSts >= 100) { + if (listenAlgStsThread != null) { + listenAlgStsThread.stopCustomThread(); + } + buttonTexGenPic.setEnabled(true); + buttonTexGenPic.setText("生成图片"); + modelLoadStsIndex = 0; + } else { + Toast + .makeText(TexGenPicActivity.this, + "Model loading or generating..", + Toast.LENGTH_SHORT) + .show(); + return; + } + } + @Override + public void afterTextChanged(Editable s) { + Log.d("This is already entered", "" + s.length()); + int afterLength = s.length(); + if (afterLength > charSizeLimit) { + int dValue = afterLength - charSizeLimit; + int dNum = afterLength - beforeLength; + int st = cursor + (dNum - dValue); + int en = cursor + dNum; + Editable s_new = s.delete(st, en); + inputEditView.setText(s_new.toString()); + inputEditView.setSelection(st); + Toast + .makeText(TexGenPicActivity.this, + "The maximum word limit has been exceeded", + Toast.LENGTH_SHORT) + .show(); + } + } + }); + } + + @Override + public void onResume() { + super.onResume(); + } + + @Override + public void onPause() { + super.onPause(); + } + + @Override + protected void onDestroy() { + super.onDestroy(); + if (glSurfaceView != null) { + glSurfaceView.closeRender(); + } + } + + protected void RequestFilePermissions() { + if (ContextCompat.checkSelfPermission( + this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != + PackageManager.PERMISSION_GRANTED) { + ActivityCompat.requestPermissions( + TexGenPicActivity.this, + new String[] {Manifest.permission.WRITE_EXTERNAL_STORAGE}, 100); + } else { + Log.d(TAG, "RequestFilePermissions: have read permission"); + } + if (ContextCompat.checkSelfPermission( + this, Manifest.permission.READ_EXTERNAL_STORAGE) != + PackageManager.PERMISSION_GRANTED) { + ActivityCompat.requestPermissions( + TexGenPicActivity.this, + new String[] {Manifest.permission.READ_EXTERNAL_STORAGE}, 100); + } else { + Log.d(TAG, "RequestFilePermissions: have write permission."); + } + } + + public void onChoiceImg() { + try { + Intent intent = + new Intent(Intent.ACTION_PICK, + MediaStore.Images.Media.EXTERNAL_CONTENT_URI); + startActivityForResult(intent, 66); + modelLoadStsIndex = 0; + } catch (Exception e) { + e.printStackTrace(); + } + } + + public void onTexGenPicBty() { + String text = inputEditView.getText().toString(); + if (text == null) { + Toast + .makeText(TexGenPicActivity.this, "The input string is empty", + Toast.LENGTH_SHORT) + .show(); + } else { + if (imgLoadSts == 1) { + glSurfaceView.setAlgInputParam(text); + buttonTexGenPic.setText("模型加载..."); + modelLoadStsIndex++; + buttonTexGenPic.setEnabled(false); + inputEditView.setEnabled(false); + startListentAlgSts(); + } + } + } + + public void initPlay(String resourcePath) { + try { + imgLoadSts = 0; + int ret = imagePlayerWrapper.setCurImgResource(resourcePath); + if (ret == 0) { + imgLoadSts = 1; + modelLoadStsIndex = 0; + } + } catch (Exception e) { + e.printStackTrace(); + Log.e(TAG, "Thread problem!"); + } + imagePlayerWrapper.switchAlgorithm(algType); + } + @Override + public void onActivityResult(int requestCode, int resultCode, Intent data) { + try { + super.onActivityResult(requestCode, resultCode, data); + if (requestCode == 66 && resultCode == RESULT_OK && null != data) { + Uri selectedImage = data.getData(); + String[] filePathColumn = {MediaStore.Images.Media.DATA}; + Cursor cursor = getContentResolver().query( + selectedImage, filePathColumn, null, null, null); + cursor.moveToFirst(); + int columnIndex = cursor.getColumnIndex(filePathColumn[0]); + imgPath = cursor.getString(columnIndex); + cursor.close(); + Toast + .makeText(TexGenPicActivity.this, + "select_img_path:" + imgPath, Toast.LENGTH_SHORT) + .show(); + initPlay(imgPath); + } + + if (resultCode != Activity.RESULT_OK) { + return; + } + } catch (Exception e) { + e.printStackTrace(); + } + } +} \ No newline at end of file diff --git a/bmf_lite/android/app/src/main/java/com/bmf/lite/app/ui/VideoPlayActivity.java b/bmf_lite/android/app/src/main/java/com/bmf/lite/app/ui/VideoPlayActivity.java new file mode 100644 index 00000000..0cb15d24 --- /dev/null +++ b/bmf_lite/android/app/src/main/java/com/bmf/lite/app/ui/VideoPlayActivity.java @@ -0,0 +1,170 @@ +package com.bmf.lite.app.ui; +import android.app.Activity; +import android.content.Context; +import android.content.Intent; +import android.os.Bundle; +import android.util.Log; +import android.view.ViewGroup; +import android.widget.SeekBar; +import androidx.appcompat.app.AppCompatActivity; + +import com.bmf.lite.app.tool.FileOperation; +import com.bmf.lite.app.R; +import com.bmf.lite.app.render.GLSurfaceViewWrapper; +import com.bmf.lite.app.playctrl.MediaPlayerWrapper; +import java.io.IOException; + +public class VideoPlayActivity extends AppCompatActivity { + private String TAG = "AlgRenderer VideoActivity"; + private GLSurfaceViewWrapper glSurfaceView = null; + private String videoPath = "/sdcard/Camera/video0_720_1080.mp4"; + private MediaPlayerWrapper mediaPlayerWrapper = null; + private boolean defaultVideoOpenSts = false; + Thread defaultVideoPlayThread = null; + Context context; + private SeekBar splitScreenSeek; + private float seekPosRatio = 0; + int algType = 0; + int playSts = 0; + private void initView() { + splitScreenSeek = (SeekBar)findViewById(R.id.splitSeekbar); + glSurfaceView = findViewById(R.id.surfaceView); + Intent intent = getIntent(); + algType = intent.getIntExtra("ALG_TYPE", 0); + ViewGroup.MarginLayoutParams surfaceUiParams = + (ViewGroup.MarginLayoutParams)glSurfaceView.getLayoutParams(); + ViewGroup.MarginLayoutParams seekBarParams = + (ViewGroup.MarginLayoutParams)splitScreenSeek.getLayoutParams(); + seekBarParams.bottomMargin = -surfaceUiParams.height / 2; + splitScreenSeek.setMax(100); + splitScreenSeek.setMin(0); + splitScreenSeek.setClickable(false); + splitScreenSeek.setOnSeekBarChangeListener( + new SeekBar.OnSeekBarChangeListener() { + @Override + public void onProgressChanged(SeekBar seekBar, int progress, + boolean fromUser) { + seekPosRatio = (float)progress / 100.0f; + glSurfaceView.setSplitScreenPos(seekPosRatio); + } + @Override + public void onStartTrackingTouch(SeekBar seekBar) { + Log.d(TAG, "seekbak start move "); + } + @Override + public void onStopTrackingTouch(SeekBar seekBar) { + Log.d(TAG, "seekbak stop move "); + seekBar.setClickable(false); + } + }); + } + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_player); + context = this.getApplicationContext(); + initView(); + // initPlay(); + } + + private void initPlay() { OpenDefaultVideo(); } + private void OpenDefaultVideo() { + if (playSts == 0) { + if (defaultVideoPlayThread != null) { + defaultVideoPlayThread.interrupt(); + } + defaultVideoPlayThread = new Thread(new Runnable() { + @Override + public void run() { + try { + String defaultAssetVideoPath = "test.mp4"; + String defaultVideoPath = + FileOperation.getAssetFilePath( + context, defaultAssetVideoPath); + Log.d(TAG, "videoPath:" + defaultVideoPath); + videoPath = defaultVideoPath; + + if (null != mediaPlayerWrapper) { + mediaPlayerWrapper.pause(); + mediaPlayerWrapper.stop(); + mediaPlayerWrapper.destroy(); + } + mediaPlayerWrapper = + new MediaPlayerWrapper(glSurfaceView); + while (glSurfaceView.getWndWidth() <= 0 || + glSurfaceView.getWndHeight() <= 0) { + Thread.sleep(100); + } + mediaPlayerWrapper.startPlay(videoPath); + mediaPlayerWrapper.setLooping(true); + defaultVideoOpenSts = true; + mediaPlayerWrapper.switchAlgorithm(algType); + } catch (Exception e) { + e.printStackTrace(); + } + Log.d(TAG, "videoPath:" + videoPath); + } + }); + defaultVideoPlayThread.start(); + playSts = 1; + } + } + + public void playLocalVideo(String videoPath) throws IOException { + this.videoPath = videoPath; + Log.d(TAG, "videoPath:" + videoPath); + if (defaultVideoOpenSts == true && defaultVideoPlayThread != null) { + defaultVideoPlayThread.interrupt(); + } + if (null != mediaPlayerWrapper) { + mediaPlayerWrapper.pause(); + mediaPlayerWrapper.stop(); + mediaPlayerWrapper.destroy(); + } + mediaPlayerWrapper = new MediaPlayerWrapper(glSurfaceView); + mediaPlayerWrapper.startPlay(this.videoPath); + mediaPlayerWrapper.setLooping(true); + Log.d(TAG, "videoPath:" + videoPath); + } + + @Override + protected void onResume() { + super.onResume(); + if (mediaPlayerWrapper == null) { + initPlay(); + } else { + mediaPlayerWrapper.resume(); + } + } + + @Override + protected void onPause() { + super.onPause(); + if (mediaPlayerWrapper != null) { + mediaPlayerWrapper.pause(); + } + } + + @Override + protected void onDestroy() { + super.onDestroy(); + if (mediaPlayerWrapper != null) { + mediaPlayerWrapper.destroy(); + } + if (glSurfaceView != null) { + glSurfaceView.closeRender(); + } + } + @Override + public void onActivityResult(int requestCode, int resultCode, Intent data) { + try { + super.onActivityResult(requestCode, resultCode, data); + if (resultCode != Activity.RESULT_OK) { + return; + } + } catch (Exception e) { + e.printStackTrace(); + } + } +} diff --git a/bmf_lite/android/app/src/main/res/drawable-v24/ic_launcher_foreground.xml b/bmf_lite/android/app/src/main/res/drawable-v24/ic_launcher_foreground.xml new file mode 100644 index 00000000..2b068d11 --- /dev/null +++ b/bmf_lite/android/app/src/main/res/drawable-v24/ic_launcher_foreground.xml @@ -0,0 +1,30 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/bmf_lite/android/app/src/main/res/drawable-xxhdpi/btn_start.png b/bmf_lite/android/app/src/main/res/drawable-xxhdpi/btn_start.png new file mode 100644 index 00000000..7238107b Binary files /dev/null and b/bmf_lite/android/app/src/main/res/drawable-xxhdpi/btn_start.png differ diff --git a/bmf_lite/android/app/src/main/res/drawable-xxhdpi/tex2img.png b/bmf_lite/android/app/src/main/res/drawable-xxhdpi/tex2img.png new file mode 100644 index 00000000..90e3ebd7 Binary files /dev/null and b/bmf_lite/android/app/src/main/res/drawable-xxhdpi/tex2img.png differ diff --git a/bmf_lite/android/app/src/main/res/drawable/ic_launcher_background.xml b/bmf_lite/android/app/src/main/res/drawable/ic_launcher_background.xml new file mode 100644 index 00000000..07d5da9c --- /dev/null +++ b/bmf_lite/android/app/src/main/res/drawable/ic_launcher_background.xml @@ -0,0 +1,170 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/bmf_lite/android/app/src/main/res/effect-data/denoise.gif b/bmf_lite/android/app/src/main/res/effect-data/denoise.gif new file mode 100644 index 00000000..85616062 Binary files /dev/null and b/bmf_lite/android/app/src/main/res/effect-data/denoise.gif differ diff --git a/bmf_lite/android/app/src/main/res/effect-data/super-resolution.gif b/bmf_lite/android/app/src/main/res/effect-data/super-resolution.gif new file mode 100644 index 00000000..ac2a6843 Binary files /dev/null and b/bmf_lite/android/app/src/main/res/effect-data/super-resolution.gif differ diff --git a/bmf_lite/android/app/src/main/res/effect-data/tex2pic.gif b/bmf_lite/android/app/src/main/res/effect-data/tex2pic.gif new file mode 100644 index 00000000..f56be859 Binary files /dev/null and b/bmf_lite/android/app/src/main/res/effect-data/tex2pic.gif differ diff --git a/bmf_lite/android/app/src/main/res/layout/activity_main.xml b/bmf_lite/android/app/src/main/res/layout/activity_main.xml new file mode 100644 index 00000000..cc41bcc7 --- /dev/null +++ b/bmf_lite/android/app/src/main/res/layout/activity_main.xml @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/bmf_lite/iOS/bmf_demo/bmf_demo/CameraViewController.h b/bmf_lite/iOS/bmf_demo/bmf_demo/CameraViewController.h new file mode 100644 index 00000000..50c31dd2 --- /dev/null +++ b/bmf_lite/iOS/bmf_demo/bmf_demo/CameraViewController.h @@ -0,0 +1,25 @@ +/* + * Copyright 2024 Babit Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface CameraViewController : UIViewController + +@end + +NS_ASSUME_NONNULL_END diff --git a/bmf_lite/iOS/bmf_demo/bmf_demo/CameraViewController.m b/bmf_lite/iOS/bmf_demo/bmf_demo/CameraViewController.m new file mode 100644 index 00000000..c4cd6942 --- /dev/null +++ b/bmf_lite/iOS/bmf_demo/bmf_demo/CameraViewController.m @@ -0,0 +1,129 @@ +/* + * Copyright 2024 Babit Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#import "CameraViewController.h" +#import "BmfLiteDemoCore.h" +#import +#import + +@interface CameraViewController () +{ + MTKView *_view; + BmfLiteDemoPlayer *_player; + AVCaptureSession *session; +} + +@end + +@implementation CameraViewController + +- (void)viewDidLoad { + [super viewDidLoad]; + session = nil; + // Do any additional setup after loading the view. + _view = (MTKView *)self.view; + _view.device = MTLCreateSystemDefaultDevice(); + [self setupAVCapture:TRUE]; +} + +- (void)captureOutput:(AVCaptureOutput *)captureOutput +didOutputSampleBuffer:(CMSampleBufferRef)sampleBuffer + fromConnection:(AVCaptureConnection *)connection +{ + [_player consume:sampleBuffer :YES]; +} +- (IBAction)toggleCamera:(id)sender { + UISwitch* control = (UISwitch*) sender; + + BOOL use_front = [control isOn]; + [self setupAVCapture:use_front]; +} + +/** + * 相机初始化方法 + */ +- (void)setupAVCapture:(BOOL) front_camera +{ + if (front_camera) { + _player = [[BmfLiteDemoPlayer alloc] initWithMTKView:_view : 1 : BmfLiteDemoAlgoType::BMFLITE_DEMO_ALGO_DENOISE]; + } else { + _player = [[BmfLiteDemoPlayer alloc] initWithMTKView:_view : 2 : BmfLiteDemoAlgoType::BMFLITE_DEMO_ALGO_DENOISE]; + } + + NSError *error = nil; + if (session != nil) { + [session stopRunning]; + } + + // 1 创建session + session = [AVCaptureSession new]; + // 2 设置session显示分辨率 + if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) +// [session setSessionPreset:AVCaptureSessionPreset640x480]; + [session setSessionPreset:AVCaptureSessionPreset1280x720]; + + else + [session setSessionPreset:AVCaptureSessionPresetPhoto]; + + + // 3 获取摄像头device,并且默认使用的后置摄像头,并且将摄像头加入到captureSession中 + AVCaptureDevice* device; + if (front_camera) { + device = [AVCaptureDevice defaultDeviceWithDeviceType:AVCaptureDeviceTypeBuiltInWideAngleCamera mediaType:AVMediaTypeVideo position:AVCaptureDevicePositionFront]; + } else { + device = [AVCaptureDevice defaultDeviceWithDeviceType:AVCaptureDeviceTypeBuiltInWideAngleCamera mediaType:AVMediaTypeVideo position:AVCaptureDevicePositionBack]; + } + AVCaptureDeviceInput *deviceInput = [AVCaptureDeviceInput deviceInputWithDevice:device error:&error]; + // isUsingFrontFacingCamera = NO; + if ([session canAddInput:deviceInput]){ + [session addInput:deviceInput]; + } + // 4 创建预览output,设置预览videosetting,然后设置预览delegate使用的回调线程,将该预览output加入到session + AVCaptureVideoDataOutput* videoOutput = [[AVCaptureVideoDataOutput alloc] init]; + videoOutput.alwaysDiscardsLateVideoFrames = YES; + videoOutput.videoSettings = [NSDictionary dictionaryWithObject:[NSNumber numberWithInt:kCVPixelFormatType_420YpCbCr8BiPlanarVideoRange] forKey:(id)kCVPixelBufferPixelFormatTypeKey];//设置像素格式 + if ([session canAddOutput:videoOutput]) + [session addOutput:videoOutput]; + // 5 显示捕捉画面 + dispatch_queue_t queue = dispatch_queue_create("myQueue", NULL); + [videoOutput setSampleBufferDelegate:self queue:queue]; + AVCaptureVideoPreviewLayer* preLayer = [AVCaptureVideoPreviewLayer layerWithSession: session];//相机拍摄预览图层 +// preLayer.frame = CGRectMake(0, 0, 100,100); + preLayer.videoGravity = AVLayerVideoGravityResizeAspectFill; + [self.view.layer addSublayer:preLayer]; + + // 6 启动session,output开始接受samplebuffer回调 + [session startRunning]; +} + +/* +#pragma mark - Navigation + +// In a storyboard-based application, you will often want to do a little preparation before navigation +- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { + // Get the new view controller using [segue destinationViewController]. + // Pass the selected object to the new view controller. +} +*/ + +- (IBAction)sliderValueChange:(id)sender{ + NSInteger tag = [sender tag]; + UISlider* ui_slider = (UISlider*)[self.view viewWithTag:tag]; + float value = [ui_slider value]; + [self->_player setSliderValue:value]; +} + +@end diff --git a/bmf_lite/iOS/bmf_demo/bmf_demo/CannyViewController.h b/bmf_lite/iOS/bmf_demo/bmf_demo/CannyViewController.h new file mode 100644 index 00000000..33c10af4 --- /dev/null +++ b/bmf_lite/iOS/bmf_demo/bmf_demo/CannyViewController.h @@ -0,0 +1,29 @@ +/* + * Copyright 2024 Babit Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface CannyViewController : UIViewController + +@property(nonatomic, retain) IBOutlet UISwitch *camera_switch; + +- (IBAction)switchValueChanged:(id)sender; + +@end + +NS_ASSUME_NONNULL_END diff --git a/bmf_lite/iOS/bmf_demo/bmf_demo/CannyViewController.m b/bmf_lite/iOS/bmf_demo/bmf_demo/CannyViewController.m new file mode 100644 index 00000000..572dc467 --- /dev/null +++ b/bmf_lite/iOS/bmf_demo/bmf_demo/CannyViewController.m @@ -0,0 +1,112 @@ +/* + * Copyright 2024 Babit Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#import "CannyViewController.h" +#import "BmfLiteDemoCore.h" +#import +#import + +@interface CannyViewController () +{ + MTKView *_view; + BmfLiteDemoPlayer *_player; + AVCaptureSession *session; +} + +@end + +@implementation CannyViewController + +- (IBAction)switchValueChanged:(id)sender { + if (self.camera_switch.isOn) { + [self setupAVCapture:YES]; + } else { + [self setupAVCapture:NO]; + } +} + +- (void)viewDidLoad { + [super viewDidLoad]; + session = nil; + // Do any additional setup after loading the view. +// _view = (MTKView *)self.view; + CGRect rect = CGRectMake(0, 0, self.view.bounds.size.width, self.view.bounds.size.height); + _view = [[MTKView alloc] initWithFrame:rect device:MTLCreateSystemDefaultDevice()]; + [self.view addSubview:_view]; + self.camera_switch = [[UISwitch alloc]initWithFrame:CGRectMake(0, 0, 200, 100)]; + self.camera_switch.on = YES; + [self.camera_switch addTarget:self action:@selector(switchValueChanged:) forControlEvents:UIControlEventValueChanged]; + [self.view addSubview:self.camera_switch]; + [self setupAVCapture:TRUE]; +} + +- (void)captureOutput:(AVCaptureOutput *)captureOutput +didOutputSampleBuffer:(CMSampleBufferRef)sampleBuffer + fromConnection:(AVCaptureConnection *)connection +{ + [_player consume:sampleBuffer : NO]; +} + +- (void)setupAVCapture:(BOOL) front_camera +{ + if (front_camera) { + _player = [[BmfLiteDemoPlayer alloc] initWithMTKView:_view : 1 : BmfLiteDemoAlgoType::BMFLITE_DEMO_ALGO_CANNY]; + } else { + _player = [[BmfLiteDemoPlayer alloc] initWithMTKView:_view : 2 : BmfLiteDemoAlgoType::BMFLITE_DEMO_ALGO_CANNY]; + } + + NSError *error = nil; + if (session != nil) { + [session stopRunning]; + } + + session = [AVCaptureSession new]; + if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) +// [session setSessionPreset:AVCaptureSessionPreset640x480]; + [session setSessionPreset:AVCaptureSessionPreset1280x720]; + + else + [session setSessionPreset:AVCaptureSessionPresetPhoto]; + + AVCaptureDevice* device; + if (front_camera) { + device = [AVCaptureDevice defaultDeviceWithDeviceType:AVCaptureDeviceTypeBuiltInWideAngleCamera mediaType:AVMediaTypeVideo position:AVCaptureDevicePositionFront]; + } else { + device = [AVCaptureDevice defaultDeviceWithDeviceType:AVCaptureDeviceTypeBuiltInWideAngleCamera mediaType:AVMediaTypeVideo position:AVCaptureDevicePositionBack]; + } + AVCaptureDeviceInput *deviceInput = [AVCaptureDeviceInput deviceInputWithDevice:device error:&error]; + // isUsingFrontFacingCamera = NO; + if ([session canAddInput:deviceInput]){ + [session addInput:deviceInput]; + } + + AVCaptureVideoDataOutput* videoOutput = [[AVCaptureVideoDataOutput alloc] init]; + videoOutput.alwaysDiscardsLateVideoFrames = YES; + videoOutput.videoSettings = [NSDictionary dictionaryWithObject:[NSNumber numberWithInt:kCVPixelFormatType_420YpCbCr8BiPlanarVideoRange] forKey:(id)kCVPixelBufferPixelFormatTypeKey]; + if ([session canAddOutput:videoOutput]) + [session addOutput:videoOutput]; + + dispatch_queue_t queue = dispatch_queue_create("myQueue", NULL); + [videoOutput setSampleBufferDelegate:self queue:queue]; + AVCaptureVideoPreviewLayer* preLayer = [AVCaptureVideoPreviewLayer layerWithSession: session]; +// preLayer.frame = CGRectMake(0, 0, 100,100); + preLayer.videoGravity = AVLayerVideoGravityResizeAspectFill; + [self.view.layer addSublayer:preLayer]; + + [session startRunning]; +} + +@end diff --git a/bmf_lite/iOS/bmf_demo/bmf_demo/Info.plist b/bmf_lite/iOS/bmf_demo/bmf_demo/Info.plist new file mode 100644 index 00000000..81ed29b7 --- /dev/null +++ b/bmf_lite/iOS/bmf_demo/bmf_demo/Info.plist @@ -0,0 +1,25 @@ + + + + + UIApplicationSceneManifest + + UIApplicationSupportsMultipleScenes + + UISceneConfigurations + + UIWindowSceneSessionRoleApplication + + + UISceneConfigurationName + Default Configuration + UISceneDelegateClassName + SceneDelegate + UISceneStoryboardFile + Main + + + + + + diff --git a/bmf_lite/iOS/bmf_demo/bmf_demo/PlayViewController.h b/bmf_lite/iOS/bmf_demo/bmf_demo/PlayViewController.h new file mode 100644 index 00000000..22d48d61 --- /dev/null +++ b/bmf_lite/iOS/bmf_demo/bmf_demo/PlayViewController.h @@ -0,0 +1,27 @@ +/* + * Copyright 2024 Babit Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface PlayViewController : UIViewController + +- (IBAction)sliderValueChange:(id)sender; + +@end + +NS_ASSUME_NONNULL_END diff --git a/bmf_lite/iOS/bmf_demo/bmf_demo/PlayViewController.mm b/bmf_lite/iOS/bmf_demo/bmf_demo/PlayViewController.mm new file mode 100644 index 00000000..8d1b56b9 --- /dev/null +++ b/bmf_lite/iOS/bmf_demo/bmf_demo/PlayViewController.mm @@ -0,0 +1,75 @@ +/* + * Copyright 2024 Babit Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#import "PlayViewController.h" +#import "BmfLiteDemoCore.h" + +@interface PlayViewController () +{ + MTKView *_view; + BmfLiteDemoVodPlayer *_player; +} +@end + +@implementation PlayViewController + +- (void)viewDidLoad { + [super viewDidLoad]; + // Do any additional setup after loading the view. + +// _view = [[MTKView alloc] initWithFrame:self.view.bounds device:MTLCreateSystemDefaultDevice()]; +// [self.view addSubview:_view]; + + _view = (MTKView *)self.view; + _view.device = MTLCreateSystemDefaultDevice(); + + + NSString * video_path = [[NSBundle mainBundle]pathForResource: @"test" ofType:@"mp4"]; + if (video_path == nil) { + NSLog(@"cannot find test video!"); + return; + } + dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ + self->_player = [[BmfLiteDemoVodPlayer alloc] initWithMTKView:self->_view AndVideoPath:video_path WhetherPlayAudio:YES Compare:YES]; + [_player run]; + }); + +} + +- (void)viewDidDisappear:(BOOL)animated +{ + [self->_player stop]; +} + +- (IBAction)sliderValueChange:(id)sender{ + NSInteger tag = [sender tag]; + UISlider* ui_slider = (UISlider*)[self.view viewWithTag:tag]; + float value = [ui_slider value]; + [self->_player setSliderValue:value]; +} + + +/* +#pragma mark - Navigation + +// In a storyboard-based application, you will often want to do a little preparation before navigation +- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { + // Get the new view controller using [segue destinationViewController]. + // Pass the selected object to the new view controller. +} +*/ + +@end diff --git a/bmf_lite/iOS/bmf_demo/bmf_demo/SceneDelegate.h b/bmf_lite/iOS/bmf_demo/bmf_demo/SceneDelegate.h new file mode 100644 index 00000000..2ae0793e --- /dev/null +++ b/bmf_lite/iOS/bmf_demo/bmf_demo/SceneDelegate.h @@ -0,0 +1,14 @@ +// +// SceneDelegate.h +// bmf_demo +// +// Created by ByteDance on 3/10/24. +// + +#import + +@interface SceneDelegate : UIResponder + +@property(strong, nonatomic) UIWindow *window; + +@end diff --git a/bmf_lite/iOS/bmf_demo/bmf_demo/SceneDelegate.m b/bmf_lite/iOS/bmf_demo/bmf_demo/SceneDelegate.m new file mode 100644 index 00000000..2e129ef8 --- /dev/null +++ b/bmf_lite/iOS/bmf_demo/bmf_demo/SceneDelegate.m @@ -0,0 +1,40 @@ +// +// SceneDelegate.m +// bmf_demo +// +// Created by ByteDance on 3/10/24. +// + +#import "SceneDelegate.h" + +@interface SceneDelegate () + +@end + +@implementation SceneDelegate + + +- (void)scene:(UIScene *)scene willConnectToSession:(UISceneSession *)session options:(UISceneConnectionOptions *)connectionOptions { +} + + +- (void)sceneDidDisconnect:(UIScene *)scene { +} + + +- (void)sceneDidBecomeActive:(UIScene *)scene { +} + + +- (void)sceneWillResignActive:(UIScene *)scene { +} + + +- (void)sceneWillEnterForeground:(UIScene *)scene { +} + + +- (void)sceneDidEnterBackground:(UIScene *)scene { +} + +@end diff --git a/bmf_lite/iOS/bmf_demo/bmf_demo/SdViewController.h b/bmf_lite/iOS/bmf_demo/bmf_demo/SdViewController.h new file mode 100644 index 00000000..c8540071 --- /dev/null +++ b/bmf_lite/iOS/bmf_demo/bmf_demo/SdViewController.h @@ -0,0 +1,31 @@ +/* + * Copyright 2024 Babit Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface SdViewController : UIViewController + +@property(nonatomic, retain) IBOutlet UIViewController *vc0; + +@property(nonatomic, strong) IBOutlet UITextField *textField; + +- (void)drawImage:(UIImage *)image; + +@end + +NS_ASSUME_NONNULL_END diff --git a/bmf_lite/iOS/bmf_demo/bmf_demo/SdViewController.m b/bmf_lite/iOS/bmf_demo/bmf_demo/SdViewController.m new file mode 100644 index 00000000..96df26ec --- /dev/null +++ b/bmf_lite/iOS/bmf_demo/bmf_demo/SdViewController.m @@ -0,0 +1,224 @@ +/* + * Copyright 2024 Babit Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include +#include + +#import "BmfLiteDemoCore.h" +#import "BmfLiteDemoSdInterface.h" +#import "SdViewController.h" +#import +#import + +#import "bmf_demo-Bridging-Header.h" +#import "bmf_demo-Swift.h" + +@interface SdViewController () { + NSString *text; +} + +@property(nonatomic, strong) IBOutlet UIImageView *imageView; + +@property(nonatomic, strong) IBOutlet UIButton *generateButton; + +@property(nonatomic) NSTimer *timer; + +@property(nonatomic, assign) double progressValue; + +@property(nonatomic, strong) IBOutlet UIProgressView *progressView; + +//@property (nonatomic, retain) SDExcutor* excutor; + +@property(nonatomic, strong) UILabel *textLabel; + +@property(nonatomic, strong) UIImage *image; + +@property(nonatomic, assign) uint32_t seeds; + +@property(nonatomic, assign) double steps; + +@property(nonatomic, assign) double interval; + +@property(nonatomic, strong) UILabel *interval_label; + +@property(nonatomic) NSTimer *result_timer; + +@end + +@implementation SdViewController { + bmf_lite::IAlgorithm *sd_excutor_; +} + +- (void)viewDidLoad { + [super viewDidLoad]; + + int w = self.view.bounds.size.width; + int h = self.view.bounds.size.height / 2; + self.imageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 200, w, h)]; + + [self.view addSubview:self.imageView]; + + self.progressView = [[UIProgressView alloc] + initWithProgressViewStyle:UIProgressViewStyleDefault]; + self.progressView.frame = CGRectMake(0, h + 250, w, 50); + [self.view addSubview:self.progressView]; + + self.textLabel = [[UILabel alloc] init]; + self.textLabel.text = @"Downloading"; + self.textLabel.font = [UIFont systemFontOfSize:16]; + self.textLabel.textColor = UIColor.blueColor; + self.textLabel.frame = CGRectMake(0, h + 200, w, 50); + [self.view addSubview:self.textLabel]; + + BMFLITE_MODEL_REGIST(6, bmf_lite::demo::BMFLiteDemoSdInterface); + + sd_excutor_ = bmf_lite::AlgorithmFactory::createAlgorithmInterface(); + bmf_lite::Param init_param; + init_param.setInt("change_mode", 2); + init_param.setString("instance_id", "sd1"); + init_param.setInt("algorithm_type", 6); + init_param.setInt("algorithm_version", 0); + + assert(sd_excutor_->setParam(init_param) == 0); + + bmf_lite::Param set_param; + set_param.setInt("change_mode", 5); + set_param.setString("instance_id", "sd1"); + set_param.setInt("algorithm_type", 6); + set_param.setInt("algorithm_version", 0); + assert(sd_excutor_->setParam(set_param) == 0); + self.timer = [NSTimer scheduledTimerWithTimeInterval:1.0 + target:self + selector:@selector(updateProgress) + userInfo:nil + repeats:YES]; +} + +- (void)getResut { + bmf_lite::VideoFrame oframe; + bmf_lite::Param output_param; + output_param.setInt("request_mode", 2); + assert(sd_excutor_->getVideoFrameOutput(oframe, output_param) == 0); + int completed = 0; + output_param.getInt("process_status", completed); + if (completed) { + NSLog(@"process completed"); + std::shared_ptr ibuf = oframe.buffer(); + + CGImageRef cg_img = (CGImageRef)ibuf->data(); + NSLog(@"get cgimag completed"); + CFRetain(cg_img); + + float original_w = CGImageGetWidth(cg_img); + + float original_h = CGImageGetHeight(cg_img); + NSLog(@"cgimage width:%f, height:%f", original_w, original_h); + CGSize original_size = CGSizeMake(original_w, original_h); + + CGFloat target_width = self.imageView.bounds.size.width; + CGFloat target_height = (original_size.height / original_size.width) * target_width; + CGSize target_size = CGSizeMake(target_width, target_height); + + CGContextRef context = CGBitmapContextCreate(NULL, target_size.width, target_size.height, + CGImageGetBitsPerComponent(cg_img), 4 * target_size.width, CGImageGetColorSpace(cg_img), kCGImageAlphaPremultipliedLast); + + CGRect rect = CGRectMake(0, 0, target_size.width, target_size.height); + CGContextDrawImage(context, rect, cg_img); + CGImageRef resized_image = CGBitmapContextCreateImage(context); + CGContextRelease(context); + self.imageView.image = [UIImage imageWithCGImage:resized_image]; + CGImageRelease(resized_image); + CFRelease(cg_img); + [self.result_timer invalidate]; + self.result_timer = nil; + self.textLabel.text = @"process success!"; + } +} + +- (void)buttonClicked:(UIButton *)button { + if (text == nil) { + return; + } + if (self.textField != nil) { + [self.textField resignFirstResponder]; + } + std::string input_text = std::string([text UTF8String]); + NSLog(@"positive_prompt:%@",text); + bmf_lite::Param input_param; + input_param.setString("positive_prompt", input_text); + self.textLabel.text = @"processing..."; + bmf_lite::VideoFrame iframe; + sd_excutor_->processVideoFrame(iframe, input_param); + self.result_timer = + [NSTimer scheduledTimerWithTimeInterval:0.5 + target:self + selector:@selector(getResut) + userInfo:nil + repeats:YES]; +} + +- (void)updateProgress { + bmf_lite::Param output_param; + bmf_lite::VideoFrame oframe; + output_param.setInt("request_mode", 1); + sd_excutor_->getVideoFrameOutput(oframe, output_param); + + double progress_value; + output_param.getDouble("progress_value", progress_value); + int status = 0; + output_param.getInt("init_status", status); + + if (status == 0) { + self.textLabel.text = @"Downloading model"; + [self.progressView setProgress:progress_value animated:YES]; + } else if (status == 1) { + self.textLabel.text = @"Uncompressing model"; + [self.progressView removeFromSuperview]; + } else if (status == 2) { + self.textLabel.text = @"Loading model"; + [self.progressView removeFromSuperview]; + } else if (status == 3) { + [self.timer invalidate]; + self.timer = nil; + self.textField = + [[UITextField alloc] initWithFrame:CGRectMake(10, 100, 200, 30)]; + self.textField.borderStyle = UITextBorderStyleRoundedRect; + self.textField.layer.borderWidth = 1.0; + self.textField.delegate = self; + [self.view addSubview:self.textField]; + + self.generateButton = [UIButton buttonWithType:UIButtonTypeRoundedRect]; + self.generateButton.frame = CGRectMake(260, 100, 100, 30); + self.generateButton.backgroundColor = UIColor.blueColor; + [self.generateButton setTitle:@"generate" forState:UIControlStateNormal]; + [self.generateButton addTarget:self + action:@selector(buttonClicked:) + forControlEvents:UIControlEventTouchUpInside]; + [self.view addSubview:self.generateButton]; + self.textLabel.text = @"Loading model completed!"; + } +} + +- (BOOL)textFieldShouldReturn:(UITextField *)textField { + [textField resignFirstResponder]; + text = textField.text; + return YES; +} + +- (void)drawImage:(nonnull UIImage *)image { +} + +@end diff --git a/bmf_lite/iOS/bmf_demo/bmf_demo/ViewController.h b/bmf_lite/iOS/bmf_demo/bmf_demo/ViewController.h new file mode 100644 index 00000000..cdb001ea --- /dev/null +++ b/bmf_lite/iOS/bmf_demo/bmf_demo/ViewController.h @@ -0,0 +1,12 @@ +// +// ViewController.h +// bmf_demo +// +// Created by ByteDance on 3/10/24. +// + +#import + +@interface ViewController : UIViewController + +@end diff --git a/bmf_lite/iOS/bmf_demo/bmf_demo/ViewController.mm b/bmf_lite/iOS/bmf_demo/bmf_demo/ViewController.mm new file mode 100644 index 00000000..a65e286e --- /dev/null +++ b/bmf_lite/iOS/bmf_demo/bmf_demo/ViewController.mm @@ -0,0 +1,31 @@ +// +// ViewController.m +// bmf_demo +// +// Created by ByteDance on 3/10/24. +// + +#import "ViewController.h" +#include +@interface ViewController () +@end + + +@implementation ViewController + +- (void)viewDidLoad { + [super viewDidLoad]; + // Do any additional setup after loading the view. +} + +- (UIInterfaceOrientationMask)supportedInterfaceOrientations { + return UIInterfaceOrientationMaskPortrait; +} + +- (void)didReceiveMemoryWarning { + [super didReceiveMemoryWarning]; + // Dispose of any resources that can be recreated. +} + + +@end diff --git a/bmf_lite/iOS/bmf_demo/bmf_demo/api/oc/BmfOptionOC.h b/bmf_lite/iOS/bmf_demo/bmf_demo/api/oc/BmfOptionOC.h new file mode 100644 index 00000000..795ea080 --- /dev/null +++ b/bmf_lite/iOS/bmf_demo/bmf_demo/api/oc/BmfOptionOC.h @@ -0,0 +1,28 @@ +/* + * Copyright 2024 Babit Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef _BMF_LITE_OPTIONS_OC_H_ +#define _BMF_LITE_OPTIONS_OC_H_ + +typedef NS_ENUM(NSInteger, BmfMemType) { + BmfMemTypeCVPixelBuffer, + BmfMemTypeTexture, + BmfMemTypeCVPixelBufferAndTexture, +}; + +typedef OSType BmfCVPixelBufferFmt; + +#endif // _BMF_LITE_OPTIONS_OC_H_ diff --git a/bmf_lite/iOS/bmf_demo/bmf_demo/api/oc/BmfParamOC.h b/bmf_lite/iOS/bmf_demo/bmf_demo/api/oc/BmfParamOC.h new file mode 100644 index 00000000..eff4a0b1 --- /dev/null +++ b/bmf_lite/iOS/bmf_demo/bmf_demo/api/oc/BmfParamOC.h @@ -0,0 +1,51 @@ +/* + * Copyright 2024 Babit Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef _BMF_LITE_PARAM_OC_H_ +#define _BMF_LITE_PARAM_OC_H_ + +#import + +@interface BmfParamOC : NSObject { +} + +- (instancetype)init; + +- (BOOL)hasKey:(NSString *)key; + +- (BOOL)setInt:(int32_t)value WithKey:(NSString *)key; + +- (int32_t)getIntByKey:(NSString *)key; + +- (BOOL)setInt64:(int64_t)value WithKey:(NSString *)key; + +- (int64_t)getInt64ByKey:(NSString *)key; + +- (BOOL)setFloatValue:(Float32)value WithKey:(NSString *)key; + +- (Float32)getFloatByKey:(NSString *)key; + +- (BOOL)setDouble:(double)value WithKey:(NSString *)key; + +- (double)getDoubleByKey:(NSString *)key; + +- (BOOL)setString:(NSString *)value WithKey:(NSString *)key; + +- (NSString *)getStringByKey:(NSString *)key; + +@end + +#endif // _BMF_LITE_PARAM_OC_H_ diff --git a/bmf_lite/iOS/bmf_demo/bmf_demo/api/oc/private/BmfParamOC.m b/bmf_lite/iOS/bmf_demo/bmf_demo/api/oc/private/BmfParamOC.m new file mode 100644 index 00000000..2e7c6124 --- /dev/null +++ b/bmf_lite/iOS/bmf_demo/bmf_demo/api/oc/private/BmfParamOC.m @@ -0,0 +1,155 @@ +/* + * Copyright 2024 Babit Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#import "BmfParamOC.h" +#import + +#include +#include + +@implementation BmfParamOC { + bmf_lite::Param* param; +} + +- (instancetype)init { + if (self = [super init]) { + param = nullptr; + param = new (std::nothrow) bmf_lite::Param(); + if (param == nullptr) { + return nil; + } + } + return self; +} + +- (BOOL)hasKey:(NSString *)key { + if (nil == key) { + return NO; + } + std::string c_key = std::string([key UTF8String]); + return param->has_key(c_key); +} + +- (BOOL)setInt:(int32_t)value WithKey:(NSString *)key { + if (key == nil) { + return NO; + } + std::string c_key = std::string([key UTF8String]); + return param->setInt(c_key, value); + +} + +- (int32_t)getIntByKey:(NSString *)key { + if (key == nil) { + return -1; + } + std::string c_key = std::string([key UTF8String]); + int value = 0; + bool ret = param->getInt(c_key, value); + if (ret) { + return value; + } + return -1; +} + +- (BOOL)setInt64:(int64_t)value WithKey:(NSString *)key { + if (key == nil) { + return NO; + } + std::string c_key = std::string([key UTF8String]); + return param->setLong(c_key, value); +} + +- (int64_t)getInt64ByKey:(NSString *)key { + if (key == nil) { + return 0; + } + std::string c_key = std::string([key UTF8String]); + int64_t value; + param->getLong(c_key, value); + return value; +} + +- (BOOL)setFloatValue:(Float32)value WithKey:(NSString *)key { + if (key == nil) { + return NO; + } + std::string c_key = std::string([key UTF8String]); + return param->setFloat(c_key, value); +} + +- (Float32)getFloatByKey:(NSString *)key { + if (key == nil) { + return 0.f; + } + std::string c_key = std::string([key UTF8String]); + float value = 0.f; + param->getFloat(c_key, value); + return value; +} + +- (BOOL)setDouble:(double)value WithKey:(NSString *)key { + if (key == nil) { + return NO; + } + std::string c_key = std::string([key UTF8String]); + return param->setDouble(c_key,value); +} + +- (double)getDoubleByKey:(NSString *)key { + if (key == nil) { + return NO; + } + std::string c_key = std::string([key UTF8String]); + double value = 0.; + param->getDouble(c_key, value); + return value; +} + +- (BOOL)setString:(NSString *)value WithKey:(NSString *)key { + if (key == nil) { + return NO; + } + std::string c_value = ""; + std::string c_key = std::string([key UTF8String]); + if (key != nil) { + c_value = [value UTF8String]; + } + return param->setString(c_key, c_value); +} + +- (NSString*)getStringByKey:(NSString *)key { + if (key == nil) { + return nil; + } + std::string c_key = std::string([key UTF8String]); + std::string c_value = ""; + param->getString(c_key, c_value); + NSString *ns_str = nil; + if (c_value != "") { + ns_str = [[NSString alloc] initWithCString:c_value.c_str()]; + } + return ns_str; +} + +- (void)dealloc { + if (NULL != param) { + delete param; + } + param = NULL; +} + +@end diff --git a/bmf_lite/iOS/bmf_demo/bmf_demo/bmf_demo.entitlements b/bmf_lite/iOS/bmf_demo/bmf_demo/bmf_demo.entitlements new file mode 100644 index 00000000..72f6f04b --- /dev/null +++ b/bmf_lite/iOS/bmf_demo/bmf_demo/bmf_demo.entitlements @@ -0,0 +1,20 @@ + + + + + com.apple.developer.kernel.extended-virtual-addressing + + com.apple.developer.kernel.increased-memory-limit + + com.apple.security.app-sandbox + + com.apple.security.device.audio-input + + com.apple.security.device.camera + + com.apple.security.network.client + + com.apple.security.personal-information.photos-library + + + diff --git a/bmf_lite/iOS/bmf_demo/bmf_demo/contrib_module/ml_stable_diffusion/BmfLiteDemoSdInterface.h b/bmf_lite/iOS/bmf_demo/bmf_demo/contrib_module/ml_stable_diffusion/BmfLiteDemoSdInterface.h new file mode 100644 index 00000000..cf750cae --- /dev/null +++ b/bmf_lite/iOS/bmf_demo/bmf_demo/contrib_module/ml_stable_diffusion/BmfLiteDemoSdInterface.h @@ -0,0 +1,82 @@ +/* + * Copyright 2024 Babit Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef _BMFLITE_CONTRIB_ALFORITHM_SD_INTERFACE_H_ +#define _BMFLITE_CONTRIB_ALFORITHM_SD_INTERFACE_H_ + +#import "BmfliteDemoMacro.h" +#import "MlStableDiffusionOC.h" +#include "bmf_lite.h" +#import +#import + +BMFLITE_DEMO_NAMESPACE_BEGIN + +class BMFLiteDemoSdInterface : public IAlgorithmInterface { + public: + enum Status { + DOWNLOADING = 0, + UNCOMPRESSING = 1, + LOADING = 2, + COMPLETED = 3, + PROCESSING = 4, + FAILED = 5, + NO_INIT = 6, + }; + + enum RequestMode { + NONE = 0, + INIT_STATUS = 1, + PROCESS_STATUS = 2, + }; + + virtual ~BMFLiteDemoSdInterface(); + + virtual int setParam(Param param) override; + + virtual int processVideoFrame(VideoFrame videoframe, Param param); + + virtual int getVideoFrameOutput(VideoFrame &frame, Param ¶m); + + virtual int processMultiVideoFrame(std::vector videoframes, + Param param); + + virtual int getMultiVideoFrameOutput(std::vector &videoframes, + Param ¶m); + + virtual int getProcessProperty(Param ¶m) override; + + virtual int setInputProperty(Param attr) override; + + virtual int getOutputProperty(Param &attr) override; + + private: + MlStableDiffusionOC *instance_ = nil; + int reques_mode_ = 0; + + Status status_ = Status::NO_INIT; + + CGImageRef current_image_ = nil; + + uint32_t seed_ = 0; + ; +}; + +BMFLITE_MODULE_CREATOR(BMFLiteDemoSdInterface) + +BMFLITE_DEMO_NAMESPACE_END + +#endif /* _BMFLITE_CONTRIB_ALFORITHM_SD_INTERFACE_H_ */ diff --git a/bmf_lite/iOS/bmf_demo/bmf_demo/contrib_module/ml_stable_diffusion/BmfLiteDemoSdInterface.m b/bmf_lite/iOS/bmf_demo/bmf_demo/contrib_module/ml_stable_diffusion/BmfLiteDemoSdInterface.m new file mode 100644 index 00000000..c9238a71 --- /dev/null +++ b/bmf_lite/iOS/bmf_demo/bmf_demo/contrib_module/ml_stable_diffusion/BmfLiteDemoSdInterface.m @@ -0,0 +1,114 @@ +/* + * Copyright 2024 Babit Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "BmfLiteDemoSdInterface.h" +#include "BmfLiteDemoLog.h" +#import +#import +#include + +BMFLITE_DEMO_NAMESPACE_BEGIN + +BMFLiteDemoSdInterface::~BMFLiteDemoSdInterface() { instance_ = nil; } + +int BMFLiteDemoSdInterface::setParam(Param param) { + instance_ = [[MlStableDiffusionOC alloc] init]; + [instance_ loadAndInit]; + return 0; +} + +int BMFLiteDemoSdInterface::processVideoFrame(VideoFrame videoframe, + Param param) { + std::string positive_prompt; + if (param.getString("positive_prompt", positive_prompt) != 0) { + return BMF_LITE_StsBadArg; + } + double step = 25.0f; + if (param.getDouble("step", step) != 0) { + step = 25.0f; + BMFLITE_DEMO_LOGW("BMFLiteDemoSdInterface", + "not set step use default value 25."); + } + uint32_t seed; +// if (param.getInt("seed", seed) == 0) { +// seed_ = (uint32_t)seed; +// } else { + std::random_device rd; + std::mt19937 gen(rd()); + std::uniform_int_distribution distribution( + 0, std::numeric_limits::max()); + seed = distribution(gen); + +// } + + NSString *ns_prompt = + [[NSString alloc] initWithCString:positive_prompt.c_str()]; + [instance_ generateImageWithPrompt:ns_prompt WithStep:step AndSeed:seed]; + return 0; +} + +int BMFLiteDemoSdInterface::getVideoFrameOutput(VideoFrame &frame, + Param ¶m) { + if (param.getInt("request_mode", reques_mode_) != 0) { + return BMF_LITE_StsBadArg; + } + if (reques_mode_ == RequestMode::INIT_STATUS) { + int status = [instance_ getStatus]; + param.setInt("init_status", status); + double progress_value = [instance_ getProgressValue]; + param.setDouble("progress_value", progress_value); + return 0; + } else if (reques_mode_ == RequestMode::PROCESS_STATUS) { + bool completed = [instance_ hasCompleted]; + param.setInt("process_status", (int)completed); + if (completed) { + current_image_ = [instance_ getResult]; + bmf_lite::HardwareDataInfo hardware_info; + hardware_info.internal_format = bmf_lite::BMF_LITE_CGImage_NONE; + hardware_info.mem_type = bmf_lite::MemoryType::kRaw; + bmf_lite::HardwareDeviceCreateInfo create_info{bmf_lite::kHWDeviceTypeMTL, + NULL}; + std::shared_ptr mtl_device_context; + bmf_lite::HWDeviceContextManager::createHwDeviceContext( + &create_info, mtl_device_context); + std::shared_ptr video_buffer; + bmf_lite::VideoBufferManager::createTextureVideoBufferFromExistingData( + current_image_, 0, 0, &hardware_info, mtl_device_context, nullptr, + video_buffer); + frame = VideoFrame(video_buffer); + } + return 0; + } + return -1; +} + +int BMFLiteDemoSdInterface::processMultiVideoFrame( + std::vector videoframes, Param param) { + return -1; +} + +int BMFLiteDemoSdInterface::getMultiVideoFrameOutput( + std::vector &videoframes, Param ¶m) { + return -1; +} + +int BMFLiteDemoSdInterface::getProcessProperty(Param ¶m) { return -1; } + +int BMFLiteDemoSdInterface::setInputProperty(Param attr) { return -1; } + +int BMFLiteDemoSdInterface::getOutputProperty(Param &attr) { return -1; } + +BMFLITE_DEMO_NAMESPACE_END diff --git a/bmf_lite/iOS/bmf_demo/bmf_demo/contrib_module/ml_stable_diffusion/MlStableDiffusionBridge.swift b/bmf_lite/iOS/bmf_demo/bmf_demo/contrib_module/ml_stable_diffusion/MlStableDiffusionBridge.swift new file mode 100644 index 00000000..68a83152 --- /dev/null +++ b/bmf_lite/iOS/bmf_demo/bmf_demo/contrib_module/ml_stable_diffusion/MlStableDiffusionBridge.swift @@ -0,0 +1,146 @@ +/* + * Copyright 2024 Babit Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import Foundation +import Combine +import UIKit + +func iosModel() -> ModelInfo { + guard deviceSupportsQuantization else { return ModelInfo.v21Base } + if deviceHas6GBOrMore { return ModelInfo.xlmbpChunked } + return ModelInfo.v21Palettized +} + +let runningOnMac = ProcessInfo.processInfo.isMacCatalystApp +let deviceHas6GBOrMore = ProcessInfo.processInfo.physicalMemory > 5910000000 // Reported by iOS 17 beta (21A5319a) on iPhone 13 Pro: 5917753344 +let deviceHas8GBOrMore = ProcessInfo.processInfo.physicalMemory > 7900000000 // Reported by iOS 17.0.2 on iPhone 15 Pro Max: 8021032960 + +let deviceSupportsQuantization = { + if #available(iOS 17, *) { + true + } else { + false + } +}() + + +@objc class SDExcutor : NSObject { + var generation = GenerationContext() + + var downloadProgress : Double = 0 + + var loader = PipelineLoader(model: iosModel()) + + var preparationPhase = "Downloading…" + + var stateSubscriber : Cancellable? + + var completed : Bool = false + + var interval : Double? + + var img : CGImage? + + var status : Int = 0 + + var result : GenerationResult? + + @objc func generateImage(prompt : String, steps : Double, seed : UInt32) { + generation.positivePrompt = prompt + generation.steps = steps + generation.seed = seed + + if case .running = generation.state { return } + Task { + generation.state = .running(nil) + do { + result = try await generation.generate() + generation.state = .complete(generation.positivePrompt, result?.image, result?.lastSeed ?? 25, result?.interval) + img = result?.image + interval = result?.interval + completed = true + status = 3 + } catch { + generation.state = .failed(error) + status = 6 + } + } + } + + @objc func hasCompleted() -> Bool { + return completed + } + + @objc func getResult() ->CGImage { + completed = false + + return img! + } + + @objc func getProcessTime() ->Double { + return interval! + } + + @objc func getProgressValue() -> Double { + return downloadProgress; + } + + @objc func getPreparationPhase() -> String { + return preparationPhase; + } + + @objc func getStatus() -> Int { + return status + } + + @objc func loadAndInit() { + Task.init { + stateSubscriber = loader.statePublisher.sink { state in + DispatchQueue.main.async { + switch state { + case .downloading(let progress): + self.preparationPhase = "Downloading model" + self.downloadProgress = progress + print("load model:%f", self.downloadProgress) + self.status = 0 + case .uncompressing: + self.preparationPhase = "Uncompressing model" + self.downloadProgress = 1 + self.status = 1 + case .readyOnDisk: + self.preparationPhase = "Loading model" + self.downloadProgress = 1 + self.status = 2 + default: + self.preparationPhase = "Loading model completed!" + self.downloadProgress = 1 + self.status = 3 + break + } + } + } + do { + generation.pipeline = try await loader.prepare() + self.status = 3 + } catch { + print("load pipeline failed.") + self.status = 5 + } + } + } +} + + diff --git a/bmf_lite/iOS/bmf_demo/bmf_demo/contrib_module/ml_stable_diffusion/MlStableDiffusionOC.h b/bmf_lite/iOS/bmf_demo/bmf_demo/contrib_module/ml_stable_diffusion/MlStableDiffusionOC.h new file mode 100644 index 00000000..a2e0d909 --- /dev/null +++ b/bmf_lite/iOS/bmf_demo/bmf_demo/contrib_module/ml_stable_diffusion/MlStableDiffusionOC.h @@ -0,0 +1,46 @@ +/* + * Copyright 2024 Babit Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef MlStableDiffusionOC_h +#define MlStableDiffusionOC_h + +#import +#import +#import "bmf_demo-Swift.h" + +@interface MlStableDiffusionOC : NSObject + +@property(nonatomic, retain) SDExcutor *excutor; + +- (void)loadAndInit; + +- (double)getProgressValue; + +- (NSString *)getPreparationPhase; + +- (bool)hasCompleted; + +- (CGImageRef)getResult; + +- (int)getStatus; + +- (void)generateImageWithPrompt:(NSString *)text + WithStep:(double)steps + AndSeed:(uint32_t)seeds; + +@end + +#endif /* MlStableDiffusionOC_h */ diff --git a/bmf_lite/iOS/bmf_demo/bmf_demo/contrib_module/ml_stable_diffusion/MlStableDiffusionOC.m b/bmf_lite/iOS/bmf_demo/bmf_demo/contrib_module/ml_stable_diffusion/MlStableDiffusionOC.m new file mode 100644 index 00000000..16cb1c65 --- /dev/null +++ b/bmf_lite/iOS/bmf_demo/bmf_demo/contrib_module/ml_stable_diffusion/MlStableDiffusionOC.m @@ -0,0 +1,59 @@ +/* + * Copyright 2024 Babit Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#import "MlStableDiffusionOC.h" +#import +#import + +@implementation MlStableDiffusionOC { +} + +- (void)loadAndInit { + self.excutor = [[SDExcutor alloc] init]; + [self.excutor loadAndInit]; +} + +- (double)getProgressValue { + return [self.excutor getProgressValue]; +} + +- (NSString *)getPreparationPhase { + return [self.excutor getPreparationPhase]; +} + +- (bool)hasCompleted { + return [self.excutor hasCompleted]; +} + +- (int)getStatus { + return [self.excutor getStatus]; +} + +- (CGImageRef)getResult { + bool completed = [self.excutor hasCompleted]; + if (completed) { + return [self.excutor getResult]; + } + return nil; +} + +- (void)generateImageWithPrompt:(NSString *)text + WithStep:(double)steps + AndSeed:(uint32_t)seeds { + [self.excutor generateImageWithPrompt:text steps:steps seed:seeds]; +} + +@end diff --git a/bmf_lite/iOS/bmf_demo/bmf_demo/contrib_module/ml_stable_diffusion/common/DiffusionImage+iOS.swift b/bmf_lite/iOS/bmf_demo/bmf_demo/contrib_module/ml_stable_diffusion/common/DiffusionImage+iOS.swift new file mode 100644 index 00000000..1abb0529 --- /dev/null +++ b/bmf_lite/iOS/bmf_demo/bmf_demo/contrib_module/ml_stable_diffusion/common/DiffusionImage+iOS.swift @@ -0,0 +1,63 @@ +// +// DiffusionImage+iOS.swift +// Diffusion +// +// Created by Dolmere and Pedro Cuenca on 30/07/2023. +// + +import UIKit +import SwiftUI +import UniformTypeIdentifiers + +extension DiffusionImage { + + /// Instance func to place the generated image on the file system and return the `fileURL` where it is stored. + func save(cgImage: CGImage, filename: String?) -> URL? { + + let image = UIImage(cgImage: cgImage) + let fn = filename ?? "diffusion_generated_image" + let appSupportURL = Settings.shared.tempStorageURL() + + let fileURL = appSupportURL + .appendingPathComponent(fn) + .appendingPathExtension("png") + + if let imageData = image.pngData() { + do { + try imageData.write(to: fileURL) + return fileURL + } catch { + print("Error saving image to temporary file: \(error)") + } + } + return nil + } + + /// Returns a `Data` representation of this generated image in PNG format or nil if there is an error converting the image data. + func pngRepresentation() -> Data? { + let bitmapRep = UIImage(cgImage: cgImage).pngData() + return bitmapRep + } +} + +extension DiffusionImage { + + // MARK: - UIPasteboardWriting + + func writableTypeIdentifiers(for pasteboard: UIPasteboard) -> [String] { + return [UTType.png.identifier] + } + + func itemProviders(forActivityType activityType: UIActivity.ActivityType?) -> [NSItemProvider] { + let itemProvider = NSItemProvider() + itemProvider.registerDataRepresentation(forTypeIdentifier: UTType.png.identifier, visibility: .all) { completion in + guard let pngData = self.pngRepresentation() else { + completion(nil, NSError(domain: "DiffusionImageErrorDomain", code: 0, userInfo: nil)) + return nil + } + completion(pngData, nil) + return nil + } + return [itemProvider] + } +} diff --git a/bmf_lite/iOS/bmf_demo/bmf_demo/contrib_module/ml_stable_diffusion/common/DiffusionImage.swift b/bmf_lite/iOS/bmf_demo/bmf_demo/contrib_module/ml_stable_diffusion/common/DiffusionImage.swift new file mode 100644 index 00000000..1358cb4e --- /dev/null +++ b/bmf_lite/iOS/bmf_demo/bmf_demo/contrib_module/ml_stable_diffusion/common/DiffusionImage.swift @@ -0,0 +1,132 @@ +// +// DiffusionImage.swift +// Diffusion +// +// Created by Dolmere on 03/07/2023. +// + +import SwiftUI +import StableDiffusion +import CoreTransferable + +/// Tracking for a `DiffusionImage` generation state. +enum DiffusionImageState { + case generating + case waiting + case complete +} + +/// Generic custom error to use when an image generation fails. +enum DiffusionImageError: Error { + case invalidDiffusionImage +} + +/// Combination of a `DiffusionImage` and its associated `DiffusionImageState` +struct DiffusionImageWrapper { + var diffusionImageState: DiffusionImageState = .waiting + var diffusionImage: DiffusionImage? = nil +} + +/// Model class to hold a generated image and the "recipe" data that was used to generate it +final class DiffusionImage: NSObject, Identifiable, NSCoding, NSSecureCoding { + + let id: UUID + let cgImage: CGImage + let seed: UInt32 + let steps: Double + let positivePrompt: String + let negativePrompt: String + let guidanceScale: Double + let disableSafety: Bool + /// Local enum represented with a String to conform to NSSecureCoding + let scheduler: StableDiffusionScheduler + + /// This is a composed `String` built from the numeric `Seed` and the user supplied `positivePrompt` limited to the first 200 character and with whitespace replaced with underscore characters. + var generatedFilename: String { + return "\(seed)-\(positivePrompt)".first200Safe + } + + /// The location on the file system where this generated image is stored. + var fileURL: URL + + init(id: UUID, cgImage: CGImage, seed: UInt32, steps: Double, positivePrompt: String, negativePrompt: String, guidanceScale: Double, disableSafety: Bool, scheduler: StableDiffusionScheduler) { + let genname = "\(seed)-\(positivePrompt)".first200Safe + self.id = id + self.cgImage = cgImage + self.seed = seed + self.steps = steps + self.positivePrompt = positivePrompt + self.negativePrompt = negativePrompt + self.guidanceScale = guidanceScale + self.disableSafety = disableSafety + self.scheduler = scheduler + // Initially set the fileURL to the top level applicationDirectory to allow running the completed instance func save() where the fileURL will be updated to the correct location. + self.fileURL = URL.applicationDirectory + // init the instance fully before executing an instance function + super.init() + if let url = save(cgImage: cgImage, filename: genname) { + self.fileURL = url + } else { + fatalError("Fatal error init of DiffusionImage, cannot create image file at \(genname)") + } + } + + func encode(with coder: NSCoder) { + coder.encode(id, forKey: "id") + coder.encode(seed, forKey: "seed") + coder.encode(steps, forKey: "steps") + coder.encode(positivePrompt, forKey: "positivePrompt") + coder.encode(negativePrompt, forKey: "negativePrompt") + coder.encode(guidanceScale, forKey: "guidanceScale") + coder.encode(disableSafety, forKey: "disableSafety") + coder.encode(scheduler, forKey: "scheduler") + // Encode cgImage as data + if let data = pngRepresentation() { + coder.encode(data, forKey: "cgImage") + } + } + + required init?(coder: NSCoder) { + guard let id = coder.decodeObject(forKey: "id") as? UUID else { + return nil + } + + self.id = id + self.seed = UInt32(coder.decodeInt32(forKey: "seed")) + self.steps = coder.decodeDouble(forKey: "steps") + self.positivePrompt = coder.decodeObject(forKey: "positivePrompt") as? String ?? "" + self.negativePrompt = coder.decodeObject(forKey: "negativePrompt") as? String ?? "" + self.guidanceScale = coder.decodeDouble(forKey: "guidanceScale") + self.disableSafety = coder.decodeBool(forKey: "disableSafety") + self.scheduler = coder.decodeObject(forKey: "scheduler") as? StableDiffusionScheduler ?? StableDiffusionScheduler.dpmSolverMultistepScheduler + let genname = "\(seed)-\(positivePrompt)".first200Safe + + // Decode cgImage from data + if let imageData = coder.decodeObject(forKey: "cgImage") as? Data { + guard let img = CGImage.fromData(imageData) else { fatalError("Fatal error loading data with missing cgImage in object") } + self.cgImage = img + } else { + fatalError("Fatal error loading data with missing cgImage in object") + } + self.fileURL = URL.applicationDirectory + super.init() + if let url = save(cgImage: cgImage, filename: genname) { + self.fileURL = url + } else { + fatalError("Fatal error init of DiffusionImage, cannot create image file at \(genname)") + } + } + + // MARK: - Equatable + + static func == (lhs: DiffusionImage, rhs: DiffusionImage) -> Bool { + return lhs.id == rhs.id + } + + // MARK: - NSSecureCoding + + static var supportsSecureCoding: Bool { + return true + } +} + diff --git a/bmf_lite/iOS/bmf_demo/bmf_demo/contrib_module/ml_stable_diffusion/common/Downloader.swift b/bmf_lite/iOS/bmf_demo/bmf_demo/contrib_module/ml_stable_diffusion/common/Downloader.swift new file mode 100644 index 00000000..69944df9 --- /dev/null +++ b/bmf_lite/iOS/bmf_demo/bmf_demo/contrib_module/ml_stable_diffusion/common/Downloader.swift @@ -0,0 +1,104 @@ +// +// Downloader.swift +// Diffusion +// +// Created by Pedro Cuenca on December 2022. +// See LICENSE at https://github.com/huggingface/swift-coreml-diffusers/LICENSE +// + +import Foundation +import Combine + +class Downloader: NSObject, ObservableObject { + private(set) var destination: URL + + enum DownloadState { + case notStarted + case downloading(Double) + case completed(URL) + case failed(Error) + } + + private(set) lazy var downloadState: CurrentValueSubject = CurrentValueSubject(.notStarted) + private var stateSubscriber: Cancellable? + + private var urlSession: URLSession? = nil + + init(from url: URL, to destination: URL, using authToken: String? = nil) { + self.destination = destination + super.init() + + // .background allows downloads to proceed in the background + let config = URLSessionConfiguration.background(withIdentifier: "net.pcuenca.diffusion.download") + urlSession = URLSession(configuration: config, delegate: self, delegateQueue: OperationQueue()) + downloadState.value = .downloading(0) + urlSession?.getAllTasks { tasks in + // If there's an existing pending background task with the same URL, let it proceed. + guard tasks.filter({ $0.originalRequest?.url == url }).isEmpty else { + print("Already downloading \(url)") + return + } + print("Starting download of \(url)") + + var request = URLRequest(url: url) + if let authToken = authToken { + request.setValue("Bearer \(authToken)", forHTTPHeaderField: "Authorization") + } + + self.urlSession?.downloadTask(with: request).resume() + } + } + + @discardableResult + func waitUntilDone() throws -> URL { + // It's either this, or stream the bytes ourselves (add to a buffer, save to disk, etc; boring and finicky) + let semaphore = DispatchSemaphore(value: 0) + stateSubscriber = downloadState.sink { state in + switch state { + case .completed: semaphore.signal() + case .failed: semaphore.signal() + default: break + } + } + semaphore.wait() + + switch downloadState.value { + case .completed(let url): return url + case .failed(let error): throw error + default: throw("Should never happen, lol") + } + } + + func cancel() { + urlSession?.invalidateAndCancel() + } +} + +extension Downloader: URLSessionDelegate, URLSessionDownloadDelegate { + func urlSession(_: URLSession, downloadTask: URLSessionDownloadTask, didWriteData _: Int64, totalBytesWritten _: Int64, totalBytesExpectedToWrite _: Int64) { + downloadState.value = .downloading(downloadTask.progress.fractionCompleted) + } + + func urlSession(_: URLSession, downloadTask _: URLSessionDownloadTask, didFinishDownloadingTo location: URL) { + guard FileManager.default.fileExists(atPath: location.path) else { + downloadState.value = .failed("Invalid download location received: \(location)") + return + } + do { + try FileManager.default.moveItem(at: location, to: destination) + downloadState.value = .completed(destination) + } catch { + downloadState.value = .failed(error) + } + } + + func urlSession(_ session: URLSession, task: URLSessionTask, didCompleteWithError error: Error?) { + if let error = error { + downloadState.value = .failed(error) + } else if let response = task.response as? HTTPURLResponse { + print("HTTP response status code: \(response.statusCode)") +// let headers = response.allHeaderFields +// print("HTTP response headers: \(headers)") + } + } +} diff --git a/bmf_lite/iOS/bmf_demo/bmf_demo/contrib_module/ml_stable_diffusion/common/ModelInfo.swift b/bmf_lite/iOS/bmf_demo/bmf_demo/contrib_module/ml_stable_diffusion/common/ModelInfo.swift new file mode 100644 index 00000000..ab032013 --- /dev/null +++ b/bmf_lite/iOS/bmf_demo/bmf_demo/contrib_module/ml_stable_diffusion/common/ModelInfo.swift @@ -0,0 +1,248 @@ +// +// ModelInfo.swift +// Diffusion +// +// Created by Pedro Cuenca on 29/12/22. +// See LICENSE at https://github.com/huggingface/swift-coreml-diffusers/LICENSE +// + +import CoreML + +enum AttentionVariant: String { + case original + case splitEinsum + case splitEinsumV2 +} + +extension AttentionVariant { + var defaultComputeUnits: MLComputeUnits { self == .original ? .cpuAndGPU : .cpuAndNeuralEngine } +} + +struct ModelInfo { + /// Hugging Face model Id that contains .zip archives with compiled Core ML models + let modelId: String + + /// Arbitrary string for presentation purposes. Something like "2.1-base" + let modelVersion: String + + /// Suffix of the archive containing the ORIGINAL attention variant. Usually something like "original_compiled" + let originalAttentionSuffix: String + + /// Suffix of the archive containing the SPLIT_EINSUM attention variant. Usually something like "split_einsum_compiled" + let splitAttentionSuffix: String + + /// Suffix of the archive containing the SPLIT_EINSUM_V2 attention variant. Usually something like "split_einsum_v2_compiled" + let splitAttentionV2Suffix: String + + /// Whether the archive contains the VAE Encoder (for image to image tasks). Not yet in use. + let supportsEncoder: Bool + + /// Is attention v2 supported? (Ideally, we should know by looking at the repo contents) + let supportsAttentionV2: Bool + + /// Are weights quantized? This is only used to decide whether to use `reduceMemory` + let quantized: Bool + + /// Whether this is a Stable Diffusion XL model + // TODO: retrieve from remote config + let isXL: Bool + + //TODO: refactor all these properties + init(modelId: String, modelVersion: String, + originalAttentionSuffix: String = "original_compiled", + splitAttentionSuffix: String = "split_einsum_compiled", + splitAttentionV2Suffix: String = "split_einsum_v2_compiled", + supportsEncoder: Bool = false, + supportsAttentionV2: Bool = false, + quantized: Bool = false, + isXL: Bool = false) { + self.modelId = modelId + self.modelVersion = modelVersion + self.originalAttentionSuffix = originalAttentionSuffix + self.splitAttentionSuffix = splitAttentionSuffix + self.splitAttentionV2Suffix = splitAttentionV2Suffix + self.supportsEncoder = supportsEncoder + self.supportsAttentionV2 = supportsAttentionV2 + self.quantized = quantized + self.isXL = isXL + } +} + +extension ModelInfo { + //TODO: set compute units instead and derive variant from it + static var defaultAttention: AttentionVariant { + guard runningOnMac else { return .splitEinsum } + #if os(macOS) + guard Capabilities.hasANE else { return .original } + return Capabilities.performanceCores >= 8 ? .original : .splitEinsum + #else + return .splitEinsum + #endif + } + + static var defaultComputeUnits: MLComputeUnits { defaultAttention.defaultComputeUnits } + + var bestAttention: AttentionVariant { + if !runningOnMac && supportsAttentionV2 { return .splitEinsumV2 } + return ModelInfo.defaultAttention + } + var defaultComputeUnits: MLComputeUnits { bestAttention.defaultComputeUnits } + + func modelURL(for variant: AttentionVariant) -> URL { + // Pattern: https://huggingface.co/pcuenq/coreml-stable-diffusion/resolve/main/coreml-stable-diffusion-v1-5_original_compiled.zip + let suffix: String + switch variant { + case .original: suffix = originalAttentionSuffix + case .splitEinsum: suffix = splitAttentionSuffix + case .splitEinsumV2: suffix = splitAttentionV2Suffix + } + let repo = modelId.split(separator: "/").last! + return URL(string: "https://huggingface.co/\(modelId)/resolve/main/\(repo)_\(suffix).zip")! + } + + /// Best variant for the current platform. + /// Currently using `split_einsum` for iOS and simple performance heuristics for macOS. + var bestURL: URL { modelURL(for: bestAttention) } + + var reduceMemory: Bool { + // Enable on iOS devices, except when using quantization + if runningOnMac { return false } + if isXL { return !deviceHas8GBOrMore } + return !(quantized && deviceHas6GBOrMore) + } +} + +extension ModelInfo { + static let v14Base = ModelInfo( + modelId: "pcuenq/coreml-stable-diffusion-1-4", + modelVersion: "CompVis SD 1.4" + ) + + static let v14Palettized = ModelInfo( + modelId: "apple/coreml-stable-diffusion-1-4-palettized", + modelVersion: "CompVis SD 1.4 [6 bit]", + supportsEncoder: true, + supportsAttentionV2: true, + quantized: true + ) + + static let v15Base = ModelInfo( + modelId: "pcuenq/coreml-stable-diffusion-v1-5", + modelVersion: "RunwayML SD 1.5" + ) + + static let v15Palettized = ModelInfo( + modelId: "apple/coreml-stable-diffusion-v1-5-palettized", + modelVersion: "RunwayML SD 1.5 [6 bit]", + supportsEncoder: true, + supportsAttentionV2: true, + quantized: true + ) + + static let v2Base = ModelInfo( + modelId: "pcuenq/coreml-stable-diffusion-2-base", + modelVersion: "StabilityAI SD 2.0", + supportsEncoder: true + ) + + static let v2Palettized = ModelInfo( + modelId: "apple/coreml-stable-diffusion-2-base-palettized", + modelVersion: "StabilityAI SD 2.0 [6 bit]", + supportsEncoder: true, + supportsAttentionV2: true, + quantized: true + ) + + static let v21Base = ModelInfo( + modelId: "pcuenq/coreml-stable-diffusion-2-1-base", + modelVersion: "StabilityAI SD 2.1", + supportsEncoder: true + ) + + static let v21Palettized = ModelInfo( + modelId: "apple/coreml-stable-diffusion-2-1-base-palettized", + modelVersion: "StabilityAI SD 2.1 [6 bit]", + supportsEncoder: true, + supportsAttentionV2: true, + quantized: true + ) + + static let ofaSmall = ModelInfo( + modelId: "pcuenq/coreml-small-stable-diffusion-v0", + modelVersion: "OFA-Sys/small-stable-diffusion-v0" + ) + + static let xl = ModelInfo( + modelId: "apple/coreml-stable-diffusion-xl-base", + modelVersion: "SDXL base (1024, macOS)", + supportsEncoder: true, + isXL: true + ) + + static let xlWithRefiner = ModelInfo( + modelId: "apple/coreml-stable-diffusion-xl-base-with-refiner", + modelVersion: "SDXL with refiner (1024, macOS)", + supportsEncoder: true, + isXL: true + ) + + static let xlmbp = ModelInfo( + modelId: "apple/coreml-stable-diffusion-mixed-bit-palettization", + modelVersion: "SDXL base (1024, macOS) [4.5 bit]", + supportsEncoder: true, + quantized: true, + isXL: true + ) + + static let xlmbpChunked = ModelInfo( + modelId: "apple/coreml-stable-diffusion-xl-base-ios", + modelVersion: "SDXL base (768, iOS) [4 bit]", + supportsEncoder: false, + quantized: true, + isXL: true + ) + + static let MODELS: [ModelInfo] = { + if deviceSupportsQuantization { + var models = [ + ModelInfo.v14Base, + ModelInfo.v14Palettized, + ModelInfo.v15Base, + ModelInfo.v15Palettized, + ModelInfo.v2Base, + ModelInfo.v2Palettized, + ModelInfo.v21Base, + ModelInfo.v21Palettized + ] + if runningOnMac { + models.append(contentsOf: [ + ModelInfo.xl, + ModelInfo.xlWithRefiner, + ModelInfo.xlmbp + ]) + } else { + models.append(ModelInfo.xlmbpChunked) + } + return models + } else { + return [ + ModelInfo.v14Base, + ModelInfo.v15Base, + ModelInfo.v2Base, + ModelInfo.v21Base, + ] + } + }() + + static func from(modelVersion: String) -> ModelInfo? { + ModelInfo.MODELS.first(where: {$0.modelVersion == modelVersion}) + } + + static func from(modelId: String) -> ModelInfo? { + ModelInfo.MODELS.first(where: {$0.modelId == modelId}) + } +} + +extension ModelInfo : Equatable { + static func ==(lhs: ModelInfo, rhs: ModelInfo) -> Bool { lhs.modelId == rhs.modelId } +} diff --git a/bmf_lite/iOS/bmf_demo/bmf_demo/contrib_module/ml_stable_diffusion/common/State.swift b/bmf_lite/iOS/bmf_demo/bmf_demo/contrib_module/ml_stable_diffusion/common/State.swift new file mode 100644 index 00000000..ad667f69 --- /dev/null +++ b/bmf_lite/iOS/bmf_demo/bmf_demo/contrib_module/ml_stable_diffusion/common/State.swift @@ -0,0 +1,192 @@ +// +// State.swift +// Diffusion +// +// Created by Pedro Cuenca on 17/1/23. +// See LICENSE at https://github.com/huggingface/swift-coreml-diffusers/LICENSE +// + +import Combine +import SwiftUI +import StableDiffusion +import CoreML + +let DEFAULT_MODEL = ModelInfo.v2Base +let DEFAULT_PROMPT = "Labrador in the style of Vermeer" + +enum GenerationState { + case startup + case running(StableDiffusionProgress?) + case complete(String, CGImage?, UInt32, TimeInterval?) + case userCanceled + case failed(Error) +} + +typealias ComputeUnits = MLComputeUnits + +/// Schedulers compatible with StableDiffusionPipeline. This is a local implementation of the StableDiffusionScheduler enum as a String represetation to allow for compliance with NSSecureCoding. +public enum StableDiffusionScheduler: String { + /// Scheduler that uses a pseudo-linear multi-step (PLMS) method + case pndmScheduler + /// Scheduler that uses a second order DPM-Solver++ algorithm + case dpmSolverMultistepScheduler + + func asStableDiffusionScheduler() -> StableDiffusion.StableDiffusionScheduler { + switch self { + case .pndmScheduler: return StableDiffusion.StableDiffusionScheduler.pndmScheduler + case .dpmSolverMultistepScheduler: return StableDiffusion.StableDiffusionScheduler.dpmSolverMultistepScheduler + } + } +} + +class GenerationContext: ObservableObject { + let scheduler = StableDiffusionScheduler.dpmSolverMultistepScheduler + + @Published var pipeline: Pipeline? = nil { + didSet { + if let pipeline = pipeline { + progressSubscriber = pipeline + .progressPublisher + .receive(on: DispatchQueue.main) + .sink { progress in + guard let progress = progress else { return } + self.updatePreviewIfNeeded(progress) + self.state = .running(progress) + } + } + } + } + @Published var state: GenerationState = .startup + + @Published var positivePrompt = DEFAULT_PROMPT + @Published var negativePrompt = "" + + // FIXME: Double to support the slider component + @Published var steps = 25.0 + @Published var numImages = 1.0 + @Published var seed: UInt32 = 0 + @Published var guidanceScale = 7.5 + @Published var previews = runningOnMac ? 5.0 : 0.0 + @Published var disableSafety = false + @Published var previewImage: CGImage? = nil + + @Published var computeUnits: ComputeUnits = Settings.shared.userSelectedComputeUnits ?? ModelInfo.defaultComputeUnits + + private var progressSubscriber: Cancellable? + + private func updatePreviewIfNeeded(_ progress: StableDiffusionProgress) { + if previews == 0 || progress.step == 0 { + previewImage = nil + } + + if previews > 0, let newImage = progress.currentImages.first, newImage != nil { + previewImage = newImage + } + } + + func generate() async throws -> GenerationResult { + guard let pipeline = pipeline else { throw "No pipeline" } + return try pipeline.generate( + prompt: positivePrompt, + negativePrompt: negativePrompt, + scheduler: scheduler, + numInferenceSteps: Int(steps), + seed: seed, + numPreviews: Int(previews), + guidanceScale: Float(guidanceScale), + disableSafety: disableSafety + ) + } + + func cancelGeneration() { + pipeline?.setCancelled() + } +} + +class Settings { + static let shared = Settings() + + let defaults = UserDefaults.standard + + enum Keys: String { + case model + case safetyCheckerDisclaimer + case computeUnits + } + + private init() { + defaults.register(defaults: [ + Keys.model.rawValue: ModelInfo.v2Base.modelId, + Keys.safetyCheckerDisclaimer.rawValue: false, + Keys.computeUnits.rawValue: -1 // Use default + ]) + } + + var currentModel: ModelInfo { + set { + defaults.set(newValue.modelId, forKey: Keys.model.rawValue) + } + get { + guard let modelId = defaults.string(forKey: Keys.model.rawValue) else { return DEFAULT_MODEL } + return ModelInfo.from(modelId: modelId) ?? DEFAULT_MODEL + } + } + + var safetyCheckerDisclaimerShown: Bool { + set { + defaults.set(newValue, forKey: Keys.safetyCheckerDisclaimer.rawValue) + } + get { + return defaults.bool(forKey: Keys.safetyCheckerDisclaimer.rawValue) + } + } + + /// Returns the option selected by the user, if overridden + /// `nil` means: guess best + var userSelectedComputeUnits: ComputeUnits? { + set { + // Any value other than the supported ones would cause `get` to return `nil` + defaults.set(newValue?.rawValue ?? -1, forKey: Keys.computeUnits.rawValue) + } + get { + let current = defaults.integer(forKey: Keys.computeUnits.rawValue) + guard current != -1 else { return nil } + return ComputeUnits(rawValue: current) + } + } + + public func applicationSupportURL() -> URL { + let fileManager = FileManager.default + guard let appDirectoryURL = fileManager.urls(for: .applicationSupportDirectory, in: .userDomainMask).first else { + // To ensure we don't return an optional - if the user domain application support cannot be accessed use the top level application support directory + return URL.applicationSupportDirectory + } + + do { + // Create the application support directory if it doesn't exist + try fileManager.createDirectory(at: appDirectoryURL, withIntermediateDirectories: true, attributes: nil) + return appDirectoryURL + } catch { + print("Error creating application support directory: \(error)") + return fileManager.urls(for: .applicationSupportDirectory, in: .userDomainMask).first! + } + } + + func tempStorageURL() -> URL { + + let tmpDir = applicationSupportURL().appendingPathComponent("hf-diffusion-tmp") + + // Create directory if it doesn't exist + if !FileManager.default.fileExists(atPath: tmpDir.path) { + do { + try FileManager.default.createDirectory(at: tmpDir, withIntermediateDirectories: true, attributes: nil) + } catch { + print("Failed to create temporary directory: \(error)") + return FileManager.default.temporaryDirectory + } + } + + return tmpDir + } + +} diff --git a/bmf_lite/iOS/bmf_demo/bmf_demo/contrib_module/ml_stable_diffusion/common/Utils.swift b/bmf_lite/iOS/bmf_demo/bmf_demo/contrib_module/ml_stable_diffusion/common/Utils.swift new file mode 100644 index 00000000..4cccb65f --- /dev/null +++ b/bmf_lite/iOS/bmf_demo/bmf_demo/contrib_module/ml_stable_diffusion/common/Utils.swift @@ -0,0 +1,102 @@ +// +// Utils.swift +// Diffusion +// +// Created by Pedro Cuenca on 14/1/23. +// See LICENSE at https://github.com/huggingface/swift-coreml-diffusers/LICENSE +// + +import Foundation + +extension String: Error {} + +extension Double { + func formatted(_ format: String) -> String { + return String(format: "\(format)", self) + } +} + +extension String { + var first200Safe: String { + let endIndex = index(startIndex, offsetBy: Swift.min(200, count)) + let substring = String(self[startIndex.. [Bool] { + // Ensure valid parameters + guard numInferenceSteps > 0, numPreviews > 0 else { + return [Bool](repeating: false, count: numInferenceSteps) + } + + // Compute the ideal (floating-point) step size, which represents the average number of steps between previews + let idealStep = Double(numInferenceSteps) / Double(numPreviews) + + // Compute the actual steps at which previews should be made. For each preview, we multiply the ideal step size by the preview number, and round to the nearest integer. + // The result is converted to a `Set` for fast membership tests. + let previewIndices: Set = Set((0.. Double { + let multiplier = pow(10, Double(places)) + let newDecimal = multiplier * self // move the decimal right + let truncated = Double(Int(newDecimal)) // drop the fraction + let originalDecimal = truncated / multiplier // move the decimal back + return originalDecimal + } +} + +func formatLargeNumber(_ n: UInt32) -> String { + let num = abs(Double(n)) + + switch num { + case 1_000_000_000...: + var formatted = num / 1_000_000_000 + formatted = formatted.reduceScale(to: 3) + return "\(formatted)B" + + case 1_000_000...: + var formatted = num / 1_000_000 + formatted = formatted.reduceScale(to: 3) + return "\(formatted)M" + + case 1_000...: + return "\(n)" + + case 0...: + return "\(n)" + + default: + return "\(n)" + } +} + diff --git a/bmf_lite/iOS/bmf_demo/bmf_demo/contrib_module/ml_stable_diffusion/common/Utils_iOS.swift b/bmf_lite/iOS/bmf_demo/bmf_demo/contrib_module/ml_stable_diffusion/common/Utils_iOS.swift new file mode 100644 index 00000000..9eab45e6 --- /dev/null +++ b/bmf_lite/iOS/bmf_demo/bmf_demo/contrib_module/ml_stable_diffusion/common/Utils_iOS.swift @@ -0,0 +1,17 @@ +// +// Utils_iOS.swift +// Diffusion +// +// Created by Dolmere on 31/07/2023. +// + +import SwiftUI + +extension CGImage { + static func fromData(_ imageData: Data) -> CGImage? { + if let image = UIImage(data: imageData)?.cgImage { + return image + } + return nil + } +} diff --git a/bmf_lite/iOS/bmf_demo/bmf_demo/contrib_module/ml_stable_diffusion/common/bmf_demo-Bridging-Header.h b/bmf_lite/iOS/bmf_demo/bmf_demo/contrib_module/ml_stable_diffusion/common/bmf_demo-Bridging-Header.h new file mode 100644 index 00000000..0e168725 --- /dev/null +++ b/bmf_lite/iOS/bmf_demo/bmf_demo/contrib_module/ml_stable_diffusion/common/bmf_demo-Bridging-Header.h @@ -0,0 +1,6 @@ +// +// Use this file to import your target's public headers that you would like to +// expose to Swift. +// + +#import "SdViewController.h" diff --git a/bmf_lite/iOS/bmf_demo/bmf_demo/contrib_module/ml_stable_diffusion/common/pipeline/Pipeline.swift b/bmf_lite/iOS/bmf_demo/bmf_demo/contrib_module/ml_stable_diffusion/common/pipeline/Pipeline.swift new file mode 100644 index 00000000..ac69dcca --- /dev/null +++ b/bmf_lite/iOS/bmf_demo/bmf_demo/contrib_module/ml_stable_diffusion/common/pipeline/Pipeline.swift @@ -0,0 +1,125 @@ +// +// Pipeline.swift +// Diffusion +// +// Created by Pedro Cuenca on December 2022. +// See LICENSE at https://github.com/huggingface/swift-coreml-diffusers/LICENSE +// + +import Foundation +import CoreML +import Combine + +import StableDiffusion + +struct StableDiffusionProgress { + var progress: StableDiffusionPipeline.Progress + + var step: Int { progress.step } + var stepCount: Int { progress.stepCount } + + var currentImages: [CGImage?] + + init(progress: StableDiffusionPipeline.Progress, previewIndices: [Bool]) { + self.progress = progress + self.currentImages = [nil] + + // Since currentImages is a computed property, only access the preview image if necessary + if progress.step < previewIndices.count, previewIndices[progress.step] { + self.currentImages = progress.currentImages + } + } +} + +struct GenerationResult { + var image: CGImage? + var lastSeed: UInt32 + var interval: TimeInterval? + var userCanceled: Bool + var itsPerSecond: Double? +} + +class Pipeline { + let pipeline: StableDiffusionPipelineProtocol + let maxSeed: UInt32 + + var isXL: Bool { + if #available(macOS 14.0, iOS 17.0, *) { + return (pipeline as? StableDiffusionXLPipeline) != nil + } + return false + } + + var progress: StableDiffusionProgress? = nil { + didSet { + progressPublisher.value = progress + } + } + lazy private(set) var progressPublisher: CurrentValueSubject = CurrentValueSubject(progress) + + private var canceled = false + + init(_ pipeline: StableDiffusionPipelineProtocol, maxSeed: UInt32 = UInt32.max) { + self.pipeline = pipeline + self.maxSeed = maxSeed + } + + func generate( + prompt: String, + negativePrompt: String = "", + scheduler: StableDiffusionScheduler, + numInferenceSteps stepCount: Int = 50, + seed: UInt32 = 0, + numPreviews previewCount: Int = 5, + guidanceScale: Float = 7.5, + disableSafety: Bool = false + ) throws -> GenerationResult { + let beginDate = Date() + canceled = false + let theSeed = seed > 0 ? seed : UInt32.random(in: 1...maxSeed) + let sampleTimer = SampleTimer() + sampleTimer.start() + + var config = StableDiffusionPipeline.Configuration(prompt: prompt) + config.negativePrompt = negativePrompt + config.stepCount = stepCount + config.seed = theSeed + config.guidanceScale = guidanceScale + config.disableSafety = disableSafety + config.schedulerType = scheduler.asStableDiffusionScheduler() + config.useDenoisedIntermediates = true + if isXL { + config.encoderScaleFactor = 0.13025 + config.decoderScaleFactor = 0.13025 + config.schedulerTimestepSpacing = .karras + } + + // Evenly distribute previews based on inference steps + let previewIndices = previewIndices(stepCount, previewCount) + + let images = try pipeline.generateImages(configuration: config) { progress in + sampleTimer.stop() + handleProgress(StableDiffusionProgress(progress: progress, + previewIndices: previewIndices), + sampleTimer: sampleTimer) + if progress.stepCount != progress.step { + sampleTimer.start() + } + return !canceled + } + let interval = Date().timeIntervalSince(beginDate) + print("Got images: \(images) in \(interval)") + + // Unwrap the 1 image we asked for, nil means safety checker triggered + let image = images.compactMap({ $0 }).first + return GenerationResult(image: image, lastSeed: theSeed, interval: interval, userCanceled: canceled, itsPerSecond: 1.0/sampleTimer.median) + } + + func handleProgress(_ progress: StableDiffusionProgress, sampleTimer: SampleTimer) { + self.progress = progress + } + + func setCancelled() { + canceled = true + } +} diff --git a/bmf_lite/iOS/bmf_demo/bmf_demo/contrib_module/ml_stable_diffusion/common/pipeline/PipelineLoader.swift b/bmf_lite/iOS/bmf_demo/bmf_demo/contrib_module/ml_stable_diffusion/common/pipeline/PipelineLoader.swift new file mode 100644 index 00000000..9dacd935 --- /dev/null +++ b/bmf_lite/iOS/bmf_demo/bmf_demo/contrib_module/ml_stable_diffusion/common/pipeline/PipelineLoader.swift @@ -0,0 +1,189 @@ +// +// PipelineLoader.swift +// Diffusion +// +// Created by Pedro Cuenca on December 2022. +// See LICENSE at https://github.com/huggingface/swift-coreml-diffusers/LICENSE +// + + +import CoreML +import Combine + +import ZIPFoundation +import StableDiffusion + +class PipelineLoader { + static let models = Settings.shared.applicationSupportURL().appendingPathComponent("hf-diffusion-models") + let model: ModelInfo + let computeUnits: ComputeUnits + let maxSeed: UInt32 + + private var downloadSubscriber: Cancellable? + + init(model: ModelInfo, computeUnits: ComputeUnits? = nil, maxSeed: UInt32 = UInt32.max) { + self.model = model + self.computeUnits = computeUnits ?? model.defaultComputeUnits + self.maxSeed = maxSeed + state = .undetermined + setInitialState() + } + + enum PipelinePreparationPhase { + case undetermined + case waitingToDownload + case downloading(Double) + case downloaded + case uncompressing + case readyOnDisk + case loaded + case failed(Error) + } + + var state: PipelinePreparationPhase { + didSet { + statePublisher.value = state + } + } + private(set) lazy var statePublisher: CurrentValueSubject = CurrentValueSubject(state) + private(set) var downloader: Downloader? = nil + + func setInitialState() { + if ready { + state = .readyOnDisk + return + } + if downloaded { + state = .downloaded + return + } + state = .waitingToDownload + } +} + +extension PipelineLoader { + // Unused. Kept for debugging purposes. --pcuenca + static func removeAll() { + // Delete the parent models folder as it will be recreated when it's needed again + do { + try FileManager.default.removeItem(at: models) + } catch { + print("Failed to delete: \(models), error: \(error.localizedDescription)") + } + } +} + + +extension PipelineLoader { + func cancel() { downloader?.cancel() } +} + +extension PipelineLoader { + var url: URL { + return model.modelURL(for: variant) + } + + var filename: String { + return url.lastPathComponent + } + + var downloadedURL: URL { PipelineLoader.models.appendingPathComponent(filename) } + + var uncompressURL: URL { PipelineLoader.models } + + var packagesFilename: String { (filename as NSString).deletingPathExtension } + + var compiledURL: URL { downloadedURL.deletingLastPathComponent().appendingPathComponent(packagesFilename) } + + var downloaded: Bool { + return FileManager.default.fileExists(atPath: downloadedURL.path) + } + + var ready: Bool { + return FileManager.default.fileExists(atPath: compiledURL.path) + } + + var variant: AttentionVariant { + switch computeUnits { + case .cpuOnly : return .original // Not supported yet + case .cpuAndGPU : return .original + case .cpuAndNeuralEngine: return model.supportsAttentionV2 ? .splitEinsumV2 : .splitEinsum + case .all : return .splitEinsum + @unknown default: + fatalError("Unknown MLComputeUnits") + } + } + + func prepare() async throws -> Pipeline { + do { + do { + try FileManager.default.createDirectory(atPath: PipelineLoader.models.path, withIntermediateDirectories: true, attributes: nil) + } catch { + print("Error creating PipelineLoader.models path: \(error)") + } + + try await download() + try await unzip() + let pipeline = try await load(url: compiledURL) + return Pipeline(pipeline, maxSeed: maxSeed) + } catch { + state = .failed(error) + throw error + } + } + + @discardableResult + func download() async throws -> URL { + if ready || downloaded { return downloadedURL } + + let downloader = Downloader(from: url, to: downloadedURL) + self.downloader = downloader + downloadSubscriber = downloader.downloadState.sink { state in + if case .downloading(let progress) = state { + self.state = .downloading(progress) + } + } + try downloader.waitUntilDone() + return downloadedURL + } + + func unzip() async throws { + guard downloaded else { return } + state = .uncompressing + do { + try FileManager().unzipItem(at: downloadedURL, to: uncompressURL) + } catch { + // Cleanup if error occurs while unzipping + try FileManager.default.removeItem(at: uncompressURL) + throw error + } + try FileManager.default.removeItem(at: downloadedURL) + state = .readyOnDisk + } + + func load(url: URL) async throws -> StableDiffusionPipelineProtocol { + let beginDate = Date() + let configuration = MLModelConfiguration() + configuration.computeUnits = computeUnits + let pipeline: StableDiffusionPipelineProtocol + if model.isXL { + if #available(macOS 14.0, iOS 17.0, *) { + pipeline = try StableDiffusionXLPipeline(resourcesAt: url, + configuration: configuration, + reduceMemory: model.reduceMemory) + } else { + throw "Stable Diffusion XL requires macOS 14" + } + } else { + pipeline = try StableDiffusionPipeline(resourcesAt: url, + controlNet: [], + configuration: configuration, + disableSafety: false, + reduceMemory: model.reduceMemory) + } + try pipeline.loadResources() + print("Pipeline loaded in \(Date().timeIntervalSince(beginDate))") + state = .loaded + return pipeline + } +} diff --git a/bmf_lite/iOS/bmf_demo/bmf_demo/contrib_module/ml_stable_diffusion/common/views/PromptTextField.swift b/bmf_lite/iOS/bmf_demo/bmf_demo/contrib_module/ml_stable_diffusion/common/views/PromptTextField.swift new file mode 100644 index 00000000..9d20e07c --- /dev/null +++ b/bmf_lite/iOS/bmf_demo/bmf_demo/contrib_module/ml_stable_diffusion/common/views/PromptTextField.swift @@ -0,0 +1,141 @@ +// +// PromptTextField.swift +// Diffusion-macOS +// +// Created by Dolmere on 22/06/2023. +// See LICENSE at https://github.com/huggingface/swift-coreml-diffusers/LICENSE +// + +import SwiftUI +import Combine +import StableDiffusion + +struct PromptTextField: View { + @State private var output: String = "" + @State private var input: String = "" + @State private var typing = false + @State private var tokenCount: Int = 0 + @State var isPositivePrompt: Bool = true + @State private var tokenizer: BPETokenizer? + @State private var currentModelVersion: String = "" + + @Binding var textBinding: String + @Binding var model: String // the model version as it's stored in Settings + + private let maxTokenCount = 77 + + private var modelInfo: ModelInfo? { + ModelInfo.from(modelVersion: $model.wrappedValue) + } + + private var pipelineLoader: PipelineLoader? { + guard let modelInfo = modelInfo else { return nil } + return PipelineLoader(model: modelInfo) + } + + private var compiledURL: URL? { + return pipelineLoader?.compiledURL + } + + private var textColor: Color { + switch tokenCount { + case 0...65: + return .green + case 66...75: + return .orange + default: + return .red + } + } + + // macOS initializer + init(text: Binding, isPositivePrompt: Bool, model: Binding) { + _textBinding = text + self.isPositivePrompt = isPositivePrompt + _model = model + } + + // iOS initializer + init(text: Binding, isPositivePrompt: Bool, model: String) { + _textBinding = text + self.isPositivePrompt = isPositivePrompt + _model = .constant(model) + } + + var body: some View { + VStack { + #if os(macOS) + TextField(isPositivePrompt ? "Positive prompt" : "Negative Prompt", text: $textBinding, + axis: .vertical) + .lineLimit(20) + .textFieldStyle(.squareBorder) + .listRowInsets(EdgeInsets(top: 0, leading: -20, bottom: 0, trailing: 20)) + .foregroundColor(textColor == .green ? .primary : textColor) + .frame(minHeight: 30) + if modelInfo != nil && tokenizer != nil { + HStack { + Spacer() + if !textBinding.isEmpty { + Text("\(tokenCount)") + .foregroundColor(textColor) + Text(" / \(maxTokenCount)") + } + } + .onReceive(Just(textBinding)) { text in + updateTokenCount(newText: text) + } + .font(.caption) + } + #else + TextField("Prompt", text: $textBinding, axis: .vertical) + .lineLimit(20) + .listRowInsets(EdgeInsets(top: 0, leading: -20, bottom: 0, trailing: 20)) + .foregroundColor(textColor == .green ? .primary : textColor) + .frame(minHeight: 30) + HStack { + if !textBinding.isEmpty { + Text("\(tokenCount)") + .foregroundColor(textColor) + Text(" / \(maxTokenCount)") + } + Spacer() + } + .onReceive(Just(textBinding)) { text in + updateTokenCount(newText: text) + } + .font(.caption) + #endif + } + .onChange(of: model) { model in + updateTokenCount(newText: textBinding) + } + .onAppear { + updateTokenCount(newText: textBinding) + } + } + + private func updateTokenCount(newText: String) { + // ensure that the compiled URL exists + guard let compiledURL = compiledURL else { return } + // Initialize the tokenizer only when it's not created yet or the model changes + // Check if the model version has changed + let modelVersion = $model.wrappedValue + if modelVersion != currentModelVersion { + do { + tokenizer = try BPETokenizer( + mergesAt: compiledURL.appendingPathComponent("merges.txt"), + vocabularyAt: compiledURL.appendingPathComponent("vocab.json") + ) + currentModelVersion = modelVersion + } catch { + print("Failed to create tokenizer: \(error)") + return + } + } + let (tokens, _) = tokenizer?.tokenize(input: newText) ?? ([], []) + + DispatchQueue.main.async { + self.tokenCount = tokens.count + } + } +} diff --git a/bmf_lite/iOS/bmf_demo/bmf_demo/core/BmfLiteDemoCore.h b/bmf_lite/iOS/bmf_demo/bmf_demo/core/BmfLiteDemoCore.h new file mode 100644 index 00000000..f6e1a157 --- /dev/null +++ b/bmf_lite/iOS/bmf_demo/bmf_demo/core/BmfLiteDemoCore.h @@ -0,0 +1,29 @@ +/* + * Copyright 2024 Babit Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef _BMFLITE_DEMO_CORE_H_ +#define _BMFLITE_DEMO_CORE_H_ + +#import "BmfLiteDemoMacro.h" +#import "BmfLiteDemoLog.h" + +#import "BmfLiteDemoModule.h" +#import "BmfLiteDemoVideoFrame.h" + +#import "BmfLiteDemoVodPlayer.h" +#import "BmfLiteDemoPlayer.h" + +#endif /* _BMFLITE_DEMO_CORE_H_ */ diff --git a/bmf_lite/iOS/bmf_demo/bmf_demo/core/audio/BmfLiteDemoAudioEngine.h b/bmf_lite/iOS/bmf_demo/bmf_demo/core/audio/BmfLiteDemoAudioEngine.h new file mode 100644 index 00000000..8bbda7d5 --- /dev/null +++ b/bmf_lite/iOS/bmf_demo/bmf_demo/core/audio/BmfLiteDemoAudioEngine.h @@ -0,0 +1,57 @@ +/* + * Copyright 2024 Babit Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef _BMFLITE_DEMO_AUDIO_ENGINE_H_ +#define _BMFLITE_DEMO_AUDIO_ENGINE_H_ + +#import +#import + +static NSString *kRecordingCompletedNotification = + @"RecordingCompletedNotification"; + +static NSString *kShouldEnginePauseNotification = + @"kShouldEnginePauseNotification"; + +@protocol BmfLiteDemoAudioDelegate + +@optional +- (void)interrupted; + +- (void)configureChanged; + +- (void)paused; + +- (void)stopped; +@end + +@interface BmfLiteDemoAudioEngine : NSObject + +@property(nonatomic, readonly) BOOL isPlaying; + +@property(nonatomic) float playerVolume; + +@property(weak) id delegate; + +- (instancetype)initWithNSURL:(NSURL *)url VideoFps:(double)fps; + +- (void)togglePlay; + +- (void)stop; + +@end + +#endif /* _BMFLITE_DEMO_AUDIO_ENGINE_H_ */ diff --git a/bmf_lite/iOS/bmf_demo/bmf_demo/core/audio/BmfLiteDemoAudioEngine.m b/bmf_lite/iOS/bmf_demo/bmf_demo/core/audio/BmfLiteDemoAudioEngine.m new file mode 100644 index 00000000..df41885d --- /dev/null +++ b/bmf_lite/iOS/bmf_demo/bmf_demo/core/audio/BmfLiteDemoAudioEngine.m @@ -0,0 +1,194 @@ +/* + * Copyright 2024 Babit Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#import "BmfLiteDemoAudioEngine.h" + +#pragma mark BmfLiteDemoAudioEngine class extensions + +@interface BmfLiteDemoAudioEngine() { + AVAudioEngine *_engine; + AVAudioPlayerNode *_player; + + AVAudioPCMBuffer *_buffer; + + BOOL _sessionInterupted; + BOOL _sessionConfigPending; +} + +- (void)handleInterruption:(NSNotification *)notification; +- (void)handleRouteChange:(NSNotification *)notification; + +@end + +#pragma mark BMFModsAudioEngine implementation + +@implementation BmfLiteDemoAudioEngine + +- (instancetype) initWithNSURL:(NSURL *)url VideoFps:(double)fps +{ + NSError* error = nil; + BOOL success = NO; + + if (self = [super init]) { + [self initAVAudioSession:fps]; + + AVAudioFile *file = [[AVAudioFile alloc] initForReading:url error:&error]; + _buffer = [[AVAudioPCMBuffer alloc] initWithPCMFormat:[file processingFormat] frameCapacity:(AVAudioFrameCount)[file length]]; + success = [file readIntoBuffer:_buffer error:&error]; + NSAssert(success, @"couldn't read audio file, %@", [error localizedDescription]); + + [self createNodeAndInit]; + + [self makeEngineConnections]; + + NSLog(@"%@", _engine.description); + + __typeof__(self) __weak wself = self; + [[NSNotificationCenter defaultCenter] addObserverForName:kShouldEnginePauseNotification object:nil queue:[NSOperationQueue mainQueue] usingBlock:^(NSNotification *note) { + __typeof__(self) __strong sself = wself; + + if (!sself->_sessionInterupted && sself->_sessionConfigPending) { + if (self.playerIsPlaying) return; + + NSLog(@"Pausing Engine"); + [sself->_engine pause]; + [sself->_engine reset]; + + // post notification + if ([sself.delegate respondsToSelector:@selector(paused)]) { + [sself.delegate paused]; + } + } + }]; + + + [[NSNotificationCenter defaultCenter] addObserverForName:AVAudioEngineConfigurationChangeNotification object:nil queue:[NSOperationQueue mainQueue] usingBlock:^(NSNotification *note) { + __typeof__(self) __strong sself = wself; + sself->_sessionConfigPending = YES; + + if (!sself->_sessionInterupted) { + NSLog(@"Received a %@ notification!", AVAudioEngineConfigurationChangeNotification); + [sself makeEngineConnections]; + } else { + NSLog(@"Session is interrupted, deferring changes"); + } + + if ([self.delegate respondsToSelector:@selector(configureChanged)]) { + [self.delegate configureChanged]; + } + }]; + + } + return self; +} + +- (void)togglePlay +{ + if (![self playerIsPlaying]) { + [self startEngine]; + [self schedulePlayerContent]; + [_player play]; + } else { + [_player stop]; + [[NSNotificationCenter defaultCenter] postNotificationName:kShouldEnginePauseNotification object:nil]; + } +} + +- (void)stop +{ + [_player stop]; + [[NSNotificationCenter defaultCenter] postNotificationName:kShouldEnginePauseNotification object:nil]; +} + +- (void)schedulePlayerContent +{ + [_player scheduleBuffer:_buffer atTime:nil options:AVAudioPlayerNodeBufferInterrupts completionHandler:nil]; +} + +- (void)startEngine +{ + if (!_engine.isRunning) { + NSError *error; + BOOL success; + success = [_engine startAndReturnError:&error]; + NSAssert(success, @"start engine failed, %@", [error localizedDescription]); + } +} +- (void)handleRouteChange:(NSNotification *)notification +{ +} + +- (BOOL) playerIsPlaying +{ + return _player.isPlaying; +} + +- (void)initAVAudioSession:(double)fps +{ + AVAudioSession *session = [AVAudioSession sharedInstance]; + NSError *error = nil; + BOOL success = [session setCategory:AVAudioSessionCategoryPlayback error:&error]; + assert(success); + + double hwSampleRate = 44100.0; + success = [session setPreferredSampleRate:hwSampleRate error:&error]; + assert(success); + NSTimeInterval bufferDuration = 1.0/fps; + success = [session setPreferredIOBufferDuration:bufferDuration error:&error]; + assert(success); +} + +- (void)createNodeAndInit +{ + NSError *error; + BOOL success = NO; + _engine = nil; + _player = nil; + + _player = [[AVAudioPlayerNode alloc] init]; + _engine = [[AVAudioEngine alloc] init]; + + [_engine attachNode:_player]; +} + +- (void)makeEngineConnections +{ + AVAudioMixerNode *mainMixer = [_engine mainMixerNode]; +// AVAudioFormat *stereoFormat = [[AVAudioFormat alloc] initStandardFormatWithSampleRate:44100 channels:2]; + AVAudioFormat *playerFormat = _buffer.format; + [_engine connect:_player to:mainMixer fromBus:0 toBus:0 format:playerFormat]; +} + +- (void)handleInterruption:(NSNotification *)notification { + UInt8 theInterruptionType = [[notification.userInfo valueForKey:AVAudioSessionInterruptionTypeKey] intValue]; + if (theInterruptionType == AVAudioSessionInterruptionTypeBegan) { + _sessionInterupted = YES; + [_player stop]; + } + if (theInterruptionType == AVAudioSessionInterruptionTypeEnded) { + NSError *error; + bool success = [[AVAudioSession sharedInstance] setActive:YES error:&error]; + if (success) { + _sessionInterupted = NO; + if (_sessionConfigPending) { + [self makeEngineConnections]; + _sessionConfigPending = NO; + } + } + } +} + +@end diff --git a/bmf_lite/iOS/bmf_demo/bmf_demo/core/base/BmfLiteDemoModule.h b/bmf_lite/iOS/bmf_demo/bmf_demo/core/base/BmfLiteDemoModule.h new file mode 100644 index 00000000..672c31fc --- /dev/null +++ b/bmf_lite/iOS/bmf_demo/bmf_demo/core/base/BmfLiteDemoModule.h @@ -0,0 +1,52 @@ +/* + * Copyright 2024 Babit Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef _BMFLITE_DEMO_MODULE_H_ +#define _BMFLITE_DEMO_MODULE_H_ + +#import "BmfLiteDemoMacro.h" +#import "BmfLiteDemoVideoFrame.h" +#include +#include + +BMFLITE_DEMO_NAMESPACE_BEGIN + +class Module { + public: + Module() = default; + + virtual int process(std::shared_ptr data); + + virtual int init(); + + virtual int close(); + + virtual int forceClose(); + + virtual ~Module(); + + virtual std::shared_ptr getCurrentVideoFrame(); + + inline const std::string &getEffectName() const { return name_; } + + protected: + std::string name_ = "base_module"; + +}; // end class Module + +BMFLITE_DEMO_NAMESPACE_END + +#endif /* _BMFLITE_DEMO_MODULE_H_ */ diff --git a/bmf_lite/iOS/bmf_demo/bmf_demo/core/base/BmfLiteDemoModule.m b/bmf_lite/iOS/bmf_demo/bmf_demo/core/base/BmfLiteDemoModule.m new file mode 100644 index 00000000..4c9f91be --- /dev/null +++ b/bmf_lite/iOS/bmf_demo/bmf_demo/core/base/BmfLiteDemoModule.m @@ -0,0 +1,52 @@ +/* + * Copyright 2024 Babit Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#import "BmfLiteDemoModule.h" +#import "BmfLiteDemoMacro.h" +#import "BmfLiteDemoLog.h" +#import "BmfLiteDemoErrorCode.h" + +BMFLITE_DEMO_NAMESPACE_BEGIN + +int Module::process(std::shared_ptr data) { + BMFLITE_DEMO_LOGE("BMFModsEffect", "call basical process function, it not implemented."); + return BmfLiteErrorCode::FUNCTION_NOT_IMPLEMENT; +} + +int Module::init() { + BMFLITE_DEMO_LOGE("BMFModsEffect", "call basical init function, it not implemented."); + return BmfLiteErrorCode::FUNCTION_NOT_IMPLEMENT; +} + +int Module::close() { + BMFLITE_DEMO_LOGE("BMFModsEffect", "call basical init function, it not implemented."); + return BmfLiteErrorCode::FUNCTION_NOT_IMPLEMENT; +} + +int Module::forceClose() { + BMFLITE_DEMO_LOGE("BMFModsEffect", "call basical init function, it not implemented."); + return BmfLiteErrorCode::FUNCTION_NOT_IMPLEMENT; +} + +std::shared_ptr Module::getCurrentVideoFrame() { + BMFLITE_DEMO_LOGE("BMFModsEffect", "call basical getCurrentVideoFrame function, it not implemented."); + return nullptr; +} + +Module::~Module() { +} + +BMFLITE_DEMO_NAMESPACE_END diff --git a/bmf_lite/iOS/bmf_demo/bmf_demo/core/base/BmfLiteDemoOptions.h b/bmf_lite/iOS/bmf_demo/bmf_demo/core/base/BmfLiteDemoOptions.h new file mode 100644 index 00000000..24923dcc --- /dev/null +++ b/bmf_lite/iOS/bmf_demo/bmf_demo/core/base/BmfLiteDemoOptions.h @@ -0,0 +1,28 @@ +/* + * Copyright 2024 Babit Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef _BMFLITE_DEMO_OPTIONS_H_ +#define _BMFLITE_DEMO_OPTIONS_H_ + +#import + +typedef NS_ENUM(NSInteger, BmfLiteDemoAlgoType) { + BMFLITE_DEMO_ALGO_SR = 0, + BMFLITE_DEMO_ALGO_DENOISE = 1, + BMFLITE_DEMO_ALGO_CANNY = 2, +}; + +#endif /* _BMFLITE_DEMO_OPTIONS_H_ */ diff --git a/bmf_lite/iOS/bmf_demo/bmf_demo/core/base/BmfLiteDemoVideoFrame.h b/bmf_lite/iOS/bmf_demo/bmf_demo/core/base/BmfLiteDemoVideoFrame.h new file mode 100644 index 00000000..a150adc0 --- /dev/null +++ b/bmf_lite/iOS/bmf_demo/bmf_demo/core/base/BmfLiteDemoVideoFrame.h @@ -0,0 +1,55 @@ +/* + * Copyright 2024 Babit Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef _BMFLITE_DEMO_VIDEO_FRAME_H_ +#define _BMFLITE_DEMO_VIDEO_FRAME_H_ + +#import "BmfliteDemoMacro.h" +#import +#import +#import + +BMFLITE_DEMO_NAMESPACE_BEGIN + +class VideoFrame { + public: + virtual ~VideoFrame(); + virtual void setCVPixelBufferRef(CVPixelBufferRef buffer); + + CVPixelBufferRef buffer_ = nullptr; + CMSampleBufferRef sample_buffer_ref_ = nil; + id tex0_ = nil; + id tex1_ = nil; + id tex2_ = nil; + + CMTime duration_; + CMTime p_time_; + OSType source_pixel_format_ = + kCVPixelFormatType_420YpCbCr8BiPlanarVideoRange; + bool first_ = false; + bool eos_ = false; + + void holdSource(); + bool compare_ = false; + CVPixelBufferRef source_ = nil; + id s_tex0_ = nil; + id s_tex1_ = nil; + id s_tex2_ = nil; +}; // end class VideoFrame + +BMFLITE_DEMO_NAMESPACE_END + +#endif /* _BMFLITE_DEMO_VIDEO_FRAME_H_ */ diff --git a/bmf_lite/iOS/bmf_demo/bmf_demo/core/base/BmfLiteDemoVideoFrame.m b/bmf_lite/iOS/bmf_demo/bmf_demo/core/base/BmfLiteDemoVideoFrame.m new file mode 100644 index 00000000..672398dd --- /dev/null +++ b/bmf_lite/iOS/bmf_demo/bmf_demo/core/base/BmfLiteDemoVideoFrame.m @@ -0,0 +1,51 @@ +/* + * Copyright 2024 Babit Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#import "BmfLiteDemoVideoFrame.h" + +BMFLITE_DEMO_NAMESPACE_BEGIN + +void VideoFrame::setCVPixelBufferRef(CVPixelBufferRef buffer) { + if (buffer_) { + CVPixelBufferRelease(buffer_); + buffer_ = nullptr; + } + buffer_ = CVPixelBufferRetain(buffer); +} + +void VideoFrame::holdSource() { + compare_ = true; + source_ = CVPixelBufferRetain(buffer_); +} + +VideoFrame::~VideoFrame() { + if (buffer_) { + CVPixelBufferRelease(buffer_); + buffer_ = nullptr; + } + + if (nil != sample_buffer_ref_) { + CFRelease(sample_buffer_ref_); + sample_buffer_ref_ = nil; + } + if (compare_) { + CVPixelBufferRelease(source_); + source_ = nullptr; + } +} + + +BMFLITE_DEMO_NAMESPACE_END diff --git a/bmf_lite/iOS/bmf_demo/bmf_demo/core/module/canny/BmfLiteDemoCannyModule.h b/bmf_lite/iOS/bmf_demo/bmf_demo/core/module/canny/BmfLiteDemoCannyModule.h new file mode 100644 index 00000000..8d414472 --- /dev/null +++ b/bmf_lite/iOS/bmf_demo/bmf_demo/core/module/canny/BmfLiteDemoCannyModule.h @@ -0,0 +1,44 @@ +/* + * Copyright 2024 Babit Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef _BMFLITE_DEMO_CANNY_MODULE_H_ +#define _BMFLITE_DEMO_CANNY_MODULE_H_ + +#import "BmfLiteDemoMacro.h" +#import "BmfLiteDemoVideoFrame.h" +#import "BmfLiteDemoModule.h" +#include "bmf_lite.h" +#include + +BMFLITE_DEMO_NAMESPACE_BEGIN + +class BmfLiteDemoCannyModule : public Module { + public: + BmfLiteDemoCannyModule(); + int init() override; + int process(std::shared_ptr data) override; + + private: + bmf_lite::IAlgorithm *canny_ = nullptr; + std::vector color_transform_ = {0.299f, 0.587f, 0.114f}; + float sigma_; + float low_threshold_ = 0.2f; + float high_threshold_ = 0.4f; +}; // class BmfLiteDemoCannyModule + +BMFLITE_DEMO_NAMESPACE_END + +#endif /* _BMFLITE_DEMO_CANNY_MODULE_H_ */ diff --git a/bmf_lite/iOS/bmf_demo/bmf_demo/core/module/canny/BmfLiteDemoCannyModule.m b/bmf_lite/iOS/bmf_demo/bmf_demo/core/module/canny/BmfLiteDemoCannyModule.m new file mode 100644 index 00000000..e760ccda --- /dev/null +++ b/bmf_lite/iOS/bmf_demo/bmf_demo/core/module/canny/BmfLiteDemoCannyModule.m @@ -0,0 +1,92 @@ +/* + * Copyright 2024 Babit Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "BmfLiteDemoCannyModule.h" +#include "BmfLiteDemoErrorCode.h" +#import +#import +#include "BmfLiteDemoMetalHelper.h" + +BMFLITE_DEMO_NAMESPACE_BEGIN + +BmfLiteDemoCannyModule::BmfLiteDemoCannyModule() { + canny_ = nullptr; +} + +int BmfLiteDemoCannyModule::init() { + canny_ = bmf_lite::AlgorithmFactory::createAlgorithmInterface(); + bmf_lite::Param init_param; + init_param.setInt("change_mode",2); + init_param.setString("instance_id","canny1"); + init_param.setInt("algorithm_type", 2); + + init_param.setInt("algorithm_version",0); + init_param.setFloat("sigma", sigma_); + + init_param.setFloat("low_threshold", low_threshold_); + init_param.setFloat("high_threshold", high_threshold_); + + init_param.setInt("cvpixelbuffer_fmt", kCVPixelFormatType_420YpCbCr8BiPlanarVideoRange); + init_param.setFloatList("color_transform", color_transform_); + assert(canny_->setParam(init_param) == 0); + + bmf_lite::Param set_param; + set_param.setInt("change_mode",5); + set_param.setString("instance_id","canny1"); + set_param.setInt("algorithm_type", 2); + set_param.setInt("algorithm_version", 0); + assert(canny_->setParam(set_param) == 0); + + + HardwareDataInfo hardware_data_info_in; + hardware_data_info_in.mem_type = MemoryType::kCVPixelBuffer; + + HardwareDataInfo hardware_data_info_out; + hardware_data_info_out.mem_type = MemoryType::kMultiMetalTexture; + + bmf_lite::HardwareDeviceCreateInfo create_info{bmf_lite::kHWDeviceTypeMTL, NULL}; + std::shared_ptr mtl_device_context; + bmf_lite::HWDeviceContextManager::createHwDeviceContext(&create_info,mtl_device_context); + + return 0; +} + +int BmfLiteDemoCannyModule::process(std::shared_ptr data) { + if (data->eos_) { + return 0; + } + + @autoreleasepool { + bmf_lite::HardwareDataInfo hardware_info{}; + hardware_info.internal_format=bmf_lite::BMF_LITE_CV_NV12; + hardware_info.mem_type=bmf_lite::MemoryType::kCVPixelBuffer; + + bmf_lite::HardwareDeviceCreateInfo create_info{bmf_lite::kHWDeviceTypeMTL, NULL}; + std::shared_ptr mtl_device_context; + bmf_lite::HWDeviceContextManager::createHwDeviceContext(&create_info,mtl_device_context); + std::shared_ptr video_buffer; + int w = CVPixelBufferGetWidth(data->buffer_); + int h = CVPixelBufferGetHeight(data->buffer_); + bmf_lite::VideoBufferManager::createTextureVideoBufferFromExistingData(data->buffer_, w, h, &hardware_info, mtl_device_context, nullptr, video_buffer); + + bmf_lite::VideoFrame videoframe(video_buffer); + bmf_lite::Param param; + assert(canny_->processVideoFrame(videoframe, param) == 0); + } + return SUCCESS; +} + +BMFLITE_DEMO_NAMESPACE_END diff --git a/bmf_lite/iOS/bmf_demo/bmf_demo/core/module/denoise/BmfLiteDemoDenoiseModule.h b/bmf_lite/iOS/bmf_demo/bmf_demo/core/module/denoise/BmfLiteDemoDenoiseModule.h new file mode 100644 index 00000000..48274fd0 --- /dev/null +++ b/bmf_lite/iOS/bmf_demo/bmf_demo/core/module/denoise/BmfLiteDemoDenoiseModule.h @@ -0,0 +1,43 @@ +/* + * Copyright 2024 Babit Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef _BMFLITE_DEMO_DENOISE_MODULE_H_ +#define _BMFLITE_DEMO_DENOISE_MODULE_H_ + +#import "BmfLiteDemoMacro.h" +#import "BmfLiteDemoVideoFrame.h" +#import "BmfLiteDemoModule.h" +#include "bmf_lite.h" + +BMFLITE_DEMO_NAMESPACE_BEGIN + +class BmfLiteDemoDenoiseModule : public Module { + public: + BmfLiteDemoDenoiseModule(); + + ~BmfLiteDemoDenoiseModule(); + + int init() override; + + int process(std::shared_ptr data) override; + + private: + bmf_lite::IAlgorithm *denoise_ = nullptr; +}; // end class BmfLiteDemoDenoiseModule + +BMFLITE_DEMO_NAMESPACE_END + +#endif /* _BMFLITE_DEMO_DENOISE_MODULE_H_ */ diff --git a/bmf_lite/iOS/bmf_demo/bmf_demo/core/module/denoise/BmfLiteDemoDenoiseModule.m b/bmf_lite/iOS/bmf_demo/bmf_demo/core/module/denoise/BmfLiteDemoDenoiseModule.m new file mode 100644 index 00000000..92766b26 --- /dev/null +++ b/bmf_lite/iOS/bmf_demo/bmf_demo/core/module/denoise/BmfLiteDemoDenoiseModule.m @@ -0,0 +1,102 @@ +/* + * Copyright 2024 Babit Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "BmfLiteDemoDenoiseModule.h" +#include "BmfLiteDemoErrorCode.h" + +BMFLITE_DEMO_NAMESPACE_BEGIN + +BmfLiteDemoDenoiseModule::BmfLiteDemoDenoiseModule() { denoise_ = nullptr; } + +BmfLiteDemoDenoiseModule::~BmfLiteDemoDenoiseModule() { + if (denoise_ != nullptr) { + bmf_lite::AlgorithmFactory::releaseAlgorithmInterface(denoise_); + } + denoise_ = nullptr; +} + +int BmfLiteDemoDenoiseModule::init() { + denoise_ = bmf_lite::AlgorithmFactory::createAlgorithmInterface(); + + bmf_lite::Param init_param; + init_param.setInt("change_mode",2); + init_param.setString("instance_id","denoise1"); + init_param.setInt("algorithm_type", 1); + + init_param.setInt("algorithm_version",1); + + init_param.setInt("backend",3); + init_param.setString("library_path", ""); + + assert(denoise_->setParam(init_param) == 0); + + bmf_lite::Param set_param; + set_param.setInt("change_mode",5); + set_param.setString("instance_id","denoise1"); + set_param.setInt("algorithm_type", 0); + set_param.setInt("algorithm_version", 1); + assert(denoise_->setParam(set_param) == 0); + + + HardwareDataInfo hardware_data_info_in; + hardware_data_info_in.mem_type = MemoryType::kCVPixelBuffer; + + HardwareDataInfo hardware_data_info_out; + hardware_data_info_out.mem_type = MemoryType::kMultiMetalTexture; + + bmf_lite::HardwareDeviceCreateInfo create_info{bmf_lite::kHWDeviceTypeMTL, NULL}; + std::shared_ptr mtl_device_context; + bmf_lite::HWDeviceContextManager::createHwDeviceContext(&create_info,mtl_device_context); + + return 0; +} + +int BmfLiteDemoDenoiseModule::process(std::shared_ptr data) { + if (nullptr == data) { + return BmfLiteErrorCode::VIDEO_FRAME_IS_NIL; + } + if (data->eos_) { + return BmfLiteErrorCode::SUCCESS; + } + bmf_lite::HardwareDataInfo hardware_info{}; + hardware_info.internal_format=bmf_lite::BMF_LITE_CV_NV12; + hardware_info.mem_type=bmf_lite::MemoryType::kCVPixelBuffer; + + bmf_lite::HardwareDeviceCreateInfo create_info{bmf_lite::kHWDeviceTypeMTL, NULL}; + std::shared_ptr mtl_device_context; + bmf_lite::HWDeviceContextManager::createHwDeviceContext(&create_info,mtl_device_context); + CVPixelBufferRef buf = data->buffer_; + int w = CVPixelBufferGetWidth(data->buffer_); + int h = CVPixelBufferGetHeight(data->buffer_); + std::shared_ptr video_buffer; + + bmf_lite::VideoBufferManager::createTextureVideoBufferFromExistingData(data->buffer_, w, h, &hardware_info, mtl_device_context, nullptr, video_buffer); + + bmf_lite::VideoFrame videoframe(video_buffer); + bmf_lite::Param param; + assert(denoise_->processVideoFrame(videoframe, param) == 0); + bmf_lite::VideoFrame oframe; + bmf_lite::Param output_param; + assert(denoise_->getVideoFrameOutput(oframe, output_param) == 0); + std::shared_ptr obuf = oframe.buffer(); + CVPixelBufferRef ocv_buf = (CVPixelBufferRef)obuf->data(); + data->setCVPixelBufferRef(ocv_buf); + + return SUCCESS; +} + +BMFLITE_DEMO_NAMESPACE_END + diff --git a/bmf_lite/iOS/bmf_demo/bmf_demo/core/module/sr/BmfLiteDemoSrModule.h b/bmf_lite/iOS/bmf_demo/bmf_demo/core/module/sr/BmfLiteDemoSrModule.h new file mode 100644 index 00000000..60d8736a --- /dev/null +++ b/bmf_lite/iOS/bmf_demo/bmf_demo/core/module/sr/BmfLiteDemoSrModule.h @@ -0,0 +1,42 @@ +/* + * Copyright 2024 Babit Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef _BMFLITE_DEMO_SR_MODULE_H_ +#define _BMFLITE_DEMO_SR_MODULE_H_ + +#import "BmfLiteDemoMacro.h" +#import "BmfLiteDemoVideoFrame.h" +#import "BmfLiteDemoModule.h" +#include "bmf_lite.h" + +BMFLITE_DEMO_NAMESPACE_BEGIN + +class BmfLiteDemoSrModule : public Module { + public: + BmfLiteDemoSrModule(); + ~BmfLiteDemoSrModule(); + + int init() override; + + int process(std::shared_ptr data) override; + + private: + bmf_lite::IAlgorithm *sr_ = nullptr; +}; // end class BmfLiteDemoSrModule + +BMFLITE_DEMO_NAMESPACE_END + +#endif /* _BMFLITE_DEMO_SR_MODULE_H_ */ diff --git a/bmf_lite/iOS/bmf_demo/bmf_demo/core/module/sr/BmfLiteDemoSrModule.m b/bmf_lite/iOS/bmf_demo/bmf_demo/core/module/sr/BmfLiteDemoSrModule.m new file mode 100644 index 00000000..e1752f90 --- /dev/null +++ b/bmf_lite/iOS/bmf_demo/bmf_demo/core/module/sr/BmfLiteDemoSrModule.m @@ -0,0 +1,105 @@ +/* + * Copyright 2024 Babit Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "BmfLiteDemoSrModule.h" +#include "BmfLiteDemoErrorCode.h" + +BMFLITE_DEMO_NAMESPACE_BEGIN + +BmfLiteDemoSrModule::BmfLiteDemoSrModule() { sr_ = nullptr; } + +BmfLiteDemoSrModule::~BmfLiteDemoSrModule(){ + if (sr_ != nullptr) { + bmf_lite::AlgorithmFactory::releaseAlgorithmInterface(sr_); + } + sr_ = nullptr; +} + +int BmfLiteDemoSrModule::init() { + sr_ = bmf_lite::AlgorithmFactory::createAlgorithmInterface(); + + bmf_lite::Param init_param; + init_param.setInt("change_mode",2); + init_param.setString("instance_id","sr1"); + init_param.setInt("algorithm_type", 0); + + init_param.setInt("algorithm_version",0); + init_param.setInt("scale_mode",0); + + init_param.setInt("backend",3); + init_param.setInt("process_mode",0); + init_param.setInt("max_width",1920); + init_param.setInt("max_height",1080); + init_param.setString("library_path", ""); + + assert(sr_->setParam(init_param) == 0); + + bmf_lite::Param set_param; + set_param.setInt("change_mode",5); + set_param.setString("instance_id","sr1"); + set_param.setInt("algorithm_type", 0); + set_param.setInt("algorithm_version", 0); + assert(sr_->setParam(set_param) == 0); + + + HardwareDataInfo hardware_data_info_in; + hardware_data_info_in.mem_type = MemoryType::kCVPixelBuffer; + + HardwareDataInfo hardware_data_info_out; + hardware_data_info_out.mem_type = MemoryType::kMultiMetalTexture; + + bmf_lite::HardwareDeviceCreateInfo create_info{bmf_lite::kHWDeviceTypeMTL, NULL}; + std::shared_ptr mtl_device_context; + bmf_lite::HWDeviceContextManager::createHwDeviceContext(&create_info,mtl_device_context); + + return 0; +} + +int BmfLiteDemoSrModule::process(std::shared_ptr data) { + if (data->eos_) { + return 0; + } + @autoreleasepool { + + bmf_lite::HardwareDataInfo hardware_info{}; + hardware_info.internal_format=bmf_lite::BMF_LITE_CV_NV12; + hardware_info.mem_type=bmf_lite::MemoryType::kCVPixelBuffer; + + bmf_lite::HardwareDeviceCreateInfo create_info{bmf_lite::kHWDeviceTypeMTL, NULL}; + std::shared_ptr mtl_device_context; + bmf_lite::HWDeviceContextManager::createHwDeviceContext(&create_info,mtl_device_context); + CVPixelBufferRef buf = data->buffer_; + size_t w = CVPixelBufferGetWidth(data->buffer_); + size_t h = CVPixelBufferGetHeight(data->buffer_); + std::shared_ptr video_buffer; + + bmf_lite::VideoBufferManager::createTextureVideoBufferFromExistingData(data->buffer_, w, h, &hardware_info, mtl_device_context, nullptr, video_buffer); + + bmf_lite::VideoFrame videoframe(video_buffer); + bmf_lite::Param param; + assert(sr_->processVideoFrame(videoframe, param) == 0); + bmf_lite::VideoFrame oframe; + bmf_lite::Param output_param; + assert(sr_->getVideoFrameOutput(oframe, output_param) == 0); + std::shared_ptr obuf = oframe.buffer(); + CVPixelBufferRef ocv_buf = (CVPixelBufferRef)obuf->data(); + data->setCVPixelBufferRef(ocv_buf); + + } + return SUCCESS; +} + +BMFLITE_DEMO_NAMESPACE_END diff --git a/bmf_lite/iOS/bmf_demo/bmf_demo/core/player/BmfLiteDemoPlayer.h b/bmf_lite/iOS/bmf_demo/bmf_demo/core/player/BmfLiteDemoPlayer.h new file mode 100644 index 00000000..9b1162cd --- /dev/null +++ b/bmf_lite/iOS/bmf_demo/bmf_demo/core/player/BmfLiteDemoPlayer.h @@ -0,0 +1,38 @@ +/* + * Copyright 2024 Babit Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef _BMFLITE_DEMO_PLAYER_H_ +#define _BMFLITE_DEMO_PLAYER_H_ + +#import +#import +#import +#import +#import "BmfLiteDemoOptions.h" + +@interface BmfLiteDemoPlayer : NSObject + +- (instancetype)initWithMTKView:(MTKView *) + view:(int)mode + :(BmfLiteDemoAlgoType)algo_type; + +- (void)setSliderValue:(float)value; + +- (void)consume:(CMSampleBufferRef)sampleBuffer:(BOOL)compare; + +@end + +#endif /* _BMFLITE_DEMO_PLAYER_H_ */ diff --git a/bmf_lite/iOS/bmf_demo/bmf_demo/core/player/BmfLiteDemoPlayer.m b/bmf_lite/iOS/bmf_demo/bmf_demo/core/player/BmfLiteDemoPlayer.m new file mode 100644 index 00000000..d33db808 --- /dev/null +++ b/bmf_lite/iOS/bmf_demo/bmf_demo/core/player/BmfLiteDemoPlayer.m @@ -0,0 +1,84 @@ +/* + * Copyright 2024 Babit Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#import "BmfLiteDemoPlayer.h" +#import "BmfLiteDemoMetalRenderModule.h" +#import "BmfLiteDemoFlowController.h" +#import "BmfLiteDemoDenoiseModule.h" +#import "BmfLiteDemoCannyModule.h" +#include +#include +#include + +USE_BMFLITE_DEMO_NAMESPACE + +@implementation BmfLiteDemoPlayer +{ + std::vector> _modules; + std::shared_ptr render; + BOOL _first; +} + +- (instancetype)initWithMTKView:(MTKView *)view : (int)mode : (BmfLiteDemoAlgoType)algo_type { + _first = true; + render = std::make_shared(view, 0, mode); + assert(render->init() == 0); + _modules.clear(); + + if (algo_type == BmfLiteDemoAlgoType::BMFLITE_DEMO_ALGO_DENOISE) { + std::shared_ptr denoise = std::make_shared(); + assert(denoise->init() == 0); + _modules.push_back(denoise); + } else if (algo_type == BmfLiteDemoAlgoType::BMFLITE_DEMO_ALGO_CANNY) { + std::shared_ptr canny = std::make_shared(); + assert(canny->init() == 0); + _modules.push_back(canny); + } + + _modules.push_back(render); + return self; +} + +- (void)setSliderValue:(float)value { + render->setSliderValue(value); +} + +- (void)consume:(CMSampleBufferRef)sampleBuffer : (BOOL)compare +{ + std::shared_ptr frame = std::make_shared(); + frame->eos_ = false; + + if (_first) { + frame->first_ = true; + _first = false; + } + CFRetain(sampleBuffer); + frame->p_time_ = CMSampleBufferGetPresentationTimeStamp(sampleBuffer); + CVPixelBufferRef pixelBuffer = CMSampleBufferGetImageBuffer(sampleBuffer); + frame->setCVPixelBufferRef(pixelBuffer); + frame->sample_buffer_ref_ = sampleBuffer; + if (compare) { + frame->holdSource(); + } + for (auto & it : _modules) { + if (it != nullptr) { + if (it->process(frame) != 0) break;; + } + } + +} + +@end diff --git a/bmf_lite/iOS/bmf_demo/bmf_demo/core/player/BmfLiteDemoVodPlayer.h b/bmf_lite/iOS/bmf_demo/bmf_demo/core/player/BmfLiteDemoVodPlayer.h new file mode 100644 index 00000000..b1f644d5 --- /dev/null +++ b/bmf_lite/iOS/bmf_demo/bmf_demo/core/player/BmfLiteDemoVodPlayer.h @@ -0,0 +1,37 @@ +/* + * Copyright 2024 Babit Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef _BMFLITE_DEMO_VOD_PLAYER_H_ +#define _BMFLITE_DEMO_VOD_PLAYER_H_ +#import +#import + +@interface BmfLiteDemoVodPlayer : NSObject + +- (instancetype)initWithMTKView:(MTKView *)view + AndVideoPath:(NSString *)path + WhetherPlayAudio:(BOOL)play_audio + Compare:(BOOL)compare_source; + +- (void)setSliderValue:(float)value; + +- (void)run; + +- (void)stop; + +@end + +#endif /* _BMFLITE_DEMO_VOD_PLAYER_H_ */ diff --git a/bmf_lite/iOS/bmf_demo/bmf_demo/core/player/BmfLiteDemoVodPlayer.m b/bmf_lite/iOS/bmf_demo/bmf_demo/core/player/BmfLiteDemoVodPlayer.m new file mode 100644 index 00000000..b2ed6d61 --- /dev/null +++ b/bmf_lite/iOS/bmf_demo/bmf_demo/core/player/BmfLiteDemoVodPlayer.m @@ -0,0 +1,116 @@ +/* + * Copyright 2024 Babit Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#import "BmfLiteDemoVodPlayer.h" +#import "BmfLiteDemoVideoReaderModule.h" +#import "BmfLiteDemoAudioEngine.h" +#import "BmfLiteDemoMetalRenderModule.h" +#import "BmfLiteDemoSrModule.h" +#import "BmfLiteDemoFlowController.h" +#include +#include +#include + +USE_BMFLITE_DEMO_NAMESPACE + +@implementation BmfLiteDemoVodPlayer +{ + std::shared_ptr _reader; + BmfLiteDemoAudioEngine *_audio_engine; + std::vector> _modules; + std::shared_ptr render; + double _fps; + bool _force_stop; + bool _compare; +} + +- (instancetype)initWithMTKView:(MTKView *)view AndVideoPath:(NSString *)path WhetherPlayAudio:(BOOL)play_audio Compare:(BOOL)compare_source { + _force_stop = false; + _compare = compare_source; + _reader = std::make_shared(path); + assert(_reader->init() == 0); + _fps = _reader->getFps(); + + NSURL *url = [NSURL fileURLWithPath:path]; + if (play_audio) { +// _audio_engine = [[BmfLiteDemoAudioEngine alloc]initWithNSURL:url VideoFps:_fps]; + } + render = std::make_shared(view); + assert(render->init() == 0); + + std::shared_ptr sr = std::make_shared(); + assert(sr->init() == 0); + _modules.clear(); + + _modules.push_back(sr); + _modules.push_back(render); + + return self; +} + +- (void)setSliderValue:(float)value { + render->setSliderValue(value); +} + +- (void)run { + bool first = true; + FlowController flow_contoller(_fps); + while (true) { + if (_force_stop) { + break; + } + if (first) { + if (_audio_engine != nil) { + [_audio_engine togglePlay]; + } + first = false; + } + + if (0 != _reader->process(nullptr)) { + break; + } + std::shared_ptr frame = _reader->getCurrentVideoFrame(); + if (nullptr == frame) { + break; + } + if (_compare) { + frame->holdSource(); + } + if (flow_contoller.frameIsDelay(frame->p_time_)) { + continue; + } + + for (auto & it : _modules) { + it->process(frame); + } + flow_contoller.controlByVideoPts(frame->p_time_); + + if (frame->eos_) { + break; + } + } + if (_audio_engine != nil) { + [_audio_engine togglePlay]; + } +} + +- (void)stop { + _force_stop = true; +} + +@end + + diff --git a/bmf_lite/iOS/bmf_demo/bmf_demo/core/render/BmfLiteDemo.metal b/bmf_lite/iOS/bmf_demo/bmf_demo/core/render/BmfLiteDemo.metal new file mode 100644 index 00000000..ec27d563 --- /dev/null +++ b/bmf_lite/iOS/bmf_demo/bmf_demo/core/render/BmfLiteDemo.metal @@ -0,0 +1,258 @@ +#include +using namespace metal; + +kernel void psnr_kernel(texture2d inputTexture1 [[texture(0)]], + texture2d inputTexture2 [[texture(1)]], + device float* psnr [[buffer(0)]], + uint2 gid [[thread_position_in_grid]]) +{ + float4 pixel1 = inputTexture1.read(gid); + float4 pixel2 = inputTexture2.read(gid); + float4 diff = pixel1 - pixel2; + // Mean Squared Error + float mse = dot(diff, diff) / 4.0f; + float maxPixelValue = 1.0f; + // PSNR + float psnrValue = 20.0f * log10(maxPixelValue) - 10.0f * log10(mse); + psnr[0] = psnrValue; +} + +#define YUV_SHADER_ARGS VertexOut inFrag [[ stage_in ]],\ +texture2d yTex [[ texture(0) ]],\ +texture2d uTex [[ texture(1) ]],\ +texture2d vTex [[ texture(2) ]],\ +sampler bilinear [[ sampler(0) ]], \ + constant ColorParameters *colorParameters [[ buffer(0) ]] + +#define NV12_SHADER_ARGS VertexOut inFrag [[ stage_in ]],\ +texture2d yTex [[ texture(0) ]],\ +texture2d uvTex [[ texture(1) ]],\ +sampler bilinear [[ sampler(0) ]], \ +constant ColorParameters *colorParameters [[ buffer(0) ]] + +#define RGB_SHADER_ARGS VertexOut inFrag [[ stage_in ]],\ +texture2d tex [[ texture(0) ]],\ +sampler bilinear [[ sampler(0) ]] + +#define Y_SHADER_ARGS \ +texture2d sourceTexture [[texture(0)]], \ +device float *buffer [[buffer(0)]], \ +uint2 grid [[thread_position_in_grid]] + +struct VertexIn{ + packed_float3 position; + packed_float2 st; +}; + +struct VertexOut{ + float4 position [[position]]; //1 + float2 st; +}; + +struct ColorParameters +{ + float3x3 yuvToRGB; + float3 offset; + float3 rangeMin; + float3 rangeMax; + float line; +}; + +struct ColorConversion { + float3x3 matrix; + float3 offset; + float3 rangeMin; + float3 rangeMax; + float line; +}; + +vertex VertexOut texture_vertex( + const device VertexIn* vertex_array [[ buffer(0) ]], //1 + unsigned int vid [[ vertex_id ]]) { + + + VertexIn VertexIn = vertex_array[vid]; + + VertexOut VertexOut; + VertexOut.position = float4(VertexIn.position,1); //3 + VertexOut.st = VertexIn.st; + return VertexOut; +} + +fragment float4 texture_fragment(VertexOut frag [[stage_in]], texture2d texas[[texture(0)]]) { //1 + constexpr sampler defaultSampler; + float4 rgba = texas.sample(defaultSampler, frag.st).rgba; + return rgba; +} + +fragment half4 yuv_rgb(YUV_SHADER_ARGS) +{ + float3 yuv; + yuv.x = yTex.sample(bilinear, inFrag.st).r - float(16.0/255.0); + yuv.y = uTex.sample(bilinear,inFrag.st).r - float(0.5); + yuv.z = vTex.sample(bilinear,inFrag.st).r - float(0.5); + return half4(half3(colorParameters->yuvToRGB * yuv),1.0); +} + +//fragment half4 nv12_rgb(NV12_SHADER_ARGS) +//{ +// float3 yuv; +// yuv.x = yTex.sample(bilinear, inFrag.st).r - float(16.0/255.0); +// yuv.yz = uvTex.sample(bilinear,inFrag.st).rg - float2(0.5); +// return half4(half3(colorParameters->yuvToRGB * yuv),1.0); +//} + +fragment half4 nv12_rgb(NV12_SHADER_ARGS) +{ + float3 yuv; + yuv.x = yTex.sample(bilinear, inFrag.st).r - colorParameters->offset[0]; + yuv.yz = uvTex.sample(bilinear,inFrag.st).rg - colorParameters->offset[1]; + + // return half4(clamp(half3(colorParameters->yuvToRGB * yuv), half3(16.0/1023, 16.0/1023, 16.0/1023), half3(2.0, 2.0, 2.0)),1.0); + return half4(half3(colorParameters->yuvToRGB * yuv), 1.0); +} + +fragment half4 nv12_rgb_compare_rotate(VertexOut inFrag [[ stage_in ]], + texture2d yTex [[ texture(0) ]], + texture2d uvTex [[ texture(1) ]], + texture2d c_yTex [[ texture(2) ]], + texture2d c_uvTex [[ texture(3) ]], + sampler bilinear [[ sampler(0) ]], + constant ColorParameters *colorParameters [[ buffer(0) ]]) +{ + float3 yuv; + float line = colorParameters->line; + float low = saturate(line - 0.001f); + float hi = saturate(line + 0.001f); + if (inFrag.st.g < low) { + yuv.x = yTex.sample(bilinear, inFrag.st).r - colorParameters->offset[0]; + yuv.yz = uvTex.sample(bilinear,inFrag.st).rg - colorParameters->offset[1]; + return half4(half3(colorParameters->yuvToRGB * yuv), 1.0); + } else if (low <= inFrag.st.g && inFrag.st.g <= hi) { + return half4(1.0, 0.0, 0.0, 0.0); + } else { + yuv.x = c_yTex.sample(bilinear, inFrag.st).r - colorParameters->offset[0]; + yuv.yz = c_uvTex.sample(bilinear,inFrag.st).rg - colorParameters->offset[1]; + return half4(half3(colorParameters->yuvToRGB * yuv), 1.0); + } +} + +fragment half4 nv12_rgb_compare(VertexOut inFrag [[ stage_in ]], + texture2d yTex [[ texture(0) ]], + texture2d uvTex [[ texture(1) ]], + texture2d c_yTex [[ texture(2) ]], + texture2d c_uvTex [[ texture(3) ]], + sampler bilinear [[ sampler(0) ]], + constant ColorParameters *colorParameters [[ buffer(0) ]]) +{ + float3 yuv; + float line = colorParameters->line; + float low = saturate(line - 0.001f); + float hi = saturate(line + 0.001f); + if (inFrag.st.r < low) { + yuv.x = yTex.sample(bilinear, inFrag.st).r - colorParameters->offset[0]; + yuv.yz = uvTex.sample(bilinear,inFrag.st).rg - colorParameters->offset[1]; + return half4(half3(colorParameters->yuvToRGB * yuv), 1.0); + } else if (low <= inFrag.st.r && inFrag.st.r <= hi) { + return half4(1.0, 0.0, 0.0, 0.0); + } else { + yuv.x = c_yTex.sample(bilinear, inFrag.st).r - colorParameters->offset[0]; + yuv.yz = c_uvTex.sample(bilinear,inFrag.st).rg - colorParameters->offset[1]; + return half4(half3(colorParameters->yuvToRGB * yuv), 1.0); + } + +// float3 yuv; +// float line = colorParameters->line; +// float low = saturate(line - 0.001f); +// float hi = saturate(line + 0.001f); +// if (inFrag.st.r < low) { +// yuv.x = yTex.sample(bilinear, inFrag.st).r - colorParameters->offset[0]; +// yuv.yz = uvTex.sample(bilinear,inFrag.st).rg - colorParameters->offset[1]; +// return half4(half3(colorParameters->yuvToRGB * yuv), 1.0); +// } else if (low <= inFrag.st.r && inFrag.st.r <= hi) { +// return half4(1.0, 0.0, 0.0, 0.0); +// } else { +// yuv.x = c_yTex.sample(bilinear, float2(inFrag.st.r - line, inFrag.st.g)).r - colorParameters->offset[0]; +// yuv.yz = c_uvTex.sample(bilinear, float2(inFrag.st.r - line, inFrag.st.g)).rg - colorParameters->offset[1]; +// return half4(half3(colorParameters->yuvToRGB * yuv), 1.0); +// } + +} + + +fragment half4 rgb_render(RGB_SHADER_ARGS) +{ + return half4(tex.sample(bilinear, inFrag.st).rgba); +} + +kernel void y_tofloatbuffer(Y_SHADER_ARGS) +{ + if(grid.x >= sourceTexture.get_width() || grid.y >= sourceTexture.get_height()) return; + + float y = sourceTexture.read(grid).r; + buffer[(grid.y*sourceTexture.get_width() + grid.x)] = y; +} + +kernel void pro_rgb_nv12_compute_ypass(texture2d yTexture [[texture(0)]], + texture2d rgbTexture [[texture(1)]], + uint2 gid [[thread_position_in_grid]], + constant ColorConversion& colorConversion [[ buffer(0) ]]) +{ + if((gid.x >= rgbTexture.get_width()) || (gid.y >= rgbTexture.get_height())) + { + return; + } + float3 yuv = colorConversion.matrix * rgbTexture.read(gid).rgb + colorConversion.offset; + yuv = clamp(yuv, colorConversion.rangeMin, colorConversion.rangeMax); + yTexture.write(float4(yuv.xyzz), gid); +} + +kernel void pro_nv12_rgb_compute_ypass(texture2d yTexture [[texture(0)]], + texture2d uvTexture [[texture(1)]], + texture2d rgbTexture [[texture(2)]], + uint2 gid [[thread_position_in_grid]], + constant ColorConversion& colorConversion [[ buffer(0) ]]) +{ + if((gid.x >= uvTexture.get_width()) || (gid.y >= uvTexture.get_height())) + { + return; + } + uint2 gid_y = gid * 2; + float y00 = yTexture.read(uint2(gid_y.x + 0, gid_y.y + 0)).x - float(colorConversion.offset.x); + float y01 = yTexture.read(uint2(gid_y.x + 1, gid_y.y + 0)).x - float(colorConversion.offset.x); + float y10 = yTexture.read(uint2(gid_y.x + 0, gid_y.y + 1)).x - float(colorConversion.offset.x); + float y11 = yTexture.read(uint2(gid_y.x + 1, gid_y.y + 1)).x - float(colorConversion.offset.x); + float2 uv = uvTexture.read(gid).xy - float2(0.5); + float3 yuv00 = float3(y00, uv); + float3 yuv01 = float3(y01, uv);; + float3 yuv10 = float3(y10, uv);; + float3 yuv11 = float3(y11, uv);; + yuv00 = colorConversion.matrix * yuv00; + yuv01 = colorConversion.matrix * yuv01; + yuv10 = colorConversion.matrix * yuv10; + yuv11 = colorConversion.matrix * yuv11; + yuv00 = clamp(yuv00, colorConversion.rangeMin, colorConversion.rangeMax); + yuv01 = clamp(yuv01, colorConversion.rangeMin, colorConversion.rangeMax); + yuv10 = clamp(yuv10, colorConversion.rangeMin, colorConversion.rangeMax); + yuv11 = clamp(yuv11, colorConversion.rangeMin, colorConversion.rangeMax); + rgbTexture.write(float4(yuv00, 1.0), uint2(gid_y.x + 0, gid_y.y + 0)); + rgbTexture.write(float4(yuv01, 1.0), uint2(gid_y.x + 1, gid_y.y + 0)); + rgbTexture.write(float4(yuv10, 1.0), uint2(gid_y.x + 0, gid_y.y + 1)); + rgbTexture.write(float4(yuv11, 1.0), uint2(gid_y.x + 1, gid_y.y + 1)); +} + +kernel void pro_rgb_nv12_compute_uvpass(texture2d uvTexture [[texture(0)]], + texture2d rgbTexture [[texture(1)]], + uint2 gid [[thread_position_in_grid]], + constant ColorConversion& colorConversion [[ buffer(0) ]]) +{ + if((gid.x >= rgbTexture.get_width()) || (gid.y >= rgbTexture.get_height())) + { + return; + } + float3 yuv = colorConversion.matrix * rgbTexture.read(gid).rgb + colorConversion.offset; + yuv = clamp(yuv, colorConversion.rangeMin, colorConversion.rangeMax); + if (gid.x % 2 == 0 && gid.y % 2 == 0) { + uvTexture.write(float4(yuv.yzzz), uint2(gid.x/2, gid.y/2)); + } +} diff --git a/bmf_lite/iOS/bmf_demo/bmf_demo/core/render/BmfLiteDemoMTKViewRender.h b/bmf_lite/iOS/bmf_demo/bmf_demo/core/render/BmfLiteDemoMTKViewRender.h new file mode 100644 index 00000000..5b39e556 --- /dev/null +++ b/bmf_lite/iOS/bmf_demo/bmf_demo/core/render/BmfLiteDemoMTKViewRender.h @@ -0,0 +1,64 @@ +/* + * Copyright 2024 Babit Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef _BMFLITE_DEMO_MTKVIEW_RENDER_H_ +#define _BMFLITE_DEMO_MTKVIEW_RENDER_H_ + +#import +#import +#import +#import + +typedef enum BmfViewRenderMode { + MTL_RGBA = 0, + MTL_NV12 = 1, + MTL_YUV420 = 2, +} BmfViewRenderMode; + +@interface BmfLiteViewRender : NSObject + +/* + * 0 not rotated + * 1 rotate,left and right flip + * 2 rotate + */ +- (nonnull instancetype)initWithMetalKitView:(nonnull MTKView *)mtkView + WhetherRotate:(int)rotated; + +- (void)drawInMTKView:(nonnull MTKView *)view; + +- (void)setMTLTexture:(id) + tex0:(__strong id)tex1 + :(__strong id)tex2 + :(id)c_tex0 + :(__strong id)c_tex1 + :(__strong id)c_tex2 + :(CVPixelBufferRef)buf; + +- (void)setRenderPipelineConfig:(OSType) + format:(int)frame_width + :(int)frame_height + :(int)view_width + :(int)view_height + :(bool)compare + :(float)line; + +- (void)setSliderValue:(float)value; + +- (void)dealloc; +@end + +#endif /* _BMFLITE_DEMO_MTKVIEW_RENDER_H_ */ diff --git a/bmf_lite/iOS/bmf_demo/bmf_demo/core/render/BmfLiteDemoMTKViewRender.m b/bmf_lite/iOS/bmf_demo/bmf_demo/core/render/BmfLiteDemoMTKViewRender.m new file mode 100644 index 00000000..0f39434f --- /dev/null +++ b/bmf_lite/iOS/bmf_demo/bmf_demo/core/render/BmfLiteDemoMTKViewRender.m @@ -0,0 +1,280 @@ +/* + * Copyright 2024 Babit Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#import "BmfLiteDemoMTKViewRender.h" +#import "BmfLiteDemoMacro.h" +#import "BmfLiteDemoErrorCode.h" +#import "BmfLiteDemoLog.h" +#import "BmfLiteDemoToolKit.h" +#include + +USE_BMFLITE_DEMO_NAMESPACE + +@implementation BmfLiteViewRender { + id render_pipeline_state_; + id device_; + id command_queue_; + MTKView* mtk_view_; + vector_uint2 viewport_size_; + BmfViewRenderMode render_mode_; + id tex0_; + id tex1_; + id tex2_; + id last_command_buffer_; + id curColorConversionBuffer; + id vertexBuffer_; + id samplerState_; + id default_library_; + int video_width_; + int video_height_; + int world_width_; + int world_height_; + float video_ratio_; + float world_ratio_; + int rotated_; + // for compare + bool compare_; + CVPixelBufferRef pre_buf_; + id c_tex0_; + id c_tex1_; + id c_tex2_; + std::mutex mtx_; +} + +- (nonnull instancetype)initWithMetalKitView:(nonnull MTKView *)mtkView WhetherRotate : (int) rotated { + @autoreleasepool { + self = [super init]; + if (nil == self) { + BMFLITE_DEMO_LOGE("BmfLite", "call initWithMTKView failed, in super init."); + return nil; + } + rotated_ = rotated; + device_ = MTLCreateSystemDefaultDevice(); + if (nil == device_) { + BMFLITE_DEMO_LOGE("BmfLite", "call MTLCreateSystemDefaultDevice failed."); + return nil; + } + command_queue_ = [device_ newCommandQueue]; + if (nil == command_queue_) { + BMFLITE_DEMO_LOGE("BmfLite", "create command queue failed."); + } + + default_library_ = [device_ newDefaultLibrary]; + curColorConversionBuffer = [device_ newBufferWithLength:sizeof(ColorConversion) options:MTLResourceStorageModeShared]; + // vertexBuffer_ = [device_ newBufferWithBytes:vertex length: sizeof(vertex) options:0]; + vertexBuffer_ = [device_ newBufferWithLength:sizeof(float[30]) options:MTLResourceStorageModeShared]; + self->mtk_view_ = mtkView; + self->mtk_view_.device = self->device_; + pre_buf_ = nil; + return self; + } +} + +- (void) setRenderPipelineConfig: (OSType) format : (int) frame_width : (int) frame_height : (int) view_width : (int) view_height :(bool)compare :(float)line +{ + std::lock_guard lk(mtx_); + video_ratio_ = (frame_width * 1.0) / frame_height; + world_ratio_ = (view_width * 1.0) / view_height; + MTLRenderPipelineDescriptor* render_pipeline_descriptor_ = [[MTLRenderPipelineDescriptor alloc] init]; + id vertex_function = [default_library_ newFunctionWithName:@"texture_vertex"]; + id fragment_function = nil; + if (format == kCVPixelFormatType_420YpCbCr8BiPlanarVideoRange || + format == kCVPixelFormatType_420YpCbCr8BiPlanarFullRange || + format == kCVPixelFormatType_420YpCbCr10BiPlanarVideoRange) { + if (compare) { + if (!rotated_) { + fragment_function = [default_library_ newFunctionWithName:@"nv12_rgb_compare"]; + } else { + fragment_function = [default_library_ newFunctionWithName:@"nv12_rgb_compare_rotate"]; + } + + } else { + fragment_function = [default_library_ newFunctionWithName:@"nv12_rgb"]; + } + compare_ = compare; + } else if (format != kCVPixelFormatType_420YpCbCr8Planar || + format != kCVPixelFormatType_420YpCbCr8PlanarFullRange) { + fragment_function = [default_library_ newFunctionWithName:@"yuv_rgb"]; + } else { + BMFLITE_DEMO_LOGE("BmfLite", "BmfRenderView not support format:%d", format); + } + render_pipeline_descriptor_.label = @"BmfViewRender Render Pipeline"; + render_pipeline_descriptor_.vertexFunction = vertex_function; + render_pipeline_descriptor_.fragmentFunction = fragment_function; + render_pipeline_descriptor_.colorAttachments[0].pixelFormat = mtk_view_.colorPixelFormat; + NSError* err = nil; + render_pipeline_state_ = [device_ newRenderPipelineStateWithDescriptor:render_pipeline_descriptor_ error:&err]; + if (nil == render_pipeline_state_) { + BMFLITE_DEMO_LOGE(@"BmfLite", @"BmfRenderView create render pipeline state:%@", err); + } + + ColorConversion color_conversion; + if (kCVPixelFormatType_420YpCbCr10BiPlanarVideoRange == format) { + color_conversion = getYUVtoRGBBt2020VideoRange10bit(); + } else { + color_conversion = getYUVtoRGBBt709VideoRange8bit(); + } + color_conversion.line = line; + memcpy(curColorConversionBuffer.contents, &color_conversion, sizeof(ColorConversion)); + + MTLSamplerDescriptor *samplerDescriptor = [MTLSamplerDescriptor new]; + samplerDescriptor.minFilter = MTLSamplerMinMagFilterLinear; + samplerDescriptor.magFilter = MTLSamplerMinMagFilterLinear; + + samplerState_ = [device_ newSamplerStateWithDescriptor:samplerDescriptor]; + if (rotated_ == 0) { + float vertex[] = { + -1.0, -1.0, 0.0, 0.0, 1.0, + 1.0, -1.0, 0.0, 1.0, 1.0, + 1.0, 1.0, 0.0, 1.0, 0.0, + 1.0, 1.0, 0.0, 1.0, 0.0, + -1.0, -1.0, 0.0, 0.0, 1.0, + -1.0, 1.0, 0.0, 0.0, 0.0 + }; + memcpy(vertexBuffer_.contents, &vertex, sizeof(vertex)); + } else if (rotated_ == 1) { + float vertex[] = { + -1.0, -1.0, 0.0, 1.0, 0.0, + 1.0, -1.0, 0.0, 1.0, 1.0, + 1.0, 1.0, 0.0, 0.0, 1.0, + 1.0, 1.0, 0.0, 0.0, 1.0, + -1.0, -1.0, 0.0, 1.0, 0.0, + -1.0, 1.0, 0.0, 0.0, 0.0 + }; + memcpy(vertexBuffer_.contents, &vertex, sizeof(vertex)); + } else if (rotated_ == 2) { + float vertex[] = { + -1.0, -1.0, 0.0, 1.0, 1.0, + 1.0, -1.0, 0.0, 1.0, 0.0, + 1.0, 1.0, 0.0, 0.0, 0.0, + 1.0, 1.0, 0.0, 0.0, 0.0, + -1.0, -1.0, 0.0, 1.0, 1.0, + -1.0, 1.0, 0.0, 0.0, 1.0 + }; + memcpy(vertexBuffer_.contents, &vertex, sizeof(vertex)); + } + vertexBuffer_.label = @"Bmf Vertices"; +} + +- (void)setSliderValue:(float)value { + std::lock_guard lk(mtx_); +// char* ptr = (char *)curColorConversionBuffer.contents + sizeof(ColorConversion) - sizeof(float); +// memcpy(ptr, &value, sizeof(float)); + ColorConversion color_conversion; +// if (kCVPixelFormatType_420YpCbCr10BiPlanarVideoRange == format) { +// color_conversion = getYUVtoRGBBt2020VideoRange10bit(); +// } else { + color_conversion = getYUVtoRGBBt709VideoRange8bit(); +// } + if (rotated_ == 2) { + color_conversion.line = 1 - value; + } else { + color_conversion.line = value; + } + memcpy(curColorConversionBuffer.contents, &color_conversion, sizeof(ColorConversion)); +} + +- (void) setMTLTexture:(id) tex0 : (__strong id) tex1 : (__strong id) tex2 :(id) c_tex0 : (__strong id) c_tex1 : (__strong id) c_tex2 : (CVPixelBufferRef) buf { + std::lock_guard lk(mtx_); + self->tex0_ = tex0; + self->tex1_ = tex1; + self->tex2_ = tex0; + self->c_tex0_ = c_tex0; + self->c_tex1_ = c_tex1; + self->c_tex2_ = c_tex0; + if (pre_buf_ != nil) { + CVPixelBufferRelease(pre_buf_); + pre_buf_ = nil; + } + pre_buf_ = CVPixelBufferRetain(buf); + +} + +- (void) dealloc { +} + +- (void)drawInMTKView:(nonnull MTKView *)view { + std::lock_guard lk(mtx_); + if (nil == self->tex0_){ + return; + } + if (nil != last_command_buffer_) { + MTLCommandBufferStatus status = last_command_buffer_.status; + if (last_command_buffer_.status != MTLCommandBufferStatusCompleted && last_command_buffer_.status != MTLCommandBufferStatusError) { + [last_command_buffer_ waitUntilCompleted]; + } + last_command_buffer_ = nil; + if (status == MTLCommandBufferStatusError) { + BMFLITE_DEMO_LOGE("BmfLite", "command buffer exec failed."); + } + } + MTLRenderPassDescriptor *render_pass_descriptor = view.currentRenderPassDescriptor; + if (nil != render_pass_descriptor) { + id command_buffer = [command_queue_ commandBuffer]; + if (nil == command_buffer) { + BMFLITE_DEMO_LOGE("BmfLite", "create command buffer failed."); + return; + } + command_buffer.label = @"BmfViewRender command buffer"; + id command_encoder = [command_buffer renderCommandEncoderWithDescriptor:render_pass_descriptor]; + command_encoder.label = @"BmfViewRender command encoder"; + + int video_h = tex0_.height; + int video_w = tex0_.width; + float real_h; + if (rotated_ == 0) { + real_h = video_h * (viewport_size_.x * 1.0f / video_w); + } else { + real_h = video_w * (viewport_size_.x * 1.0f / video_h); + } + float origin_y = ((viewport_size_.y - real_h) / 2); + + [command_encoder setViewport:(MTLViewport){0.0f, origin_y, (float)viewport_size_.x, real_h, -1.0f, 1.0f }]; + [command_encoder setRenderPipelineState:render_pipeline_state_]; + [command_encoder setVertexBuffer:vertexBuffer_ offset:0 atIndex:0 ]; + [command_encoder setFragmentSamplerState:samplerState_ atIndex:0]; + + + if (compare_) { + if (rotated_ == 2) { + [command_encoder setFragmentTexture:c_tex0_ atIndex:0]; + [command_encoder setFragmentTexture:c_tex1_ atIndex:1]; + [command_encoder setFragmentTexture:tex0_ atIndex:2]; + [command_encoder setFragmentTexture:tex1_ atIndex:3]; + } else { + [command_encoder setFragmentTexture:tex0_ atIndex:0]; + [command_encoder setFragmentTexture:tex1_ atIndex:1]; + [command_encoder setFragmentTexture:c_tex0_ atIndex:2]; + [command_encoder setFragmentTexture:c_tex1_ atIndex:3]; + } + } else { + [command_encoder setFragmentTexture:tex0_ atIndex:0]; + [command_encoder setFragmentTexture:tex1_ atIndex:1]; + } + [command_encoder setFragmentBuffer:curColorConversionBuffer offset:0 atIndex:0]; + [command_encoder drawPrimitives:(MTLPrimitiveTypeTriangle) vertexStart:0 vertexCount:6 instanceCount:1]; + [command_encoder endEncoding]; + [command_buffer presentDrawable:view.currentDrawable]; + [command_buffer commit]; + last_command_buffer_ = command_buffer; + } +} + +- (void)mtkView:(nonnull MTKView *)view drawableSizeWillChange:(CGSize)size { + viewport_size_.x = size.width; + viewport_size_.y = size.height; +} +@end diff --git a/bmf_lite/iOS/bmf_demo/bmf_demo/core/render/BmfLiteDemoMetalRenderModule.h b/bmf_lite/iOS/bmf_demo/bmf_demo/core/render/BmfLiteDemoMetalRenderModule.h new file mode 100644 index 00000000..a72ffc68 --- /dev/null +++ b/bmf_lite/iOS/bmf_demo/bmf_demo/core/render/BmfLiteDemoMetalRenderModule.h @@ -0,0 +1,78 @@ +/* + * Copyright 2024 Babit Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef _BMFLITE_DEMO_METAL_RENDER_MODULE_H_ +#define _BMFLITE_DEMO_METAL_RENDER_MODULE_H_ + +#import "BmfLiteDemoModule.h" +#import "BmfLiteDemoVideoFrame.h" +#import "BmfLiteDemoMetalHelper.h" +#import "BmfLiteDemoMTKViewRender.h" +#import "BmfLiteDemoMacro.h" +#import +#import +#import +#include + +BMFLITE_DEMO_NAMESPACE_BEGIN + +class MetalRenderModule : public Module { + public: + enum RenderMode { + NV12 = 0, + YUV420 = 1, + RGBA = 2, + }; + + enum Fmt { + BT709 = 0, + BT601 = 1, + HDR_HLG = 2, + HDR_PQ = 3, + P3_D65 = 4, + }; + + public: + MetalRenderModule(MTKView *view, int render_mode = 0, int rotate = false); + + MetalRenderModule() = default; + + virtual ~MetalRenderModule(); + + int process(std::shared_ptr data) override; + + void setSliderValue(float value); + + int init() override; + + int close() override; + + private: + void checkAndUpdataLayerInfo(CVPixelBufferRef ibuffer); + + private: + __weak MTKView *view_ = nil; + BmfLiteViewRender *render_ = nullptr; + RenderMode mode_ = RenderMode::NV12; + CFStringRef color_space_ = nil; + CAMetalLayer *layer_ = nil; + OSType pre_fmt_; + int rotate_ = false; +}; // end class MetalRenderModule + +BMFLITE_DEMO_NAMESPACE_END + +#endif /* _BMFLITE_DEMO_METAL_RENDER_MODULE_H_ */ diff --git a/bmf_lite/iOS/bmf_demo/bmf_demo/core/render/BmfLiteDemoMetalRenderModule.m b/bmf_lite/iOS/bmf_demo/bmf_demo/core/render/BmfLiteDemoMetalRenderModule.m new file mode 100644 index 00000000..ad9f242a --- /dev/null +++ b/bmf_lite/iOS/bmf_demo/bmf_demo/core/render/BmfLiteDemoMetalRenderModule.m @@ -0,0 +1,245 @@ +/* + * Copyright 2024 Babit Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#import "BmfLiteDemoMetalRenderModule.h" +#import "BmfLiteDemoErrorCode.h" +#import "BmfLiteDemoLog.h" +#import + +BMFLITE_DEMO_NAMESPACE_BEGIN + +MetalRenderModule::MetalRenderModule(MTKView* view, int render_mode, int rotate) { + view_ = view; + rotate_ = rotate; + dispatch_async(dispatch_get_main_queue(), ^{ + layer_ = (CAMetalLayer*) view_.layer; + }); + switch (render_mode) { + case RenderMode::NV12: + mode_ = RenderMode::NV12; + break; + case RenderMode::YUV420: + mode_ = RenderMode::YUV420; + break; + case RenderMode::RGBA: + mode_ = RenderMode::RGBA; + break; + default: + mode_ = RenderMode::NV12; + break; + } +} + +int MetalRenderModule::init() { + render_ = [[BmfLiteViewRender alloc] initWithMetalKitView : view_ WhetherRotate:rotate_]; + [render_ mtkView:view_ drawableSizeWillChange:view_.drawableSize]; + view_.delegate = render_; + return BmfLiteErrorCode::SUCCESS; +} + +MetalRenderModule::~MetalRenderModule() { + +} + +void MetalRenderModule::checkAndUpdataLayerInfo(CVPixelBufferRef ibuffer) { + if (ibuffer == nil) { + return; + } + + CFTypeRef color_attachments = CVBufferGetAttachment(ibuffer, kCVImageBufferColorPrimariesKey, NULL); + CFTypeRef color_trans = CVBufferGetAttachment(ibuffer, kCVImageBufferTransferFunctionKey, NULL); + CFStringRef color_space = kCGColorSpaceSRGB; + BOOL notSDR = true; + if (@available(iOS 11.0, *)) { + if ([(__bridge NSString *)color_attachments isEqualToString:(__bridge NSString *)kCVImageBufferColorPrimaries_ITU_R_2020] && [(__bridge NSString *)color_trans isEqualToString:(__bridge NSString *)kCVImageBufferTransferFunction_ITU_R_2100_HLG]) { + if (@available(iOS 14.0, *)) { + color_space = kCGColorSpaceITUR_2100_HLG; + } else { + // Fallback on earlier versions + } + } else if ([(__bridge NSString *)color_attachments isEqualToString:(__bridge NSString *)kCVImageBufferColorPrimaries_ITU_R_2020] && [(__bridge NSString *)color_trans isEqualToString:(__bridge NSString *)kCVImageBufferTransferFunction_SMPTE_ST_2084_PQ]) { + if (@available(iOS 14.0, *)) { + color_space = kCGColorSpaceITUR_2100_PQ; + } else { + // Fallback on earlier versions + } + } else if ([(__bridge NSString *)color_attachments isEqualToString:(__bridge NSString *)kCVImageBufferColorPrimaries_P3_D65] && [(__bridge NSString *)color_trans isEqualToString:(__bridge NSString *)kCVImageBufferTransferFunction_ITU_R_2100_HLG]) { + if (@available(iOS 12.6, *)) { + color_space = kCGColorSpaceDisplayP3_HLG; + } else { + // Fallback on earlier versions + } + } else if ([(__bridge NSString *)color_attachments isEqualToString:(__bridge NSString *)kCVImageBufferColorPrimaries_P3_D65] && [(__bridge NSString *)color_trans isEqualToString:(__bridge NSString *)kCVImageBufferTransferFunction_SMPTE_ST_2084_PQ]) { + if (@available(iOS 13.4, *)) { + color_space = kCGColorSpaceDisplayP3_PQ; + } else { + // Fallback on earlier versions + } + } else if ([(__bridge NSString *)color_attachments isEqualToString:(__bridge NSString *)kCVImageBufferColorPrimaries_P3_D65]) { + color_space = kCGColorSpaceDisplayP3; + } else { + notSDR = false; + } + } else { + notSDR = false; + // Fallback on earlier versions + } + + if (![(__bridge NSString *)color_space isEqualToString:(__bridge NSString *)color_space_]) { + if ([[NSThread currentThread] isMainThread]) { + [CATransaction begin]; + [CATransaction setDisableActions:YES]; + color_space_ = color_space; + layer_.colorspace = CGColorSpaceCreateWithName(color_space_); + MTLPixelFormat fmt = view_.colorPixelFormat; + if (notSDR) { + view_.colorPixelFormat = MTLPixelFormatRGBA16Float; + } else { + view_.colorPixelFormat = MTLPixelFormatBGRA8Unorm; + } + + [CATransaction commit]; + } else { + [CATransaction begin]; + [CATransaction setDisableActions:YES]; + color_space_ = color_space; + if (layer_) { + layer_.colorspace = CGColorSpaceCreateWithName(color_space_); + if (notSDR) { + view_.colorPixelFormat = MTLPixelFormatRGBA16Float; + } else { + view_.colorPixelFormat = MTLPixelFormatBGRA8Unorm; + } + } + [CATransaction commit]; + } + } + + if (@available(iOS 16.0, *)) { + if ([(__bridge NSString *)color_trans isEqualToString:(__bridge NSString *)kCVImageBufferTransferFunction_ITU_R_2100_HLG]) { + [CATransaction begin]; + [CATransaction setDisableActions:YES]; + if (layer_) { + [layer_ setWantsExtendedDynamicRangeContent:YES]; + } + [CATransaction commit]; + + CFTypeRef ambientData = CVBufferGetAttachment(ibuffer, kCVImageBufferAmbientViewingEnvironmentKey, NULL); + if (CAEDRMetadata.available) { + if (ambientData) { +// if (@available(iOS 17.2, *)) { +// layer_.EDRMetadata = [CAEDRMetadata HLGMetadataWithAmbientViewingEnvironment:((__bridge NSData *)ambientData)]; +// } else { + layer_.EDRMetadata = CAEDRMetadata.HLGMetadata; +// } + } else { + layer_.EDRMetadata = CAEDRMetadata.HLGMetadata; +// layer_.EDRMetadata = [CAEDRMetadata HDR10MetadataWithMinLuminance:0.1 maxLuminance:1000 opticalOutputScale:10000]; + + } + } + } else if ( [(__bridge NSString *)color_trans isEqualToString:(__bridge NSString *)kCVImageBufferTransferFunction_SMPTE_ST_2084_PQ]) { + dispatch_async(dispatch_get_main_queue(), ^{ + [CATransaction begin]; + [CATransaction setDisableActions:YES]; + if (layer_) { + [layer_ setWantsExtendedDynamicRangeContent:YES]; + } + [CATransaction commit]; + }); + if (CAEDRMetadata.available) { + layer_.EDRMetadata = [CAEDRMetadata HDR10MetadataWithMinLuminance:0.1 maxLuminance:1000 opticalOutputScale:10000]; + } + } else { + [CATransaction begin]; + [CATransaction setDisableActions:YES]; + if (layer_) { + [layer_ setWantsExtendedDynamicRangeContent:NO]; + } + [CATransaction commit]; + layer_.EDRMetadata = nil; + } + } else { + // Fallback on earlier versions + } +} + +void MetalRenderModule::setSliderValue(float value) { + [render_ setSliderValue:value]; +} + +int MetalRenderModule::process(std::shared_ptr data) { + + if (nullptr == data) { + return BmfLiteErrorCode::VIDEO_FRAME_IS_NIL; + } + if (data->eos_) { + return BmfLiteErrorCode::SUCCESS; + } +// dispatch_async(dispatch_get_main_queue(), ^{ + checkAndUpdataLayerInfo(data->buffer_); +// }); + OSType fmt; + size_t w, h; + if (data->buffer_) { + fmt = CVPixelBufferGetPixelFormatType(data->buffer_); + w = CVPixelBufferGetWidth(data->buffer_); + h = CVPixelBufferGetHeight(data->buffer_); + } else { + fmt = kCVPixelFormatType_420YpCbCr8BiPlanarVideoRange; + w = data->tex0_.width; + h = data->tex0_.height; + } + + if (data->first_ || pre_fmt_ != fmt) { + size_t view_w = view_.drawableSize.width; + size_t view_h = view_.drawableSize.height; + [render_ setRenderPipelineConfig:fmt :(int)w :(int)h :(int)view_w :(int)view_h : (bool) data->compare_ : (float)0.5f]; + pre_fmt_ = fmt; + } + if (nil == view_) return BmfLiteErrorCode::SURFACE_IS_NIL; + + if (data->buffer_ != nil && data->tex0_ == nil) { + auto& helper = MetalHelper::getSingleInstance(); + helper.createMTLTextureByCVPixelBufferRef(data->buffer_, &(data->tex0_), &(data->tex1_), &(data->tex2_)); + } + + if (data->compare_) { + if (data->source_ != nil) { + auto& helper = MetalHelper::getSingleInstance(); + helper.createMTLTextureByCVPixelBufferRef(data->source_, &(data->s_tex0_), &(data->s_tex1_), &(data->s_tex2_)); + } + } + + if (data->compare_) { + [render_ setMTLTexture:data->s_tex0_ :data->s_tex1_ : data->s_tex2_ : data->tex0_ :data->tex1_ : data->tex2_ : data->source_]; + } else { + [render_ setMTLTexture:data->tex0_ :data->tex1_ : data->tex2_ : data->s_tex0_ :data->s_tex1_ : data->s_tex2_ : nil]; + } + + + @autoreleasepool { + Float64 p = CMTimeGetSeconds(data->p_time_) / CMTimeGetSeconds(data->duration_); + NSNumber *tmp = [NSNumber numberWithDouble:p]; + } + return BmfLiteErrorCode::SUCCESS; +} + +int MetalRenderModule::close() { + return BmfLiteErrorCode::SUCCESS; +} + +BMFLITE_DEMO_NAMESPACE_END diff --git a/bmf_lite/iOS/bmf_demo/bmf_demo/core/source/BmfLiteDemoVideoReaderModule.h b/bmf_lite/iOS/bmf_demo/bmf_demo/core/source/BmfLiteDemoVideoReaderModule.h new file mode 100644 index 00000000..dbe5a938 --- /dev/null +++ b/bmf_lite/iOS/bmf_demo/bmf_demo/core/source/BmfLiteDemoVideoReaderModule.h @@ -0,0 +1,65 @@ +/* + * Copyright 2024 Babit Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef _BMFLITE_DEMO_VIDEO_READER_MODULE_H_ +#define _BMFLITE_DEMO_VIDEO_READER_MODULE_H_ + +#import "BmfLiteDemoMacro.h" +#import "BmfLiteDemoVideoFrame.h" +#import "BmfLiteDemoModule.h" +#include + +BMFLITE_DEMO_NAMESPACE_BEGIN + +class VideoReaderModule : public Module { + public: + VideoReaderModule(NSString *video_path, + uint32_t color_pixel_format = + kCVPixelFormatType_420YpCbCr8BiPlanarVideoRange); + + VideoReaderModule(); + + virtual ~VideoReaderModule(); + + int process(std::shared_ptr data) override; + + int init() override; + + int close() override; + + std::shared_ptr getCurrentVideoFrame() override; + + double getFps(); + + private: + NSString *video_path_ = nil; + OSType color_pixel_format_; + CMTime duration_; + std::mutex mtx_; + std::shared_ptr current_video_frame_ = nullptr; + + AVAssetReader *asset_reader_; + AVAssetReaderTrackOutput *reader_video_track_output_; + AVURLAsset *input_asset_; + bool first_ = true; + bool send_eos_ = false; + bool play_audio_ = true; + double fps_ = 30; +}; // end class VideoReaderModule + +BMFLITE_DEMO_NAMESPACE_END + +#endif /* _BMFLITE_DEMO_VIDEO_READER_MODULE_H_ */ diff --git a/bmf_lite/iOS/bmf_demo/bmf_demo/core/source/BmfLiteDemoVideoReaderModule.m b/bmf_lite/iOS/bmf_demo/bmf_demo/core/source/BmfLiteDemoVideoReaderModule.m new file mode 100644 index 00000000..79c3df91 --- /dev/null +++ b/bmf_lite/iOS/bmf_demo/bmf_demo/core/source/BmfLiteDemoVideoReaderModule.m @@ -0,0 +1,133 @@ +/* + * Copyright 2024 Babit Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#import "BmfLiteDemoVideoReaderModule.h" +#import "BmfLiteDemoErrorCode.h" +#import "BmfLiteDemoLog.h" + +BMFLITE_DEMO_NAMESPACE_BEGIN + +VideoReaderModule::VideoReaderModule(NSString* video_path, uint32_t color_pixel_format) { + video_path_ = [video_path copy]; + color_pixel_format_ = color_pixel_format; +} + +int VideoReaderModule::init() { + name_ = "VideoReaderEffect"; + NSURL *url = [NSURL fileURLWithPath:video_path_]; +// color_pixel_format_ = kCVPixelFormatType_420YpCbCr8BiPlanarFullRange; +// color_pixel_format_ = kCVPixelFormatType_420YpCbCr8BiPlanarVideoRange; +// color_pixel_format_ = kCVPixelFormatType_ARGB2101010LEPacked; + NSDictionary *inputOptions = [NSDictionary + dictionaryWithObject:[NSNumber numberWithBool:true] + forKey:AVURLAssetPreferPreciseDurationAndTimingKey]; + + input_asset_ = [[AVURLAsset alloc] initWithURL:url options:inputOptions]; + + [input_asset_ + loadValuesAsynchronouslyForKeys:[NSArray arrayWithObject:@"tracks"] + completionHandler:^{ + NSError *error = nil; + AVKeyValueStatus tracksStatus = + [input_asset_ statusOfValueForKey:@"tracks" + error:&error]; + if (tracksStatus != AVKeyValueStatusLoaded) { + BMFLITE_DEMO_LOGE(@"BMFModsVideoReaderEffect", @"error %@", error); + return; + } + // processWithAsset(inputAsset); + }]; + BMFLITE_DEMO_LOGE(@"BMFModsVideoReaderEffect", @"processWithAsset"); + NSError *error = nil; + asset_reader_ = [AVAssetReader assetReaderWithAsset:input_asset_ error:&error]; + + NSMutableDictionary *outputSettings = [NSMutableDictionary dictionary]; + + [outputSettings setObject:@(color_pixel_format_) + forKey:(id)kCVPixelBufferPixelFormatTypeKey]; + AVAssetTrack *video_track = [[input_asset_ tracksWithMediaType:AVMediaTypeVideo] objectAtIndex:0] ; + reader_video_track_output_ = [AVAssetReaderTrackOutput assetReaderTrackOutputWithTrack:video_track + outputSettings:outputSettings]; +// reader_video_track_output_.alwaysCopiesSampleData = false; + reader_video_track_output_.alwaysCopiesSampleData = true; + + fps_ = video_track.nominalFrameRate; + [asset_reader_ addOutput:reader_video_track_output_]; + duration_ = input_asset_.duration; + + if ([asset_reader_ startReading] == false) { + BMFLITE_DEMO_LOGE(@"BMFModsVideoReaderEffect", @"Error reading from file at URL: %@", input_asset_); + return BmfLiteErrorCode::MODULE_INIT_FAILED; + } + + return BmfLiteErrorCode::SUCCESS; +} + +double VideoReaderModule::getFps() { + return fps_; +} + +int VideoReaderModule::process(std::shared_ptr data) { + std::lock_guard lk(mtx_); + if (asset_reader_ && asset_reader_.status == AVAssetReaderStatusCompleted) { + return BmfLiteErrorCode::VIDEO_DECODE_FAILED; + } + @autoreleasepool { + CMSampleBufferRef sampleBufferRef = nil; + if (reader_video_track_output_) { + sampleBufferRef = [reader_video_track_output_ copyNextSampleBuffer]; + } + if (nil == sampleBufferRef) { + if (!send_eos_) { + current_video_frame_ = std::make_shared(); + current_video_frame_->eos_ = true; + send_eos_ = true; + return BmfLiteErrorCode::SUCCESS; + } + return BmfLiteErrorCode::VIDEO_DECODE_FAILED; + } + + std::shared_ptr frame = std::make_shared(); + if (first_) { + frame->first_ = true; + frame->source_pixel_format_ = this->color_pixel_format_; + this->first_ = false; + } + frame->duration_ = this->duration_; + frame->p_time_ = CMSampleBufferGetPresentationTimeStamp(sampleBufferRef); + CVPixelBufferRef pixelBuffer = CMSampleBufferGetImageBuffer(sampleBufferRef); + frame->setCVPixelBufferRef(pixelBuffer); + frame->sample_buffer_ref_ = sampleBufferRef; + current_video_frame_ = frame; + } + return BmfLiteErrorCode::SUCCESS; +} + +int VideoReaderModule::close() { + return BmfLiteErrorCode::FUNCTION_NOT_IMPLEMENT; +} + +VideoReaderModule::~VideoReaderModule() { +} + +std::shared_ptr VideoReaderModule::getCurrentVideoFrame() { + std::lock_guard lk(mtx_); + std::shared_ptr frame = current_video_frame_; + current_video_frame_ = nullptr; + return frame; +} + +BMFLITE_DEMO_NAMESPACE_END diff --git a/bmf_lite/iOS/bmf_demo/bmf_demo/core/utils/BmfLiteDemoErrorCode.h b/bmf_lite/iOS/bmf_demo/bmf_demo/core/utils/BmfLiteDemoErrorCode.h new file mode 100644 index 00000000..b363d71e --- /dev/null +++ b/bmf_lite/iOS/bmf_demo/bmf_demo/core/utils/BmfLiteDemoErrorCode.h @@ -0,0 +1,54 @@ +/* + * Copyright 2024 Babit Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef _BMFLITE_DEMO_ERROR_CODE_H_ +#define _BMFLITE_DEMO_ERROR_CODE_H_ + +#import "BmfLiteDemoMacro.h" + +BMFLITE_DEMO_NAMESPACE_BEGIN + +enum BmfLiteErrorCode : int { + SUCCESS = 0, + INVALID_PARAMETER = -1, + INVALID_DATA = -2, + MODULE_NOT_INIT = -3, + MODULE_INIT_FAILED = -4, + PROCESS_FAILED = -5, + NO_PERMISSION = -6, + TIMEOUT = -7, + HANG = -8, + INSUFFICIENT_CPU_MEMORY = -9, + INSUFFICIENT_GPU_MEMORY = -10, + DEVICE_NOT_SUPPORT = -11, + CREATE_MTLTEXTURE_FAILED = -12, + FUNCTION_NOT_IMPLEMENT = -13, + PIPE_NO_CAPACITY = -14, + VIDEO_DECODE_FAILED = -15, + PARAM_PARSE_FAILED = -16, + SURFACE_IS_NIL = -17, + VIDEO_FRAME_IS_NIL = -18, + METAL_CACHE_IS_NIL = -19, + METAL_DEVICE_IS_NIL = -20, + METAL_COMMAND_QUEUE_IS_NIL = -21, + METAL_CREATE_TEXTURE_FAILED = -22, + METAL_RUNTIME_INIT_FAILED = -23, + CREATE_CVPIXELBUFFER_FAILED = -24, +}; + +BMFLITE_DEMO_NAMESPACE_END + +#endif /* _BMFLITE_DEMO_ERROR_CODE_H_ */ diff --git a/bmf_lite/iOS/bmf_demo/bmf_demo/core/utils/BmfLiteDemoFlowController.h b/bmf_lite/iOS/bmf_demo/bmf_demo/core/utils/BmfLiteDemoFlowController.h new file mode 100644 index 00000000..379830b3 --- /dev/null +++ b/bmf_lite/iOS/bmf_demo/bmf_demo/core/utils/BmfLiteDemoFlowController.h @@ -0,0 +1,55 @@ +/* + * Copyright 2024 Babit Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef _BMFLITE_DEMO_FLOW_CONTROLLER_H_ +#define _BMFLITE_DEMO_FLOW_CONTROLLER_H_ + +#import "BmfLiteDemoMacro.h" +#import +#import +#include +#include + +BMFLITE_DEMO_NAMESPACE_BEGIN + +class FlowController { + public: + FlowController() = default; + FlowController(double frame_rate) : frame_rate_(frame_rate) {} + void start(); + + void startInCMTime(); + inline double getFrameRate() const { return frame_rate_; } + + inline void setFrameRate(double frame_rate) { frame_rate_ = frame_rate; } + + void controlByVideoPts(CMTime pts); + + bool frameIsDelay(CMTime pts); + + private: + CMTime pre_pts; + double frame_rate_{30}; + double time_gap_ = 0; + bool first_ = true; + double current_count = 0; + std::chrono::time_point start_, end_; + bool flag = true; +}; // end class BMFModsFlowController + +BMFLITE_DEMO_NAMESPACE_END + +#endif /* _BMFLITE_DEMO_FLOW_CONTROLLER_H_ */ diff --git a/bmf_lite/iOS/bmf_demo/bmf_demo/core/utils/BmfLiteDemoFlowController.m b/bmf_lite/iOS/bmf_demo/bmf_demo/core/utils/BmfLiteDemoFlowController.m new file mode 100644 index 00000000..e2d2a9e4 --- /dev/null +++ b/bmf_lite/iOS/bmf_demo/bmf_demo/core/utils/BmfLiteDemoFlowController.m @@ -0,0 +1,62 @@ +/* + * Copyright 2024 Babit Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#import "BmfLiteDemoFlowController.h" + +BMFLITE_DEMO_NAMESPACE_BEGIN + +void FlowController::start() { + start_ = std::chrono::high_resolution_clock::now(); + first_ = true; + current_count = 0; +} + +void FlowController::startInCMTime() { + first_ = true; + time_gap_ = 0; +} + +void FlowController::controlByVideoPts(CMTime pts){ + if (first_) { + pre_pts = pts; + first_ = false; + time_gap_ = 0; + start_ = std::chrono::steady_clock::now(); + return; + } + double m_gap = (CMTimeGetSeconds(pts) - CMTimeGetSeconds(pre_pts)) * 1000.0; + end_ = std::chrono::steady_clock::now(); + std::chrono::duration diff = end_ - start_; + auto elapsed = m_gap - diff.count(); + if (elapsed > 0) { + std::chrono::duration sleep_time(elapsed); + std::this_thread::sleep_for(sleep_time); + } +} + +bool FlowController::frameIsDelay(CMTime pts) { + if (flag) { + pre_pts = pts; + flag = false; + return false; + } + std::chrono::time_point end = std::chrono::steady_clock::now(); + double m_gap = (CMTimeGetSeconds(pts) - CMTimeGetSeconds(pre_pts)) * 1000.0; + std::chrono::duration diff = end - start_; + return m_gap < diff.count(); +} + +BMFLITE_DEMO_NAMESPACE_END diff --git a/bmf_lite/iOS/bmf_demo/bmf_demo/core/utils/BmfLiteDemoFmt.h b/bmf_lite/iOS/bmf_demo/bmf_demo/core/utils/BmfLiteDemoFmt.h new file mode 100644 index 00000000..730e6f4a --- /dev/null +++ b/bmf_lite/iOS/bmf_demo/bmf_demo/core/utils/BmfLiteDemoFmt.h @@ -0,0 +1,47 @@ +/* + * Copyright 2024 Babit Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef _BMFLITE_DEMO_FMT_H_ +#define _BMFLITE_DEMO_FMT_H_ + +#import +#import +#import + +@interface BmfLiteDemoFmt : NSObject + +@property(atomic, assign, readwrite) OSType pixel_buffer_fmt; + +@property(atomic, assign, readwrite) MTLPixelFormat tex0_fmt; + +@property(atomic, assign, readwrite) MTLPixelFormat tex1_fmt; + +@property(atomic, assign, readwrite) MTLPixelFormat tex2_fmt; + +@property(atomic, assign, readwrite) int plane_count; + +- (instancetype)initWithCVPixelBufferFormat:(OSType)fmt; + +- (MTLPixelFormat)getTexFormatByPlane:(int)plane; + +- (int)getPlaneCount; + +- (int)getWidthByPlaneIndex:(uint32_t)index WithOriginWidth:(int)width; + +- (int)getHeightByPlaneIndex:(int)index WithOriginHeight:(int)height; +@end + +#endif /* _BMFLITE_DEMO_FMT_H_ */ diff --git a/bmf_lite/iOS/bmf_demo/bmf_demo/core/utils/BmfLiteDemoFmt.m b/bmf_lite/iOS/bmf_demo/bmf_demo/core/utils/BmfLiteDemoFmt.m new file mode 100644 index 00000000..f4793475 --- /dev/null +++ b/bmf_lite/iOS/bmf_demo/bmf_demo/core/utils/BmfLiteDemoFmt.m @@ -0,0 +1,147 @@ +/* + * Copyright 2024 Babit Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#import "BmfLiteDemoErrorCode.h" +#import "BmfLiteDemoLog.h" +#import "BmfLiteDemoFmt.h" + +@implementation BmfLiteDemoFmt { + int32_t plane_ratio[3]; +} + +- (instancetype) initWithCVPixelBufferFormat : (OSType)fmt; +{ + self = [super init]; + if (nil == self) { + return nil; + } + self.pixel_buffer_fmt = fmt; + switch (self.pixel_buffer_fmt) { + case kCVPixelFormatType_32BGRA: + self.tex0_fmt = MTLPixelFormatBGRA8Unorm; + self.tex1_fmt = MTLPixelFormatInvalid; + self.tex2_fmt = MTLPixelFormatInvalid; + self.plane_count = 1; + self->plane_ratio[0] = 0x114; + self->plane_ratio[1] = 0x00; + self->plane_ratio[2] = 0x00; + break; + case kCVPixelFormatType_ARGB2101010LEPacked: + self.tex0_fmt = MTLPixelFormatRGB10A2Unorm; + self.tex1_fmt = MTLPixelFormatInvalid; + self.tex2_fmt = MTLPixelFormatInvalid; + self.plane_count = 1; + self->plane_ratio[0] = 0x114; + self->plane_ratio[1] = 0x00; + self->plane_ratio[2] = 0x00; + break; + case kCVPixelFormatType_420YpCbCr8BiPlanarVideoRange: + self.tex0_fmt = MTLPixelFormatR8Unorm; + self.tex1_fmt = MTLPixelFormatRG8Unorm; + self.tex2_fmt = MTLPixelFormatInvalid; + self.plane_count = 2; + self->plane_ratio[0] = 0x111; + self->plane_ratio[1] = 0x222; + self->plane_ratio[2] = 0x00; + break; + case kCVPixelFormatType_420YpCbCr10BiPlanarVideoRange: + self.tex0_fmt = MTLPixelFormatR16Unorm; + self.tex1_fmt = MTLPixelFormatRG16Unorm; + self.tex2_fmt = MTLPixelFormatInvalid; + self.plane_count = 2; + self->plane_ratio[0] = 0x111; + self->plane_ratio[1] = 0x222; + self->plane_ratio[2] = 0x00; + break; + case kCVPixelFormatType_420YpCbCr8BiPlanarFullRange: + self.tex0_fmt = MTLPixelFormatR8Unorm; + self.tex1_fmt = MTLPixelFormatRG8Unorm; + self.tex2_fmt = MTLPixelFormatInvalid; + self.plane_count = 2; + self->plane_ratio[0] = 0x111; + self->plane_ratio[1] = 0x222; + self->plane_ratio[2] = 0x00; + break; + case kCVPixelFormatType_420YpCbCr10BiPlanarFullRange: + self.tex0_fmt = MTLPixelFormatR16Unorm; + self.tex1_fmt = MTLPixelFormatRG16Unorm; + self.tex2_fmt = MTLPixelFormatInvalid; + self.plane_count = 2; + self->plane_ratio[0] = 0x111; + self->plane_ratio[1] = 0x222; + self->plane_ratio[2] = 0x00; + break; + case kCVPixelFormatType_420YpCbCr8Planar: + self.tex0_fmt = MTLPixelFormatR8Unorm; + self.tex1_fmt = MTLPixelFormatR8Unorm; + self.tex2_fmt = MTLPixelFormatR8Unorm; + self.plane_count = 3; + self->plane_ratio[0] = 0x111; + self->plane_ratio[1] = 0x221; + self->plane_ratio[2] = 0x221; + break; + case kCVPixelFormatType_420YpCbCr8PlanarFullRange: + self.tex0_fmt = MTLPixelFormatR8Unorm; + self.tex1_fmt = MTLPixelFormatR8Unorm; + self.tex2_fmt = MTLPixelFormatR8Unorm; + self.plane_count = 3; + self->plane_ratio[0] = 0x111; + self->plane_ratio[1] = 0x221; + self->plane_ratio[2] = 0x221; + break; + case kCVPixelFormatType_OneComponent16Half: + self.tex0_fmt = MTLPixelFormatR16Float; + self.tex1_fmt = MTLPixelFormatInvalid; + self.tex2_fmt = MTLPixelFormatInvalid; + self.plane_count = 1; + self->plane_ratio[0] = 0x114; + self->plane_ratio[1] = 0x00; + self->plane_ratio[2] = 0x00; + break; + default: + BMFLITE_DEMO_LOGE("BmfLiteDemo", "not support cvpixelbuffer fmt:%d", self.pixel_buffer_fmt); + self.tex0_fmt = MTLPixelFormatInvalid; + self.tex1_fmt = MTLPixelFormatInvalid; + self.tex2_fmt = MTLPixelFormatInvalid; + self->plane_ratio[0] = 0x00; + self->plane_ratio[1] = 0x00; + self->plane_ratio[2] = 0x00; + break; + } + return self; +} + +- (MTLPixelFormat) getTexFormatByPlane : (int)plane; +{ + return (plane == 0) ? self.tex0_fmt : ((plane == 1) ? self.tex1_fmt : ((plane == 2) ? self.tex2_fmt : MTLPixelFormatInvalid)); +} + +- (int) getPlaneCount; +{ + return self.plane_count; +} + +- (int) getWidthByPlaneIndex:(uint32_t) index WithOriginWidth : (int) width; +{ + return width / (((self->plane_ratio[index])>>4)&0xf); +} + +- (int) getHeightByPlaneIndex:(int) index WithOriginHeight : (int) height; +{ + return height / (((self->plane_ratio[index])>>8)&0xf); +} + +@end diff --git a/bmf_lite/iOS/bmf_demo/bmf_demo/core/utils/BmfLiteDemoLog.h b/bmf_lite/iOS/bmf_demo/bmf_demo/core/utils/BmfLiteDemoLog.h new file mode 100644 index 00000000..9b668986 --- /dev/null +++ b/bmf_lite/iOS/bmf_demo/bmf_demo/core/utils/BmfLiteDemoLog.h @@ -0,0 +1,80 @@ +/* + * Copyright 2024 Babit Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef _BMFLITE_DEMO_LOG_H_ +#define _BMFLITE_DEMO_LOG_H_ + +#if defined(DEBUG) || defined(BMFLITE_DEMO_LOG_LEVEL_DEBUG) +#define LOGD +#define LOGI +#define LOGW +#define LOGE +#define LOGF + +#else +#define LOGI +#define LOGW +#define LOGE +#define LOGF +#endif + +#ifdef __APPLE__ + +#include + +#ifdef LOGD +#define BMFLITE_DEMO_LOGD(tag, format, ...) \ + NSLog(@"[D][%s][%s, %s, %d]" format, tag, __FILE_NAME__, __FUNCTION__, \ + __LINE__, ##__VA_ARGS__) +#else +#define BMFLITE_DEMO_LOGD(tag, format, ...) +#endif + +#ifdef LOGI +#define BMFLITE_DEMO_LOGI(tag, format, ...) \ + NSLog(@"[I][%s][%s, %s, %d]" format, tag, __FILE_NAME__, __FUNCTION__, \ + __LINE__, ##__VA_ARGS__) +#else +#define BMFLITE_DEMO_LOGI(tag, format, ...) +#endif + +#ifdef LOGW +#define BMFLITE_DEMO_LOGW(tag, format, ...) \ + NSLog(@"[W][%s][%s, %s, %d]" format, tag, __FILE_NAME__, __FUNCTION__, \ + __LINE__, ##__VA_ARGS__) +#else +#define BMFLITE_DEMO_LOGW(tag, format, ...) +#endif + +#ifdef LOGE +#define BMFLITE_DEMO_LOGE(tag, format, ...) \ + NSLog(@"[E][%s][%s, %s, %d]" format, tag, __FILE_NAME__, __FUNCTION__, \ + __LINE__, ##__VA_ARGS__) +#else +#define BMFLITE_DEMO_LOGE(tag, format, ...) +#endif + +#ifdef LOGF +#define BMFLITE_DEMO_LOGF(tag, format, ...) \ + NSLog(@"[F][%s][%s, %s, %d]" format, tag, __FILE_NAME__, __FUNCTION__, \ + __LINE__, ##__VA_ARGS__) +#else +#define BMFLITE_DEMO_LOGF(tag, format, ...) +#endif + +#endif + +#endif /* _BMFLITE_DEMO_LOG_H_ */ diff --git a/bmf_lite/iOS/bmf_demo/bmf_demo/core/utils/BmfLiteDemoMacro.h b/bmf_lite/iOS/bmf_demo/bmf_demo/core/utils/BmfLiteDemoMacro.h new file mode 100644 index 00000000..5418dda3 --- /dev/null +++ b/bmf_lite/iOS/bmf_demo/bmf_demo/core/utils/BmfLiteDemoMacro.h @@ -0,0 +1,52 @@ +/* + * Copyright 2024 Babit Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef _BMFLITE_DEMO_MACRO_H_ +#define _BMFLITE_DEMO_MACRO_H_ + +#define BMFLITE_DEMO_NAMESPACE_BEGIN \ + namespace bmf_lite { \ + namespace demo { + +#define BMFLITE_DEMO_NAMESPACE_END \ + } \ + } + +#define USE_BMFLITE_DEMO_NAMESPACE using namespace bmf_lite::demo; + +BMFLITE_DEMO_NAMESPACE_BEGIN + +class OnlyMovable { + public: + OnlyMovable(OnlyMovable &&other) = default; + OnlyMovable &operator=(OnlyMovable &&other) = default; + + OnlyMovable(const OnlyMovable &) = delete; + OnlyMovable &operator=(const OnlyMovable &) = delete; +}; + +class NotMovableOrCopyable { + public: + NotMovableOrCopyable(const NotMovableOrCopyable &) = delete; + NotMovableOrCopyable &operator=(NotMovableOrCopyable &) = delete; + + NotMovableOrCopyable(NotMovableOrCopyable &&) = delete; + NotMovableOrCopyable &operator=(NotMovableOrCopyable &&) = delete; +}; + +BMFLITE_DEMO_NAMESPACE_END + +#endif /* _BMFLITE_DEMO_MACRO_H_ */ diff --git a/bmf_lite/iOS/bmf_demo/bmf_demo/core/utils/BmfLiteDemoMetalHelper.h b/bmf_lite/iOS/bmf_demo/bmf_demo/core/utils/BmfLiteDemoMetalHelper.h new file mode 100644 index 00000000..79f2429e --- /dev/null +++ b/bmf_lite/iOS/bmf_demo/bmf_demo/core/utils/BmfLiteDemoMetalHelper.h @@ -0,0 +1,150 @@ +/* + * Copyright 2024 Babit Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef _BMFLITE_DEMO_METAL_HELPER_H_ +#define _BMFLITE_DEMO_METAL_HELPER_H_ + +#import "BmfLiteDemoMacro.h" +#import +#import +#include + +BMFLITE_DEMO_NAMESPACE_BEGIN + +struct MetalFormat { + MetalFormat() {} + enum Format { + RGB_8 = 0, + RGB_10 = 1, + NV12_8 = 2, + NV12_10 = 3, + AUTO, + }; + MetalFormat(int fmt, bool video_range = true) { + switch (fmt) { + case Format::RGB_8: + planer_count = 1; + pixel_fmt = Format::RGB_8; + pixel_fmt = kCVPixelFormatType_32BGRA; + first_tex_fmt = MTLPixelFormatBGRA8Unorm; + break; + case Format::RGB_10: + planer_count = 1; + pixel_fmt = Format::RGB_10; + pixel_fmt = kCVPixelFormatType_ARGB2101010LEPacked; + first_tex_fmt = MTLPixelFormatRGB10A2Unorm; + break; + case Format::NV12_8: + planer_count = 2; + pixel_fmt = Format::NV12_8; + pixel_fmt = kCVPixelFormatType_420YpCbCr8BiPlanarVideoRange; + first_tex_fmt = MTLPixelFormatR8Unorm; + second_tex_fmt = MTLPixelFormatRG8Unorm; + break; + case Format::NV12_10: + planer_count = 2; + pixel_fmt = Format::NV12_10; + pixel_fmt = kCVPixelFormatType_420YpCbCr10BiPlanarVideoRange; + first_tex_fmt = MTLPixelFormatR16Unorm; + second_tex_fmt = MTLPixelFormatRG16Unorm; + break; + default: + break; + } + } + OSType pixel_fmt; + MTLPixelFormat first_tex_fmt; + MTLPixelFormat second_tex_fmt; + MTLPixelFormat third_tex_fmt; + size_t planer_count; + Format format; +}; + +class MetalHelper { + public: + enum HDR_FMT { + NOT_HDR = 0, + HDR = 1, + HLG = 2, + PQ = 3, + }; + virtual ~MetalHelper(); + MetalHelper() = default; + + static MetalHelper &getSingleInstance() { + static MetalHelper instance; + instance.init(); + return instance; + } + + int init(); + + int createMTLTextureByCVPixelBufferRef(CVPixelBufferRef buffer, + id __strong *texture, + int plane, + MTLPixelFormat plane_pixel_type); + + int createMTLTextureByCVPixelBufferRef(CVPixelBufferRef buffer, + __strong id *tex0, + __strong id *tex1, + __strong id *tex2); + + int createMTLTextureRefByCVPixelBufferRef(CVPixelBufferRef buffer, + CVMetalTextureRef *tex_ref0, + CVMetalTextureRef *tex_ref1, + CVMetalTextureRef *tex_ref2); + int createMTLTextureRefByCVPixelBufferRef(CVPixelBufferRef buffer, + CVMetalTextureRef *tex_ref, + int plane, + MTLPixelFormat plane_pixel_type); + + int createMTLTexture(id __strong *otexture, + MTLPixelFormat pixel_format, size_t width, + size_t height, MTLTextureUsage usage, + MTLStorageMode mode); + + id createMTLTexture(int width, int height, + MTLPixelFormat format); + + int copy_texture(id srcs, id dsts); + + id getMTLDevice(); + + id getMTLCommandQueue(); + + int createCVPixelBuffer(size_t width, size_t height, OSType format, + CVPixelBufferRef *buf_ptr); + + int createCvPixelBufferAndTexture(int width, int height, uint32_t format, + CVPixelBufferRef refer_buf, + CVPixelBufferRef *buf, + id *tex0, + id *tex1, + id *tex2, bool only_tex); + + int getHdrFmt(CVPixelBufferRef buf); + + // private: + id device_ = nil; + id command_queue_ = nil; + id default_library_ = nil; + CVMetalTextureCacheRef metal_cache_ = nil; + std::atomic init_ = {false}; +}; // end class MetalHelper + +BMFLITE_DEMO_NAMESPACE_END + +#endif /* _BMFLITE_DEMO_METAL_HELPER_H_ */ diff --git a/bmf_lite/iOS/bmf_demo/bmf_demo/core/utils/BmfLiteDemoMetalHelper.m b/bmf_lite/iOS/bmf_demo/bmf_demo/core/utils/BmfLiteDemoMetalHelper.m new file mode 100644 index 00000000..84500849 --- /dev/null +++ b/bmf_lite/iOS/bmf_demo/bmf_demo/core/utils/BmfLiteDemoMetalHelper.m @@ -0,0 +1,304 @@ +/* + * Copyright 2024 Babit Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#import "BmfLiteDemoMetalHelper.h" +#import "BmfLiteDemoFmt.h" +#import "BmfLiteDemoLog.h" +#import "BmfLiteDemoErrorCode.h" + +BMFLITE_DEMO_NAMESPACE_BEGIN + +int MetalHelper::init() { + if (init_.load()) { + return BmfLiteErrorCode::SUCCESS; + } + @autoreleasepool { + device_ = MTLCreateSystemDefaultDevice(); + if (nil == device_) { + BMFLITE_DEMO_LOGE("BmfMetalHelper", "call function MTLCreateSystemDefaultDevice failed."); + return BmfLiteErrorCode::DEVICE_NOT_SUPPORT; + } + command_queue_ = [device_ newCommandQueue]; + if (nil == command_queue_) { + BMFLITE_DEMO_LOGE("BmfMetalHelper", "create command queue failed."); + return BmfLiteErrorCode::MODULE_INIT_FAILED;; + } + CVReturn ret = CVMetalTextureCacheCreate(kCFAllocatorDefault, nil, device_, nil, &metal_cache_); + if(0 != ret) { + BMFLITE_DEMO_LOGE("BmfMetalHelper", "create MetalTextureCache failed."); + device_ = nil; + command_queue_ = nil; + return BmfLiteErrorCode::MODULE_INIT_FAILED;; + } + default_library_ = [device_ newDefaultLibrary]; + if (nil == default_library_) { + BMFLITE_DEMO_LOGE("BmfMetalHelper", "create default library failed."); + return BmfLiteErrorCode::MODULE_INIT_FAILED;; + } + init_ = true; + return BmfLiteErrorCode::SUCCESS; + } +} + +int MetalHelper::createMTLTexture(id __strong *otexture, MTLPixelFormat pixel_format, size_t width, size_t height, + MTLTextureUsage usage, MTLStorageMode mode) { + MTLTextureDescriptor *descriptor = [MTLTextureDescriptor texture2DDescriptorWithPixelFormat:pixel_format + width:width + height:height + mipmapped:NO]; + descriptor.usage = usage; + descriptor.storageMode = mode; + MTLCreateSystemDefaultDevice(); + *otexture = [device_ newTextureWithDescriptor: descriptor]; + if (nil == *otexture) { + return BmfLiteErrorCode::METAL_CREATE_TEXTURE_FAILED; + } + return BmfLiteErrorCode::SUCCESS; +} + +int MetalHelper::copy_texture(id src, id dst) { + if (dst.width != src.width || dst.height != src.height) { + BMFLITE_DEMO_LOGE("BmfMetalHelper", "check the dst texture width: %zu height: %zu, src width: %zu height: %zu\n", dst.width, dst.height, src.width, src.height); + return BmfLiteErrorCode::PROCESS_FAILED; + } + if (dst.pixelFormat != src.pixelFormat) { + BMFLITE_DEMO_LOGE("BmfMetalHelper","check the dst pixelFormat: src: %d dst: %d\n", (int)src.pixelFormat, (int)dst.pixelFormat); + return BmfLiteErrorCode::PROCESS_FAILED; + } + + id command_buffer = [command_queue_ commandBuffer]; + id blit_command_encoder = [command_buffer blitCommandEncoder]; + if (@available(iOS 13.0, *)) { + [blit_command_encoder copyFromTexture: src toTexture: dst]; + } else { + [blit_command_encoder copyFromTexture: src sourceSlice: 0 sourceLevel: 0 sourceOrigin: MTLOriginMake(0, 0, 0) sourceSize: MTLSizeMake(dst.width, dst.height, dst.depth) + toTexture: dst destinationSlice:0 destinationLevel:0 destinationOrigin: MTLOriginMake(0, 0, 0)]; + } + [blit_command_encoder endEncoding]; + [command_buffer commit]; + [command_buffer waitUntilCompleted]; + + return BmfLiteErrorCode::SUCCESS; +} + +int MetalHelper::createMTLTextureByCVPixelBufferRef(CVPixelBufferRef buffer, + id __strong *texture, int plane, MTLPixelFormat plane_pixel_type) { + @autoreleasepool { + size_t width = CVPixelBufferGetWidthOfPlane(buffer, plane); + size_t height = CVPixelBufferGetHeightOfPlane(buffer, plane); +// OSType pixel_format = CVPixelBufferGetPixelFormatType(buffer); + CVMetalTextureRef mtl_texture_ref; + CVReturn ret = CVMetalTextureCacheCreateTextureFromImage(kCFAllocatorDefault, metal_cache_, + buffer, nil, + plane_pixel_type, width, height, plane, &mtl_texture_ref); + if (0 != ret) { + BMFLITE_DEMO_LOGE("BmfMetalHelper", "call function CVMetalTextureCacheCreateTextureFromImage failed]"); + return BmfLiteErrorCode::CREATE_MTLTEXTURE_FAILED; + } + *texture = CVMetalTextureGetTexture(mtl_texture_ref); + CFRelease(mtl_texture_ref); + mtl_texture_ref = nil; + return BmfLiteErrorCode::SUCCESS; + } +} + +int MetalHelper::createCVPixelBuffer(size_t width, size_t height, OSType format, CVPixelBufferRef* buf_ptr) { + @autoreleasepool { + NSDictionary *options = @{ + (__bridge NSString *)kCVPixelBufferIOSurfacePropertiesKey: @{}, + }; + CVReturn result = CVPixelBufferCreate(kCFAllocatorDefault, width, height, format, (__bridge CFDictionaryRef )options, buf_ptr); + if (result != kCVReturnSuccess ||nil == (*buf_ptr)) { + return BmfLiteErrorCode::CREATE_CVPIXELBUFFER_FAILED; + } + return BmfLiteErrorCode::SUCCESS; + } +} + +int MetalHelper::getHdrFmt(CVPixelBufferRef buf) { + if (!buf) { + return HDR_FMT::NOT_HDR; + } + CFStringRef transStr = (CFStringRef)CVBufferGetAttachment(buf, kCVImageBufferTransferFunctionKey, NULL); + if (@available(iOS 11.0, *)) { + if (transStr != nil) { + if (CFStringCompare(transStr,kCVImageBufferTransferFunction_SMPTE_ST_2084_PQ,0) == kCFCompareEqualTo) { + return HDR_FMT::PQ; + } + if (CFStringCompare(transStr,kCVImageBufferTransferFunction_ITU_R_2100_HLG,0) == kCFCompareEqualTo) { + return HDR_FMT::HLG; + } + } + } + CFStringRef YCbCrMatrix = (CFStringRef)CVBufferGetAttachment(buf, kCVImageBufferYCbCrMatrixKey, NULL); + if (YCbCrMatrix != nil && CFStringCompare(YCbCrMatrix,kCVImageBufferYCbCrMatrix_ITU_R_2020,0) == kCFCompareEqualTo) { + return HDR_FMT::HDR; + } + CFStringRef colorStr = (CFStringRef)CVBufferGetAttachment(buf, kCVImageBufferColorPrimariesKey, NULL); + if (colorStr != nil && CFStringCompare(colorStr,kCVImageBufferColorPrimaries_ITU_R_2020,0) == kCFCompareEqualTo) { + return HDR_FMT::HDR; + } + return HDR_FMT::NOT_HDR; +} + +id MetalHelper::createMTLTexture(int width, int height, MTLPixelFormat format) { + @autoreleasepool { + MTLTextureDescriptor *tex_desc = + [MTLTextureDescriptor texture2DDescriptorWithPixelFormat:format + width:width + height:height + mipmapped:NO]; + tex_desc.usage = MTLTextureUsageShaderWrite | MTLTextureUsageShaderRead; + id tex = [device_ newTextureWithDescriptor:tex_desc]; + return tex; + } +} + +int MetalHelper::createMTLTextureRefByCVPixelBufferRef(CVPixelBufferRef buffer, CVMetalTextureRef *tex_ref0, CVMetalTextureRef *tex_ref1, CVMetalTextureRef *tex_ref2) { + @autoreleasepool { + OSType format = CVPixelBufferGetPixelFormatType(buffer); + BmfLiteDemoFmt* fmt = [[BmfLiteDemoFmt alloc] initWithCVPixelBufferFormat:format]; + if (nil == fmt) { + return -1; + } + size_t plane_count = [fmt getPlaneCount]; + CVMetalTextureRef *texs[3] = {tex_ref0, tex_ref1, tex_ref0}; + for (size_t i = 0; i < plane_count; ++i) { + int ret = 0; + ret = createMTLTextureRefByCVPixelBufferRef(buffer, texs[i], i, [fmt getTexFormatByPlane:i]); + if (0 != ret) { + return -1; + } + } + } + return 0; +} + +int MetalHelper::createMTLTextureRefByCVPixelBufferRef(CVPixelBufferRef buffer, + CVMetalTextureRef *tex_ref, int plane, MTLPixelFormat plane_pixel_type) { + @autoreleasepool { + size_t width = CVPixelBufferGetWidthOfPlane(buffer, plane); + size_t height = CVPixelBufferGetHeightOfPlane(buffer, plane); + CVReturn ret = CVMetalTextureCacheCreateTextureFromImage(kCFAllocatorDefault, metal_cache_, + buffer, nil, + plane_pixel_type, width, height, plane, tex_ref); + if (0 != ret) { + BMFLITE_DEMO_LOGE("BmfMetalHelper", "call function CVMetalTextureCacheCreateTextureFromImage failed]"); + return BmfLiteErrorCode::CREATE_MTLTEXTURE_FAILED; + } + return BmfLiteErrorCode::SUCCESS; + } +} + +int MetalHelper::createMTLTextureByCVPixelBufferRef(CVPixelBufferRef buffer, __strong id *tex0, __strong id *tex1, __strong id *tex2) { + @autoreleasepool { + OSType format = CVPixelBufferGetPixelFormatType(buffer); + BmfLiteDemoFmt* fmt = [[BmfLiteDemoFmt alloc] initWithCVPixelBufferFormat:format]; + if (nil == fmt) { + return -1; + } + size_t plane_count = [fmt getPlaneCount]; + id texs[3] = {nil, nil, nil}; + for (size_t i = 0; i < plane_count; ++i) { + int ret = 0; + ret = createMTLTextureByCVPixelBufferRef(buffer, &texs[0] + i, i, [fmt getTexFormatByPlane:i]); + if (0 != ret) { + texs[0] = nil; + texs[1] = nil; + texs[2] = nil; + return -1; + } + } + *tex0 = texs[0]; + *tex1 = texs[1]; + *tex2 = texs[2]; + } + return 0; +} + +int MetalHelper::createCvPixelBufferAndTexture(int width, int height, uint32_t format, CVPixelBufferRef refer_buf, CVPixelBufferRef* buf, id* tex0, id* tex1, id* tex2, bool only_texture) { + @autoreleasepool{ + BmfLiteDemoFmt* fmt = [[BmfLiteDemoFmt alloc] initWithCVPixelBufferFormat:format]; + if (nil == fmt) { + return -1; + } + if (!only_texture) { + NSDictionary *options = @{ + (__bridge NSString *)kCVPixelBufferIOSurfacePropertiesKey: @{}, + }; + CVReturn result = CVPixelBufferCreate(kCFAllocatorDefault, width, height, format, (__bridge CFDictionaryRef )options, buf); + if (result != kCVReturnSuccess ||nil == *buf) { + return -1; + } + if (nil != refer_buf) { + CVAttachmentMode mod = kCVAttachmentMode_ShouldPropagate; + if (@available(iOS 15.0, *)) { + const void* color_primaries = CVBufferCopyAttachment(refer_buf, kCVImageBufferColorPrimariesKey, &mod); + const void* matrix = CVBufferCopyAttachment(refer_buf, kCVImageBufferYCbCrMatrixKey, &mod); + const void* transfer_function = CVBufferCopyAttachment(refer_buf, kCVImageBufferTransferFunctionKey, &mod); + CVBufferSetAttachment(*buf, kCVImageBufferColorPrimariesKey, color_primaries, mod); + CVBufferSetAttachment(*buf, kCVImageBufferYCbCrMatrixKey, matrix, mod); + CVBufferSetAttachment(*buf, kCVImageBufferTransferFunctionKey, transfer_function, mod); + } else { + const void* color_primaries = CVBufferGetAttachment(refer_buf, kCVImageBufferColorPrimariesKey, &mod); + const void* matrix = CVBufferGetAttachment(refer_buf, kCVImageBufferYCbCrMatrixKey, &mod); + const void* transfer_function = CVBufferGetAttachment(refer_buf, kCVImageBufferTransferFunctionKey, &mod); + CVBufferSetAttachment(*buf, kCVImageBufferColorPrimariesKey, color_primaries, mod); + CVBufferSetAttachment(*buf, kCVImageBufferYCbCrMatrixKey, matrix, mod); + CVBufferSetAttachment(*buf, kCVImageBufferTransferFunctionKey, transfer_function, mod); + } + + } + } + size_t plane_count = [fmt getPlaneCount]; + id texs[3] = {nil, nil, nil}; + for (size_t i = 0; i < plane_count; ++i) { + int ret = 0; + if (only_texture) { + texs[i] = createMTLTexture([fmt getWidthByPlaneIndex:i WithOriginWidth:width], [fmt getHeightByPlaneIndex:i WithOriginHeight:height], + [fmt getTexFormatByPlane:i]); + } else { + ret = createMTLTextureByCVPixelBufferRef(*buf,&texs[0] + i, i, [fmt getTexFormatByPlane:i]); + } + if (0 != ret) { + texs[0] = nil; + texs[1] = nil; + texs[2] = nil; + if (nil != *buf) { + CVPixelBufferRelease(*buf); + *buf = nil; + } + return -1; + } + } + *tex0 = texs[0]; + *tex1 = texs[1]; + *tex2 = texs[2]; + return 0; + } +} + +MetalHelper::~MetalHelper() { + if (nil != metal_cache_) { + CVMetalTextureCacheFlush(metal_cache_, 0); + CFRelease(metal_cache_); + metal_cache_ = nil; + } + device_ = nil; + command_queue_ = nil; +} + +BMFLITE_DEMO_NAMESPACE_END diff --git a/bmf_lite/iOS/bmf_demo/bmf_demo/core/utils/BmfLiteDemoToolKit.h b/bmf_lite/iOS/bmf_demo/bmf_demo/core/utils/BmfLiteDemoToolKit.h new file mode 100644 index 00000000..6a9f8e60 --- /dev/null +++ b/bmf_lite/iOS/bmf_demo/bmf_demo/core/utils/BmfLiteDemoToolKit.h @@ -0,0 +1,53 @@ +/* + * Copyright 2024 Babit Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef _BMFLITE_DEMO_TOOLKIT_H_ +#define _BMFLITE_DEMO_TOOLKIT_H_ + +#import "BmfLiteDemoMacro.h" +#import +#import + +BMFLITE_DEMO_NAMESPACE_BEGIN + +size_t getBitsCount(OSType pixelFmt); +size_t getBitsCount(MTLPixelFormat textureFmt); + +bool isHDR(CVBufferRef pixelBuffer); + +struct ColorConversion { + matrix_float3x3 matrix; + vector_float3 offset; + // rangeMin/rangeMax is min and max value of yuv or rgb + // currently used in RGBtoYUV to clamp the output yuv + // it can be calculated from Scale(n)bitVideoRange and + // Offset(n)bitVideoRange + vector_float3 rangeMin; + vector_float3 rangeMax; + float line; +}; + +// bt2020 video-range 10bit +ColorConversion &getRGBtoYUVBt2020VideoRange10bit(); +ColorConversion &getYUVtoRGBBt2020VideoRange10bit(); + +// bt709 video-range 8bit +ColorConversion &getRGBtoYUVBt709VideoRange8bit(); +ColorConversion &getYUVtoRGBBt709VideoRange8bit(); + +BMFLITE_DEMO_NAMESPACE_END + +#endif /* _BMFLITE_DEMO_TOOLKIT_H_ */ diff --git a/bmf_lite/iOS/bmf_demo/bmf_demo/core/utils/BmfLiteDemoToolKit.m b/bmf_lite/iOS/bmf_demo/bmf_demo/core/utils/BmfLiteDemoToolKit.m new file mode 100644 index 00000000..1e3a5bdf --- /dev/null +++ b/bmf_lite/iOS/bmf_demo/bmf_demo/core/utils/BmfLiteDemoToolKit.m @@ -0,0 +1,153 @@ +/* + * Copyright 2024 Babit Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#import "BmfLiteDemoToolKit.h" + +BMFLITE_DEMO_NAMESPACE_BEGIN + +size_t getBitsCount(OSType pixelFmt) { + switch (pixelFmt) { + case kCVPixelFormatType_32BGRA: + case kCVPixelFormatType_420YpCbCr8BiPlanarVideoRange: + return 8; + case kCVPixelFormatType_420YpCbCr10BiPlanarVideoRange: + case kCVPixelFormatType_ARGB2101010LEPacked: + return 10; + default: + return 8; + } +} + +size_t getBitsCount(MTLPixelFormat textureFmt) { + switch (textureFmt) { + case MTLPixelFormatRGB10A2Unorm: + return 10; + case MTLPixelFormatR16Unorm: + case MTLPixelFormatRG16Unorm: + return 16; + default: + return 8; + } +} + +bool isHDR(CVBufferRef pixelBuffer) { + if (!pixelBuffer) { + return false; + } + CFStringRef YCbCrMatrix = (CFStringRef)CVBufferGetAttachment(pixelBuffer, kCVImageBufferYCbCrMatrixKey, NULL); + if (YCbCrMatrix != nil && CFStringCompare(YCbCrMatrix,kCVImageBufferYCbCrMatrix_ITU_R_2020,0) == kCFCompareEqualTo) { + return true; + } + CFStringRef colorStr = (CFStringRef)CVBufferGetAttachment(pixelBuffer, kCVImageBufferColorPrimariesKey, NULL); + if (colorStr != nil && CFStringCompare(colorStr,kCVImageBufferColorPrimaries_ITU_R_2020,0) == kCFCompareEqualTo) { + return true; + } + CFStringRef transStr = (CFStringRef)CVBufferGetAttachment(pixelBuffer, kCVImageBufferTransferFunctionKey, NULL); + if (@available(iOS 11.0, *)) { + if (transStr != nil && (CFStringCompare(transStr,kCVImageBufferTransferFunction_SMPTE_ST_2084_PQ,0) == kCFCompareEqualTo || + CFStringCompare(transStr,kCVImageBufferTransferFunction_ITU_R_2100_HLG,0) == kCFCompareEqualTo)) { + return true; + } + } else { + // Fallback on earlier versions + } + return false; +} + +/** + use this function to generate RGBtoYUV matrix + include bt2020/bt709 , video-range/full-range , 10bit/8bit + */ +matrix_float3x3 getRGBtoYUVMatrix(float kr, float kg, float kb, vector_float3 scale) { + return {(vector_float3){kr * scale[0], -0.5f*kr/(1.f-kb) * scale[1], 0.5f * scale[2] }, + (vector_float3){kg * scale[0], -0.5f*kg/(1.f-kb) * scale[1], -0.5f*kg/(1.f-kr) * scale[2]}, + (vector_float3){kb * scale[0], 0.5f * scale[1], -0.5f*kb/(1.f-kr) * scale[2]}}; +} + +/** + use this function to generate YUVtoRGB matrix + include bt2020/bt709 , video-range/full-range , 10bit/8bit + */ +matrix_float3x3 getYUVtoRGBMatrix(float kr, float kg, float kb, vector_float3 scale) { + return {(vector_float3){1.f / scale[0], 1.f / scale[0], 1.f / scale[0]}, + (vector_float3){0.0f, -kb/kg*(2-2*kb) / scale[1], (2-2*kb) / scale[1]}, + (vector_float3){(2-2*kr) / scale[2], -kr/kg*(2-2*kr) / scale[2], 0.0f}}; +} + +//kr kb kb,used to calculate color matrix +const float krBt2020 = 0.2627, kgBt2020 = 0.678, kbBt2020 = 0.0593;//bt2020 +const float krBt709 = 0.2126, kgBt709 = 0.7152, kbBt709 = 0.0722;//bt709 + +//10bit video range +const vector_float3 Scale10bitVideoRange = {876.0/1023.0, 896.0/1023.0, 896.0/1023.0}; +//const vector_float3 Offset10bitVideoRange = {64.0/1023.0, 0.5, 0.5}; +const vector_float3 Offset10bitVideoRange = {30.0/1023.0, 0.5, 0.5}; + +//8bit video range +const vector_float3 Scale8bitVideoRange = {219.0/255.0, 224.0/255.0, 224.0/255.0}; +const vector_float3 Offset8bitBVideoRange = {16.0/255.0, 0.5, 0.5}; + +//bt2020 video-range 10bit +ColorConversion& getRGBtoYUVBt2020VideoRange10bit() { + static ColorConversion colorConversion = { + .matrix = { + getRGBtoYUVMatrix(krBt2020, kgBt2020, kbBt2020, Scale10bitVideoRange) + }, + .offset = Offset10bitVideoRange, + .rangeMin = {64.0/1023.0,64.0/1023.0,64.0/1023.0}, + .rangeMax = {940.0/1023.0,960.0/1023.0,960.0/1023.0}, + }; + return colorConversion; +} + +ColorConversion& getYUVtoRGBBt2020VideoRange10bit() { + static ColorConversion colorConversion = { + .matrix = { + getYUVtoRGBMatrix(krBt2020, kgBt2020, kbBt2020, Scale10bitVideoRange) + }, + .offset = Offset10bitVideoRange, + .rangeMin = {0,0,0}, + .rangeMax = {1,1,1}, + }; + return colorConversion; +} + +//bt709 video-range 8bit +ColorConversion& getRGBtoYUVBt709VideoRange8bit() { + static ColorConversion colorConversion = { + .matrix = { + getRGBtoYUVMatrix(krBt709, kgBt709, kbBt709, Scale8bitVideoRange) + }, + .offset = Offset8bitBVideoRange, + .rangeMin = {16.0/255.0,16.0/255.0,16.0/255.0}, + .rangeMax = {235.0/255.0,240/255.0,240/255.0}, + }; + return colorConversion; +} + +ColorConversion& getYUVtoRGBBt709VideoRange8bit() { + static ColorConversion colorConversion = { + .matrix = { + getYUVtoRGBMatrix(krBt709, kgBt709, kbBt709, Scale8bitVideoRange) + }, + .offset = Offset8bitBVideoRange, + .rangeMin = {0,0,0}, + .rangeMax = {1,1,1}, + }; + return colorConversion; +} + +BMFLITE_DEMO_NAMESPACE_END diff --git a/bmf_lite/iOS/bmf_demo/bmf_demo/main.m b/bmf_lite/iOS/bmf_demo/bmf_demo/main.m new file mode 100644 index 00000000..cd290a1c --- /dev/null +++ b/bmf_lite/iOS/bmf_demo/bmf_demo/main.m @@ -0,0 +1,18 @@ +// +// main.m +// bmf_demo +// +// Created by ByteDance on 3/10/24. +// + +#import +#import "AppDelegate.h" + +int main(int argc, char * argv[]) { + NSString * appDelegateClassName; + @autoreleasepool { + // Setup code that might create autoreleased objects goes here. + appDelegateClassName = NSStringFromClass([AppDelegate class]); + } + return UIApplicationMain(argc, argv, nil, appDelegateClassName); +} diff --git a/bmf_lite/iOS/data/canny1.gif b/bmf_lite/iOS/data/canny1.gif new file mode 100644 index 00000000..af9de07d Binary files /dev/null and b/bmf_lite/iOS/data/canny1.gif differ diff --git a/bmf_lite/iOS/data/denoise1.gif b/bmf_lite/iOS/data/denoise1.gif new file mode 100644 index 00000000..605239a3 Binary files /dev/null and b/bmf_lite/iOS/data/denoise1.gif differ diff --git a/bmf_lite/iOS/data/sd1.gif b/bmf_lite/iOS/data/sd1.gif new file mode 100644 index 00000000..ac78fd63 Binary files /dev/null and b/bmf_lite/iOS/data/sd1.gif differ diff --git a/bmf_lite/iOS/data/sr1.gif b/bmf_lite/iOS/data/sr1.gif new file mode 100644 index 00000000..1adbe9b7 Binary files /dev/null and b/bmf_lite/iOS/data/sr1.gif differ diff --git a/bmf_lite/ohos/.clang-format b/bmf_lite/ohos/.clang-format new file mode 100644 index 00000000..31a096cf --- /dev/null +++ b/bmf_lite/ohos/.clang-format @@ -0,0 +1,62 @@ +Language: Cpp +# BasedOnStyle: LLVM +ColumnLimit: 120 +SortIncludes: false +TabWidth: 4 +IndentWidth: 4 +UseTab: Never +AccessModifierOffset: -4 +ContinuationIndentWidth: 4 +IndentCaseBlocks: false +IndentCaseLabels: false +IndentGotoLabels: true +IndentWrappedFunctionNames: false +SortUsingDeclarations: false +NamespaceIndentation: None +SpaceAfterCStyleCast: false +SpaceAfterLogicalNot: false +SpaceAfterTemplateKeyword: true +SpaceBeforeAssignmentOperators: true +SpaceBeforeCaseColon: false +SpaceBeforeCpp11BracedList: false +SpaceBeforeCtorInitializerColon: true +SpaceBeforeInheritanceColon: true +SpaceBeforeRangeBasedForLoopColon: true +SpaceBeforeSquareBrackets: false +SpaceInEmptyBlock: false +SpaceInEmptyParentheses: false +SpacesInAngles: false +SpacesInCStyleCastParentheses: false +SpacesInConditionalStatement: false +SpacesInParentheses: false +SpacesInSquareBrackets: false +AllowShortCaseLabelsOnASingleLine: false +AllowShortEnumsOnASingleLine: true +AllowShortFunctionsOnASingleLine: All +AllowShortIfStatementsOnASingleLine: Never +AllowShortLambdasOnASingleLine: All +AllowShortLoopsOnASingleLine: false +AlwaysBreakTemplateDeclarations: MultiLine +BinPackArguments: true +BinPackParameters: true +BreakBeforeTernaryOperators: true +BreakConstructorInitializers: BeforeColon +BreakInheritanceList: BeforeColon +BreakStringLiterals: true +InsertBraces: false +IndentExternBlock: NoIndent +BreakBeforeBraces: Custom +BraceWrapping: + AfterCaseLabel: false + AfterClass: false + AfterControlStatement: Never + AfterEnum: false + AfterFunction: false + AfterNamespace: false + AfterStruct: false + AfterUnion: false + AfterExternBlock: false + BeforeCatch: false + BeforeElse: false +ReflowComments: true +MaxEmptyLinesToKeep: 2 \ No newline at end of file diff --git a/bmf_lite/ohos/.gitignore b/bmf_lite/ohos/.gitignore new file mode 100644 index 00000000..1f401789 --- /dev/null +++ b/bmf_lite/ohos/.gitignore @@ -0,0 +1,12 @@ +.idea/ +.hvigor/ +oh_modules + +.DS_Store +.clang-format +.clang-tidy +.clangd + +local.properties + +oh-package-lock.json5 \ No newline at end of file diff --git a/bmf_lite/ohos/AppScope/app.json5 b/bmf_lite/ohos/AppScope/app.json5 new file mode 100644 index 00000000..20ed393b --- /dev/null +++ b/bmf_lite/ohos/AppScope/app.json5 @@ -0,0 +1,10 @@ +{ + "app": { + "bundleName": "com.bmf.lite", + "vendor": "BMF", + "versionCode": 1000000, + "versionName": "1.0.0", + "icon": "$media:app_icon", + "label": "$string:app_name" + } +} diff --git a/bmf_lite/ohos/AppScope/resources/base/element/string.json b/bmf_lite/ohos/AppScope/resources/base/element/string.json new file mode 100644 index 00000000..abd164f9 --- /dev/null +++ b/bmf_lite/ohos/AppScope/resources/base/element/string.json @@ -0,0 +1,8 @@ +{ + "string": [ + { + "name": "app_name", + "value": "BMF Lite" + } + ] +} diff --git a/bmf_lite/ohos/AppScope/resources/base/media/app_icon.png b/bmf_lite/ohos/AppScope/resources/base/media/app_icon.png new file mode 100644 index 00000000..4c2002d1 Binary files /dev/null and b/bmf_lite/ohos/AppScope/resources/base/media/app_icon.png differ diff --git a/bmf_lite/ohos/bmf_lite/.gitignore b/bmf_lite/ohos/bmf_lite/.gitignore new file mode 100644 index 00000000..9f5b6e77 --- /dev/null +++ b/bmf_lite/ohos/bmf_lite/.gitignore @@ -0,0 +1,7 @@ +/node_modules +/oh_modules +/.preview +/build +/.cxx +/.test +oh-package-lock.json5 \ No newline at end of file diff --git a/bmf_lite/ohos/bmf_lite/Index.ets b/bmf_lite/ohos/bmf_lite/Index.ets new file mode 100644 index 00000000..7ac3d64e --- /dev/null +++ b/bmf_lite/ohos/bmf_lite/Index.ets @@ -0,0 +1 @@ +// export { add } from "./src/main/ets/utils/Calc" diff --git a/bmf_lite/ohos/bmf_lite/build-profile.json5 b/bmf_lite/ohos/bmf_lite/build-profile.json5 new file mode 100644 index 00000000..bf4ad18d --- /dev/null +++ b/bmf_lite/ohos/bmf_lite/build-profile.json5 @@ -0,0 +1,36 @@ +{ + "apiType": "stageMode", + "buildOption": { + "externalNativeOptions": { + "path": "./src/main/cpp/CMakeLists.txt", + "arguments": "", + "cppFlags": "" + } + }, + "buildOptionSet": [ + { + "name": "release", + "arkOptions": { + "obfuscation": { + "ruleOptions": { + "enable": true, + "files": [ + "./obfuscation-rules.txt" + ] + } + } + }, + "nativeLib": { + "debugSymbol": { + "strip": true, + "exclude": [] + } + } + }, + ], + "targets": [ + { + "name": "default" + } + ] +} \ No newline at end of file diff --git a/bmf_lite/ohos/bmf_lite/hvigorfile.ts b/bmf_lite/ohos/bmf_lite/hvigorfile.ts new file mode 100644 index 00000000..161634cd --- /dev/null +++ b/bmf_lite/ohos/bmf_lite/hvigorfile.ts @@ -0,0 +1,21 @@ +/* + * Copyright 2024 Babit Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { hspTasks } from '@ohos/hvigor-ohos-plugin'; + +export default { + system: hspTasks, /* Built-in plugin of Hvigor. It cannot be modified. */ + plugins:[] /* Custom plugin to extend the functionality of Hvigor. */ +} diff --git a/bmf_lite/ohos/bmf_lite/obfuscation-rules.txt b/bmf_lite/ohos/bmf_lite/obfuscation-rules.txt new file mode 100644 index 00000000..985b2aeb --- /dev/null +++ b/bmf_lite/ohos/bmf_lite/obfuscation-rules.txt @@ -0,0 +1,18 @@ +# Define project specific obfuscation rules here. +# You can include the obfuscation configuration files in the current module's build-profile.json5. +# +# For more details, see +# https://gitee.com/openharmony/arkcompiler_ets_frontend/blob/master/arkguard/README.md + +# Obfuscation options: +# -disable-obfuscation: disable all obfuscations +# -enable-property-obfuscation: obfuscate the property names +# -enable-toplevel-obfuscation: obfuscate the names in the global scope +# -compact: remove unnecessary blank spaces and all line feeds +# -remove-log: remove all console.* statements +# -print-namecache: print the name cache that contains the mapping from the old names to new names +# -apply-namecache: reuse the given cache file + +# Keep options: +# -keep-property-name: specifies property names that you want to keep +# -keep-global-name: specifies names that you want to keep in the global scope \ No newline at end of file diff --git a/bmf_lite/ohos/bmf_lite/oh-package.json5 b/bmf_lite/ohos/bmf_lite/oh-package.json5 new file mode 100644 index 00000000..2323c767 --- /dev/null +++ b/bmf_lite/ohos/bmf_lite/oh-package.json5 @@ -0,0 +1,14 @@ +{ + "name": "bmf_lite", + "version": "1.0.0", + "description": "Please describe the basic information.", + "main": "Index.ets", + "author": "", + "license": "Apache-2.0", + "packageType": "InterfaceHar", + "devDependencies": { + "@types/libbmf_lite_dynamic.so": 'file:./src/main/cpp/types/libbmf_lite' + }, + "dependencies": { + } +} \ No newline at end of file diff --git a/bmf_lite/ohos/bmf_lite/src/main/cpp/CMakeLists.txt b/bmf_lite/ohos/bmf_lite/src/main/cpp/CMakeLists.txt new file mode 100644 index 00000000..e0a6b09a --- /dev/null +++ b/bmf_lite/ohos/bmf_lite/src/main/cpp/CMakeLists.txt @@ -0,0 +1,26 @@ +# the minimum version of CMake. +cmake_minimum_required(VERSION 3.5) +project(BmfLite) + +set(BMF_LITE_ROOT_PATH ${CMAKE_CURRENT_SOURCE_DIR}) + +if(DEFINED PACKAGE_FIND_FILE) + include(${PACKAGE_FIND_FILE}) +endif() + +include_directories(${BMF_LITE_ROOT_PATH} + ${BMF_LITE_ROOT_PATH}/include) + +add_library(bmf_lite_static SHARED bmf_lite_init.cpp) + +add_subdirectory(../../../../../src ../../../bmf_lite/) + +target_link_libraries(bmf_lite_static PUBLIC + libace_napi.z.so + EGL + GLESv3 + hilog_ndk.z + ace_ndk.z + ace_napi.z + libc++.a +) diff --git a/bmf_lite/ohos/bmf_lite/src/main/cpp/bmf_lite_init.cpp b/bmf_lite/ohos/bmf_lite/src/main/cpp/bmf_lite_init.cpp new file mode 100644 index 00000000..e8d86df0 --- /dev/null +++ b/bmf_lite/ohos/bmf_lite/src/main/cpp/bmf_lite_init.cpp @@ -0,0 +1,38 @@ +/* + * Copyright 2024 Babit Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#include "napi/native_api.h" + +EXTERN_C_START +static napi_value Init(napi_env env, napi_value exports) { + napi_property_descriptor desc[] = {}; + napi_define_properties(env, exports, sizeof(desc) / sizeof(desc[0]), desc); + return exports; +} +EXTERN_C_END + +static napi_module bmf_lite_module = { + .nm_version = 1, + .nm_flags = 0, + .nm_filename = nullptr, + .nm_register_func = Init, + .nm_modname = "bmf_lite_static", + .nm_priv = ((void *)0), + .reserved = {0}, +}; + +extern "C" __attribute__((constructor)) void RegisterBmf_liteModule(void) { + napi_module_register(&bmf_lite_module); +} diff --git a/bmf_lite/ohos/bmf_lite/src/main/cpp/include/log.h b/bmf_lite/ohos/bmf_lite/src/main/cpp/include/log.h new file mode 100644 index 00000000..88cfcef5 --- /dev/null +++ b/bmf_lite/ohos/bmf_lite/src/main/cpp/include/log.h @@ -0,0 +1,42 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef LOG_H +#define LOG_H + +#include + +#ifndef LOGI +#define LOGI(...) \ + ((void)OH_LOG_Print(LOG_APP, LOG_INFO, LOG_DOMAIN, "[OpenGL]", __VA_ARGS__)) +#endif + +#ifndef LOGD +#define LOGD(...) \ + ((void)OH_LOG_Print(LOG_APP, LOG_DEBUG, LOG_DOMAIN, "[OpenGL]", \ + __VA_ARGS__)) +#endif + +#ifndef LOGW +#define LOGW(...) \ + ((void)OH_LOG_Print(LOG_APP, LOG_WARN, LOG_DOMAIN, "[OpenGL]", __VA_ARGS__)) +#endif + +#ifndef LOGE +#define LOGE(...) \ + ((void)OH_LOG_Print(LOG_APP, LOG_ERROR, LOG_DOMAIN, "[OpenGL]", \ + __VA_ARGS__)) +#endif +#endif // _LOG_H_ \ No newline at end of file diff --git a/bmf_lite/ohos/bmf_lite/src/main/cpp/include/native_common.h b/bmf_lite/ohos/bmf_lite/src/main/cpp/include/native_common.h new file mode 100644 index 00000000..cd3d6403 --- /dev/null +++ b/bmf_lite/ohos/bmf_lite/src/main/cpp/include/native_common.h @@ -0,0 +1,90 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef BMF_LITE_NATIVE_COMMON_H_ +#define BMF_LITE_NATIVE_COMMON_H_ + +#define NAPI_RETVAL_NOTHING + +#define GET_AND_THROW_LAST_ERROR(env) \ + do { \ + const napi_extended_error_info *errorInfo = nullptr; \ + napi_get_last_error_info((env), &errorInfo); \ + bool isPending = false; \ + napi_is_exception_pending((env), &isPending); \ + if (!isPending && errorInfo != nullptr) { \ + const char *errorMessage = errorInfo->error_message != nullptr \ + ? errorInfo->error_message \ + : "empty error message"; \ + napi_throw_error((env), nullptr, errorMessage); \ + } \ + } while (0) + +#define NAPI_ASSERT_BASE(env, assertion, message, retVal) \ + do { \ + if (!(assertion)) { \ + napi_throw_error((env), nullptr, \ + "assertion (" #assertion ") failed: " message); \ + return retVal; \ + } \ + } while (0) + +#define NAPI_ASSERT(env, assertion, message) \ + NAPI_ASSERT_BASE(env, assertion, message, nullptr) + +#define NAPI_ASSERT_RETURN_VOID(env, assertion, message) \ + NAPI_ASSERT_BASE(env, assertion, message, NAPI_RETVAL_NOTHING) + +#define NAPI_CALL_BASE(env, theCall, retVal) \ + do { \ + if ((theCall) != napi_ok) { \ + GET_AND_THROW_LAST_ERROR((env)); \ + return retVal; \ + } \ + } while (0) + +#define NAPI_CALL(env, theCall) NAPI_CALL_BASE(env, theCall, nullptr) + +#define NAPI_CALL_RETURN_VOID(env, theCall) \ + NAPI_CALL_BASE(env, theCall, NAPI_RETVAL_NOTHING) + +#define DECLARE_NAPI_PROPERTY(name, val) \ + {(name), nullptr, nullptr, nullptr, nullptr, val, napi_default, nullptr} + +#define DECLARE_NAPI_STATIC_PROPERTY(name, val) \ + {(name), nullptr, nullptr, nullptr, nullptr, val, napi_static, nullptr} + +#define DECLARE_NAPI_FUNCTION(name, func) \ + {(name), nullptr, (func), nullptr, nullptr, nullptr, napi_default, nullptr} + +#define DECLARE_NAPI_FUNCTION_WITH_DATA(name, func, data) \ + {(name), nullptr, (func), nullptr, nullptr, nullptr, napi_default, data} + +#define DECLARE_NAPI_STATIC_FUNCTION(name, func) \ + {(name), nullptr, (func), nullptr, nullptr, nullptr, napi_static, nullptr} + +#define DECLARE_NAPI_GETTER(name, getter) \ + {(name), nullptr, nullptr, (getter), \ + nullptr, nullptr, napi_default, nullptr} + +#define DECLARE_NAPI_SETTER(name, setter) \ + {(name), nullptr, nullptr, nullptr, \ + (setter), nullptr, napi_default, nullptr} + +#define DECLARE_NAPI_GETTER_SETTER(name, getter, setter) \ + {(name), nullptr, nullptr, (getter), \ + (setter), nullptr, napi_default, nullptr} + +#endif /* BMF_LITE_NATIVE_COMMON_H_ */ diff --git a/bmf_lite/ohos/bmf_lite/src/main/cpp/types/libbmf_lite/index.d.ts b/bmf_lite/ohos/bmf_lite/src/main/cpp/types/libbmf_lite/index.d.ts new file mode 100644 index 00000000..80c846f0 --- /dev/null +++ b/bmf_lite/ohos/bmf_lite/src/main/cpp/types/libbmf_lite/index.d.ts @@ -0,0 +1 @@ +// export const add: (a: number, b: number) => number; \ No newline at end of file diff --git a/bmf_lite/ohos/bmf_lite/src/main/cpp/types/libbmf_lite/oh-package.json5 b/bmf_lite/ohos/bmf_lite/src/main/cpp/types/libbmf_lite/oh-package.json5 new file mode 100644 index 00000000..3e05ec57 --- /dev/null +++ b/bmf_lite/ohos/bmf_lite/src/main/cpp/types/libbmf_lite/oh-package.json5 @@ -0,0 +1,6 @@ +{ + "name": "libbmf_lite_dynamic.so", + "types": "./index.d.ts", + "version": "1.0", + "description": "Please describe the basic information." +} \ No newline at end of file diff --git a/bmf_lite/ohos/bmf_lite/src/main/module.json5 b/bmf_lite/ohos/bmf_lite/src/main/module.json5 new file mode 100644 index 00000000..526198c9 --- /dev/null +++ b/bmf_lite/ohos/bmf_lite/src/main/module.json5 @@ -0,0 +1,14 @@ +{ + "module": { + "name": "bmf_lite", + "type": "shared", + "description": "$string:shared_desc", + "deviceTypes": [ + "phone", + "tablet", + "2in1" + ], + "deliveryWithInstall": true, +// "pages": "$profile:main_pages" + } +} \ No newline at end of file diff --git a/bmf_lite/ohos/bmf_lite/src/main/resources/base/element/color.json b/bmf_lite/ohos/bmf_lite/src/main/resources/base/element/color.json new file mode 100644 index 00000000..1bbc9aa9 --- /dev/null +++ b/bmf_lite/ohos/bmf_lite/src/main/resources/base/element/color.json @@ -0,0 +1,8 @@ +{ + "color": [ + { + "name": "white", + "value": "#FFFFFF" + } + ] +} \ No newline at end of file diff --git a/bmf_lite/ohos/bmf_lite/src/main/resources/base/element/string.json b/bmf_lite/ohos/bmf_lite/src/main/resources/base/element/string.json new file mode 100644 index 00000000..98e1d8a8 --- /dev/null +++ b/bmf_lite/ohos/bmf_lite/src/main/resources/base/element/string.json @@ -0,0 +1,8 @@ +{ + "string": [ + { + "name": "shared_desc", + "value": "description" + } + ] +} \ No newline at end of file diff --git a/bmf_lite/ohos/bmf_lite/src/main/resources/base/profile/main_pages.json b/bmf_lite/ohos/bmf_lite/src/main/resources/base/profile/main_pages.json new file mode 100644 index 00000000..2c63c085 --- /dev/null +++ b/bmf_lite/ohos/bmf_lite/src/main/resources/base/profile/main_pages.json @@ -0,0 +1,2 @@ +{ +} diff --git a/bmf_lite/ohos/bmf_lite/src/test/List.test.ets b/bmf_lite/ohos/bmf_lite/src/test/List.test.ets new file mode 100644 index 00000000..bb5b5c37 --- /dev/null +++ b/bmf_lite/ohos/bmf_lite/src/test/List.test.ets @@ -0,0 +1,5 @@ +import localUnitTest from './LocalUnit.test'; + +export default function testsuite() { + localUnitTest(); +} \ No newline at end of file diff --git a/bmf_lite/ohos/bmf_lite/src/test/LocalUnit.test.ets b/bmf_lite/ohos/bmf_lite/src/test/LocalUnit.test.ets new file mode 100644 index 00000000..ed22d4dc --- /dev/null +++ b/bmf_lite/ohos/bmf_lite/src/test/LocalUnit.test.ets @@ -0,0 +1,33 @@ +import { describe, beforeAll, beforeEach, afterEach, afterAll, it, expect } from '@ohos/hypium'; + +export default function localUnitTest() { + describe('localUnitTest',() => { + // Defines a test suite. Two parameters are supported: test suite name and test suite function. + beforeAll(() => { + // Presets an action, which is performed only once before all test cases of the test suite start. + // This API supports only one parameter: preset action function. + }); + beforeEach(() => { + // Presets an action, which is performed before each unit test case starts. + // The number of execution times is the same as the number of test cases defined by **it**. + // This API supports only one parameter: preset action function. + }); + afterEach(() => { + // Presets a clear action, which is performed after each unit test case ends. + // The number of execution times is the same as the number of test cases defined by **it**. + // This API supports only one parameter: clear action function. + }); + afterAll(() => { + // Presets a clear action, which is performed after all test cases of the test suite end. + // This API supports only one parameter: clear action function. + }); + it('assertContain', 0, () => { + // Defines a test case. This API supports three parameters: test case name, filter parameter, and test case function. + let a = 'abc'; + let b = 'b'; + // Defines a variety of assertion methods, which are used to declare expected boolean conditions. + expect(a).assertContain(b); + expect(a).assertEqual(a); + }); + }); +} \ No newline at end of file diff --git a/bmf_lite/ohos/build-profile.json5 b/bmf_lite/ohos/build-profile.json5 new file mode 100644 index 00000000..f2e340b4 --- /dev/null +++ b/bmf_lite/ohos/build-profile.json5 @@ -0,0 +1,50 @@ +{ + "app": { + "signingConfigs": [ + + ], + "products": [ + { + "name": "default", + "signingConfig": "default", + "compileSdkVersion": "5.0.0(12)", + "compatibleSdkVersion": "5.0.0(12)", + "runtimeOS": "HarmonyOS", + } + ], + "buildModeSet": [ + { + "name": "debug", + }, + { + "name": "release" + } + ] + }, + "modules": [ + { + "name": "entry", + "srcPath": "./entry", + "targets": [ + { + "name": "default", + "applyToProducts": [ + "default" + ] + } + ] + }, + { + "name": "bmf_lite", + "srcPath": "./bmf_lite", + "targets": [ + { + "name": "default", + "applyToProducts": [ + "default" + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/bmf_lite/ohos/entry/.gitignore b/bmf_lite/ohos/entry/.gitignore new file mode 100644 index 00000000..e529c37d --- /dev/null +++ b/bmf_lite/ohos/entry/.gitignore @@ -0,0 +1,8 @@ +/node_modules +/oh_modules +/.preview +/build +/.cxx +/.test +oh-package-lock.json5 +src/main/resources/rawfile/test.mp4 \ No newline at end of file diff --git a/bmf_lite/ohos/entry/build-profile.json5 b/bmf_lite/ohos/entry/build-profile.json5 new file mode 100644 index 00000000..92a390fc --- /dev/null +++ b/bmf_lite/ohos/entry/build-profile.json5 @@ -0,0 +1,33 @@ +{ + "apiType": "stageMode", + "buildOption": { + "externalNativeOptions": { + "path": "./src/main/cpp/CMakeLists.txt", + "arguments": "", + "cppFlags": "" + } + }, + "buildOptionSet": [ + { + "name": "release", + "arkOptions": { + "obfuscation": { + "ruleOptions": { + "enable": true, + "files": [ + "./obfuscation-rules.txt" + ] + } + } + } + }, + ], + "targets": [ + { + "name": "default" + }, + { + "name": "ohosTest", + } + ] +} \ No newline at end of file diff --git a/bmf_lite/ohos/entry/hvigorfile.ts b/bmf_lite/ohos/entry/hvigorfile.ts new file mode 100644 index 00000000..8fec211b --- /dev/null +++ b/bmf_lite/ohos/entry/hvigorfile.ts @@ -0,0 +1,21 @@ +/* + * Copyright 2024 Babit Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { hapTasks } from '@ohos/hvigor-ohos-plugin'; + +export default { + system: hapTasks, /* Built-in plugin of Hvigor. It cannot be modified. */ + plugins:[] /* Custom plugin to extend the functionality of Hvigor. */ +} diff --git a/bmf_lite/ohos/entry/obfuscation-rules.txt b/bmf_lite/ohos/entry/obfuscation-rules.txt new file mode 100644 index 00000000..985b2aeb --- /dev/null +++ b/bmf_lite/ohos/entry/obfuscation-rules.txt @@ -0,0 +1,18 @@ +# Define project specific obfuscation rules here. +# You can include the obfuscation configuration files in the current module's build-profile.json5. +# +# For more details, see +# https://gitee.com/openharmony/arkcompiler_ets_frontend/blob/master/arkguard/README.md + +# Obfuscation options: +# -disable-obfuscation: disable all obfuscations +# -enable-property-obfuscation: obfuscate the property names +# -enable-toplevel-obfuscation: obfuscate the names in the global scope +# -compact: remove unnecessary blank spaces and all line feeds +# -remove-log: remove all console.* statements +# -print-namecache: print the name cache that contains the mapping from the old names to new names +# -apply-namecache: reuse the given cache file + +# Keep options: +# -keep-property-name: specifies property names that you want to keep +# -keep-global-name: specifies names that you want to keep in the global scope \ No newline at end of file diff --git a/bmf_lite/ohos/entry/oh-package.json5 b/bmf_lite/ohos/entry/oh-package.json5 new file mode 100644 index 00000000..325273c6 --- /dev/null +++ b/bmf_lite/ohos/entry/oh-package.json5 @@ -0,0 +1,13 @@ +{ + "name": "entry", + "version": "1.0.0", + "description": "Please describe the basic information.", + "main": "", + "author": "", + "license": "", + "dependencies": { + "libnativerender.so": "file:./src/main/cpp/types/libnativerender", +// "bmf_lite": "../bmf_lite" + } +} + diff --git a/bmf_lite/ohos/entry/src/main/cpp/CMakeLists.txt b/bmf_lite/ohos/entry/src/main/cpp/CMakeLists.txt new file mode 100644 index 00000000..42418ba3 --- /dev/null +++ b/bmf_lite/ohos/entry/src/main/cpp/CMakeLists.txt @@ -0,0 +1,62 @@ +# the minimum version of CMake. +cmake_minimum_required(VERSION 3.5) +project(BmfLite) + +set(NATIVE_RENDER_ROOT_PATH ${CMAKE_CURRENT_SOURCE_DIR}) +add_definitions(-DOHOS_PLATFORM) + +set(BMF_LITE_ROOT_PATH ${CMAKE_CURRENT_SOURCE_DIR}/../../../../..) + +message(STATUS "OHOS add_subdirectory") + +add_subdirectory(${BMF_LITE_ROOT_PATH}/src ../../../bmf_lite) + +option(BMF_LITE_ENABLE_OPENGLTEXTUREBUFFER "Enable build opengl texture buffer" ON) +option(BMF_LITE_ENABLE_SUPER_RESOLUTION "Enable build super resolution" ON) +option(BMF_LITE_ENABLE_DENOISE "Enable build super resolution" ON) +option(BMF_ENABLE_LOG "Enable log" ON) + +list(APPEND NATIVE_RENDER_SRC + native_render_init.cpp + manager/plugin_manager.cpp + render/egl_render_context.cpp + render/plugin_render.cpp + render/render_thread.cpp + render/shader_program.cpp + render/oes_to_2d_renderer.cpp + render/split_screen_renderer.cpp + camera/camera_manager.cpp + player/player_manager.cpp + algorithm/algorithm.cpp +) + +add_library(nativerender SHARED + ${NATIVE_RENDER_SRC} +) + +target_link_libraries(nativerender PRIVATE + bmf_lite +) + +target_include_directories(nativerender PUBLIC + ${NATIVE_RENDER_ROOT_PATH} + ${NATIVE_RENDER_ROOT_PATH}/include + ${NATIVE_RENDER_ROOT_PATH}/algorithm + ${NATIVE_RENDER_ROOT_PATH}/common + ${BMF_LITE_ROOT_PATH}/api/cpp + ${BMF_LITE_ROOT_PATH}/src +) + +target_link_libraries(nativerender PUBLIC + EGL + GLESv3 + hilog_ndk.z + ace_ndk.z + ace_napi.z + native_vsync + native_drawing + native_window + ohcamera + native_image + avplayer +) diff --git a/bmf_lite/ohos/entry/src/main/cpp/algorithm/algorithm.cpp b/bmf_lite/ohos/entry/src/main/cpp/algorithm/algorithm.cpp new file mode 100644 index 00000000..ea6818dd --- /dev/null +++ b/bmf_lite/ohos/entry/src/main/cpp/algorithm/algorithm.cpp @@ -0,0 +1,103 @@ +/* + * Copyright 2024 Babit Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#include "algorithm.h" +#include "algorithm/bmf_algorithm_impl.h" + +namespace bmf_lite_demo { + +Algorithm::Algorithm(EGLDisplay eglDisplay, EGLSurface surface, + EGLContext eglContext, int algorithmType) + : eglDisplay_(eglDisplay), eglSurface_(surface), eglContext_(eglContext), + algorithmType_(algorithmType) { + algorithm_ = bmf_lite::AlgorithmFactory::createAlgorithmInterface(); + bmf_lite::Param init_param; + // init param + init_param.setInt("change_mode", + bmf_lite::ModsMode::CREATE_AND_PROCESS_MODE); + init_param.setString("instance_id", "i"); + init_param.setInt("algorithm_type", algorithmType_); + init_param.setInt("algorithm_version", 0); + init_param.setInt("backend", 3); + init_param.setInt("scale_mode", 0); + init_param.setInt("process_mode", 0); + init_param.setInt("max_width", 1920); + init_param.setInt("max_height", 1080); + init_param.setString("license_module_name", ""); + init_param.setString("program_cache_dir", ""); + init_param.setInt("sharp_levels", 0); // for super_resolution only + init_param.setString("weight_path", ""); // for super_resolution only + + int init_result = algorithm_->setParam(init_param); + if (init_result != 0) { + bmf_lite::AlgorithmFactory::releaseAlgorithmInterface(algorithm_); + algorithm_ = nullptr; + valid_ = false; + } + valid_ = true; +} + +int Algorithm::processVideoFrame(GLuint textureId, size_t width, + size_t height) { + if (!valid_) { + return -1; + } + + bmf_lite::HardwareDeviceSetInfo set_info; + set_info.device_type = bmf_lite::kHWDeviceTypeEGLCtx; + bmf_lite::EGLContextInfo egl_context_info_create{eglDisplay_, eglContext_, + eglSurface_, eglSurface_}; + set_info.context_info = &egl_context_info_create; + set_info.owned = 0; + + std::shared_ptr device_context; + bmf_lite::HWDeviceContextManager::setHwDeviceContext(&set_info, + device_context); + bmf_lite::HardwareDataInfo data_info = { + bmf_lite::MemoryType::kOpenGLTexture2d, bmf_lite::GLES_TEXTURE_RGBA, 0}; + + std::shared_ptr videoBuffer; + bmf_lite::VideoBufferManager::createTextureVideoBufferFromExistingData( + (void *)textureId, width, height, &data_info, device_context, NULL, + videoBuffer); + bmf_lite::VideoFrame videoFrame(videoBuffer); + + bmf_lite::Param param; + param.setInt("sharp_level", 0); // for super_resolution only + param.setInt("scale_mode", 0); // for super_resolution only + return algorithm_->processVideoFrame(videoFrame, param); +} + +int Algorithm::getVideoFrameOutput(GLuint &textureId, size_t &width, + size_t &height) { + if (!valid_) { + return -1; + } + + bmf_lite::Param output_param; + bmf_lite::VideoFrame output_video_frame; + algorithm_->getVideoFrameOutput(output_video_frame, output_param); + width = output_video_frame.buffer()->width(); + height = output_video_frame.buffer()->height(); + textureId = (long)(output_video_frame.buffer()->data()); + return 0; +} + +Algorithm::~Algorithm() { + bmf_lite::AlgorithmFactory::releaseAlgorithmInterface(algorithm_); + valid_ = false; +} + +} // namespace bmf_lite_demo \ No newline at end of file diff --git a/bmf_lite/ohos/entry/src/main/cpp/algorithm/algorithm.h b/bmf_lite/ohos/entry/src/main/cpp/algorithm/algorithm.h new file mode 100644 index 00000000..731b33fd --- /dev/null +++ b/bmf_lite/ohos/entry/src/main/cpp/algorithm/algorithm.h @@ -0,0 +1,50 @@ +/* + * Copyright 2024 Babit Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef BMFLITE_ALGORITHM_H +#define BMFLITE_ALGORITHM_H + +#include +#include +#include + +#include "algorithm/bmf_algorithm.h" + +namespace bmf_lite_demo { + +class Algorithm { + public: + Algorithm(EGLDisplay eglDisplay, EGLSurface readSurface, + EGLContext eglContext, int algorithmType); + Algorithm(Algorithm &) = delete; + int processVideoFrame(GLuint textureId, size_t width, size_t height); + int getVideoFrameOutput(GLuint &textureId, size_t &width, size_t &height); + ~Algorithm(); + + private: + bmf_lite::IAlgorithm *algorithm_; + + int algorithmType_; + + EGLDisplay eglDisplay_ = EGL_NO_DISPLAY; + EGLSurface eglSurface_ = EGL_NO_SURFACE; + EGLContext eglContext_ = EGL_NO_CONTEXT; + + bool valid_ = false; +}; + +} // namespace bmf_lite_demo + +#endif // BMFLITE_ALGORITHM_H diff --git a/bmf_lite/ohos/entry/src/main/cpp/camera/camera_manager.cpp b/bmf_lite/ohos/entry/src/main/cpp/camera/camera_manager.cpp new file mode 100644 index 00000000..cc1e65ed --- /dev/null +++ b/bmf_lite/ohos/entry/src/main/cpp/camera/camera_manager.cpp @@ -0,0 +1,1045 @@ +/* + * Copyright (c) 2023-2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#include "camera_manager.h" + +namespace bmf_lite_demo { +std::mutex NDKCamera::mtx_; + +NDKCamera::NDKCamera(const char *surfaceId, uint32_t focusMode, + uint32_t cameraDeviceIndex) + : previewSurfaceId_(surfaceId), cameras_(nullptr), focusMode_(focusMode), + cameraDeviceIndex_(cameraDeviceIndex), cameraOutputCapability_(nullptr), + cameraInput_(nullptr), captureSession_(nullptr), size_(0), + isCameraMuted_(nullptr), profile_(nullptr), photoSurfaceId_(nullptr), + previewOutput_(nullptr), photoOutput_(nullptr), + metaDataObjectType_(nullptr), metadataOutput_(nullptr), + isExposureModeSupported_(false), isFocusModeSupported_(false), + exposureMode_(EXPOSURE_MODE_LOCKED), minExposureBias_(0), + maxExposureBias_(0), step_(0), ret_(CAMERA_OK) { + valid_ = false; + ReleaseCamera(); + Camera_ErrorCode ret = OH_Camera_GetCameraManager(&cameraManager_); + if (cameraManager_ == nullptr || ret != CAMERA_OK) { + OH_LOG_ERROR(LOG_APP, "Get CameraManager failed."); + } + + ret = + OH_CameraManager_CreateCaptureSession(cameraManager_, &captureSession_); + if (captureSession_ == nullptr || ret != CAMERA_OK) { + OH_LOG_ERROR(LOG_APP, "Create captureSession failed."); + } + CaptureSessionRegisterCallback(); + GetSupportedCameras(); + GetSupportedOutputCapability(); + CreatePreviewOutput(); + CreateCameraInput(); + CameraInputOpen(); + CameraManagerRegisterCallback(); + SessionFlowFn(); + valid_ = true; +} + +NDKCamera::~NDKCamera() { + valid_ = false; + OH_LOG_ERROR(LOG_APP, "~NDKCamera"); + Camera_ErrorCode ret = CAMERA_OK; + + if (cameraManager_) { + OH_LOG_ERROR( + LOG_APP, + "Release OH_CameraManager_DeleteSupportedCameraOutputCapability. " + "enter"); + ret = OH_CameraManager_DeleteSupportedCameraOutputCapability( + cameraManager_, cameraOutputCapability_); + if (ret != CAMERA_OK) { + OH_LOG_ERROR(LOG_APP, "Delete CameraOutputCapability failed."); + } else { + OH_LOG_ERROR( + LOG_APP, + "Release " + "OH_CameraManager_DeleteSupportedCameraOutputCapability. ok"); + } + + OH_LOG_ERROR(LOG_APP, + "Release OH_CameraManager_DeleteSupportedCameras. enter"); + ret = OH_CameraManager_DeleteSupportedCameras(cameraManager_, cameras_, + size_); + if (ret != CAMERA_OK) { + OH_LOG_ERROR(LOG_APP, "Delete Cameras failed."); + } else { + OH_LOG_ERROR(LOG_APP, + "Release OH_CameraManager_DeleteSupportedCameras. ok"); + } + ret = OH_Camera_DeleteCameraManager(cameraManager_); + if (ret != CAMERA_OK) { + OH_LOG_ERROR(LOG_APP, "Delete CameraManager failed."); + } else { + OH_LOG_ERROR(LOG_APP, "Release OH_Camera_DeleteCameraMananger. ok"); + } + cameraManager_ = nullptr; + } + OH_LOG_ERROR(LOG_APP, "~NDKCamera exit"); +} + +Camera_ErrorCode NDKCamera::ReleaseCamera(void) { + OH_LOG_ERROR(LOG_APP, " enter ReleaseCamera"); + if (previewOutput_) { + PreviewOutputStop(); + PreviewOutputRelease(); + OH_CaptureSession_RemovePreviewOutput(captureSession_, previewOutput_); + } + if (photoOutput_) { + PhotoOutputRelease(); + } + if (videoOutput_) { + VideoOutputStop(); + } + if (captureSession_) { + SessionRelease(); + } + if (cameraInput_) { + CameraInputClose(); + } + // NDKCamera::Destroy(); + OH_LOG_ERROR(LOG_APP, " exit ReleaseCamera"); + return ret_; +} + +Camera_ErrorCode NDKCamera::ReleaseSession(void) { + OH_LOG_ERROR(LOG_APP, " enter ReleaseSession"); + PreviewOutputStop(); + PhotoOutputRelease(); + SessionRelease(); + OH_LOG_ERROR(LOG_APP, " exit ReleaseSession"); + return ret_; +} + +Camera_ErrorCode NDKCamera::SessionRelease(void) { + OH_LOG_ERROR(LOG_APP, " enter SessionRealese"); + Camera_ErrorCode ret = OH_CaptureSession_Release(captureSession_); + captureSession_ = nullptr; + OH_LOG_ERROR(LOG_APP, " exit SessionRealese"); + return ret; +} + +Camera_ErrorCode NDKCamera::HasFlashFn(uint32_t mode) { + Camera_FlashMode flashMode = static_cast(mode); + // Check for flashing lights + bool hasFlash = false; + Camera_ErrorCode ret = + OH_CaptureSession_HasFlash(captureSession_, &hasFlash); + if (captureSession_ == nullptr || ret != CAMERA_OK) { + OH_LOG_ERROR(LOG_APP, "OH_CaptureSession_HasFlash failed."); + } + if (hasFlash) { + OH_LOG_INFO(LOG_APP, "hasFlash success-----"); + } else { + OH_LOG_ERROR(LOG_APP, "hasFlash fail-----"); + } + + // Check if the flash mode is supported + bool isSupported = false; + ret = OH_CaptureSession_IsFlashModeSupported(captureSession_, flashMode, + &isSupported); + if (ret != CAMERA_OK) { + OH_LOG_ERROR(LOG_APP, "OH_CaptureSession_IsFlashModeSupported failed."); + } + if (isSupported) { + OH_LOG_INFO(LOG_APP, "isFlashModeSupported success-----"); + } else { + OH_LOG_ERROR(LOG_APP, "isFlashModeSupported fail-----"); + } + + // Set flash mode + ret = OH_CaptureSession_SetFlashMode(captureSession_, flashMode); + if (ret == CAMERA_OK) { + OH_LOG_INFO(LOG_APP, "OH_CaptureSession_SetFlashMode success."); + } else { + OH_LOG_ERROR(LOG_APP, + "OH_CaptureSession_SetFlashMode failed. %{public}d ", ret); + } + + // Obtain the flash mode of the current device + ret = OH_CaptureSession_GetFlashMode(captureSession_, &flashMode); + if (ret == CAMERA_OK) { + OH_LOG_INFO( + LOG_APP, + "OH_CaptureSession_GetFlashMode success. flashMode:%{public}d ", + flashMode); + } else { + OH_LOG_ERROR(LOG_APP, "OH_CaptureSession_GetFlashMode failed. %d ", + ret); + } + return ret; +} + +Camera_ErrorCode NDKCamera::IsVideoStabilizationModeSupportedFn(uint32_t mode) { + Camera_VideoStabilizationMode videoMode = + static_cast(mode); + // Check if the specified video anti shake mode is supported + bool isSupported = false; + Camera_ErrorCode ret = OH_CaptureSession_IsVideoStabilizationModeSupported( + captureSession_, videoMode, &isSupported); + if (ret != CAMERA_OK) { + OH_LOG_ERROR( + LOG_APP, + "OH_CaptureSession_IsVideoStabilizationModeSupported failed."); + } + if (isSupported) { + OH_LOG_INFO( + LOG_APP, + "OH_CaptureSession_IsVideoStabilizationModeSupported success-----"); + } else { + OH_LOG_ERROR( + LOG_APP, + "OH_CaptureSession_IsVideoStabilizationModeSupported fail-----"); + } + + // Set video stabilization + ret = + OH_CaptureSession_SetVideoStabilizationMode(captureSession_, videoMode); + if (ret == CAMERA_OK) { + OH_LOG_INFO(LOG_APP, + "OH_CaptureSession_SetVideoStabilizationMode success."); + } else { + OH_LOG_ERROR( + LOG_APP, + "OH_CaptureSession_SetVideoStabilizationMode failed. %{public}d ", + ret); + } + + ret = OH_CaptureSession_GetVideoStabilizationMode(captureSession_, + &videoMode); + if (ret == CAMERA_OK) { + OH_LOG_INFO(LOG_APP, + "OH_CaptureSession_GetVideoStabilizationMode success. " + "videoMode:%u ", + videoMode); + } else { + OH_LOG_ERROR( + LOG_APP, + "OH_CaptureSession_GetVideoStabilizationMode failed. %{public}d ", + ret); + } + return ret; +} + +Camera_ErrorCode NDKCamera::setZoomRatioFn(uint32_t zoomRatio) { + float zoom = float(zoomRatio); + // Obtain supported zoom range + float minZoom; + float maxZoom; + Camera_ErrorCode ret = OH_CaptureSession_GetZoomRatioRange( + captureSession_, &minZoom, &maxZoom); + if (captureSession_ == nullptr || ret != CAMERA_OK) { + OH_LOG_ERROR(LOG_APP, "OH_CaptureSession_GetZoomRatioRange failed."); + } else { + OH_LOG_INFO(LOG_APP, + "OH_CaptureSession_GetZoomRatioRange success. minZoom: " + "%{public}f, maxZoom:%{public}f", + minZoom, maxZoom); + } + + // Set Zoom + ret = OH_CaptureSession_SetZoomRatio(captureSession_, zoom); + if (ret == CAMERA_OK) { + OH_LOG_INFO(LOG_APP, "OH_CaptureSession_SetZoomRatio success."); + } else { + OH_LOG_ERROR(LOG_APP, + "OH_CaptureSession_SetZoomRatio failed. %{public}d ", ret); + } + + // Obtain the zoom value of the current device + ret = OH_CaptureSession_GetZoomRatio(captureSession_, &zoom); + if (ret == CAMERA_OK) { + OH_LOG_INFO(LOG_APP, + "OH_CaptureSession_GetZoomRatio success. zoom:%{public}f ", + zoom); + } else { + OH_LOG_ERROR(LOG_APP, + "OH_CaptureSession_GetZoomRatio failed. %{public}d ", ret); + } + return ret; +} + +Camera_ErrorCode NDKCamera::SessionBegin(void) { + Camera_ErrorCode ret = OH_CaptureSession_BeginConfig(captureSession_); + if (ret == CAMERA_OK) { + OH_LOG_INFO(LOG_APP, "OH_CaptureSession_BeginConfig success."); + } else { + OH_LOG_ERROR(LOG_APP, "OH_CaptureSession_BeginConfig failed. %d ", ret); + } + return ret; +} + +Camera_ErrorCode NDKCamera::SessionCommitConfig(void) { + Camera_ErrorCode ret = OH_CaptureSession_CommitConfig(captureSession_); + if (ret == CAMERA_OK) { + OH_LOG_INFO(LOG_APP, "OH_CaptureSession_CommitConfig success."); + } else { + OH_LOG_ERROR(LOG_APP, "OH_CaptureSession_CommitConfig failed. %d ", + ret); + } + return ret; +} + +Camera_ErrorCode NDKCamera::SessionStart(void) { + Camera_ErrorCode ret = OH_CaptureSession_Start(captureSession_); + if (ret == CAMERA_OK) { + OH_LOG_INFO(LOG_APP, "OH_CaptureSession_Start success."); + } else { + OH_LOG_ERROR(LOG_APP, "OH_CaptureSession_Start failed. %d ", ret); + } + return ret; +} + +Camera_ErrorCode NDKCamera::SessionStop(void) { + Camera_ErrorCode ret = OH_CaptureSession_Stop(captureSession_); + if (ret == CAMERA_OK) { + OH_LOG_INFO(LOG_APP, "OH_CaptureSession_Stop success."); + } else { + OH_LOG_ERROR(LOG_APP, "OH_CaptureSession_Stop failed. %d ", ret); + } + return ret; +} + +Camera_ErrorCode NDKCamera::SessionFlowFn(void) { + OH_LOG_INFO(LOG_APP, "Start SessionFlowFn IN."); + // Start configuring session + OH_LOG_INFO(LOG_APP, "session beginConfig."); + Camera_ErrorCode ret = OH_CaptureSession_BeginConfig(captureSession_); + + // Add CameraInput to the session + OH_LOG_INFO(LOG_APP, "session addInput."); + ret = OH_CaptureSession_AddInput(captureSession_, cameraInput_); + + // Add previewOutput to the session + OH_LOG_INFO(LOG_APP, "session add Preview Output."); + ret = OH_CaptureSession_AddPreviewOutput(captureSession_, previewOutput_); + + // Adding PhotoOutput to the Session + OH_LOG_INFO(LOG_APP, "session add Photo Output."); + + // Submit configuration information + OH_LOG_INFO(LOG_APP, "session commitConfig"); + ret = OH_CaptureSession_CommitConfig(captureSession_); + + // Start Session Work + OH_LOG_INFO(LOG_APP, "session start"); + ret = OH_CaptureSession_Start(captureSession_); + OH_LOG_INFO(LOG_APP, "session success"); + + // Start focusing + OH_LOG_INFO(LOG_APP, "IsFocusMode start"); + ret = IsFocusMode(focusMode_); + OH_LOG_INFO(LOG_APP, "IsFocusMode success"); + return ret; +} + +Camera_ErrorCode NDKCamera::CreateCameraInput(void) { + OH_LOG_ERROR(LOG_APP, "enter CreateCameraInput."); + ret_ = OH_CameraManager_CreateCameraInput( + cameraManager_, &cameras_[cameraDeviceIndex_], &cameraInput_); + if (cameraInput_ == nullptr || ret_ != CAMERA_OK) { + OH_LOG_ERROR(LOG_APP, "CreateCameraInput failed."); + return CAMERA_INVALID_ARGUMENT; + } + OH_LOG_ERROR(LOG_APP, "exit CreateCameraInput."); + CameraInputRegisterCallback(); + return ret_; +} + +Camera_ErrorCode NDKCamera::CameraInputOpen(void) { + OH_LOG_ERROR(LOG_APP, "enter CameraInputOpen."); + ret_ = OH_CameraInput_Open(cameraInput_); + if (ret_ != CAMERA_OK) { + OH_LOG_ERROR(LOG_APP, "CameraInput_Open failed."); + return CAMERA_INVALID_ARGUMENT; + } + OH_LOG_ERROR(LOG_APP, "exit CameraInputOpen."); + return ret_; +} + +Camera_ErrorCode NDKCamera::CameraInputClose(void) { + OH_LOG_ERROR(LOG_APP, "enter CameraInput_Close."); + ret_ = OH_CameraInput_Close(cameraInput_); + if (ret_ != CAMERA_OK) { + OH_LOG_ERROR(LOG_APP, "CameraInput_Close failed."); + return CAMERA_INVALID_ARGUMENT; + } + OH_LOG_ERROR(LOG_APP, "exit CameraInput_Close."); + return ret_; +} + +Camera_ErrorCode NDKCamera::CameraInputRelease(void) { + OH_LOG_ERROR(LOG_APP, "enter CameraInputRelease."); + ret_ = OH_CameraInput_Release(cameraInput_); + if (ret_ != CAMERA_OK) { + OH_LOG_ERROR(LOG_APP, "CameraInput_Release failed."); + return CAMERA_INVALID_ARGUMENT; + } + OH_LOG_ERROR(LOG_APP, "exit CameraInputRelease."); + return ret_; +} + +Camera_ErrorCode NDKCamera::GetSupportedCameras(void) { + ret_ = + OH_CameraManager_GetSupportedCameras(cameraManager_, &cameras_, &size_); + if (cameras_ == nullptr || ret_ != CAMERA_OK) { + OH_LOG_ERROR(LOG_APP, "Get supported cameras failed."); + return CAMERA_INVALID_ARGUMENT; + } + return ret_; +} + +Camera_ErrorCode NDKCamera::GetSupportedOutputCapability(void) { + ret_ = OH_CameraManager_GetSupportedCameraOutputCapability( + cameraManager_, &cameras_[cameraDeviceIndex_], + &cameraOutputCapability_); + if (cameraOutputCapability_ == nullptr || ret_ != CAMERA_OK) { + OH_LOG_ERROR(LOG_APP, "GetSupportedCameraOutputCapability failed."); + return CAMERA_INVALID_ARGUMENT; + } + return ret_; +} + +Camera_ErrorCode NDKCamera::CreatePreviewOutput(void) { + for (int i = 0; i < cameraOutputCapability_->previewProfilesSize; i++) { + if (cameraOutputCapability_->previewProfiles[i]->size.height == 720 && + cameraOutputCapability_->previewProfiles[i]->size.width == 1280) { + profile_ = cameraOutputCapability_->previewProfiles[i]; + break; + } + } + // profile_ = cameraOutputCapability_->previewProfiles[0]; + OH_LOG_ERROR(LOG_APP, "Get CreatePreviewOutput %d %d", profile_->size.width, + profile_->size.height); + if (profile_ == nullptr) { + OH_LOG_ERROR(LOG_APP, "Get previewProfiles failed."); + return CAMERA_INVALID_ARGUMENT; + } + ret_ = OH_CameraManager_CreatePreviewOutput( + cameraManager_, profile_, previewSurfaceId_, &previewOutput_); + if (previewSurfaceId_ == nullptr || previewOutput_ == nullptr || + ret_ != CAMERA_OK) { + OH_LOG_ERROR(LOG_APP, "CreatePreviewOutput failed."); + return CAMERA_INVALID_ARGUMENT; + } + PreviewOutputRegisterCallback(); + return ret_; +} + +Camera_ErrorCode NDKCamera::CreatePhotoOutput(char *photoSurfaceId) { + profile_ = cameraOutputCapability_->photoProfiles[0]; + if (profile_ == nullptr) { + OH_LOG_ERROR(LOG_APP, "Get photoProfiles failed."); + return CAMERA_INVALID_ARGUMENT; + } + + if (photoSurfaceId == nullptr) { + OH_LOG_ERROR(LOG_APP, "CreatePhotoOutput failed."); + return CAMERA_INVALID_ARGUMENT; + } + + ret_ = OH_CameraManager_CreatePhotoOutput(cameraManager_, profile_, + photoSurfaceId, &photoOutput_); + PhotoOutputRegisterCallback(); + return ret_; +} + +Camera_ErrorCode NDKCamera::CreateVideoOutput(const char *videoId) { + videoProfile_ = cameraOutputCapability_->videoProfiles[0]; + + if (videoProfile_ == nullptr) { + OH_LOG_ERROR(LOG_APP, "Get videoProfiles failed."); + return CAMERA_INVALID_ARGUMENT; + } + ret_ = OH_CameraManager_CreateVideoOutput(cameraManager_, videoProfile_, + videoId, &videoOutput_); + if (videoId == nullptr || videoOutput_ == nullptr || ret_ != CAMERA_OK) { + OH_LOG_ERROR(LOG_APP, "CreateVideoOutput failed."); + return CAMERA_INVALID_ARGUMENT; + } + + return ret_; +} + +Camera_ErrorCode NDKCamera::AddVideoOutput(void) { + Camera_ErrorCode ret = + OH_CaptureSession_AddVideoOutput(captureSession_, videoOutput_); + if (ret == CAMERA_OK) { + OH_LOG_ERROR(LOG_APP, "OH_CaptureSession_AddVideoOutput success."); + } else { + OH_LOG_ERROR(LOG_APP, "OH_CaptureSession_AddVideoOutput failed. %d ", + ret); + } + return ret; +} + +Camera_ErrorCode NDKCamera::AddPhotoOutput() { + Camera_ErrorCode ret = + OH_CaptureSession_AddPhotoOutput(captureSession_, photoOutput_); + if (ret == CAMERA_OK) { + OH_LOG_ERROR(LOG_APP, "OH_CaptureSession_AddPhotoOutput success."); + } else { + OH_LOG_ERROR(LOG_APP, "OH_CaptureSession_AddPhotoOutput failed. %d ", + ret); + } + return ret; +} + +Camera_ErrorCode NDKCamera::CreateMetadataOutput(void) { + metaDataObjectType_ = + cameraOutputCapability_->supportedMetadataObjectTypes[0]; + if (metaDataObjectType_ == nullptr) { + OH_LOG_ERROR(LOG_APP, "Get metaDataObjectType failed."); + return CAMERA_INVALID_ARGUMENT; + } + ret_ = OH_CameraManager_CreateMetadataOutput( + cameraManager_, metaDataObjectType_, &metadataOutput_); + if (metadataOutput_ == nullptr || ret_ != CAMERA_OK) { + OH_LOG_ERROR(LOG_APP, "CreateMetadataOutput failed."); + return CAMERA_INVALID_ARGUMENT; + } + MetadataOutputRegisterCallback(); + return ret_; +} + +Camera_ErrorCode NDKCamera::IsCameraMuted(void) { + ret_ = OH_CameraManager_IsCameraMuted(cameraManager_, isCameraMuted_); + if (isCameraMuted_ == nullptr || ret_ != CAMERA_OK) { + OH_LOG_ERROR(LOG_APP, "IsCameraMuted failed."); + return CAMERA_INVALID_ARGUMENT; + } + return ret_; +} + +Camera_ErrorCode NDKCamera::PreviewOutputStop(void) { + OH_LOG_ERROR(LOG_APP, "enter PreviewOutputStop."); + ret_ = OH_PreviewOutput_Stop(previewOutput_); + if (ret_ != CAMERA_OK) { + OH_LOG_ERROR(LOG_APP, "PreviewOutputStop failed."); + return CAMERA_INVALID_ARGUMENT; + } + return ret_; +} + +Camera_ErrorCode NDKCamera::PreviewOutputRelease(void) { + OH_LOG_ERROR(LOG_APP, "enter PreviewOutputRelease."); + ret_ = OH_PreviewOutput_Release(previewOutput_); + if (ret_ != CAMERA_OK) { + OH_LOG_ERROR(LOG_APP, "PreviewOutputRelease failed."); + return CAMERA_INVALID_ARGUMENT; + } + return ret_; +} + +Camera_ErrorCode NDKCamera::PhotoOutputRelease(void) { + OH_LOG_ERROR(LOG_APP, "enter PhotoOutputRelease."); + ret_ = OH_PhotoOutput_Release(photoOutput_); + if (ret_ != CAMERA_OK) { + OH_LOG_ERROR(LOG_APP, "PhotoOutputRelease failed."); + return CAMERA_INVALID_ARGUMENT; + } + return ret_; +} + +Camera_ErrorCode NDKCamera::StartVideo(char *videoId, char *photoId) { + OH_LOG_INFO(LOG_APP, "StartVideo begin."); + Camera_ErrorCode ret = SessionStop(); + if (ret == CAMERA_OK) { + OH_LOG_INFO(LOG_APP, "SessionStop success."); + } else { + OH_LOG_ERROR(LOG_APP, "SessionStop failed. %d ", ret); + } + ret = SessionBegin(); + if (ret == CAMERA_OK) { + OH_LOG_INFO(LOG_APP, "SessionBegin success."); + } else { + OH_LOG_ERROR(LOG_APP, "SessionBegin failed. %d ", ret); + } + OH_CaptureSession_RemovePhotoOutput(captureSession_, photoOutput_); + CreatePhotoOutput(photoId); + AddPhotoOutput(); + CreateVideoOutput(videoId); + AddVideoOutput(); + SessionCommitConfig(); + SessionStart(); + VideoOutputRegisterCallback(); + return ret; +} + +Camera_ErrorCode NDKCamera::VideoOutputStart(void) { + OH_LOG_INFO(LOG_APP, "VideoOutputStart begin."); + Camera_ErrorCode ret = OH_VideoOutput_Start(videoOutput_); + if (ret == CAMERA_OK) { + OH_LOG_INFO(LOG_APP, "OH_VideoOutput_Start success."); + } else { + OH_LOG_ERROR(LOG_APP, "OH_VideoOutput_Start failed. %d ", ret); + } + return ret; +} + +Camera_ErrorCode NDKCamera::StartPhoto(char *mSurfaceId) { + Camera_ErrorCode ret = CAMERA_OK; + if (takePictureTimes == 0) { + ret = SessionStop(); + if (ret == CAMERA_OK) { + OH_LOG_INFO(LOG_APP, "SessionStop success."); + } else { + OH_LOG_ERROR(LOG_APP, "SessionStop failed. %d ", ret); + } + ret = SessionBegin(); + if (ret == CAMERA_OK) { + OH_LOG_INFO(LOG_APP, "SessionBegin success."); + } else { + OH_LOG_ERROR(LOG_APP, "SessionBegin failed. %d ", ret); + } + OH_LOG_INFO(LOG_APP, "startPhoto begin."); + ret = CreatePhotoOutput(mSurfaceId); + + OH_LOG_INFO(LOG_APP, "startPhoto CreatePhotoOutput ret = %{public}d.", + ret); + ret = OH_CaptureSession_AddPhotoOutput(captureSession_, photoOutput_); + OH_LOG_INFO(LOG_APP, "startPhoto AddPhotoOutput ret = %{public}d.", + ret); + ret = SessionCommitConfig(); + + OH_LOG_INFO(LOG_APP, "startPhoto SessionCommitConfig ret = %{public}d.", + ret); + ret = SessionStart(); + OH_LOG_INFO(LOG_APP, "startPhoto SessionStart ret = %{public}d.", ret); + } + ret = TakePicture(); + OH_LOG_INFO(LOG_APP, "startPhoto OH_PhotoOutput_Capture ret = %{public}d.", + ret); + if (ret_ != CAMERA_OK) { + OH_LOG_ERROR(LOG_APP, "startPhoto failed."); + return CAMERA_INVALID_ARGUMENT; + } + takePictureTimes++; + return ret_; +} + +// exposure mode +Camera_ErrorCode NDKCamera::IsExposureModeSupportedFn(uint32_t mode) { + OH_LOG_INFO(LOG_APP, "IsExposureModeSupportedFn start."); + exposureMode_ = static_cast(mode); + ret_ = OH_CaptureSession_IsExposureModeSupported( + captureSession_, exposureMode_, &isExposureModeSupported_); + if (ret_ != CAMERA_OK) { + OH_LOG_ERROR(LOG_APP, "IsExposureModeSupported failed."); + return CAMERA_INVALID_ARGUMENT; + } + ret_ = OH_CaptureSession_SetExposureMode(captureSession_, exposureMode_); + if (ret_ != CAMERA_OK) { + OH_LOG_ERROR(LOG_APP, "SetExposureMode failed."); + return CAMERA_INVALID_ARGUMENT; + } + ret_ = OH_CaptureSession_GetExposureMode(captureSession_, &exposureMode_); + if (ret_ != CAMERA_OK) { + OH_LOG_ERROR(LOG_APP, "GetExposureMode failed."); + return CAMERA_INVALID_ARGUMENT; + } + OH_LOG_INFO(LOG_APP, "IsExposureModeSupportedFn end."); + return ret_; +} + +Camera_ErrorCode NDKCamera::IsMeteringPoint(int x, int y) { + OH_LOG_INFO(LOG_APP, "IsMeteringPoint start."); + ret_ = OH_CaptureSession_GetExposureMode(captureSession_, &exposureMode_); + if (ret_ != CAMERA_OK) { + OH_LOG_ERROR(LOG_APP, "GetExposureMode failed."); + return CAMERA_INVALID_ARGUMENT; + } + Camera_Point exposurePoint; + exposurePoint.x = x; + exposurePoint.y = y; + ret_ = OH_CaptureSession_SetMeteringPoint(captureSession_, exposurePoint); + if (ret_ != CAMERA_OK) { + OH_LOG_ERROR(LOG_APP, "SetMeteringPoint failed."); + return CAMERA_INVALID_ARGUMENT; + } + ret_ = OH_CaptureSession_GetMeteringPoint(captureSession_, &exposurePoint); + if (ret_ != CAMERA_OK) { + OH_LOG_ERROR(LOG_APP, "GetMeteringPoint failed."); + return CAMERA_INVALID_ARGUMENT; + } + OH_LOG_INFO(LOG_APP, "IsMeteringPoint end."); + return ret_; +} + +Camera_ErrorCode NDKCamera::IsExposureBiasRange(int exposureBias) { + OH_LOG_INFO(LOG_APP, "IsExposureBiasRange end."); + float exposureBiasValue = (float)exposureBias; + ret_ = OH_CaptureSession_GetExposureBiasRange( + captureSession_, &minExposureBias_, &maxExposureBias_, &step_); + if (ret_ != CAMERA_OK) { + OH_LOG_ERROR(LOG_APP, "GetExposureBiasRange failed."); + return CAMERA_INVALID_ARGUMENT; + } + ret_ = + OH_CaptureSession_SetExposureBias(captureSession_, exposureBiasValue); + OH_LOG_ERROR(LOG_APP, "OH_CaptureSession_SetExposureBias end."); + if (ret_ != CAMERA_OK) { + OH_LOG_ERROR(LOG_APP, "SetExposureBias failed."); + return CAMERA_INVALID_ARGUMENT; + } + ret_ = + OH_CaptureSession_GetExposureBias(captureSession_, &exposureBiasValue); + if (ret_ != CAMERA_OK) { + OH_LOG_ERROR(LOG_APP, "GetExposureBias failed."); + return CAMERA_INVALID_ARGUMENT; + } + OH_LOG_INFO(LOG_APP, "IsExposureBiasRange end."); + return ret_; +} + +// focus mode +Camera_ErrorCode NDKCamera::IsFocusModeSupported(uint32_t mode) { + Camera_FocusMode focusMode = static_cast(mode); + ret_ = OH_CaptureSession_IsFocusModeSupported(captureSession_, focusMode, + &isFocusModeSupported_); + if (ret_ != CAMERA_OK) { + OH_LOG_ERROR(LOG_APP, "IsFocusModeSupported failed."); + return CAMERA_INVALID_ARGUMENT; + } + return ret_; +} + +Camera_ErrorCode NDKCamera::IsFocusMode(uint32_t mode) { + OH_LOG_INFO(LOG_APP, "IsFocusMode start."); + Camera_FocusMode focusMode = static_cast(mode); + ret_ = OH_CaptureSession_IsFocusModeSupported(captureSession_, focusMode, + &isFocusModeSupported_); + if (ret_ != CAMERA_OK) { + OH_LOG_ERROR(LOG_APP, "IsFocusModeSupported failed."); + return CAMERA_INVALID_ARGUMENT; + } + ret_ = OH_CaptureSession_SetFocusMode(captureSession_, focusMode); + if (ret_ != CAMERA_OK) { + OH_LOG_ERROR(LOG_APP, "SetFocusMode failed."); + return CAMERA_INVALID_ARGUMENT; + } + ret_ = OH_CaptureSession_GetFocusMode(captureSession_, &focusMode); + if (ret_ != CAMERA_OK) { + OH_LOG_ERROR(LOG_APP, "GetFocusMode failed."); + return CAMERA_INVALID_ARGUMENT; + } + OH_LOG_INFO(LOG_APP, "IsFocusMode end."); + return ret_; +} + +Camera_ErrorCode NDKCamera::IsFocusPoint(float x, float y) { + OH_LOG_INFO(LOG_APP, "IsFocusPoint start."); + Camera_Point focusPoint; + focusPoint.x = x; + focusPoint.y = y; + ret_ = OH_CaptureSession_SetFocusPoint(captureSession_, focusPoint); + if (ret_ != CAMERA_OK) { + OH_LOG_ERROR(LOG_APP, "SetFocusPoint failed."); + return CAMERA_INVALID_ARGUMENT; + } + ret_ = OH_CaptureSession_GetFocusPoint(captureSession_, &focusPoint); + if (ret_ != CAMERA_OK) { + OH_LOG_ERROR(LOG_APP, "GetFocusPoint failed."); + return CAMERA_INVALID_ARGUMENT; + } + OH_LOG_INFO(LOG_APP, "IsFocusPoint end."); + return ret_; +} + +int32_t NDKCamera::GetVideoFrameWidth(void) { + videoProfile_ = cameraOutputCapability_->videoProfiles[0]; + if (videoProfile_ == nullptr) { + OH_LOG_ERROR(LOG_APP, "Get videoProfiles failed."); + return CAMERA_INVALID_ARGUMENT; + } + return videoProfile_->size.width; +} + +int32_t NDKCamera::GetVideoFrameHeight(void) { + videoProfile_ = cameraOutputCapability_->videoProfiles[0]; + if (videoProfile_ == nullptr) { + OH_LOG_ERROR(LOG_APP, "Get videoProfiles failed."); + return CAMERA_INVALID_ARGUMENT; + } + return videoProfile_->size.height; +} + +int32_t NDKCamera::GetVideoFrameRate(void) { + videoProfile_ = cameraOutputCapability_->videoProfiles[0]; + if (videoProfile_ == nullptr) { + OH_LOG_ERROR(LOG_APP, "Get videoProfiles failed."); + return CAMERA_INVALID_ARGUMENT; + } + return videoProfile_->range.min; +} + +Camera_ErrorCode NDKCamera::VideoOutputStop(void) { + OH_LOG_ERROR(LOG_APP, "enter VideoOutputStop."); + ret_ = OH_VideoOutput_Stop(videoOutput_); + if (ret_ != CAMERA_OK) { + OH_LOG_ERROR(LOG_APP, "VideoOutputStop failed."); + return CAMERA_INVALID_ARGUMENT; + } + return ret_; +} + +Camera_ErrorCode NDKCamera::VideoOutputRelease(void) { + OH_LOG_ERROR(LOG_APP, "enter VideoOutputRelease."); + ret_ = OH_VideoOutput_Release(videoOutput_); + if (ret_ != CAMERA_OK) { + OH_LOG_ERROR(LOG_APP, "VideoOutputRelease failed."); + return CAMERA_INVALID_ARGUMENT; + } + return ret_; +} + +Camera_ErrorCode NDKCamera::TakePicture(void) { + Camera_ErrorCode ret = CAMERA_OK; + ret = OH_PhotoOutput_Capture(photoOutput_); + OH_LOG_ERROR(LOG_APP, + "takePicture OH_PhotoOutput_Capture ret = %{public}d.", ret); + if (ret != CAMERA_OK) { + OH_LOG_ERROR(LOG_APP, "startPhoto failed."); + return CAMERA_INVALID_ARGUMENT; + } + return ret; +} + +Camera_ErrorCode NDKCamera::TakePictureWithPhotoSettings( + Camera_PhotoCaptureSetting photoSetting) { + Camera_ErrorCode ret = CAMERA_OK; + ret = OH_PhotoOutput_Capture_WithCaptureSetting(photoOutput_, photoSetting); + + OH_LOG_INFO(LOG_APP, + "TakePictureWithPhotoSettings get quality %{public}d, rotation " + "%{public}d, mirror %{public}d, " + "latitude, %f, longitude %f, altitude %f", + photoSetting.quality, photoSetting.rotation, + photoSetting.mirror, photoSetting.location->latitude, + photoSetting.location->longitude, + photoSetting.location->altitude); + + OH_LOG_ERROR(LOG_APP, + "takePicture TakePictureWithPhotoSettings ret = %{public}d.", + ret); + if (ret != CAMERA_OK) { + OH_LOG_ERROR(LOG_APP, "startPhoto failed."); + return CAMERA_INVALID_ARGUMENT; + } + return ret; +} + +// CameraManager Callback +void CameraManagerStatusCallback(Camera_Manager *cameraManager, + Camera_StatusInfo *status) { + OH_LOG_INFO(LOG_APP, "CameraManagerStatusCallback"); +} + +CameraManager_Callbacks *NDKCamera::GetCameraManagerListener(void) { + static CameraManager_Callbacks cameraManagerListener = { + .onCameraStatus = CameraManagerStatusCallback}; + return &cameraManagerListener; +} + +Camera_ErrorCode NDKCamera::CameraManagerRegisterCallback(void) { + ret_ = OH_CameraManager_RegisterCallback(cameraManager_, + GetCameraManagerListener()); + if (ret_ != CAMERA_OK) { + OH_LOG_ERROR(LOG_APP, "OH_CameraManager_RegisterCallback failed."); + } + return ret_; +} + +// CameraInput Callback +void OnCameraInputError(const Camera_Input *cameraInput, + Camera_ErrorCode errorCode) { + OH_LOG_INFO(LOG_APP, "OnCameraInput errorCode = %{public}d", errorCode); +} + +CameraInput_Callbacks *NDKCamera::GetCameraInputListener(void) { + static CameraInput_Callbacks cameraInputCallbacks = { + .onError = OnCameraInputError}; + return &cameraInputCallbacks; +} + +Camera_ErrorCode NDKCamera::CameraInputRegisterCallback(void) { + ret_ = + OH_CameraInput_RegisterCallback(cameraInput_, GetCameraInputListener()); + if (ret_ != CAMERA_OK) { + OH_LOG_ERROR(LOG_APP, "OH_CameraInput_RegisterCallback failed."); + } + return ret_; +} + +// PreviewOutput Callback +void PreviewOutputOnFrameStart(Camera_PreviewOutput *previewOutput) { + OH_LOG_INFO(LOG_APP, "PreviewOutputOnFrameStart"); +} + +void PreviewOutputOnFrameEnd(Camera_PreviewOutput *previewOutput, + int32_t frameCount) { + OH_LOG_INFO(LOG_APP, "PreviewOutput frameCount = %{public}d", frameCount); +} + +void PreviewOutputOnError(Camera_PreviewOutput *previewOutput, + Camera_ErrorCode errorCode) { + OH_LOG_INFO(LOG_APP, "PreviewOutput errorCode = %{public}d", errorCode); +} + +PreviewOutput_Callbacks *NDKCamera::GetPreviewOutputListener(void) { + static PreviewOutput_Callbacks previewOutputListener = { + .onFrameStart = PreviewOutputOnFrameStart, + .onFrameEnd = PreviewOutputOnFrameEnd, + .onError = PreviewOutputOnError}; + return &previewOutputListener; +} + +Camera_ErrorCode NDKCamera::PreviewOutputRegisterCallback(void) { + ret_ = OH_PreviewOutput_RegisterCallback(previewOutput_, + GetPreviewOutputListener()); + if (ret_ != CAMERA_OK) { + OH_LOG_ERROR(LOG_APP, "OH_PreviewOutput_RegisterCallback failed."); + } + return ret_; +} + +// PhotoOutput Callback +void PhotoOutputOnFrameStart(Camera_PhotoOutput *photoOutput) { + OH_LOG_INFO(LOG_APP, "PhotoOutputOnFrameStart"); +} + +void PhotoOutputOnFrameShutter(Camera_PhotoOutput *photoOutput, + Camera_FrameShutterInfo *info) { + OH_LOG_INFO(LOG_APP, "PhotoOutputOnFrameShutter"); +} + +void PhotoOutputOnFrameEnd(Camera_PhotoOutput *photoOutput, + int32_t frameCount) { + OH_LOG_INFO(LOG_APP, "PhotoOutput frameCount = %{public}d", frameCount); +} + +void PhotoOutputOnError(Camera_PhotoOutput *photoOutput, + Camera_ErrorCode errorCode) { + OH_LOG_INFO(LOG_APP, "PhotoOutput errorCode = %{public}d", errorCode); +} + +PhotoOutput_Callbacks *NDKCamera::GetPhotoOutputListener(void) { + static PhotoOutput_Callbacks photoOutputListener = { + .onFrameStart = PhotoOutputOnFrameStart, + .onFrameShutter = PhotoOutputOnFrameShutter, + .onFrameEnd = PhotoOutputOnFrameEnd, + .onError = PhotoOutputOnError}; + return &photoOutputListener; +} + +Camera_ErrorCode NDKCamera::PhotoOutputRegisterCallback(void) { + ret_ = + OH_PhotoOutput_RegisterCallback(photoOutput_, GetPhotoOutputListener()); + if (ret_ != CAMERA_OK) { + OH_LOG_ERROR(LOG_APP, "OH_PhotoOutput_RegisterCallback failed."); + } + return ret_; +} + +// VideoOutput Callback +void VideoOutputOnFrameStart(Camera_VideoOutput *videoOutput) { + OH_LOG_INFO(LOG_APP, "VideoOutputOnFrameStart"); +} + +void VideoOutputOnFrameEnd(Camera_VideoOutput *videoOutput, + int32_t frameCount) { + OH_LOG_INFO(LOG_APP, "VideoOutput frameCount = %{public}d", frameCount); +} + +void VideoOutputOnError(Camera_VideoOutput *videoOutput, + Camera_ErrorCode errorCode) { + OH_LOG_INFO(LOG_APP, "VideoOutput errorCode = %{public}d", errorCode); +} + +VideoOutput_Callbacks *NDKCamera::GetVideoOutputListener(void) { + static VideoOutput_Callbacks videoOutputListener = { + .onFrameStart = VideoOutputOnFrameStart, + .onFrameEnd = VideoOutputOnFrameEnd, + .onError = VideoOutputOnError}; + return &videoOutputListener; +} + +Camera_ErrorCode NDKCamera::VideoOutputRegisterCallback(void) { + ret_ = + OH_VideoOutput_RegisterCallback(videoOutput_, GetVideoOutputListener()); + if (ret_ != CAMERA_OK) { + OH_LOG_ERROR(LOG_APP, "OH_VideoOutput_RegisterCallback failed."); + } + return ret_; +} + +// Metadata Callback +void OnMetadataObjectAvailable(Camera_MetadataOutput *metadataOutput, + Camera_MetadataObject *metadataObject, + uint32_t size) { + OH_LOG_INFO(LOG_APP, "size = %{public}d", size); +} + +void OnMetadataOutputError(Camera_MetadataOutput *metadataOutput, + Camera_ErrorCode errorCode) { + OH_LOG_INFO(LOG_APP, "OnMetadataOutput errorCode = %{public}d", errorCode); +} + +MetadataOutput_Callbacks *NDKCamera::GetMetadataOutputListener(void) { + static MetadataOutput_Callbacks metadataOutputListener = { + .onMetadataObjectAvailable = OnMetadataObjectAvailable, + .onError = OnMetadataOutputError}; + return &metadataOutputListener; +} + +Camera_ErrorCode NDKCamera::MetadataOutputRegisterCallback(void) { + ret_ = OH_MetadataOutput_RegisterCallback(metadataOutput_, + GetMetadataOutputListener()); + if (ret_ != CAMERA_OK) { + OH_LOG_ERROR(LOG_APP, "OH_MetadataOutput_RegisterCallback failed."); + } + return ret_; +} + +// Session Callback +void CaptureSessionOnFocusStateChange(Camera_CaptureSession *session, + Camera_FocusState focusState) { + OH_LOG_INFO(LOG_APP, "CaptureSessionOnFocusStateChange"); +} + +void CaptureSessionOnError(Camera_CaptureSession *session, + Camera_ErrorCode errorCode) { + OH_LOG_INFO(LOG_APP, "CaptureSession errorCode = %{public}d", errorCode); +} + +CaptureSession_Callbacks *NDKCamera::GetCaptureSessionRegister(void) { + static CaptureSession_Callbacks captureSessionCallbacks = { + .onFocusStateChange = CaptureSessionOnFocusStateChange, + .onError = CaptureSessionOnError}; + return &captureSessionCallbacks; +} + +Camera_ErrorCode NDKCamera::CaptureSessionRegisterCallback(void) { + ret_ = OH_CaptureSession_RegisterCallback(captureSession_, + GetCaptureSessionRegister()); + if (ret_ != CAMERA_OK) { + OH_LOG_ERROR(LOG_APP, "OH_CaptureSession_RegisterCallback failed."); + } + return ret_; +} +} // namespace bmf_lite_demo \ No newline at end of file diff --git a/bmf_lite/ohos/entry/src/main/cpp/camera/camera_manager.h b/bmf_lite/ohos/entry/src/main/cpp/camera/camera_manager.h new file mode 100644 index 00000000..7acf56e2 --- /dev/null +++ b/bmf_lite/ohos/entry/src/main/cpp/camera/camera_manager.h @@ -0,0 +1,154 @@ +/* + * Copyright (c) 2023-2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef CAMERA_NDK_CAMERA_H +#define CAMERA_NDK_CAMERA_H + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "iostream" +#include + +#include "hilog/log.h" +#include "ohcamera/camera.h" +#include "ohcamera/camera_input.h" +#include "ohcamera/capture_session.h" +#include "ohcamera/photo_output.h" +#include "ohcamera/preview_output.h" +#include "ohcamera/video_output.h" +#include "napi/native_api.h" +#include "ohcamera/camera_manager.h" + +namespace bmf_lite_demo { +class NDKCamera { + public: + ~NDKCamera(); + NDKCamera(const char *surfaceId, uint32_t focusMode, + uint32_t cameraDeviceIndex); + + // static void Destroy() + // { + // if (NDKCamera::ndkCamera_ != nullptr) { + // delete NDKCamera::ndkCamera_; + // NDKCamera::ndkCamera_ = nullptr; + // } + // } + + Camera_ErrorCode CreateCameraInput(void); + Camera_ErrorCode CameraInputOpen(void); + Camera_ErrorCode CameraInputClose(void); + Camera_ErrorCode CameraInputRelease(void); + Camera_ErrorCode GetSupportedCameras(void); + Camera_ErrorCode GetSupportedOutputCapability(void); + Camera_ErrorCode CreatePreviewOutput(void); + Camera_ErrorCode CreatePhotoOutput(char *photoId); + Camera_ErrorCode CreateVideoOutput(const char *videoId); + Camera_ErrorCode CreateMetadataOutput(void); + Camera_ErrorCode IsCameraMuted(void); + Camera_ErrorCode PreviewOutputStop(void); + Camera_ErrorCode PreviewOutputRelease(void); + Camera_ErrorCode PhotoOutputRelease(void); + Camera_ErrorCode HasFlashFn(uint32_t mode); + Camera_ErrorCode IsVideoStabilizationModeSupportedFn(uint32_t mode); + Camera_ErrorCode setZoomRatioFn(uint32_t zoomRatio); + Camera_ErrorCode SessionFlowFn(void); + Camera_ErrorCode SessionBegin(void); + Camera_ErrorCode SessionCommitConfig(void); + Camera_ErrorCode SessionStart(void); + Camera_ErrorCode SessionStop(void); + Camera_ErrorCode StartVideo(char *videoId, char *photoId); + Camera_ErrorCode AddVideoOutput(void); + Camera_ErrorCode AddPhotoOutput(); + Camera_ErrorCode VideoOutputStart(void); + Camera_ErrorCode StartPhoto(char *mSurfaceId); + Camera_ErrorCode IsExposureModeSupportedFn(uint32_t mode); + Camera_ErrorCode IsMeteringPoint(int x, int y); + Camera_ErrorCode IsExposureBiasRange(int exposureBias); + Camera_ErrorCode IsFocusMode(uint32_t mode); + Camera_ErrorCode IsFocusPoint(float x, float y); + Camera_ErrorCode IsFocusModeSupported(uint32_t mode); + Camera_ErrorCode ReleaseCamera(void); + Camera_ErrorCode SessionRelease(void); + Camera_ErrorCode ReleaseSession(void); + int32_t GetVideoFrameWidth(void); + int32_t GetVideoFrameHeight(void); + int32_t GetVideoFrameRate(void); + Camera_ErrorCode VideoOutputStop(void); + Camera_ErrorCode VideoOutputRelease(void); + Camera_ErrorCode TakePicture(void); + Camera_ErrorCode + TakePictureWithPhotoSettings(Camera_PhotoCaptureSetting photoSetting); + // callback + Camera_ErrorCode CameraManagerRegisterCallback(void); + Camera_ErrorCode CameraInputRegisterCallback(void); + Camera_ErrorCode PreviewOutputRegisterCallback(void); + Camera_ErrorCode PhotoOutputRegisterCallback(void); + Camera_ErrorCode VideoOutputRegisterCallback(void); + Camera_ErrorCode MetadataOutputRegisterCallback(void); + Camera_ErrorCode CaptureSessionRegisterCallback(void); + + // Get callback + CameraManager_Callbacks *GetCameraManagerListener(void); + CameraInput_Callbacks *GetCameraInputListener(void); + PreviewOutput_Callbacks *GetPreviewOutputListener(void); + PhotoOutput_Callbacks *GetPhotoOutputListener(void); + VideoOutput_Callbacks *GetVideoOutputListener(void); + MetadataOutput_Callbacks *GetMetadataOutputListener(void); + CaptureSession_Callbacks *GetCaptureSessionRegister(void); + + private: + NDKCamera(const NDKCamera &) = delete; + NDKCamera &operator=(const NDKCamera &) = delete; + uint32_t cameraDeviceIndex_; + Camera_Manager *cameraManager_; + Camera_CaptureSession *captureSession_; + Camera_Device *cameras_; + uint32_t size_; + Camera_OutputCapability *cameraOutputCapability_; + const Camera_Profile *profile_; + const Camera_VideoProfile *videoProfile_; + Camera_PreviewOutput *previewOutput_ = nullptr; + Camera_PhotoOutput *photoOutput_ = nullptr; + Camera_VideoOutput *videoOutput_ = nullptr; + const Camera_MetadataObjectType *metaDataObjectType_; + Camera_MetadataOutput *metadataOutput_; + Camera_Input *cameraInput_; + bool *isCameraMuted_; + Camera_Position position_; + Camera_Type type_; + const char *previewSurfaceId_; + char *photoSurfaceId_; + Camera_ErrorCode ret_; + uint32_t takePictureTimes = 0; + Camera_ExposureMode exposureMode_; + bool isExposureModeSupported_; + bool isFocusModeSupported_; + float minExposureBias_; + float maxExposureBias_; + float step_; + uint32_t focusMode_; + + // static NDKCamera *ndkCamera_; + static std::mutex mtx_; + volatile bool valid_; +}; +} // namespace bmf_lite_demo +#endif // CAMERA_NDK_CAMERA_H diff --git a/bmf_lite/ohos/entry/src/main/cpp/common/algorithm_context.h b/bmf_lite/ohos/entry/src/main/cpp/common/algorithm_context.h new file mode 100644 index 00000000..d7dff7d6 --- /dev/null +++ b/bmf_lite/ohos/entry/src/main/cpp/common/algorithm_context.h @@ -0,0 +1,38 @@ +/* + * Copyright 2024 Babit Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef BMFLITE_ALGORITHM_CONTEXT_H +#define BMFLITE_ALGORITHM_CONTEXT_H + +#include + +namespace bmf_lite_demo { + +enum AlgorithmEnum { + SUPER_RESOLUTION, + DENOISE, +}; + +struct AlgorithmContext { + EGLDisplay egl_display; + EGLContext egl_context; + EGLSurface egl_surface; + + AlgorithmEnum algorithm; +}; + +} // namespace bmf_lite_demo + +#endif // BMFLITE_ALGORITHM_CONTEXT_H diff --git a/bmf_lite/ohos/entry/src/main/cpp/common/common.h b/bmf_lite/ohos/entry/src/main/cpp/common/common.h new file mode 100644 index 00000000..010178ac --- /dev/null +++ b/bmf_lite/ohos/entry/src/main/cpp/common/common.h @@ -0,0 +1,32 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef BMFLITE_COMMON_H +#define BMFLITE_COMMON_H + +#include +#include +#include +#include +#include + +namespace bmf_lite_demo { +/** + * Log print domain. + */ +const unsigned int LOG_PRINT_DOMAIN = 0xFF01; +constexpr char DEMO_NAME[] = "NativeRender"; +} // namespace bmf_lite_demo +#endif // BMFLITE_COMMON_H diff --git a/bmf_lite/ohos/entry/src/main/cpp/include/native_common.h b/bmf_lite/ohos/entry/src/main/cpp/include/native_common.h new file mode 100644 index 00000000..cd3d6403 --- /dev/null +++ b/bmf_lite/ohos/entry/src/main/cpp/include/native_common.h @@ -0,0 +1,90 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef BMF_LITE_NATIVE_COMMON_H_ +#define BMF_LITE_NATIVE_COMMON_H_ + +#define NAPI_RETVAL_NOTHING + +#define GET_AND_THROW_LAST_ERROR(env) \ + do { \ + const napi_extended_error_info *errorInfo = nullptr; \ + napi_get_last_error_info((env), &errorInfo); \ + bool isPending = false; \ + napi_is_exception_pending((env), &isPending); \ + if (!isPending && errorInfo != nullptr) { \ + const char *errorMessage = errorInfo->error_message != nullptr \ + ? errorInfo->error_message \ + : "empty error message"; \ + napi_throw_error((env), nullptr, errorMessage); \ + } \ + } while (0) + +#define NAPI_ASSERT_BASE(env, assertion, message, retVal) \ + do { \ + if (!(assertion)) { \ + napi_throw_error((env), nullptr, \ + "assertion (" #assertion ") failed: " message); \ + return retVal; \ + } \ + } while (0) + +#define NAPI_ASSERT(env, assertion, message) \ + NAPI_ASSERT_BASE(env, assertion, message, nullptr) + +#define NAPI_ASSERT_RETURN_VOID(env, assertion, message) \ + NAPI_ASSERT_BASE(env, assertion, message, NAPI_RETVAL_NOTHING) + +#define NAPI_CALL_BASE(env, theCall, retVal) \ + do { \ + if ((theCall) != napi_ok) { \ + GET_AND_THROW_LAST_ERROR((env)); \ + return retVal; \ + } \ + } while (0) + +#define NAPI_CALL(env, theCall) NAPI_CALL_BASE(env, theCall, nullptr) + +#define NAPI_CALL_RETURN_VOID(env, theCall) \ + NAPI_CALL_BASE(env, theCall, NAPI_RETVAL_NOTHING) + +#define DECLARE_NAPI_PROPERTY(name, val) \ + {(name), nullptr, nullptr, nullptr, nullptr, val, napi_default, nullptr} + +#define DECLARE_NAPI_STATIC_PROPERTY(name, val) \ + {(name), nullptr, nullptr, nullptr, nullptr, val, napi_static, nullptr} + +#define DECLARE_NAPI_FUNCTION(name, func) \ + {(name), nullptr, (func), nullptr, nullptr, nullptr, napi_default, nullptr} + +#define DECLARE_NAPI_FUNCTION_WITH_DATA(name, func, data) \ + {(name), nullptr, (func), nullptr, nullptr, nullptr, napi_default, data} + +#define DECLARE_NAPI_STATIC_FUNCTION(name, func) \ + {(name), nullptr, (func), nullptr, nullptr, nullptr, napi_static, nullptr} + +#define DECLARE_NAPI_GETTER(name, getter) \ + {(name), nullptr, nullptr, (getter), \ + nullptr, nullptr, napi_default, nullptr} + +#define DECLARE_NAPI_SETTER(name, setter) \ + {(name), nullptr, nullptr, nullptr, \ + (setter), nullptr, napi_default, nullptr} + +#define DECLARE_NAPI_GETTER_SETTER(name, getter, setter) \ + {(name), nullptr, nullptr, (getter), \ + (setter), nullptr, napi_default, nullptr} + +#endif /* BMF_LITE_NATIVE_COMMON_H_ */ diff --git a/bmf_lite/ohos/entry/src/main/cpp/manager/plugin_manager.cpp b/bmf_lite/ohos/entry/src/main/cpp/manager/plugin_manager.cpp new file mode 100644 index 00000000..4ff61756 --- /dev/null +++ b/bmf_lite/ohos/entry/src/main/cpp/manager/plugin_manager.cpp @@ -0,0 +1,122 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "plugin_manager.h" + +#include +#include +#include +#include +#include + +#include "../common/common.h" + +namespace bmf_lite_demo { + +PluginManager PluginManager::pluginManager_; + +PluginManager::~PluginManager() { + OH_LOG_Print(LOG_APP, LOG_ERROR, LOG_PRINT_DOMAIN, "Callback", + "~PluginManager"); + for (auto iter = nativeXComponentMap_.begin(); + iter != nativeXComponentMap_.end(); ++iter) { + if (iter->second != nullptr) { + iter->second = nullptr; + } + } + nativeXComponentMap_.clear(); + + for (auto iter = pluginRenderMap_.begin(); iter != pluginRenderMap_.end(); + ++iter) { + if (iter->second != nullptr) { + delete iter->second; + iter->second = nullptr; + } + } + pluginRenderMap_.clear(); +} + +void PluginManager::Export(napi_env env, napi_value exports) { + if ((env == nullptr) || (exports == nullptr)) { + OH_LOG_Print(LOG_APP, LOG_ERROR, LOG_PRINT_DOMAIN, "PluginManager", + "Export: env or exports is null"); + return; + } + + napi_value exportInstance = nullptr; + if (napi_get_named_property(env, exports, OH_NATIVE_XCOMPONENT_OBJ, + &exportInstance) != napi_ok) { + OH_LOG_Print(LOG_APP, LOG_ERROR, LOG_PRINT_DOMAIN, "PluginManager", + "Export: napi_get_named_property fail"); + return; + } + + OH_NativeXComponent *nativeXComponent = nullptr; + if (napi_unwrap(env, exportInstance, + reinterpret_cast(&nativeXComponent)) != napi_ok) { + OH_LOG_Print(LOG_APP, LOG_ERROR, LOG_PRINT_DOMAIN, "PluginManager", + "Export: napi_unwrap fail"); + return; + } + + char idStr[OH_XCOMPONENT_ID_LEN_MAX + 1] = {'\0'}; + uint64_t idSize = OH_XCOMPONENT_ID_LEN_MAX + 1; + if (OH_NativeXComponent_GetXComponentId(nativeXComponent, idStr, &idSize) != + OH_NATIVEXCOMPONENT_RESULT_SUCCESS) { + OH_LOG_Print(LOG_APP, LOG_ERROR, LOG_PRINT_DOMAIN, "PluginManager", + "Export: OH_NativeXComponent_GetXComponentId fail"); + return; + } + + std::string id(idStr); + auto context = PluginManager::GetInstance(); + if ((context != nullptr) && (nativeXComponent != nullptr)) { + context->SetNativeXComponent(id, nativeXComponent); + auto render = context->GetRender(id); + if (render != nullptr) { + render->RegisterCallback(nativeXComponent); + render->Export(env, exports); + } + } +} + +void PluginManager::SetNativeXComponent(std::string &id, + OH_NativeXComponent *nativeXComponent) { + if (nativeXComponent == nullptr) { + return; + } + + if (nativeXComponentMap_.find(id) == nativeXComponentMap_.end()) { + nativeXComponentMap_[id] = nativeXComponent; + return; + } + + if (nativeXComponentMap_[id] != nativeXComponent) { + OH_NativeXComponent *tmp = nativeXComponentMap_[id]; + tmp = nullptr; + nativeXComponentMap_[id] = nativeXComponent; + } +} + +PluginRender *PluginManager::GetRender(std::string &id) { + if (pluginRenderMap_.find(id) == pluginRenderMap_.end()) { + PluginRender *instance = PluginRender::GetInstance(id); + pluginRenderMap_[id] = instance; + return instance; + } + + return pluginRenderMap_[id]; +} +} // namespace bmf_lite_demo diff --git a/bmf_lite/ohos/entry/src/main/cpp/manager/plugin_manager.h b/bmf_lite/ohos/entry/src/main/cpp/manager/plugin_manager.h new file mode 100644 index 00000000..3b15c1a8 --- /dev/null +++ b/bmf_lite/ohos/entry/src/main/cpp/manager/plugin_manager.h @@ -0,0 +1,48 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef BMFLITE_PLUGIN_MANAGER_H +#define BMFLITE_PLUGIN_MANAGER_H + +#include +#include +#include +#include +#include +#include + +#include "../render/plugin_render.h" + +namespace bmf_lite_demo { +class PluginManager { + public: + ~PluginManager(); + + static PluginManager *GetInstance() { + return &PluginManager::pluginManager_; + } + + void SetNativeXComponent(std::string &id, + OH_NativeXComponent *nativeXComponent); + PluginRender *GetRender(std::string &id); + void Export(napi_env env, napi_value exports); + + private: + static PluginManager pluginManager_; + + std::unordered_map nativeXComponentMap_; + std::unordered_map pluginRenderMap_; +}; +} // namespace bmf_lite_demo +#endif // BMFLITE_PLUGIN_MANAGER_H diff --git a/bmf_lite/ohos/entry/src/main/cpp/native_render_init.cpp b/bmf_lite/ohos/entry/src/main/cpp/native_render_init.cpp new file mode 100644 index 00000000..b42f1046 --- /dev/null +++ b/bmf_lite/ohos/entry/src/main/cpp/native_render_init.cpp @@ -0,0 +1,38 @@ +/* + * Copyright 2024 Babit Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#include "napi/native_api.h" +#include "manager/plugin_manager.h" + +EXTERN_C_START +static napi_value Init(napi_env env, napi_value exports) { + bmf_lite_demo::PluginManager::GetInstance()->Export(env, exports); + return exports; +} +EXTERN_C_END + +static napi_module nativerender_module = { + .nm_version = 1, + .nm_flags = 0, + .nm_filename = nullptr, + .nm_register_func = Init, + .nm_modname = "nativerender", + .nm_priv = ((void *)0), + .reserved = {0}, +}; + +extern "C" __attribute__((constructor)) void RegisterNativerenderModule(void) { + napi_module_register(&nativerender_module); +} diff --git a/bmf_lite/ohos/entry/src/main/cpp/player/player_manager.cpp b/bmf_lite/ohos/entry/src/main/cpp/player/player_manager.cpp new file mode 100644 index 00000000..a67c10ff --- /dev/null +++ b/bmf_lite/ohos/entry/src/main/cpp/player/player_manager.cpp @@ -0,0 +1,133 @@ +/* + * Copyright 2024 Babit Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#include "player_manager.h" +#include "common.h" +#include + +namespace bmf_lite_demo { + +void OnPlayerInfo(OH_AVPlayer *player, AVPlayerOnInfoType type, int32_t extra) { + // OH_LOG_Print(LOG_APP, LOG_INFO, LOG_PRINT_DOMAIN, "NDKPlayer", + // "AVPlayerOnInfoType %{public}d, extra %{public}d.", type, extra); +} + +void OnPlayerError(OH_AVPlayer *player, int32_t errorCode, + const char *errorMsg) { + OH_LOG_Print(LOG_APP, LOG_ERROR, LOG_PRINT_DOMAIN, "NDKPlayer", + "OnPlayerError errorCode %{public}d, extra %{public}s.", + errorCode, errorMsg); +} + +NDKPlayer::NDKPlayer(OHNativeWindow *window) { + valid_ = false; + ReleasePlayer(); + player_ = OH_AVPlayer_Create(); + if (player_ == nullptr) { + OH_LOG_ERROR(LOG_APP, "OH_AVPlayer_Create failed."); + return; + } + window_ = window; + playerCallback_.onInfo = OnPlayerInfo; + playerCallback_.onError = OnPlayerError; + ret_ = OH_AVPlayer_SetPlayerCallback(player_, playerCallback_); + if (ret_ == OH_AVErrCode::AV_ERR_OK) { + valid_ = true; + } +} + +NDKPlayer::~NDKPlayer() { + if (valid_ && player_ != nullptr) { + ret_ = ReleasePlayer(); + if (ret_ == OH_AVErrCode::AV_ERR_OK) { + OH_LOG_INFO(LOG_APP, "OH_AVPlayer_Release success."); + } else { + OH_LOG_ERROR(LOG_APP, "OH_AVPlayer_Release failed, %d", ret_); + } + } + valid_ = false; +} + +OH_AVErrCode NDKPlayer::SetFdSource(int32_t fd, int64_t offset, int64_t size) { + if (valid_ && player_ != nullptr) { + ret_ = OH_AVPlayer_SetFDSource(player_, fd, offset, size); + if (ret_ == OH_AVErrCode::AV_ERR_OK) { + OH_LOG_INFO(LOG_APP, "OH_AVPlayer_SetFDSource success."); + } else { + OH_LOG_ERROR(LOG_APP, "OH_AVPlayer_SetFDSource failed, %d", ret_); + } + ret_ = OH_AVPlayer_SetVideoSurface(player_, window_); + if (ret_ == OH_AVErrCode::AV_ERR_OK) { + OH_LOG_INFO(LOG_APP, "OH_AVPlayer_SetVideoSurface success."); + } else { + OH_LOG_ERROR(LOG_APP, + "OH_AVPlayer_SetVideoSurface failed, %{public}d", + ret_); + } + ret_ = OH_AVPlayer_Prepare(player_); + if (ret_ == OH_AVErrCode::AV_ERR_OK) { + OH_LOG_INFO(LOG_APP, "OH_AVPlayer_Prepare success."); + } else { + OH_LOG_ERROR(LOG_APP, "OH_AVPlayer_Prepare failed, %d", ret_); + } + OH_AVPlayer_SetLooping(player_, true); + ret_ = OH_AVPlayer_Play(player_); + if (ret_ == OH_AVErrCode::AV_ERR_OK) { + OH_LOG_INFO(LOG_APP, "OH_AVPlayer_Play success."); + } else { + OH_LOG_ERROR(LOG_APP, "OH_AVPlayer_Play failed, %d", ret_); + } + } + return ret_; +} + +OH_AVErrCode NDKPlayer::Play() { + if (valid_ && player_ != nullptr) { + ret_ = OH_AVPlayer_Play(player_); + if (ret_ == OH_AVErrCode::AV_ERR_OK) { + OH_LOG_INFO(LOG_APP, "OH_AVPlayer_Start success."); + } else { + OH_LOG_ERROR(LOG_APP, "OH_AVPlayer_Start failed, %d", ret_); + } + } + return ret_; +} + +OH_AVErrCode NDKPlayer::Stop() { + if (valid_ && player_ != nullptr) { + ret_ = OH_AVPlayer_Stop(player_); + if (ret_ == OH_AVErrCode::AV_ERR_OK) { + OH_LOG_INFO(LOG_APP, "OH_AVPlayer_Stop success."); + } else { + OH_LOG_ERROR(LOG_APP, "OH_AVPlayer_Stop failed, %d", ret_); + } + } + return ret_; +} + +OH_AVErrCode NDKPlayer::ReleasePlayer() { + if (valid_ && player_ != nullptr) { + ret_ = OH_AVPlayer_Release(player_); + if (ret_ == OH_AVErrCode::AV_ERR_OK) { + OH_LOG_INFO(LOG_APP, "OH_AVPlayer_Release success."); + } else { + OH_LOG_ERROR(LOG_APP, "OH_AVPlayer_Release failed, %{public}d", + ret_); + } + } + return ret_; +} + +} // namespace bmf_lite_demo \ No newline at end of file diff --git a/bmf_lite/ohos/entry/src/main/cpp/player/player_manager.h b/bmf_lite/ohos/entry/src/main/cpp/player/player_manager.h new file mode 100644 index 00000000..c995768c --- /dev/null +++ b/bmf_lite/ohos/entry/src/main/cpp/player/player_manager.h @@ -0,0 +1,60 @@ +/* + * Copyright 2024 Babit Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef BMFLITE_PLAYER_MANAGER_H +#define BMFLITE_PLAYER_MANAGER_H + +#include +#include +#include + +#include "hilog/log.h" +#include + +namespace bmf_lite_demo { + +class NDKPlayer { + public: + NDKPlayer(OHNativeWindow *window); + ~NDKPlayer(); + + // static void Destroy() { + // if (ndkPlayer_ != nullptr) { + // delete ndkPlayer_; + // ndkPlayer_ = nullptr; + // } + // } + + OH_AVErrCode SetFdSource(int32_t fd, int64_t offset, int64_t size); + OH_AVErrCode Play(); + OH_AVErrCode Stop(); + OH_AVErrCode ReleasePlayer(); + + private: + OH_AVPlayer *player_; + + OH_AVErrCode ret_; + + OHNativeWindow *window_; + AVPlayerCallback playerCallback_; + + static NDKPlayer *ndkPlayer_; + static std::mutex mtx_; + volatile bool valid_; +}; + +} // namespace bmf_lite_demo + +#endif // BMFLITE_PLAYER_MANAGER_H diff --git a/bmf_lite/ohos/entry/src/main/cpp/render/egl_render_context.cpp b/bmf_lite/ohos/entry/src/main/cpp/render/egl_render_context.cpp new file mode 100644 index 00000000..ce493660 --- /dev/null +++ b/bmf_lite/ohos/entry/src/main/cpp/render/egl_render_context.cpp @@ -0,0 +1,327 @@ +/* + * Copyright 2024 Babit Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#include "egl_render_context.h" + +#include + +#include "common/common.h" +#include + +namespace bmf_lite_demo { +bool CheckEglExtension(const char *extensions, const char *extension) { + size_t extLen = strlen(extension); + const char *end = extensions + strlen(extensions); + + while (extensions < end) { + size_t n = 0; + /* Skip whitespaces, if any */ + if (*extensions == ' ') { + extensions++; + continue; + } + + n = strcspn(extensions, " "); + /* Compare strings */ + if (n == extLen && strncmp(extension, extensions, n) == 0) { + return true; /* Found */ + } + extensions += n; + } + /* Not found */ + return false; +} + +#define CASE_EGL_STR(value) \ + case value: \ + return #value +const char *GetEglErrorString() { + EGLint error = eglGetError(); + switch (error) { + CASE_EGL_STR(EGL_SUCCESS); + CASE_EGL_STR(EGL_NOT_INITIALIZED); + CASE_EGL_STR(EGL_BAD_ACCESS); + CASE_EGL_STR(EGL_BAD_ALLOC); + CASE_EGL_STR(EGL_BAD_ATTRIBUTE); + CASE_EGL_STR(EGL_BAD_CONTEXT); + CASE_EGL_STR(EGL_BAD_CONFIG); + CASE_EGL_STR(EGL_BAD_CURRENT_SURFACE); + CASE_EGL_STR(EGL_BAD_DISPLAY); + CASE_EGL_STR(EGL_BAD_SURFACE); + CASE_EGL_STR(EGL_BAD_MATCH); + CASE_EGL_STR(EGL_BAD_PARAMETER); + CASE_EGL_STR(EGL_BAD_NATIVE_PIXMAP); + CASE_EGL_STR(EGL_BAD_NATIVE_WINDOW); + CASE_EGL_STR(EGL_CONTEXT_LOST); + default: + return "Unknow Error"; + } +} +#undef CASE_EGL_STR + +constexpr const char EGL_KHR_SURFACELESS_CONTEXT[] = + "EGL_KHR_surfaceless_context"; + +using GetPlatformDisplayExt = PFNEGLGETPLATFORMDISPLAYEXTPROC; +constexpr const char *EGL_GET_PLATFORM_DISPLAY_EXT = "eglGetPlatformDisplayEXT"; +// 获取当前的显示设备 +static EGLDisplay GetPlatformEglDisplay(EGLenum platform, void *native_display, + const EGLint *attrib_list) { + return eglGetDisplay((EGLNativeDisplayType)native_display); +} + +EglRenderContext::EglRenderContext() {} + +EglRenderContext::~EglRenderContext() noexcept { + if (eglDisplay_ == EGL_NO_DISPLAY) { + return; + } + + eglDestroyContext(eglDisplay_, eglContext_); + eglMakeCurrent(eglDisplay_, EGL_NO_SURFACE, EGL_NO_SURFACE, EGL_NO_CONTEXT); + eglTerminate(eglDisplay_); + eglReleaseThread(); + + eglDisplay_ = EGL_NO_DISPLAY; + eglContext_ = EGL_NO_CONTEXT; +} + +bool EglRenderContext::Init() { + if (IsEglContextReady()) { + return true; + } + + OH_LOG_Print(LOG_APP, LOG_DEBUG, LOG_PRINT_DOMAIN, "EglRenderContext", + "EglRenderContext::Init begin."); + eglDisplay_ = + GetPlatformEglDisplay(EGL_PLATFORM_OHOS_KHR, EGL_DEFAULT_DISPLAY, NULL); + if (eglDisplay_ == EGL_NO_DISPLAY) { + OH_LOG_Print(LOG_APP, LOG_ERROR, LOG_PRINT_DOMAIN, "EglRenderContext", + "EglRenderContext::Init: failed to create eglDisplay, " + "error: %{public}s.", + GetEglErrorString()); + return false; + } + + EGLint major, minor; + if (eglInitialize(eglDisplay_, &major, &minor) == EGL_FALSE) { + OH_LOG_Print(LOG_APP, LOG_ERROR, LOG_PRINT_DOMAIN, "EglRenderContext", + "EglRenderContext::Init: Failed to initialize EGLDisplay, " + "error: %{public}s.", + GetEglErrorString()); + } + SetupEglExtensions(); + + if (eglBindAPI(EGL_OPENGL_ES_API) == EGL_FALSE) { + OH_LOG_Print(LOG_APP, LOG_ERROR, LOG_PRINT_DOMAIN, "EglRenderContext", + "EglRenderContext::Init: Failed to bind OpenGL ES API, " + "error: %{public}s.", + GetEglErrorString()); + return false; + } + EGLint count; + EGLint configAttribs[] = {EGL_SURFACE_TYPE, + EGL_WINDOW_BIT, + EGL_RED_SIZE, + 8, + EGL_GREEN_SIZE, + 8, + EGL_BLUE_SIZE, + 8, + EGL_ALPHA_SIZE, + 8, + EGL_RENDERABLE_TYPE, + EGL_OPENGL_ES3_BIT, + EGL_NONE}; + if (eglChooseConfig(eglDisplay_, configAttribs, &config_, 1, &count) == + EGL_FALSE) { + OH_LOG_Print(LOG_APP, LOG_ERROR, LOG_PRINT_DOMAIN, "EglRenderContext", + "EglRenderContext::Init: Failed to bind choose config, " + "error: %{public}s.", + GetEglErrorString()); + return false; + } + const EGLint contextAttribs[] = {EGL_CONTEXT_CLIENT_VERSION, 3, EGL_NONE}; + eglContext_ = + eglCreateContext(eglDisplay_, config_, EGL_NO_CONTEXT, contextAttribs); + if (eglContext_ == EGL_NO_CONTEXT) { + OH_LOG_Print(LOG_APP, LOG_ERROR, LOG_PRINT_DOMAIN, "EglRenderContext", + "EglRenderContext::Init: Failed to bind create context, " + "error: %{public}s.", + GetEglErrorString()); + return false; + } + + OH_LOG_Print(LOG_APP, LOG_DEBUG, LOG_PRINT_DOMAIN, "EglRenderContext", + "EglRenderContext::Init end."); + return true; +} + +void EglRenderContext::SetupEglExtensions() { + const char *extensions = eglQueryString(eglDisplay_, EGL_EXTENSIONS); + if (extensions == nullptr) { + OH_LOG_Print(LOG_APP, LOG_INFO, LOG_PRINT_DOMAIN, "EglRenderContext", + "EglRenderContext::SetupEglExtensions: not extensions."); + return; + } + OH_LOG_Print(LOG_APP, LOG_INFO, LOG_PRINT_DOMAIN, "EglRenderContext", + "EglRenderContext extensions: %{public}s.", extensions); + hasEglSurfacelessContext_ = + CheckEglExtension(extensions, EGL_KHR_SURFACELESS_CONTEXT); + + // now WGR product's EGL support these extensions but they are not in the + // EGL_EXTENSIONS lists. + hasEglBufferAge_ = true; + hasEglPartialUpdate_ = true; + eglSetDamageRegionFunc_ = reinterpret_cast( + eglGetProcAddress("eglSetDamageRegionKHR")); + eglSwapBuffersWithDamageFunc_ = + reinterpret_cast( + eglGetProcAddress("eglSwapBuffersWithDamageKHR")); + + // for shm optimize + eglCreateImageFunc_ = reinterpret_cast( + eglGetProcAddress("eglCreateImageKHR")); + eglImageTargetTexture2DOESFunc_ = + reinterpret_cast( + eglGetProcAddress("glEGLImageTargetTexture2DOES")); +} + +EGLint EglRenderContext::QueryBufferAge(EGLSurface surface) const { + if (!hasEglBufferAge_) { + OH_LOG_Print(LOG_APP, LOG_WARN, LOG_PRINT_DOMAIN, "EglRenderContext", + "EglRenderContext::QueryBufferAge: not supported."); + return 0; + } + + EGLint bufferAge = 0; + auto ret = + eglQuerySurface(eglDisplay_, surface, EGL_BUFFER_AGE_EXT, &bufferAge); + if (ret == EGL_FALSE) { + EGLint surfaceId = -1; + eglQuerySurface(eglDisplay_, surface, EGL_CONFIG_ID, &surfaceId); + OH_LOG_Print(LOG_APP, LOG_ERROR, LOG_PRINT_DOMAIN, "EglRenderContext", + "EglRenderContext::QueryBufferAge: Failed to query on " + "EGLSurface %{public}d, error is %{public}s.", + surfaceId, GetEglErrorString()); + return 0; + } + return bufferAge; +} + +void EglRenderContext::SetDamageRegion(EGLSurface surface, EGLint *damages, + EGLint size) { + if (eglSetDamageRegionFunc_ == nullptr) { + OH_LOG_Print(LOG_APP, LOG_WARN, LOG_PRINT_DOMAIN, "EglRenderContext", + "EglRenderContext::SetDamageRegion: not supported."); + return; + } + + auto ret = eglSetDamageRegionFunc_(eglDisplay_, surface, damages, size); + if (ret == EGL_FALSE) { + EGLint surfaceId = -1; + eglQuerySurface(eglDisplay_, surface, EGL_CONFIG_ID, &surfaceId); + OH_LOG_Print(LOG_APP, LOG_ERROR, LOG_PRINT_DOMAIN, "EglRenderContext", + "EglRenderContext::SetDamageRegion: Failed to SetDamage " + "on EGLSurface %{public}d, error is %{public}s.", + surfaceId, GetEglErrorString()); + } +} + +void EglRenderContext::MakeCurrent(EGLSurface surface) const { + EGLSurface currSurface = surface; + if (!eglMakeCurrent(eglDisplay_, currSurface, currSurface, eglContext_)) { + EGLint surfaceId = -1; + eglQuerySurface(eglDisplay_, surface, EGL_CONFIG_ID, &surfaceId); + OH_LOG_Print(LOG_APP, LOG_ERROR, LOG_PRINT_DOMAIN, "EglRenderContext", + "EglRenderContext::MakeCurrent: Failed to make current on " + "EGLSurface %{public}d, error is %{public}s.", + surfaceId, GetEglErrorString()); + } +} + +void EglRenderContext::SwapBuffers(EGLSurface surface) const { + EGLBoolean ret = eglSwapBuffers(eglDisplay_, surface); + if (ret == EGL_FALSE) { + EGLint surfaceId = -1; + eglQuerySurface(eglDisplay_, surface, EGL_CONFIG_ID, &surfaceId); + OH_LOG_Print(LOG_APP, LOG_ERROR, LOG_PRINT_DOMAIN, "EglRenderContext", + "EglRenderContext::SwapBuffers: Failed to SwapBuffers on " + "EGLSurface %{public}d, error is %{public}s.", + surfaceId, GetEglErrorString()); + } +} + +void EglRenderContext::SwapBuffersWithDamage(EGLSurface surface, + const EGLint *damages, + EGLint size) { + EGLBoolean ret = GL_FALSE; + + if (eglSwapBuffersWithDamageFunc_ == nullptr) { + OH_LOG_Print(LOG_APP, LOG_WARN, LOG_PRINT_DOMAIN, "EglRenderContext", + "EglRenderContext::SwapBuffersWithDamage: not supported, " + "use eglSwapBuffers"); + ret = eglSwapBuffers(eglDisplay_, surface); + } else { + ret = + eglSwapBuffersWithDamageFunc_(eglDisplay_, surface, damages, size); + } + if (ret == EGL_FALSE) { + EGLint surfaceId = -1; + eglQuerySurface(eglDisplay_, surface, EGL_CONFIG_ID, &surfaceId); + OH_LOG_Print(LOG_APP, LOG_ERROR, LOG_PRINT_DOMAIN, "EglRenderContext", + "EglRenderContext::SwapBuffersWithDamage: Failed on " + "EGLSurface %{public}d, error is %{public}s.", + surfaceId, GetEglErrorString()); + } +} + +void EglRenderContext::DestroyEglSurface(EGLSurface surface) { + if (!eglDestroySurface(eglDisplay_, surface)) { + EGLint surfaceId = -1; + eglQuerySurface(eglDisplay_, surface, EGL_CONFIG_ID, &surfaceId); + OH_LOG_Print( + LOG_APP, LOG_ERROR, LOG_PRINT_DOMAIN, "EglRenderContext", + "EglRenderContext::DestroyEglWindowSurface: Failed to " + "DestroySurface on EGLSurface %{public}d, error is %{public}s.", + surfaceId, GetEglErrorString()); + } +} + +EGLSurface +EglRenderContext::CreateEglSurface(EGLNativeWindowType eglNativeWindow, + const EGLint *attribList) { + if (!IsEglContextReady()) { + OH_LOG_Print(LOG_APP, LOG_ERROR, LOG_PRINT_DOMAIN, "EglRenderContext", + "EglRenderContext::CreateEglWindowSurface: EGL context " + "has not initialized"); + return EGL_NO_SURFACE; + } + + eglMakeCurrent(eglDisplay_, EGL_NO_SURFACE, EGL_NO_SURFACE, EGL_NO_CONTEXT); + + EGLSurface surface = eglCreateWindowSurface(eglDisplay_, config_, + eglNativeWindow, attribList); + if (surface == EGL_NO_SURFACE) { + OH_LOG_Print(LOG_APP, LOG_ERROR, LOG_PRINT_DOMAIN, "EglRenderContext", + "EglRenderContext::CreateEglWindowSurface: Failed to " + "create eglSurface, error is %{public}s.", + GetEglErrorString()); + return EGL_NO_SURFACE; + } + + return surface; +} +} // namespace bmf_lite_demo diff --git a/bmf_lite/ohos/entry/src/main/cpp/render/egl_render_context.h b/bmf_lite/ohos/entry/src/main/cpp/render/egl_render_context.h new file mode 100644 index 00000000..775a2ca5 --- /dev/null +++ b/bmf_lite/ohos/entry/src/main/cpp/render/egl_render_context.h @@ -0,0 +1,73 @@ +/* + * Copyright 2024 Babit Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef NATIVEIMAGEDEMO_EGL_RENDER_CONTEXT_H +#define NATIVEIMAGEDEMO_EGL_RENDER_CONTEXT_H + +#include +#include +#include +#include + +namespace bmf_lite_demo { +class EglRenderContext { + public: + EglRenderContext(); + ~EglRenderContext() noexcept; + + // disallow copy and move + EglRenderContext(const EglRenderContext &) = delete; + void operator==(const EglRenderContext &) = delete; + EglRenderContext(const EglRenderContext &&) = delete; + void operator==(const EglRenderContext &&) = delete; + + bool Init(); + bool IsEglContextReady() const { return eglContext_ != EGL_NO_CONTEXT; } + + EGLDisplay GetEGLDisplay() const { return eglDisplay_; } + EGLContext GetEGLContext() const { return eglContext_; } + + EGLSurface CreateEglSurface(EGLNativeWindowType surface, + const EGLint *attribList = nullptr); + void DestroyEglSurface(EGLSurface surface); + + void MakeCurrent(EGLSurface surface) const; + void SwapBuffers(EGLSurface surface) const; + + // 局部刷新可选接口 + EGLint QueryBufferAge(EGLSurface surface) const; + void SetDamageRegion(EGLSurface surface, EGLint *damages, EGLint size); + void SwapBuffersWithDamage(EGLSurface surface, const EGLint *damages, + EGLint size); + + private: + void SetupEglExtensions(); + + protected: + EGLDisplay eglDisplay_ = EGL_NO_DISPLAY; + EGLContext eglContext_ = EGL_NO_CONTEXT; + EGLConfig config_ = nullptr; + + bool hasEglSurfacelessContext_ = false; + bool hasEglBufferAge_ = false; + bool hasEglPartialUpdate_ = false; + PFNEGLSETDAMAGEREGIONKHRPROC eglSetDamageRegionFunc_ = nullptr; + PFNEGLSWAPBUFFERSWITHDAMAGEKHRPROC eglSwapBuffersWithDamageFunc_ = nullptr; + PFNEGLCREATEIMAGEKHRPROC eglCreateImageFunc_ = nullptr; + PFNGLEGLIMAGETARGETTEXTURE2DOESPROC eglImageTargetTexture2DOESFunc_ = + nullptr; +}; +} // namespace bmf_lite_demo +#endif // NATIVEIMAGEDEMO_EGL_RENDER_CONTEXT_H diff --git a/bmf_lite/ohos/entry/src/main/cpp/render/oes_to_2d_renderer.cpp b/bmf_lite/ohos/entry/src/main/cpp/render/oes_to_2d_renderer.cpp new file mode 100644 index 00000000..4b882be1 --- /dev/null +++ b/bmf_lite/ohos/entry/src/main/cpp/render/oes_to_2d_renderer.cpp @@ -0,0 +1,153 @@ +/* + * Copyright 2024 Babit Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#include "oes_to_2d_renderer.h" + +#include +#include + +namespace bmf_lite_demo { + +namespace oes_shader { +std::string vertexShader = R"delimiter( +attribute vec3 position; +attribute vec2 texCoord; + +varying vec2 vTexCoord; + +uniform mat4 matTransform; + +void main() +{ + gl_Position = matTransform * vec4(position, 1.0); + vTexCoord = texCoord; +} +)delimiter"; + +std::string fragmentShader = R"delimiter( +#extension GL_OES_EGL_image_external : require +precision highp float; +varying vec2 vTexCoord; +uniform samplerExternalOES texture; + +void main() +{ + gl_FragColor = texture2D(texture, vTexCoord).rgba; +} +)delimiter"; + +GLfloat vertices[] = { + // positions // texture coords + -1.0f, 1.0f, 0.0f, 0.0f, 1.0f, // top left + -1.0f, -1.0f, 0.0f, 0.0f, 0.0f, // bottom left + 1.0f, -1.0f, 0.0f, 1.0f, 0.0f, // bottom right + 1.0f, 1.0f, 0.0f, 1.0f, 1.0f // top right +}; +GLuint indices[] = { + 0, 1, 2, // first triangle + 0, 2, 3 // second triangle +}; + +} // namespace oes_shader + +OesTo2dRenderer::OesTo2dRenderer() { + textureOesShaderProgram_ = std::make_unique( + oes_shader::vertexShader, oes_shader::fragmentShader); +} + +OesTo2dRenderer::~OesTo2dRenderer() { + glDeleteVertexArrays(1, &vertexArrayObject_); + vertexArrayObject_ = GL_NONE; + glDeleteBuffers(1, &vertexBufferObject_); + vertexBufferObject_ = GL_NONE; + textureOesShaderProgram_.reset(); + if (frameBuffer_ != GL_NONE) { + glDeleteFramebuffers(1, &frameBuffer_); + frameBuffer_ = GL_NONE; + } +} + +int OesTo2dRenderer::init() { + if (!textureOesShaderProgram_->Valid()) { + return -1; + } + glGenVertexArrays(1, &vertexArrayObject_); + glGenBuffers(1, &vertexBufferObject_); + + glBindVertexArray(vertexArrayObject_); + glBindBuffer(GL_ARRAY_BUFFER, vertexBufferObject_); + glBufferData(GL_ARRAY_BUFFER, sizeof(oes_shader::vertices), + oes_shader::vertices, GL_STATIC_DRAW); + glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 5 * sizeof(float), + (void *)0); + glEnableVertexAttribArray(0); + glVertexAttribPointer(1, 2, GL_FLOAT, GL_FALSE, 5 * sizeof(float), + (void *)(3 * sizeof(float))); + glEnableVertexAttribArray(1); + + glGenFramebuffers(1, &frameBuffer_); + + glBindBuffer(GL_ARRAY_BUFFER, 0); + glBindVertexArray(0); + return 0; +} + +void OesTo2dRenderer::setMatrix(std::vector matrix) { + matrix_ = std::move(matrix); +} + +int OesTo2dRenderer::process(GLuint input_texture, GLuint output_texture, + int width, int height) { + glViewport(0, 0, width, height); + GLint old_fbo = 0; + glGetIntegerv(GL_FRAMEBUFFER_BINDING, &old_fbo); + + glActiveTexture(GL_TEXTURE0); + glBindTexture(GL_TEXTURE_EXTERNAL_OES, input_texture); + textureOesShaderProgram_->Use(); + textureOesShaderProgram_->SetInt("texture", 0); + glBindTexture(GL_TEXTURE_2D, output_texture); + glBindFramebuffer(GL_FRAMEBUFFER, frameBuffer_); + glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, + output_texture, 0); + int val = glCheckFramebufferStatus(GL_FRAMEBUFFER); + if (val != GL_FRAMEBUFFER_COMPLETE) { + return -1; + } + textureOesShaderProgram_->SetMatrix4v("matTransform", matrix_.data(), 16, + false); + glBindVertexArray(vertexArrayObject_); + glDrawElements(GL_TRIANGLES, 6, GL_UNSIGNED_INT, oes_shader::indices); + glBindVertexArray(0); + glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, + 0, 0); + glBindFramebuffer(GL_FRAMEBUFFER, 0); + return 0; +} + +int OesTo2dRenderer::drawToScreen(GLuint input_texture, int width, int height) { + glViewport(0, 0, width, height); + textureOesShaderProgram_->Use(); + textureOesShaderProgram_->SetInt("texture", 0); + glActiveTexture(GL_TEXTURE0); + glBindTexture(GL_TEXTURE_EXTERNAL_OES, input_texture); + textureOesShaderProgram_->SetMatrix4v("matTransform", matrix_.data(), 16, + false); + glBindVertexArray(vertexArrayObject_); + glDrawElements(GL_TRIANGLES, 6, GL_UNSIGNED_INT, oes_shader::indices); + glBindVertexArray(0); + return 0; +} +} // namespace bmf_lite_demo \ No newline at end of file diff --git a/bmf_lite/ohos/entry/src/main/cpp/render/oes_to_2d_renderer.h b/bmf_lite/ohos/entry/src/main/cpp/render/oes_to_2d_renderer.h new file mode 100644 index 00000000..97f7ee6e --- /dev/null +++ b/bmf_lite/ohos/entry/src/main/cpp/render/oes_to_2d_renderer.h @@ -0,0 +1,48 @@ +/* + * Copyright 2024 Babit Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef OHOS_OES_TO_2D_RENDERER_H +#define OHOS_OES_TO_2D_RENDERER_H + +#include + +#include "shader_program.h" +#include "common/common.h" + +namespace bmf_lite_demo { + +class OesTo2dRenderer { + public: + OesTo2dRenderer(); + ~OesTo2dRenderer(); + + int init(); + void setMatrix(std::vector matrix); + int process(GLuint input_texture, GLuint output_texture, int width, + int height); + int drawToScreen(GLuint input_texture, int width, int height); + + private: + std::unique_ptr textureOesShaderProgram_; + + GLuint vertexArrayObject_ = GL_NONE; + GLuint vertexBufferObject_ = GL_NONE; + + GLuint frameBuffer_ = GL_NONE; + + std::vector matrix_; +}; +} // namespace bmf_lite_demo +#endif // OHOS_OES_TO_2D_RENDERER_H diff --git a/bmf_lite/ohos/entry/src/main/cpp/render/plugin_render.cpp b/bmf_lite/ohos/entry/src/main/cpp/render/plugin_render.cpp new file mode 100644 index 00000000..a1b73b42 --- /dev/null +++ b/bmf_lite/ohos/entry/src/main/cpp/render/plugin_render.cpp @@ -0,0 +1,582 @@ +/* + * Copyright 2024 Babit Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#include "plugin_render.h" + +#include +#include +#include +#include +#include +#include + +#include "../common/common.h" +#include "camera/camera_manager.h" +#include "player/player_manager.h" + +namespace bmf_lite_demo { +namespace { +static std::unique_ptr ndkCamera_; +static std::unique_ptr ndkPlayer_; + +void OnSurfaceCreatedCB(OH_NativeXComponent *component, void *window) { + OH_LOG_Print(LOG_APP, LOG_INFO, LOG_PRINT_DOMAIN, "Callback", + "OnSurfaceCreatedCB"); + if ((component == nullptr) || (window == nullptr)) { + OH_LOG_Print(LOG_APP, LOG_ERROR, LOG_PRINT_DOMAIN, "Callback", + "OnSurfaceCreatedCB: component or window is null"); + return; + } + + char idStr[OH_XCOMPONENT_ID_LEN_MAX + 1] = {'\0'}; + uint64_t idSize = OH_XCOMPONENT_ID_LEN_MAX + 1; + if (OH_NativeXComponent_GetXComponentId(component, idStr, &idSize) != + OH_NATIVEXCOMPONENT_RESULT_SUCCESS) { + OH_LOG_Print(LOG_APP, LOG_ERROR, LOG_PRINT_DOMAIN, "Callback", + "OnSurfaceCreatedCB: Unable to get XComponent id"); + return; + } + + std::string id(idStr); + auto render = PluginRender::GetInstance(id); + uint64_t width; + uint64_t height; + int32_t xSize = OH_NativeXComponent_GetXComponentSize(component, window, + &width, &height); + if ((xSize != OH_NATIVEXCOMPONENT_RESULT_SUCCESS) || (render == nullptr)) { + OH_LOG_Print(LOG_APP, LOG_ERROR, LOG_PRINT_DOMAIN, "Callback", + "OnSurfaceCreatedCB: Unable to get XComponent size"); + return; + } + if (render != nullptr) { + render->UpdateNativeWindow(window, width, height); + } +} + +void OnSurfaceChangedCB(OH_NativeXComponent *component, void *window) { + OH_LOG_Print(LOG_APP, LOG_INFO, LOG_PRINT_DOMAIN, "Callback", + "OnSurfaceChangedCB"); + if ((component == nullptr) || (window == nullptr)) { + OH_LOG_Print(LOG_APP, LOG_ERROR, LOG_PRINT_DOMAIN, "Callback", + "OnSurfaceChangedCB: component or window is null"); + return; + } + + char idStr[OH_XCOMPONENT_ID_LEN_MAX + 1] = {'\0'}; + uint64_t idSize = OH_XCOMPONENT_ID_LEN_MAX + 1; + if (OH_NativeXComponent_GetXComponentId(component, idStr, &idSize) != + OH_NATIVEXCOMPONENT_RESULT_SUCCESS) { + OH_LOG_Print(LOG_APP, LOG_ERROR, LOG_PRINT_DOMAIN, "Callback", + "OnSurfaceChangedCB: Unable to get XComponent id"); + return; + } + + std::string id(idStr); + auto render = PluginRender::GetInstance(id); + if (render != nullptr) { + render->OnSurfaceChanged(component, window); + OH_LOG_Print(LOG_APP, LOG_INFO, LOG_PRINT_DOMAIN, "Callback", + "surface changed"); + } +} + +void OnSurfaceDestroyedCB(OH_NativeXComponent *component, void *window) { + OH_LOG_Print(LOG_APP, LOG_INFO, LOG_PRINT_DOMAIN, "Callback", + "OnSurfaceDestroyedCB"); + if ((component == nullptr) || (window == nullptr)) { + OH_LOG_Print(LOG_APP, LOG_ERROR, LOG_PRINT_DOMAIN, "Callback", + "OnSurfaceDestroyedCB: component or window is null"); + return; + } + + char idStr[OH_XCOMPONENT_ID_LEN_MAX + 1] = {'\0'}; + uint64_t idSize = OH_XCOMPONENT_ID_LEN_MAX + 1; + if (OH_NativeXComponent_GetXComponentId(component, idStr, &idSize) != + OH_NATIVEXCOMPONENT_RESULT_SUCCESS) { + OH_LOG_Print(LOG_APP, LOG_ERROR, LOG_PRINT_DOMAIN, "Callback", + "OnSurfaceDestroyedCB: Unable to get XComponent id"); + return; + } + + std::string id(idStr); + PluginRender::Release(id); +} + +void DispatchTouchEventCB(OH_NativeXComponent *component, void *window) { + OH_LOG_Print(LOG_APP, LOG_INFO, LOG_PRINT_DOMAIN, "Callback", + "DispatchTouchEventCB"); + if ((component == nullptr) || (window == nullptr)) { + OH_LOG_Print(LOG_APP, LOG_ERROR, LOG_PRINT_DOMAIN, "Callback", + "DispatchTouchEventCB: component or window is null"); + return; + } + + char idStr[OH_XCOMPONENT_ID_LEN_MAX + 1] = {'\0'}; + uint64_t idSize = OH_XCOMPONENT_ID_LEN_MAX + 1; + if (OH_NativeXComponent_GetXComponentId(component, idStr, &idSize) != + OH_NATIVEXCOMPONENT_RESULT_SUCCESS) { + OH_LOG_Print(LOG_APP, LOG_ERROR, LOG_PRINT_DOMAIN, "Callback", + "DispatchTouchEventCB: Unable to get XComponent id"); + return; + } + + std::string id(idStr); + PluginRender *render = PluginRender::GetInstance(id); + if (render != nullptr) { + render->OnTouchEvent(component, window); + } +} +} // namespace + +std::unordered_map PluginRender::instance_; + +PluginRender::PluginRender(std::string &id) + : renderThread_(std::make_unique()) { + this->id_ = id; +} + +PluginRender *PluginRender::GetInstance(std::string &id) { + if (instance_.find(id) == instance_.end()) { + PluginRender *instance = new PluginRender(id); + instance_[id] = instance; + return instance; + } else { + return instance_[id]; + } +} + +void PluginRender::Export(napi_env env, napi_value exports) { + if ((env == nullptr) || (exports == nullptr)) { + OH_LOG_Print(LOG_APP, LOG_ERROR, LOG_PRINT_DOMAIN, "PluginRender", + "Export: env or exports is null"); + return; + } + + napi_property_descriptor desc[] = { + {"createCamera", nullptr, PluginRender::createCamera, nullptr, nullptr, + nullptr, napi_default, nullptr}, + {"startCamera", nullptr, PluginRender::startCamera, nullptr, nullptr, + nullptr, napi_default, nullptr}, + {"stopCamera", nullptr, PluginRender::stopCamera, nullptr, nullptr, + nullptr, napi_default, nullptr}, + {"releaseCamera", nullptr, PluginRender::releaseCamera, nullptr, + nullptr, nullptr, napi_default, nullptr}, + {"createPlayer", nullptr, PluginRender::createPlayer, nullptr, nullptr, + nullptr, napi_default, nullptr}, + {"setFdSource", nullptr, PluginRender::setFdSource, nullptr, nullptr, + nullptr, napi_default, nullptr}, + {"startPlayer", nullptr, PluginRender::startPlayer, nullptr, nullptr, + nullptr, napi_default, nullptr}, + {"stopPlayer", nullptr, PluginRender::stopPlayer, nullptr, nullptr, + nullptr, napi_default, nullptr}, + {"releasePlayer", nullptr, PluginRender::releasePlayer, nullptr, + nullptr, nullptr, napi_default, nullptr}, + {"startAlgorithm", nullptr, PluginRender::startAlgorithm, nullptr, + nullptr, nullptr, napi_default, nullptr}, + {"stopAlgorithm", nullptr, PluginRender::stopAlgorithm, nullptr, + nullptr, nullptr, napi_default, nullptr}, + }; + if (napi_define_properties(env, exports, sizeof(desc) / sizeof(desc[0]), + desc) != napi_ok) { + OH_LOG_Print(LOG_APP, LOG_ERROR, LOG_PRINT_DOMAIN, "PluginRender", + "Export: napi_define_properties failed"); + } +} + +void PluginRender::Release(std::string &id) { + PluginRender *render = PluginRender::GetInstance(id); + if (render != nullptr) { + instance_.erase(instance_.find(id)); + } + render->renderThread_ = nullptr; + // delete render; +} + +napi_value PluginRender::createCamera(napi_env env, napi_callback_info info) { + napi_value thisArg; + if (napi_get_cb_info(env, info, nullptr, nullptr, &thisArg, nullptr) != + napi_ok) { + OH_LOG_Print(LOG_APP, LOG_ERROR, LOG_PRINT_DOMAIN, "PluginRender", + "createCamera: napi_get_cb_info fail"); + return nullptr; + } + /* // 获取环境变量中XComponent实例*/ + napi_value exportInstance; + if (napi_get_named_property(env, thisArg, OH_NATIVE_XCOMPONENT_OBJ, + &exportInstance) != napi_ok) { + OH_LOG_Print(LOG_APP, LOG_ERROR, LOG_PRINT_DOMAIN, "PluginRender", + "NapiDrawPattern: napi_get_named_property fail"); + return nullptr; + } + + OH_NativeXComponent *nativeXComponent = nullptr; + if (napi_unwrap(env, exportInstance, + reinterpret_cast(&nativeXComponent)) != napi_ok) { + OH_LOG_Print(LOG_APP, LOG_ERROR, LOG_PRINT_DOMAIN, "PluginRender", + "NapiDrawPattern: napi_unwrap fail"); + return nullptr; + } + // 获取XComponent实例的id + char idStr[OH_XCOMPONENT_ID_LEN_MAX + 1] = {'\0'}; + uint64_t idSize = OH_XCOMPONENT_ID_LEN_MAX + 1; + if (OH_NativeXComponent_GetXComponentId(nativeXComponent, idStr, &idSize) != + OH_NATIVEXCOMPONENT_RESULT_SUCCESS) { + OH_LOG_Print(LOG_APP, LOG_ERROR, LOG_PRINT_DOMAIN, "PluginRender", + "NapiDrawPattern: Unable to get XComponent id"); + return nullptr; + } + + std::string id(idStr); + PluginRender *render = PluginRender::GetInstance(id); + if (render != nullptr) { + // 等待renderThread把nativeImage创建成功,这里用这种方式并不是很合适 + while (render->renderThread_->GetNativeImageSurfaceId() == 0) { + usleep(10000); + } + render->CreateCamera(); + } + return nullptr; +} + +napi_value PluginRender::startCamera(napi_env env, napi_callback_info info) { + OH_LOG_Print(LOG_APP, LOG_INFO, LOG_PRINT_DOMAIN, "PluginRender", + "startCamera"); + if (ndkCamera_) { + ndkCamera_->SessionStart(); + } + return nullptr; +} + +napi_value PluginRender::stopCamera(napi_env env, napi_callback_info info) { + OH_LOG_Print(LOG_APP, LOG_INFO, LOG_PRINT_DOMAIN, "PluginRender", + "stopCamera"); + if (ndkCamera_) { + ndkCamera_->SessionStop(); + } + return nullptr; +} + +napi_value PluginRender::releaseCamera(napi_env env, napi_callback_info info) { + OH_LOG_Print(LOG_APP, LOG_INFO, LOG_PRINT_DOMAIN, "PluginRender", + "releaseCamera"); + if (ndkCamera_) { + ndkCamera_->ReleaseCamera(); + } + ndkCamera_ = nullptr; + return nullptr; +} + +napi_value PluginRender::createPlayer(napi_env env, napi_callback_info info) { + OH_LOG_Print(LOG_APP, LOG_INFO, LOG_PRINT_DOMAIN, "PluginRender", + "createPlayer"); + napi_value thisArg; + if (napi_get_cb_info(env, info, nullptr, nullptr, &thisArg, nullptr) != + napi_ok) { + OH_LOG_Print(LOG_APP, LOG_ERROR, LOG_PRINT_DOMAIN, "PluginRender", + "createCamera: napi_get_cb_info fail"); + return nullptr; + } + /* // 获取环境变量中XComponent实例*/ + napi_value exportInstance; + if (napi_get_named_property(env, thisArg, OH_NATIVE_XCOMPONENT_OBJ, + &exportInstance) != napi_ok) { + OH_LOG_Print(LOG_APP, LOG_ERROR, LOG_PRINT_DOMAIN, "PluginRender", + "NapiDrawPattern: napi_get_named_property fail"); + return nullptr; + } + + OH_NativeXComponent *nativeXComponent = nullptr; + if (napi_unwrap(env, exportInstance, + reinterpret_cast(&nativeXComponent)) != napi_ok) { + OH_LOG_Print(LOG_APP, LOG_ERROR, LOG_PRINT_DOMAIN, "PluginRender", + "NapiDrawPattern: napi_unwrap fail"); + return nullptr; + } + // 获取XComponent实例的id + char idStr[OH_XCOMPONENT_ID_LEN_MAX + 1] = {'\0'}; + uint64_t idSize = OH_XCOMPONENT_ID_LEN_MAX + 1; + if (OH_NativeXComponent_GetXComponentId(nativeXComponent, idStr, &idSize) != + OH_NATIVEXCOMPONENT_RESULT_SUCCESS) { + OH_LOG_Print(LOG_APP, LOG_ERROR, LOG_PRINT_DOMAIN, "PluginRender", + "NapiDrawPattern: Unable to get XComponent id"); + return nullptr; + } + + std::string id(idStr); + PluginRender *render = PluginRender::GetInstance(id); + if (render != nullptr) { + while (render->renderThread_->GetNativeImageNativeWindow() == nullptr) { + usleep(10000); + } + render->CreatePlayer(); + } + return nullptr; +} + +napi_value PluginRender::setFdSource(napi_env env, napi_callback_info info) { + OH_LOG_Print(LOG_APP, LOG_INFO, LOG_PRINT_DOMAIN, "PluginRender", + "setFdSource"); + size_t argc = 3; + napi_value args[3] = {nullptr}; + napi_get_cb_info(env, info, &argc, args, nullptr, nullptr); + + napi_valuetype valuetype0; + napi_typeof(env, args[0], &valuetype0); + + napi_valuetype valuetype1; + napi_typeof(env, args[1], &valuetype1); + + napi_valuetype valuetype2; + napi_typeof(env, args[2], &valuetype2); + + int32_t fd; + napi_get_value_int32(env, args[0], &fd); + + int64_t offset; + napi_get_value_int64(env, args[1], &offset); + + int64_t size; + napi_get_value_int64(env, args[2], &size); + + OH_AVErrCode err = OH_AVErrCode::AV_ERR_UNKNOWN; + if (ndkPlayer_) { + err = ndkPlayer_->SetFdSource(fd, offset, size); + } + if (err == OH_AVErrCode::AV_ERR_OK) { + OH_LOG_Print(LOG_APP, LOG_INFO, LOG_PRINT_DOMAIN, "PluginRender", + "setFdSource success"); + } else { + OH_LOG_Print(LOG_APP, LOG_ERROR, LOG_PRINT_DOMAIN, "PluginRender", + "setFdSource failure, %{public}d", err); + } + napi_value output; + napi_create_uint32(env, err, &output); + + return output; +} + +napi_value PluginRender::startPlayer(napi_env env, napi_callback_info info) { + OH_LOG_Print(LOG_APP, LOG_INFO, LOG_PRINT_DOMAIN, "PluginRender", + "startPlayer"); + if (ndkPlayer_) { + ndkPlayer_->Play(); + } + return nullptr; +} + +napi_value PluginRender::stopPlayer(napi_env env, napi_callback_info info) { + OH_LOG_Print(LOG_APP, LOG_INFO, LOG_PRINT_DOMAIN, "PluginRender", + "stopPlayer"); + if (ndkPlayer_) { + ndkPlayer_->Stop(); + } + return nullptr; +} + +napi_value PluginRender::releasePlayer(napi_env env, napi_callback_info info) { + OH_LOG_Print(LOG_APP, LOG_INFO, LOG_PRINT_DOMAIN, "PluginRender", + "releasePlayer"); + if (ndkPlayer_) { + ndkPlayer_->ReleasePlayer(); + } + ndkPlayer_ = nullptr; + return nullptr; +} + +napi_value PluginRender::startAlgorithm(napi_env env, napi_callback_info info) { + OH_LOG_Print(LOG_APP, LOG_INFO, LOG_PRINT_DOMAIN, "PluginRender", + "startAlgorithm"); + napi_value thisArg; + if (napi_get_cb_info(env, info, nullptr, nullptr, &thisArg, nullptr) != + napi_ok) { + OH_LOG_Print(LOG_APP, LOG_ERROR, LOG_PRINT_DOMAIN, "PluginRender", + "createCamera: napi_get_cb_info fail"); + return nullptr; + } + /* // 获取环境变量中XComponent实例*/ + napi_value exportInstance; + if (napi_get_named_property(env, thisArg, OH_NATIVE_XCOMPONENT_OBJ, + &exportInstance) != napi_ok) { + OH_LOG_Print(LOG_APP, LOG_ERROR, LOG_PRINT_DOMAIN, "PluginRender", + "NapiDrawPattern: napi_get_named_property fail"); + return nullptr; + } + + OH_NativeXComponent *nativeXComponent = nullptr; + if (napi_unwrap(env, exportInstance, + reinterpret_cast(&nativeXComponent)) != napi_ok) { + OH_LOG_Print(LOG_APP, LOG_ERROR, LOG_PRINT_DOMAIN, "PluginRender", + "NapiDrawPattern: napi_unwrap fail"); + return nullptr; + } + // 获取XComponent实例的id + char idStr[OH_XCOMPONENT_ID_LEN_MAX + 1] = {'\0'}; + uint64_t idSize = OH_XCOMPONENT_ID_LEN_MAX + 1; + if (OH_NativeXComponent_GetXComponentId(nativeXComponent, idStr, &idSize) != + OH_NATIVEXCOMPONENT_RESULT_SUCCESS) { + OH_LOG_Print(LOG_APP, LOG_ERROR, LOG_PRINT_DOMAIN, "PluginRender", + "NapiDrawPattern: Unable to get XComponent id"); + return nullptr; + } + + size_t argc = 1; + napi_value args[1] = {nullptr}; + napi_get_cb_info(env, info, &argc, args, nullptr, nullptr); + + napi_valuetype valuetype0; + napi_typeof(env, args[0], &valuetype0); + + int32_t alg_type; + napi_get_value_int32(env, args[0], &alg_type); + + std::string id(idStr); + PluginRender *render = PluginRender::GetInstance(id); + if (render != nullptr) { + if (alg_type == 0) { + render->renderThread_->StartAlgorithm( + AlgorithmEnum::SUPER_RESOLUTION); + } else if (alg_type == 1) { + render->renderThread_->StartAlgorithm(AlgorithmEnum::DENOISE); + } + } + return nullptr; +} + +napi_value PluginRender::stopAlgorithm(napi_env env, napi_callback_info info) { + OH_LOG_Print(LOG_APP, LOG_INFO, LOG_PRINT_DOMAIN, "PluginRender", + "stopAlgorithm"); + napi_value thisArg; + if (napi_get_cb_info(env, info, nullptr, nullptr, &thisArg, nullptr) != + napi_ok) { + OH_LOG_Print(LOG_APP, LOG_ERROR, LOG_PRINT_DOMAIN, "PluginRender", + "createCamera: napi_get_cb_info fail"); + return nullptr; + } + /* // 获取环境变量中XComponent实例*/ + napi_value exportInstance; + if (napi_get_named_property(env, thisArg, OH_NATIVE_XCOMPONENT_OBJ, + &exportInstance) != napi_ok) { + OH_LOG_Print(LOG_APP, LOG_ERROR, LOG_PRINT_DOMAIN, "PluginRender", + "NapiDrawPattern: napi_get_named_property fail"); + return nullptr; + } + + OH_NativeXComponent *nativeXComponent = nullptr; + if (napi_unwrap(env, exportInstance, + reinterpret_cast(&nativeXComponent)) != napi_ok) { + OH_LOG_Print(LOG_APP, LOG_ERROR, LOG_PRINT_DOMAIN, "PluginRender", + "NapiDrawPattern: napi_unwrap fail"); + return nullptr; + } + // 获取XComponent实例的id + char idStr[OH_XCOMPONENT_ID_LEN_MAX + 1] = {'\0'}; + uint64_t idSize = OH_XCOMPONENT_ID_LEN_MAX + 1; + if (OH_NativeXComponent_GetXComponentId(nativeXComponent, idStr, &idSize) != + OH_NATIVEXCOMPONENT_RESULT_SUCCESS) { + OH_LOG_Print(LOG_APP, LOG_ERROR, LOG_PRINT_DOMAIN, "PluginRender", + "NapiDrawPattern: Unable to get XComponent id"); + return nullptr; + } + + size_t argc = 1; + napi_value args[1] = {nullptr}; + napi_get_cb_info(env, info, &argc, args, nullptr, nullptr); + + napi_valuetype valuetype0; + napi_typeof(env, args[0], &valuetype0); + + int32_t alg_type; + napi_get_value_int32(env, args[0], &alg_type); + + std::string id(idStr); + PluginRender *render = PluginRender::GetInstance(id); + if (render != nullptr) { + render->renderThread_->StopAlgorithm(); + } + return nullptr; +} + +void PluginRender::CreateCamera() { + std::string surfaceIdStr = + std::to_string(renderThread_->GetNativeImageSurfaceId()); + ndkCamera_ = std::make_unique( + surfaceIdStr.c_str(), FOCUS_MODE_AUTO, 0); + renderThread_->SetScene(1); + OH_LOG_Print(LOG_APP, LOG_INFO, LOG_PRINT_DOMAIN, "PluginRender", + "Create the Camera"); +} + +void PluginRender::CreatePlayer() { + OH_LOG_Print(LOG_APP, LOG_INFO, LOG_PRINT_DOMAIN, "PluginRender", + "CreatePlayer nativeWindow_ %{public}p", + renderThread_->GetNativeImageNativeWindow()); + ndkPlayer_ = std::make_unique( + renderThread_->GetNativeImageNativeWindow()); + renderThread_->SetScene(0); + OH_LOG_Print(LOG_APP, LOG_INFO, LOG_PRINT_DOMAIN, "PluginRender", + "Create the Player"); +} + +void PluginRender::OnSurfaceChanged(OH_NativeXComponent *component, + void *window) { + char idStr[OH_XCOMPONENT_ID_LEN_MAX + 1] = {'\0'}; + uint64_t idSize = OH_XCOMPONENT_ID_LEN_MAX + 1; + if (OH_NativeXComponent_GetXComponentId(component, idStr, &idSize) != + OH_NATIVEXCOMPONENT_RESULT_SUCCESS) { + OH_LOG_Print(LOG_APP, LOG_ERROR, LOG_PRINT_DOMAIN, "Callback", + "OnSurfaceChanged: Unable to get XComponent id"); + return; + } + + std::string id(idStr); + PluginRender *render = PluginRender::GetInstance(id); + double offsetX; + double offsetY; + OH_NativeXComponent_GetXComponentOffset(component, window, &offsetX, + &offsetY); + OH_LOG_Print(LOG_APP, LOG_INFO, LOG_PRINT_DOMAIN, + "OH_NativeXComponent_GetXComponentOffset", + "offsetX = %{public}lf, offsetY = %{public}lf", offsetX, + offsetY); + uint64_t width; + uint64_t height; + OH_NativeXComponent_GetXComponentSize(component, window, &width, &height); + UpdateNativeWindow(window, width, height); +} + +void PluginRender::UpdateNativeWindow(void *window, uint64_t width, + uint64_t height) { + renderThread_->UpdateNativeWindow(window, width, height); +} + +void PluginRender::OnTouchEvent(OH_NativeXComponent *component, void *window) { + OH_NativeXComponent_TouchEvent touchEvent; + OH_NativeXComponent_GetTouchEvent(component, window, &touchEvent); + + float splitRatio = touchEvent.x / renderThread_->nativeWindowWidth_; + OH_LOG_Print(LOG_APP, LOG_INFO, LOG_PRINT_DOMAIN, "Callback", + "OnTouchEvent touchEvent %{public}f", splitRatio); + renderThread_->UpdateSplitRatio(splitRatio); +} + +void PluginRender::RegisterCallback(OH_NativeXComponent *nativeXComponent) { + renderCallback_.OnSurfaceCreated = OnSurfaceCreatedCB; + renderCallback_.OnSurfaceChanged = OnSurfaceChangedCB; + renderCallback_.OnSurfaceDestroyed = OnSurfaceDestroyedCB; + renderCallback_.DispatchTouchEvent = DispatchTouchEventCB; + OH_NativeXComponent_RegisterCallback(nativeXComponent, &renderCallback_); +} + +} // namespace bmf_lite_demo \ No newline at end of file diff --git a/bmf_lite/ohos/entry/src/main/cpp/render/plugin_render.h b/bmf_lite/ohos/entry/src/main/cpp/render/plugin_render.h new file mode 100644 index 00000000..3478eac4 --- /dev/null +++ b/bmf_lite/ohos/entry/src/main/cpp/render/plugin_render.h @@ -0,0 +1,72 @@ +/* + * Copyright 2024 Babit Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef BMFLITE_PLUGIN_RENDER_H +#define BMFLITE_PLUGIN_RENDER_H + +#include +#include +#include +#include + +#include "render_thread.h" + +namespace bmf_lite_demo { + +class PluginRender { + public: + explicit PluginRender(std::string &id); + ~PluginRender() { Release(id_); } + static PluginRender *GetInstance(std::string &id); + static void Release(std::string &id); + static napi_value createCamera(napi_env env, napi_callback_info info); + static napi_value startCamera(napi_env env, napi_callback_info info); + static napi_value stopCamera(napi_env env, napi_callback_info info); + static napi_value releaseCamera(napi_env env, napi_callback_info info); + static napi_value createPlayer(napi_env env, napi_callback_info info); + static napi_value setFdSource(napi_env env, napi_callback_info info); + static napi_value startPlayer(napi_env env, napi_callback_info info); + static napi_value stopPlayer(napi_env env, napi_callback_info info); + static napi_value releasePlayer(napi_env env, napi_callback_info info); + static napi_value startAlgorithm(napi_env env, napi_callback_info info); + static napi_value stopAlgorithm(napi_env env, napi_callback_info info); + + void Export(napi_env env, napi_value exports); + void OnSurfaceChanged(OH_NativeXComponent *component, void *window); + void RegisterCallback(OH_NativeXComponent *nativeXComponent); + void OnTouchEvent(OH_NativeXComponent *component, void *window); + + void UpdateNativeWindow(void *window, uint64_t width, uint64_t height); + void CreateCamera(); + void CreatePlayer(); + + uint64_t getRenderSurfaceId() { + return renderThread_->GetNativeImageSurfaceId(); + } + + public: + static std::unordered_map instance_; + std::string id_; + + private: + ; + OH_NativeXComponent_Callback renderCallback_; + OH_NativeXComponent_MouseEvent_Callback mouseCallback_; + + std::unique_ptr renderThread_; +}; +} // namespace bmf_lite_demo + +#endif // BMFLITE_PLUGIN_RENDER_H diff --git a/bmf_lite/ohos/entry/src/main/cpp/render/render_thread.cpp b/bmf_lite/ohos/entry/src/main/cpp/render/render_thread.cpp new file mode 100644 index 00000000..4047bf7a --- /dev/null +++ b/bmf_lite/ohos/entry/src/main/cpp/render/render_thread.cpp @@ -0,0 +1,435 @@ +/* + * Copyright 2024 Babit Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#include "render_thread.h" + +#include "common/common.h" +#include + +namespace bmf_lite_demo { + +RenderThread::RenderThread() { Start(); } + +RenderThread::~RenderThread() noexcept { + if (algorithm_running_) { + if (algorithm_) { + StopAlgorithm(); + } + } + PostTask([this](EglRenderContext &renderContext) { + CleanGLResources(); + DestroyNativeImage(); + UpdateNativeWindow(nullptr, 0, 0); + DestroyNativeVsync(); + DestroyRenderContext(); + }); + + running_ = false; + if (thread_.joinable()) { + thread_.join(); + } +} + +bool RenderThread::InitRenderContext() { + renderContext_ = std::make_unique(); + return renderContext_->Init(); +} + +void RenderThread::DestroyRenderContext() { renderContext_.reset(); } + +void RenderThread::CleanGLResources() { + if (out_texture_2d_ != GL_NONE) { + glDeleteTextures(1, &out_texture_2d_); + out_texture_2d_ = GL_NONE; + } +} + +bool RenderThread::CreateGLResources() { + oesTo2dRenderer_ = std::make_unique(); + int ret = oesTo2dRenderer_->init(); + if (ret != 0) { + return false; + } + splitScreenRenderer_ = std::make_unique(); + ret = splitScreenRenderer_->init(); + return ret == 0; +} + +void RenderThread::UpdateNativeWindow(void *window, uint64_t width, + uint64_t height) { + OH_LOG_Print(LOG_APP, LOG_DEBUG, LOG_PRINT_DOMAIN, "RenderThread", + "UpdateNativeWindow."); + auto nativeWindow = reinterpret_cast(window); + PostTask([this, nativeWindow, width, + height](EglRenderContext &renderContext) { + if (nativeWindow_ != nativeWindow) { + if (nativeWindow_ != nullptr) { + (void)OH_NativeWindow_NativeObjectUnreference(nativeWindow_); + } + nativeWindow_ = nativeWindow; + if (nativeWindow_ != nullptr) { + (void)OH_NativeWindow_NativeObjectReference(nativeWindow_); + nativeWindowWidth_ = width; + nativeWindowHeight_ = height; + } + + if (eglSurface_ != EGL_NO_SURFACE) { + renderContext_->DestroyEglSurface(eglSurface_); + eglSurface_ = EGL_NO_SURFACE; + CleanGLResources(); + } + } + + if (nativeWindow_ != nullptr) { + (void)OH_NativeWindow_NativeWindowHandleOpt( + nativeWindow_, SET_BUFFER_GEOMETRY, static_cast(width), + static_cast(height)); + if (eglSurface_ == EGL_NO_SURFACE) { + eglSurface_ = renderContext_->CreateEglSurface( + static_cast(nativeWindow_)); + } + if (eglSurface_ == EGL_NO_SURFACE) { + OH_LOG_Print(LOG_APP, LOG_ERROR, LOG_PRINT_DOMAIN, + "RenderThread", "CreateEglSurface failed."); + return; + } + renderContext_->MakeCurrent(eglSurface_); + CreateGLResources(); + } + }); +} + +void RenderThread::StartAlgorithm(AlgorithmEnum algorithm) { + OH_LOG_Print(LOG_APP, LOG_DEBUG, LOG_PRINT_DOMAIN, "RenderThread", + "StartAlgorithm."); + AlgorithmContext algorithmContext{renderContext_->GetEGLDisplay(), + renderContext_->GetEGLContext(), + eglSurface_, algorithm}; + PostTask([this, algorithmContext](EglRenderContext &renderContext) { + if (!algorithm_running_) { + algorithm_ = std::make_shared( + algorithmContext.egl_display, algorithmContext.egl_surface, + algorithmContext.egl_context, algorithmContext.algorithm); + algorithm_running_ = true; + } + }); +} + +void RenderThread::StopAlgorithm() { + OH_LOG_Print(LOG_APP, LOG_DEBUG, LOG_PRINT_DOMAIN, "RenderThread", + "StopAlgorithm."); + PostTask([this](EglRenderContext &renderContext) { + algorithm_running_ = false; + algorithm_.reset(); + }); +} + +void RenderThread::UpdateSplitRatio(float ratio) { + OH_LOG_Print(LOG_APP, LOG_DEBUG, LOG_PRINT_DOMAIN, "RenderThread", + "UpdateProportion %{public}f", ratio); + splitRatio_ = ratio; +} + +void RenderThread::SetScene(int scene) { scene_ = scene; } + +void RenderThread::Start() { + if (running_) { + return; + } + + running_ = true; + thread_ = std::thread([this]() { + ThreadMainLoop(); + // 确保renderContext的创建和销毁都在渲染线程中执行 + CleanGLResources(); + DestroyNativeImage(); + UpdateNativeWindow(nullptr, 0, 0); + DestroyNativeVsync(); + DestroyRenderContext(); + running_ = false; + }); +} + +void RenderThread::OnVsync(long long timestamp, void *data) { + // OH_LOG_Print(LOG_APP, LOG_DEBUG, LOG_PRINT_DOMAIN, "RenderThread", + // "OnVsync %{public}llu.", timestamp); + auto renderThread = reinterpret_cast(data); + if (renderThread == nullptr) { + return; + } + + renderThread->vSyncCnt_++; + renderThread->wakeUpCond_.notify_one(); +} + +bool RenderThread::InitNativeVsync() { + nativeVsync_ = OH_NativeVSync_Create(DEMO_NAME, strlen(DEMO_NAME)); + if (nativeVsync_ == nullptr) { + OH_LOG_Print(LOG_APP, LOG_ERROR, LOG_PRINT_DOMAIN, "RenderThread", + "Create NativeVSync failed."); + return false; + } + (void)OH_NativeVSync_RequestFrame(nativeVsync_, &RenderThread::OnVsync, + this); + return true; +} + +OHNativeWindow *RenderThread::GetNativeWindow() { return nativeWindow_; } + +void RenderThread::DestroyNativeVsync() { + if (nativeVsync_ != nullptr) { + OH_NativeVSync_Destroy(nativeVsync_); + nativeVsync_ = nullptr; + } +} + +void RenderThread::OnNativeImageFrameAvailable(void *data) { + // OH_LOG_Print(LOG_APP, LOG_DEBUG, LOG_PRINT_DOMAIN, "RenderThread", + // "OnNativeImageFrameAvailable."); + auto renderThread = reinterpret_cast(data); + if (renderThread == nullptr) { + return; + } + renderThread->availableFrameCnt_++; + renderThread->wakeUpCond_.notify_one(); +} + +bool RenderThread::CreateNativeImage() { + glGenTextures(1, &nativeImageTexId_); + glBindTexture(GL_TEXTURE_EXTERNAL_OES, nativeImageTexId_); + // set the texture wrapping parameters + glTexParameteri(GL_TEXTURE_EXTERNAL_OES, GL_TEXTURE_WRAP_S, GL_REPEAT); + glTexParameteri(GL_TEXTURE_EXTERNAL_OES, GL_TEXTURE_WRAP_T, GL_REPEAT); + // set texture filtering parameters + glTexParameteri(GL_TEXTURE_EXTERNAL_OES, GL_TEXTURE_MIN_FILTER, GL_LINEAR); + glTexParameteri(GL_TEXTURE_EXTERNAL_OES, GL_TEXTURE_MAG_FILTER, GL_LINEAR); + + nativeImage_ = + OH_NativeImage_Create(nativeImageTexId_, GL_TEXTURE_EXTERNAL_OES); + if (nativeImage_ == nullptr) { + OH_LOG_Print(LOG_APP, LOG_ERROR, LOG_PRINT_DOMAIN, "RenderThread", + "OH_NativeImage_Create failed."); + return false; + } + int ret = 0; + { + std::lock_guard lock(nativeImageSurfaceIdMutex_); + ret = OH_NativeImage_GetSurfaceId(nativeImage_, &nativeImageSurfaceId_); + } + if (ret != 0) { + OH_LOG_Print(LOG_APP, LOG_ERROR, LOG_PRINT_DOMAIN, "RenderThread", + "OH_NativeImage_GetSurfaceId failed, ret is %{public}d.", + ret); + return false; + } + { + std::lock_guard lock(nativeImageNativeWindowMutex_); + nativeImageNativeWindow_ = + OH_NativeImage_AcquireNativeWindow(nativeImage_); + } + if (nativeImageNativeWindow_ == nullptr) { + OH_LOG_Print(LOG_APP, LOG_ERROR, LOG_PRINT_DOMAIN, "RenderThread", + "OH_NativeImage_AcquireNativeWindow failed"); + return false; + } + + nativeImageFrameAvailableListener_.context = this; + nativeImageFrameAvailableListener_.onFrameAvailable = + &RenderThread::OnNativeImageFrameAvailable; + ret = OH_NativeImage_SetOnFrameAvailableListener( + nativeImage_, nativeImageFrameAvailableListener_); + if (ret != 0) { + OH_LOG_Print(LOG_APP, LOG_ERROR, LOG_PRINT_DOMAIN, "RenderThread", + "OH_NativeImage_SetOnFrameAvailableListener failed, ret " + "is %{public}d.", + ret); + return false; + } + + return true; +} + +void RenderThread::DestroyNativeImage() { + if (nativeImageTexId_ != 0U) { + glDeleteTextures(1, &nativeImageTexId_); + nativeImageTexId_ = 0U; + } + + if (nativeImage_ != nullptr) { + (void)OH_NativeImage_UnsetOnFrameAvailableListener(nativeImage_); + OH_NativeImage_Destroy(&nativeImage_); + nativeImage_ = nullptr; + } + nativeImageSurfaceId_ = 0; + nativeImageNativeWindow_ = nullptr; +} + +void RenderThread::DestroyAlgorithm() { + if (algorithm_) { + algorithm_ = nullptr; + } + algorithm_running_ = false; +} + +void RenderThread::ThreadMainLoop() { + threadId_ = std::this_thread::get_id(); + if (!InitRenderContext()) { + return; + } + if (!InitNativeVsync()) { + return; + } + if (!CreateNativeImage()) { + return; + } + while (running_) { + { + // OH_LOG_Print(LOG_APP, LOG_DEBUG, LOG_PRINT_DOMAIN, + // "RenderThread", "Waiting for vsync."); + std::unique_lock lock(wakeUpMutex_); + wakeUpCond_.wait(lock, [this]() { + return wakeUp_ || vSyncCnt_ > 0 || availableFrameCnt_ > 0; + }); + wakeUp_ = false; + vSyncCnt_--; + (void)OH_NativeVSync_RequestFrame(nativeVsync_, + &RenderThread::OnVsync, this); + } + + // OH_LOG_Print(LOG_APP, LOG_DEBUG, LOG_PRINT_DOMAIN, + // "RenderThread", "Executing tasks."); + std::vector tasks; + { + std::lock_guard lock(taskMutex_); + tasks.swap(tasks_); + } + for (const auto &task : tasks) { + task(*renderContext_); + } + + if (availableFrameCnt_ <= 0) { + continue; + } + DrawImage(); + availableFrameCnt_--; + } +} + +void RenderThread::PostTask(const RenderTask &task) { + if (!running_) { + OH_LOG_Print(LOG_APP, LOG_WARN, LOG_PRINT_DOMAIN, "RenderThread", + "PostTask failed: RenderThread is not running"); + return; + } + + { + std::lock_guard lock(taskMutex_); + tasks_.push_back(task); + } + + if (std::this_thread::get_id() != threadId_) { + std::lock_guard lock(wakeUpMutex_); + wakeUp_ = true; + wakeUpCond_.notify_one(); + } +} + +void RenderThread::DrawImage() { + // OH_LOG_Print(LOG_APP, LOG_DEBUG, LOG_PRINT_DOMAIN, "RenderThread", + // "DrawImage."); + if (eglSurface_ == EGL_NO_SURFACE) { + OH_LOG_Print(LOG_APP, LOG_WARN, LOG_PRINT_DOMAIN, "RenderThread", + "eglSurface_ is EGL_NO_SURFACE"); + return; + } + + renderContext_->MakeCurrent(eglSurface_); + int32_t ret = OH_NativeImage_UpdateSurfaceImage(nativeImage_); + if (ret != 0) { + OH_LOG_Print(LOG_APP, LOG_ERROR, LOG_PRINT_DOMAIN, "RenderThread", + "OH_NativeImage_UpdateSurfaceImage failed, ret: " + "%{public}d, texId: %{public}d", + ret, nativeImageTexId_); + return; + } + + // float matrix[16]; + // ret = OH_NativeImage_GetTransformMatrix(nativeImage_, matrix); + float matrix[16] = {1, 0, 0, 0, 0, -1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 1}; + if (scene_ == 1) { + matrix[0] = 0; + matrix[1] = -1; + matrix[4] = 1; + matrix[5] = 0; + matrix[8] = -1; + matrix[9] = 0; + matrix[10] = 0; + } + + glClearColor(1.0f, 1.0f, 1.0f, 1.0f); + glClear(GL_COLOR_BUFFER_BIT); + + if (out_texture_2d_ == GL_NONE) { + glGenTextures(1, &out_texture_2d_); + glBindTexture(GL_TEXTURE_2D, out_texture_2d_); + // set the texture wrapping parameters + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); + // set the texture filtering parameters + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); + glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, nativeWindowWidth_, + nativeWindowHeight_, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0); + glBindTexture(GL_TEXTURE_2D, GL_NONE); + } + std::vector matrix_vec(matrix, matrix + 16); + oesTo2dRenderer_->setMatrix(matrix_vec); + + if (algorithm_running_) { + oesTo2dRenderer_->process(nativeImageTexId_, out_texture_2d_, + nativeWindowWidth_, nativeWindowHeight_); + GLuint out_texture = 0; + size_t out_width = 0; + size_t out_height = 0; + if (algorithm_) { + int res = algorithm_->processVideoFrame( + out_texture_2d_, nativeWindowWidth_, nativeWindowHeight_); + if (res == 0) { + algorithm_->getVideoFrameOutput(out_texture, out_width, + out_height); + } + } + if (out_texture != 0) { + float defaultMatrix[16] = {1, 0, 0, 0, 0, 1, 0, 0, + 0, 0, 1, 0, 0, 0, 0, 1}; + std::vector matrix_vec2(defaultMatrix, defaultMatrix + 16); + splitScreenRenderer_->setMatrix(matrix_vec2); + splitScreenRenderer_->setDisplayDivider(1); + splitScreenRenderer_->setSplitRatio(splitRatio_); + splitScreenRenderer_->drawToScreen(out_texture_2d_, out_texture, + nativeWindowWidth_, + nativeWindowHeight_); + } else { + oesTo2dRenderer_->drawToScreen( + nativeImageTexId_, nativeWindowWidth_, nativeWindowHeight_); + } + } else { + oesTo2dRenderer_->drawToScreen(nativeImageTexId_, nativeWindowWidth_, + nativeWindowHeight_); + } + + renderContext_->SwapBuffers(eglSurface_); +} +} // namespace bmf_lite_demo diff --git a/bmf_lite/ohos/entry/src/main/cpp/render/render_thread.h b/bmf_lite/ohos/entry/src/main/cpp/render/render_thread.h new file mode 100644 index 00000000..884711bf --- /dev/null +++ b/bmf_lite/ohos/entry/src/main/cpp/render/render_thread.h @@ -0,0 +1,132 @@ +/* + * Copyright 2024 Babit Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef NATIVEIMAGEDEMO_RENDER_THREAD_H +#define NATIVEIMAGEDEMO_RENDER_THREAD_H + +#include +#include + +#include +#include +#include + +#include "egl_render_context.h" +#include "render/oes_to_2d_renderer.h" +#include "render/split_screen_renderer.h" +#include "shader_program.h" + +#include "algorithm.h" +#include "algorithm_context.h" + +namespace bmf_lite_demo { +using RenderTask = std::function; + +class RenderThread { + public: + RenderThread(); + ~RenderThread() noexcept; + + // @param window - NativeWindow created by XComponent + // @param width - NativeWindow width. + // @param height - NativeWindow height. + void UpdateNativeWindow(void *window, uint64_t width, uint64_t height); + + void StartAlgorithm(AlgorithmEnum algorithm); + void StopAlgorithm(); + void UpdateSplitRatio(float ratio); + void SetScene(int scene); + + // disallow copy and move + RenderThread(const RenderThread &other) = delete; + void operator=(const RenderThread &other) = delete; + RenderThread(RenderThread &&other) = delete; + void operator=(RenderThread &&other) = delete; + + void PostTask(const RenderTask &task); + + uint64_t GetNativeImageSurfaceId() const { + std::lock_guard lock(nativeImageSurfaceIdMutex_); + return nativeImageSurfaceId_; + } + OHNativeWindow *GetNativeImageNativeWindow() const { + std::lock_guard lock(nativeImageNativeWindowMutex_); + return nativeImageNativeWindow_; + } + + OHNativeWindow *GetNativeWindow(); + + int nativeWindowWidth_ = 0; + int nativeWindowHeight_ = 0; + + private: + void Start(); + void ThreadMainLoop(); + + std::atomic running_{false}; + std::thread thread_; + std::thread::id threadId_; + + std::shared_ptr algorithm_; + std::atomic algorithm_running_{false}; + volatile float splitRatio_ = 0.5f; + + // 接收系统发送的Vsync信号,用于控制渲染节奏 + bool InitNativeVsync(); + void DestroyNativeVsync(); + OH_NativeVSync *nativeVsync_ = nullptr; + static void OnVsync(long long timestamp, void *data); + std::atomic vSyncCnt_{0}; + mutable std::mutex wakeUpMutex_; + std::condition_variable wakeUpCond_; + bool wakeUp_ = false; + mutable std::mutex taskMutex_; + std::vector tasks_; + + int scene_ = 0; + + // renderContext 初始化和清理 + bool InitRenderContext(); + void DestroyRenderContext(); + std::unique_ptr renderContext_; + + // 在渲染线程中执行资源的创建与清理 + bool CreateGLResources(); + void CleanGLResources(); + + OHNativeWindow *nativeWindow_ = nullptr; + EGLSurface eglSurface_ = EGL_NO_SURFACE; + + bool CreateNativeImage(); + void DestroyNativeImage(); + void DestroyAlgorithm(); + void DrawImage(); + static void OnNativeImageFrameAvailable(void *data); + OH_OnFrameAvailableListener nativeImageFrameAvailableListener_{}; + OH_NativeImage *nativeImage_ = nullptr; + GLuint nativeImageTexId_ = 0U; + mutable std::mutex nativeImageSurfaceIdMutex_; + uint64_t nativeImageSurfaceId_ = 0; + mutable std::mutex nativeImageNativeWindowMutex_; + OHNativeWindow *nativeImageNativeWindow_; + std::atomic availableFrameCnt_{0}; + + std::unique_ptr oesTo2dRenderer_; + std::unique_ptr splitScreenRenderer_; + + GLuint out_texture_2d_ = GL_NONE; +}; +} // namespace bmf_lite_demo +#endif // NATIVEIMAGEDEMO_RENDER_THREAD_H diff --git a/bmf_lite/ohos/entry/src/main/cpp/render/shader_program.cpp b/bmf_lite/ohos/entry/src/main/cpp/render/shader_program.cpp new file mode 100644 index 00000000..73b0d289 --- /dev/null +++ b/bmf_lite/ohos/entry/src/main/cpp/render/shader_program.cpp @@ -0,0 +1,116 @@ +/* + * Copyright 2024 Babit Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#include "shader_program.h" + +#include "common/common.h" +#include + +namespace bmf_lite_demo { +ShaderProgram::ShaderProgram(const std::string &vertexShader, + const std::string &fragShader) { + auto vShaderCode = vertexShader.c_str(); + GLuint vertex = glCreateShader(GL_VERTEX_SHADER); + glShaderSource(vertex, 1, &vShaderCode, nullptr); + glCompileShader(vertex); + CheckCompileErrors(vertex, "VERTEX"); + + auto fShaderCode = fragShader.c_str(); + GLuint fragment = glCreateShader(GL_FRAGMENT_SHADER); + glShaderSource(fragment, 1, &fShaderCode, nullptr); + glCompileShader(fragment); + CheckCompileErrors(fragment, "FRAGMENT"); + + id_ = glCreateProgram(); + glAttachShader(id_, vertex); + glAttachShader(id_, fragment); + glLinkProgram(id_); + CheckCompileErrors(id_, "PROGRAM"); + glDeleteShader(vertex); + glDeleteShader(fragment); +} + +ShaderProgram::~ShaderProgram() noexcept { + if (Valid()) { + glDeleteProgram(id_); + } +} + +void ShaderProgram::CheckCompileErrors(GLuint shader, + const std::string &shaderType) { + int success; + char infoLog[1024]; + if (shaderType != "PROGRAM") { + glGetShaderiv(shader, GL_COMPILE_STATUS, &success); + if (!success) { + glGetShaderInfoLog(shader, 1024, NULL, infoLog); + OH_LOG_Print(LOG_APP, LOG_ERROR, LOG_PRINT_DOMAIN, "ShaderProgram", + "ERROR::SHADER_COMPILATION_ERROR of type: %{public}s, " + "infoLog is: %{public}s", + shaderType.c_str(), infoLog); + } + } else { + glGetProgramiv(shader, GL_LINK_STATUS, &success); + if (!success) { + glGetProgramInfoLog(shader, 1024, NULL, infoLog); + OH_LOG_Print(LOG_APP, LOG_ERROR, LOG_PRINT_DOMAIN, "ShaderProgram", + "ERROR::PROGRAM_LINKING_ERROR of type: %{public}s, " + "infoLog is: %{public}s", + shaderType.c_str(), infoLog); + } + } +} + +void ShaderProgram::SetBool(const std::string &name, bool value) { + glUniform1i(glGetUniformLocation(id_, name.c_str()), + static_cast(value)); +} + +void ShaderProgram::SetInt(const std::string &name, int value) { + glUniform1i(glGetUniformLocation(id_, name.c_str()), + static_cast(value)); +} + +void ShaderProgram::SetFloat(const std::string &name, float value) { + glUniform1f(glGetUniformLocation(id_, name.c_str()), + static_cast(value)); +} + +void ShaderProgram::SetFloat4v(const std::string &name, float *values, + int cnt) { + if (cnt != 4 || values == nullptr) { + OH_LOG_Print(LOG_APP, LOG_ERROR, LOG_PRINT_DOMAIN, "ShaderProgram", + "ShaderProgram::SetFloat4v: invalid arguments."); + return; + } + glUniform4fv(glGetUniformLocation(id_, name.c_str()), 1, values); +} + +void ShaderProgram::SetMatrix4v(const std::string &name, float *matrix, int cnt, + bool transpose) { + if (cnt != 16 || matrix == nullptr) { + OH_LOG_Print(LOG_APP, LOG_ERROR, LOG_PRINT_DOMAIN, "ShaderProgram", + "ShaderProgram::SetFloat4v: invalid arguments."); + return; + } + GLboolean glTranspose = transpose ? GL_TRUE : GL_FALSE; + glUniformMatrix4fv(glGetUniformLocation(id_, name.c_str()), 1, glTranspose, + matrix); +} + +GLint ShaderProgram::GetAttribLocation(const std::string &name) { + return glGetAttribLocation(id_, name.c_str()); +} +} // namespace bmf_lite_demo diff --git a/bmf_lite/ohos/entry/src/main/cpp/render/shader_program.h b/bmf_lite/ohos/entry/src/main/cpp/render/shader_program.h new file mode 100644 index 00000000..c089fa20 --- /dev/null +++ b/bmf_lite/ohos/entry/src/main/cpp/render/shader_program.h @@ -0,0 +1,52 @@ +/* + * Copyright 2024 Babit Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef NATIVEIMAGEDEMO_SHADER_PROGRAM_H +#define NATIVEIMAGEDEMO_SHADER_PROGRAM_H + +#include + +#include + +namespace bmf_lite_demo { +class ShaderProgram { + public: + ShaderProgram(const std::string &vertexShader, + const std::string &fragShader); + ~ShaderProgram() noexcept; + + // disallow copy and move + ShaderProgram(const ShaderProgram &other) = delete; + void operator=(const ShaderProgram &other) = delete; + ShaderProgram(ShaderProgram &&other) = delete; + void operator=(ShaderProgram &&other) = delete; + + bool Valid() const { return id_ > 0; } + void Use() const { glUseProgram(id_); } + + void SetBool(const std::string &name, bool value); + void SetInt(const std::string &name, int value); + void SetFloat(const std::string &name, float value); + void SetFloat4v(const std::string &name, float *values, int cnt); + void SetMatrix4v(const std::string &name, float *matrix, int cnt, + bool transpose = false); + GLint GetAttribLocation(const std::string &name); + + private: + void CheckCompileErrors(GLuint shader, const std::string &shaderType); + GLuint id_ = 0; +}; +} // namespace bmf_lite_demo +#endif // NATIVEIMAGEDEMO_SHADER_PROGRAM_H diff --git a/bmf_lite/ohos/entry/src/main/cpp/render/split_screen_renderer.cpp b/bmf_lite/ohos/entry/src/main/cpp/render/split_screen_renderer.cpp new file mode 100644 index 00000000..6241915c --- /dev/null +++ b/bmf_lite/ohos/entry/src/main/cpp/render/split_screen_renderer.cpp @@ -0,0 +1,147 @@ +/* + * Copyright 2024 Babit Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#include "split_screen_renderer.h" +#include +#include + +namespace bmf_lite_demo { + +namespace split_shader { +std::string vertexShader = R"delimiter( +uniform mat4 matTransform; +attribute vec3 position; +attribute vec2 texCoord; +varying vec2 vTexCoord; + +void main() +{ + gl_Position = matTransform * vec4(position, 1.0); + vTexCoord = texCoord; +} +)delimiter"; + +std::string fragmentShader = R"delimiter( +precision highp float; +uniform sampler2D leftTexture; +uniform sampler2D rightTexture; +uniform float splitRatio; +uniform int displayDivider; +varying vec2 vTexCoord; + +void main() +{ + float divWidth = 0.005; + if (displayDivider <= 0) { + divWidth = 0.0; + } + if (vTexCoord.x <= splitRatio - divWidth) { + gl_FragColor = texture2D(leftTexture, vTexCoord); + } else if (vTexCoord.x > splitRatio - divWidth && vTexCoord.x <= splitRatio + divWidth && displayDivider > 0) { + gl_FragColor = vec4(1.0, 0.5, 0.3, 1.0); + } else { + gl_FragColor = texture2D(rightTexture, vTexCoord); + } +} +)delimiter"; + +GLfloat vertices[] = { + // positions // texture coords + -1.0f, 1.0f, 0.0f, 0.0f, 1.0f, // top left + -1.0f, -1.0f, 0.0f, 0.0f, 0.0f, // bottom left + 1.0f, -1.0f, 0.0f, 1.0f, 0.0f, // bottom right + 1.0f, 1.0f, 0.0f, 1.0f, 1.0f // top right +}; +GLuint indices[] = { + 0, 1, 2, // first triangle + 0, 2, 3 // second triangle +}; + +} // namespace split_shader + +SplitScreenRenderer::SplitScreenRenderer() { + textureSplitShaderProgram_ = std::make_unique( + split_shader::vertexShader, split_shader::fragmentShader); +} + +SplitScreenRenderer::~SplitScreenRenderer() { + glDeleteVertexArrays(1, &vertexArrayObject_); + vertexArrayObject_ = GL_NONE; + glDeleteBuffers(1, &vertexBufferObject_); + vertexBufferObject_ = GL_NONE; + textureSplitShaderProgram_.reset(); + if (frameBuffer_ != GL_NONE) { + glDeleteFramebuffers(1, &frameBuffer_); + frameBuffer_ = GL_NONE; + } +} + +int SplitScreenRenderer::init() { + if (!textureSplitShaderProgram_->Valid()) { + return -1; + } + glGenVertexArrays(1, &vertexArrayObject_); + glGenBuffers(1, &vertexBufferObject_); + + glBindVertexArray(vertexArrayObject_); + glBindBuffer(GL_ARRAY_BUFFER, vertexBufferObject_); + glBufferData(GL_ARRAY_BUFFER, sizeof(split_shader::vertices), + split_shader::vertices, GL_STATIC_DRAW); + glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 5 * sizeof(float), + (void *)0); + glEnableVertexAttribArray(0); + glVertexAttribPointer(1, 2, GL_FLOAT, GL_FALSE, 5 * sizeof(float), + (void *)(3 * sizeof(float))); + glEnableVertexAttribArray(1); + + glGenFramebuffers(1, &frameBuffer_); + + glBindBuffer(GL_ARRAY_BUFFER, 0); + glBindVertexArray(0); + return 0; +} + +void SplitScreenRenderer::setDisplayDivider(int display_divider) { + display_divider_ = display_divider; +} + +void SplitScreenRenderer::setSplitRatio(float ratio) { split_ratio_ = ratio; } + +void SplitScreenRenderer::setMatrix(std::vector matrix) { + matrix_ = std::move(matrix); +} + +int SplitScreenRenderer::drawToScreen(GLuint left_texture, GLuint right_texture, + int width, int height) { + glViewport(0, 0, width, height); + textureSplitShaderProgram_->Use(); + glBindVertexArray(vertexArrayObject_); + textureSplitShaderProgram_->Use(); + textureSplitShaderProgram_->SetInt("leftTexture", 0); + textureSplitShaderProgram_->SetInt("rightTexture", 1); + textureSplitShaderProgram_->SetFloat("splitRatio", split_ratio_); + textureSplitShaderProgram_->SetInt("displayDivider", display_divider_); + textureSplitShaderProgram_->SetMatrix4v("matTransform", matrix_.data(), 16, + false); + glActiveTexture(GL_TEXTURE0); + glBindTexture(GL_TEXTURE_2D, left_texture); + glActiveTexture(GL_TEXTURE1); + glBindTexture(GL_TEXTURE_2D, right_texture); + glDrawElements(GL_TRIANGLES, 6, GL_UNSIGNED_INT, split_shader::indices); + glBindVertexArray(0); + return 0; +} + +} // namespace bmf_lite_demo \ No newline at end of file diff --git a/bmf_lite/ohos/entry/src/main/cpp/render/split_screen_renderer.h b/bmf_lite/ohos/entry/src/main/cpp/render/split_screen_renderer.h new file mode 100644 index 00000000..2c7ec394 --- /dev/null +++ b/bmf_lite/ohos/entry/src/main/cpp/render/split_screen_renderer.h @@ -0,0 +1,51 @@ +/* + * Copyright 2024 Babit Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef OHOS_SPLIT_SCREEN_RENDERER_H +#define OHOS_SPLIT_SCREEN_RENDERER_H + +#include "common/common.h" +#include "shader_program.h" +#include + +namespace bmf_lite_demo { +class SplitScreenRenderer { + public: + SplitScreenRenderer(); + ~SplitScreenRenderer(); + + int init(); + void setDisplayDivider(int display_divider); + void setSplitRatio(float ratio); + void setMatrix(std::vector matrix); + int drawToScreen(GLuint left_texture, GLuint right_texture, int width, + int height); + + private: + std::unique_ptr textureSplitShaderProgram_; + + GLuint vertexArrayObject_ = GL_NONE; + GLuint vertexBufferObject_ = GL_NONE; + + GLuint frameBuffer_ = GL_NONE; + + std::vector matrix_; + + float split_ratio_ = 0.5f; + int display_divider_ = 0; +}; +} // namespace bmf_lite_demo + +#endif // OHOS_SPLIT_SCREEN_RENDERER_H diff --git a/bmf_lite/ohos/entry/src/main/cpp/types/libnativerender/nativerender.d.ts b/bmf_lite/ohos/entry/src/main/cpp/types/libnativerender/nativerender.d.ts new file mode 100644 index 00000000..e44f3615 --- /dev/null +++ b/bmf_lite/ohos/entry/src/main/cpp/types/libnativerender/nativerender.d.ts @@ -0,0 +1 @@ +export const add: (a: number, b: number) => number; \ No newline at end of file diff --git a/bmf_lite/ohos/entry/src/main/cpp/types/libnativerender/oh-package.json5 b/bmf_lite/ohos/entry/src/main/cpp/types/libnativerender/oh-package.json5 new file mode 100644 index 00000000..5c87384f --- /dev/null +++ b/bmf_lite/ohos/entry/src/main/cpp/types/libnativerender/oh-package.json5 @@ -0,0 +1,6 @@ +{ + "name": "libnativerender.so", + "types": "./nativerender.d.ts", + "version": "", + "description": "Please describe the basic information." +} \ No newline at end of file diff --git a/bmf_lite/ohos/entry/src/main/ets/component/KComponentView.ets b/bmf_lite/ohos/entry/src/main/ets/component/KComponentView.ets new file mode 100644 index 00000000..b39ec33a --- /dev/null +++ b/bmf_lite/ohos/entry/src/main/ets/component/KComponentView.ets @@ -0,0 +1,138 @@ +/* + * Copyright 2024 Babit Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import XComponentContext from "../interface/XComponentContext" +import Logger from '../utils/Logger'; +import common from '@ohos.app.ability.common'; +import abilityAccessCtrl from '@ohos.abilityAccessCtrl'; +import { GlobalContext } from '../utils/GlobalContext'; +import resourceManager from '@ohos.resourceManager'; + +@Component +export struct KComponentView { + @Link xComponentContext: XComponentContext | undefined; + mXComponentController: XComponentController = new XComponentController() + @State permissionCamera: Boolean = false; + @Prop xComponentWidth: number = 384; + @Prop xComponentHeight: number = 450; + @Prop usage: number = 0; // 0 player, 1 camera + private appContext: common.Context = getContext(this); + atManager = abilityAccessCtrl.createAtManager(); + + private tag: string = 'KComponentView'; + + private mgr: resourceManager.ResourceManager = {} as resourceManager.ResourceManager; + private fileDescriptor: resourceManager.RawFileDescriptor | null = null; + + private isCameraCreated: Boolean = false; + private isCameraRunning: Boolean = false; + private isXComponentLoaded: Boolean = false; + private isPlayerRunning: Boolean = false; + private TAG: string = 'XComponent'; + + async aboutToAppear() { + if (this.usage === 1) { + if (!this.isCameraCreated) { + await this.requestPermissionsFn(); + } + } + } + + async aboutToDisappear() { + if (this.usage === 0) { + if (this.xComponentContext && this.isPlayerRunning) { + this.xComponentContext.stopPlayer(); + this.xComponentContext.releasePlayer(); + } + } else if (this.usage === 1) { + if (this.xComponentContext && this.isCameraRunning) { + this.xComponentContext.stopCamera(); + this.xComponentContext.releaseCamera(); + } + } + } + + async requestPermissionsFn() { + Logger.info(this.TAG, 'requestPermissionsFn entry'); + if (this.isCameraCreated || this.permissionCamera) return; + try { + this.atManager.requestPermissionsFromUser(this.appContext, [ + 'ohos.permission.CAMERA', + 'ohos.permission.MICROPHONE' + ]).then(() => { + Logger.info(this.TAG, 'request Permissions success!'); + if (this.xComponentContext && !this.isCameraCreated && this.isXComponentLoaded) { + this.xComponentContext.createCamera(); + this.xComponentContext.startCamera(); + this.isCameraCreated = true; + this.isCameraRunning = true; + } + this.permissionCamera = true; + }) + } catch (err) { + Logger.info(this.TAG, `requestPermissionsFromUser call Failed! error: ${err.code}`); + this.permissionCamera = false; + } + } + + build() { + Column() { + XComponent({ + id: 'xcomponentId', + type: XComponentType.SURFACE, + libraryname: 'nativerender', + controller: this.mXComponentController + }) + .onLoad((xComponentContext) => { + Logger.info(this.TAG, 'XComponent onLoad'); + this.xComponentContext = xComponentContext as XComponentContext; + this.isXComponentLoaded = true; + this.mXComponentController.setXComponentSurfaceSize( + { surfaceWidth: this.xComponentWidth, + surfaceHeight: this.xComponentHeight } + ); + if (this.usage === 0) { + this.xComponentContext.createPlayer(); + this.play(); + this.isPlayerRunning = true; + } else { + if (this.permissionCamera && !this.isCameraCreated) { + this.xComponentContext.createCamera(); + this.xComponentContext.startCamera(); + this.isCameraCreated = true; + this.isCameraRunning = true; + } + } + }) + .onDestroy(() => { + console.log('onDestroy'); + }) + .id("xcomponent") + .width(this.xComponentWidth) + .height(this.xComponentHeight) + } + } + + async play() { + if (this.xComponentContext) { + this.mgr = (GlobalContext.getContext().getObject('context') as (common.UIAbilityContext)).resourceManager; + this.fileDescriptor = await this.mgr.getRawFd('test.mp4'); + this.xComponentContext.setFdSource(this.fileDescriptor.fd, + this.fileDescriptor.offset, this.fileDescriptor.length); + this.xComponentContext.startPlayer(); + } + } + +} diff --git a/bmf_lite/ohos/entry/src/main/ets/entryability/EntryAbility.ets b/bmf_lite/ohos/entry/src/main/ets/entryability/EntryAbility.ets new file mode 100644 index 00000000..a6667f61 --- /dev/null +++ b/bmf_lite/ohos/entry/src/main/ets/entryability/EntryAbility.ets @@ -0,0 +1,64 @@ +/* + * Copyright 2024 Babit Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { AbilityConstant, UIAbility, Want } from '@kit.AbilityKit'; +import { hilog } from '@kit.PerformanceAnalysisKit'; +import { window } from '@kit.ArkUI'; +import { GlobalContext } from '../utils/GlobalContext'; + +export default class EntryAbility extends UIAbility { + onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void { + GlobalContext.getContext().setObject('abilityWant', want) + GlobalContext.getContext().setObject('context', this.context) + if (want.parameters) { + if (want.parameters.currentTime) { + GlobalContext.getContext().setObject('currentTime', want.parameters.currentTime); + } + } + hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onCreate'); + } + + onDestroy(): void { + hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onDestroy'); + } + + onWindowStageCreate(windowStage: window.WindowStage): void { + // Main window is created, set main page for this ability + hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onWindowStageCreate'); + + windowStage.loadContent('pages/Index', (err) => { + if (err.code) { + hilog.error(0x0000, 'testTag', 'Failed to load the content. Cause: %{public}s', JSON.stringify(err) ?? ''); + return; + } + hilog.info(0x0000, 'testTag', 'Succeeded in loading the content.'); + }); + } + + onWindowStageDestroy(): void { + // Main window is destroyed, release UI related resources + hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onWindowStageDestroy'); + } + + onForeground(): void { + // Ability has brought to foreground + hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onForeground'); + } + + onBackground(): void { + // Ability has back to background + hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onBackground'); + } +} diff --git a/bmf_lite/ohos/entry/src/main/ets/interface/XComponentContext.ets b/bmf_lite/ohos/entry/src/main/ets/interface/XComponentContext.ets new file mode 100644 index 00000000..881f3d17 --- /dev/null +++ b/bmf_lite/ohos/entry/src/main/ets/interface/XComponentContext.ets @@ -0,0 +1,28 @@ +/* + * Copyright 2024 Babit Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export default interface XComponentContext { + createCamera(): void; + startCamera(): void; + stopCamera(): void; + releaseCamera(): void; + createPlayer(): void; + setFdSource(fd: number, offset: number, size: number): number; + startPlayer(): void; + stopPlayer(): void; + releasePlayer(): void; + startAlgorithm(algType: number): void; + stopAlgorithm(algType: number): void; +} \ No newline at end of file diff --git a/bmf_lite/ohos/entry/src/main/ets/pages/CameraPage.ets b/bmf_lite/ohos/entry/src/main/ets/pages/CameraPage.ets new file mode 100644 index 00000000..978a853c --- /dev/null +++ b/bmf_lite/ohos/entry/src/main/ets/pages/CameraPage.ets @@ -0,0 +1,115 @@ +/* + * Copyright 2024 Babit Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import Logger from '../utils/Logger'; +import display from '@ohos.display'; +import XComponentContext from "../interface/XComponentContext" +import {KComponentView} from "../component/KComponentView" +import { GlobalContext } from '../utils/GlobalContext'; + +@Entry +@Component +export struct CameraPage { + @State xComponentWidth: number = 384; + @State xComponentHeight: number = 450; + @State xComponentContext: XComponentContext | undefined = undefined; + + private screenHeight: number = 0; + private screenWidth: number = 0; + + @State private algRunning: boolean = false; + + private TAG: string = 'CameraPage'; + + async aboutToAppear() { + Logger.info(this.TAG, `aboutToAppear`); + let mDisplay = display.getDefaultDisplaySync(); + this.screenWidth = px2vp(mDisplay.width); + this.screenHeight = px2vp(mDisplay.height); + this.initXComponentSize(); + } + + initXComponentSize(): void { + this.xComponentWidth = this.screenWidth; + this.xComponentHeight = this.screenWidth * 1280 / 720; + } + + async aboutToDisAppear() { + Logger.info(this.TAG, `aboutToDisAppear`); + } + + async onPageShow() { + Logger.info(this.TAG, `onPageShow`); + + } + + async onPageHide() { + Logger.info(this.TAG, `onPageHide`); + } + + build() { + Column() { + Stack() { + KComponentView({ + xComponentWidth:this.xComponentWidth, + xComponentHeight:this.xComponentHeight, + xComponentContext:this.xComponentContext, + usage:1 + }) + }.width(this.xComponentWidth) + .height(this.xComponentHeight) + + Row() { + Text($r('app.string.hint_unprocessed')) + .width($r('app.float.size_50')) + .height($r('app.float.size_24')) + Text($r('app.string.hint_processed')) + .width($r('app.float.size_50')) + .height($r('app.float.size_24')) + } + .width('100%') + .height('3%') + .justifyContent(FlexAlign.SpaceEvenly) + .visibility(this.algRunning ? Visibility.Visible : Visibility.Hidden) + + Row() { + Button($r('app.string.button_start_denoise')) + .width($r('app.float.size_80')) + .height($r('app.float.size_48')) + .onClick(() => { + if (!this.algRunning && this.xComponentContext) { + this.xComponentContext.startAlgorithm(GlobalContext.ALG_DENOISE); + this.algRunning = true; + } + }) + Button($r('app.string.button_stop_denoise')) + .width($r('app.float.size_80')) + .height($r('app.float.size_48')) + .onClick(() => { + if (this.algRunning && this.xComponentContext) { + this.xComponentContext.stopAlgorithm(GlobalContext.ALG_DENOISE); + this.algRunning = false; + } + }) + } + .width('100%') + .height('6%') + .justifyContent(FlexAlign.SpaceEvenly) + } + .width('100%') + .height('100%') + } + +} \ No newline at end of file diff --git a/bmf_lite/ohos/entry/src/main/ets/pages/Index.ets b/bmf_lite/ohos/entry/src/main/ets/pages/Index.ets new file mode 100644 index 00000000..6b6cd521 --- /dev/null +++ b/bmf_lite/ohos/entry/src/main/ets/pages/Index.ets @@ -0,0 +1,77 @@ +/* + * Copyright 2024 Babit Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import router from '@ohos.router' +import prompt from '@ohos.promptAction' + +@Entry +@Component +struct Index { + + build() { + Column() { + Text("Try out BMF Lite!") + .fontSize($r('app.float.size_20')) + .width('70%') + .textAlign(TextAlign.Center) + .margin({ top: $r('app.float.size_80'), bottom: $r('app.float.size_15') }) + .alignSelf(ItemAlign.Center) + .fontColor(Color.Black) + + Button($r('app.string.button_player_sr')) + .id('player_sr') + .fontSize($r('app.float.size_20')) + .width('70%') + .type(ButtonType.Normal) + .borderRadius($r('app.float.size_5')) + .margin({ top: $r('app.float.size_15'), bottom: $r('app.float.size_15') }) + .backgroundColor($r('app.color.primary')) + .fontColor(Color.White) + .onClick(() => { + router.pushUrl({ url: 'pages/PlayerPage' }) + }) + + Button($r('app.string.button_camera_denoise')) + .id('camera_denoise') + .fontSize($r('app.float.size_20')) + .width('70%') + .type(ButtonType.Normal) + .borderRadius($r('app.float.size_5')) + .margin({ top: $r('app.float.size_15'), bottom: $r('app.float.size_15') }) + .backgroundColor($r('app.color.primary')) + .fontColor(Color.White) + .onClick(() => { + router.pushUrl({ url: 'pages/CameraPage' }) + }) + + // Button($r('app.string.button_text_to_pic')) + // .fontSize($r('app.float.size_20')) + // .width('70%') + // .type(ButtonType.Normal) + // .borderRadius($r('app.float.size_5')) + // .margin({ top: $r('app.float.size_15'), bottom: $r('app.float.size_15') }) + // .backgroundColor($r('app.color.primary')) + // .fontColor(Color.White) + // .onClick(() => { + // prompt.showToast({ message: $r("app.string.desc_constructing"), duration: 1000 }) + // }) + + } + .width('100%') + .alignItems(HorizontalAlign.Center) + .alignSelf(ItemAlign.Center) + } + +} \ No newline at end of file diff --git a/bmf_lite/ohos/entry/src/main/ets/pages/PlayerPage.ets b/bmf_lite/ohos/entry/src/main/ets/pages/PlayerPage.ets new file mode 100644 index 00000000..8c1e4508 --- /dev/null +++ b/bmf_lite/ohos/entry/src/main/ets/pages/PlayerPage.ets @@ -0,0 +1,111 @@ +/* + * Copyright 2024 Babit Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { GlobalContext } from '../utils/GlobalContext' +import media from '@ohos.multimedia.media'; +import display from '@ohos.display'; +import XComponentContext from "../interface/XComponentContext" +import {KComponentView} from "../component/KComponentView" +import Logger from '../utils/Logger'; +// import apis from 'libnativerender.so' + + +@Entry +@Component +export struct PlayerPage { + private screenHeight: number = 0; + private screenWidth: number = 0; + @State xComponentWidth: number = 384; + @State xComponentHeight: number = 450; + @State xComponentContext: XComponentContext | undefined = undefined; + + @State private algRunning: boolean = false; + + aboutToAppear() { + let mDisplay = display.getDefaultDisplaySync(); + this.screenWidth = px2vp(mDisplay.width); + this.screenHeight = px2vp(mDisplay.height); + this.initXComponentSize(); + } + + initXComponentSize(): void { + this.xComponentWidth = this.screenWidth; + this.xComponentHeight = this.screenWidth * 1280 / 720; + } + + aboutToDisappear() { + } + + onPageHide() { + } + + onPageShow() { + } + + build() { + Column() { + Stack() { + KComponentView({ + xComponentWidth: this.xComponentWidth, + xComponentHeight: this.xComponentHeight, + xComponentContext: this.xComponentContext, + usage: 0 + }) + }.backgroundColor(Color.Black) + .width(this.xComponentWidth) + .height(this.xComponentHeight) + + Row() { + Text($r('app.string.hint_unprocessed')) + .width($r('app.float.size_50')) + .height($r('app.float.size_24')) + Text($r('app.string.hint_processed')) + .width($r('app.float.size_50')) + .height($r('app.float.size_24')) + } + .width('100%') + .height('3%') + .justifyContent(FlexAlign.SpaceEvenly) + .visibility(this.algRunning ? Visibility.Visible : Visibility.Hidden) + + Row() { + Button($r('app.string.button_start_sr')) + .width($r('app.float.size_80')) + .height($r('app.float.size_48')) + .onClick(() => { + if (!this.algRunning && this.xComponentContext) { + this.xComponentContext.startAlgorithm(GlobalContext.ALG_SUPER_RESOLUTION); + this.algRunning = true; + } + }) + Button($r('app.string.button_stop_sr')) + .width($r('app.float.size_80')) + .height($r('app.float.size_48')) + .onClick(() => { + if (this.algRunning && this.xComponentContext) { + this.xComponentContext.stopAlgorithm(GlobalContext.ALG_SUPER_RESOLUTION); + this.algRunning = false; + } + }) + } + .width('100%') + .height('6%') + .justifyContent(FlexAlign.SpaceEvenly) + } + .width('100%') + .height('100%') + } + +} \ No newline at end of file diff --git a/bmf_lite/ohos/entry/src/main/ets/utils/GlobalContext.ets b/bmf_lite/ohos/entry/src/main/ets/utils/GlobalContext.ets new file mode 100644 index 00000000..0b6abfbd --- /dev/null +++ b/bmf_lite/ohos/entry/src/main/ets/utils/GlobalContext.ets @@ -0,0 +1,40 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License,Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +export class GlobalContext { + private constructor() { + } + + private static instance: GlobalContext; + private _objects = new Map(); + + public static getContext(): GlobalContext { + if (!GlobalContext.instance) { + GlobalContext.instance = new GlobalContext(); + } + return GlobalContext.instance; + } + + getObject(value: string): Object | undefined { + return this._objects.get(value); + } + + setObject(key: string, objectClass: Object): void { + this._objects.set(key, objectClass); + } + + public static ALG_SUPER_RESOLUTION = 0; + public static ALG_DENOISE = 1; +} \ No newline at end of file diff --git a/bmf_lite/ohos/entry/src/main/ets/utils/Logger.ts b/bmf_lite/ohos/entry/src/main/ets/utils/Logger.ts new file mode 100644 index 00000000..e6a3e75e --- /dev/null +++ b/bmf_lite/ohos/entry/src/main/ets/utils/Logger.ts @@ -0,0 +1,45 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import hilog from '@ohos.hilog'; + +class Logger { + private domain: number; + private prefix: string; + private format: string = '%{public}s, %{public}s'; + + constructor(prefix: string) { + this.prefix = prefix; + this.domain = 0xFF00; + } + + debug(...args: string[]): void { + hilog.debug(this.domain, this.prefix, this.format, args); + } + + info(...args: string[]): void { + hilog.info(this.domain, this.prefix, this.format, args); + } + + warn(...args: string[]): void { + hilog.warn(this.domain, this.prefix, this.format, args); + } + + error(...args: string[]): void { + hilog.error(this.domain, this.prefix, this.format, args); + } +} + +export default new Logger('[BMFLiteSample]'); \ No newline at end of file diff --git a/bmf_lite/ohos/entry/src/main/module.json5 b/bmf_lite/ohos/entry/src/main/module.json5 new file mode 100644 index 00000000..ec3d5bba --- /dev/null +++ b/bmf_lite/ohos/entry/src/main/module.json5 @@ -0,0 +1,80 @@ +{ + "module": { + "name": "entry", + "type": "entry", + "description": "$string:module_desc", + "mainElement": "EntryAbility", + "deviceTypes": [ + "phone", + "tablet", + "2in1" + ], + "deliveryWithInstall": true, + "installationFree": false, + "pages": "$profile:main_pages", + "abilities": [ + { + "name": "EntryAbility", + "srcEntry": "./ets/entryability/EntryAbility.ets", + "description": "$string:EntryAbility_desc", + "icon": "$media:startIcon", + "label": "$string:EntryAbility_label", + "startWindowIcon": "$media:startIcon", + "startWindowBackground": "$color:start_window_background", + "exported": true, + "skills": [ + { + "entities": [ + "entity.system.home" + ], + "actions": [ + "action.system.home" + ] + } + ] + } + ], + "requestPermissions": [ + { + "name": "ohos.permission.CAMERA", + "reason": "$string:app_name", + "usedScene": { + "abilities": [ + "EntryAbility" + ], + "when": "inuse", + } + }, + { + "name": "ohos.permission.MICROPHONE", + "reason": "$string:app_name", + "usedScene": { + "abilities": [ + "EntryAbility" + ], + "when":"inuse" + } + }, + { + "name": "ohos.permission.WRITE_MEDIA", + "reason": "$string:app_name", + "usedScene": { + "abilities": [ + "EntryAbility" + ], + "when":"inuse" + } + }, + { + "name": "ohos.permission.READ_MEDIA", + "reason": "$string:app_name", + "usedScene": { + "abilities": [ + "EntryAbility" + ], + "when":"inuse" + } + }, + ] + } +} \ No newline at end of file diff --git a/bmf_lite/ohos/entry/src/main/resources/base/element/color.json b/bmf_lite/ohos/entry/src/main/resources/base/element/color.json new file mode 100644 index 00000000..6d39f994 --- /dev/null +++ b/bmf_lite/ohos/entry/src/main/resources/base/element/color.json @@ -0,0 +1,32 @@ +{ + "color": [ + { + "name": "start_window_background", + "value": "#ffffff" + }, + { + "name": "background", + "value": "#ddddee" + }, + { + "name": "primary", + "value": "#3B6FF5" + }, + { + "name": "secondary", + "value": "#8BC6C6" + }, + { + "name": "accent", + "value": "#FF944D" + }, + { + "name": "dark_grey", + "value": "#333333" + }, + { + "name": "light_grey", + "value": "#999999" + } + ] +} \ No newline at end of file diff --git a/bmf_lite/ohos/entry/src/main/resources/base/element/float.json b/bmf_lite/ohos/entry/src/main/resources/base/element/float.json new file mode 100644 index 00000000..0e5025d6 --- /dev/null +++ b/bmf_lite/ohos/entry/src/main/resources/base/element/float.json @@ -0,0 +1,108 @@ +{ + "float": [ + { + "name": "size_zero_five", + "value": "0.5" + }, + { + "name": "size_zero_six", + "value": "0.6" + }, + { + "name": "size_zero", + "value": "0" + }, + { + "name": "size_1", + "value": "1" + }, + { + "name": "size_5", + "value": "5" + }, + { + "name": "size_10", + "value": "10" + }, + { + "name": "size_12", + "value": "12" + }, + { + "name": "size_15", + "value": "15" + }, + { + "name": "size_16", + "value": "16" + }, + { + "name": "size_18", + "value": "18" + }, + { + "name": "size_20", + "value": "20" + }, + { + "name": "size_down_20", + "value": "-20" + }, + { + "name": "size_24", + "value": "24" + }, + { + "name": "size_25", + "value": "25" + }, + { + "name": "size_30", + "value": "30" + }, + { + "name": "size_32", + "value": "32" + }, + { + "name": "size_35", + "value": "35" + }, + { + "name": "size_40", + "value": "40" + }, + { + "name": "size_45", + "value": "45" + }, + { + "name": "size_48", + "value": "48" + }, + { + "name": "size_50", + "value": "50" + }, + { + "name": "size_64", + "value": "64" + }, + { + "name": "size_75", + "value": "75" + }, + { + "name": "size_80", + "value": "80" + }, + { + "name": "size_720", + "value": "720" + }, + { + "name": "size_1280", + "value": "1280" + } + ] +} \ No newline at end of file diff --git a/bmf_lite/ohos/entry/src/main/resources/base/element/string.json b/bmf_lite/ohos/entry/src/main/resources/base/element/string.json new file mode 100644 index 00000000..4945c41d --- /dev/null +++ b/bmf_lite/ohos/entry/src/main/resources/base/element/string.json @@ -0,0 +1,56 @@ +{ + "string": [ + { + "name": "module_desc", + "value": "module description" + }, + { + "name": "EntryAbility_desc", + "value": "description" + }, + { + "name": "EntryAbility_label", + "value": "BMF Lite" + }, + { + "name": "button_player_sr", + "value": "播放超分辨率" + }, + { + "name": "button_camera_denoise", + "value": "拍摄降噪" + }, + { + "name": "button_text_to_pic", + "value": "文本生成图片" + }, + { + "name": "desc_constructing", + "value": "Constructing..." + }, + { + "name": "button_start_sr", + "value": "开启超分" + }, + { + "name": "button_stop_sr", + "value": "关闭超分" + }, + { + "name": "button_start_denoise", + "value": "开启降噪" + }, + { + "name": "button_stop_denoise", + "value": "关闭降噪" + }, + { + "name": "hint_unprocessed", + "value": "处理前" + }, + { + "name": "hint_processed", + "value": "处理后" + } + ] +} \ No newline at end of file diff --git a/bmf_lite/ohos/entry/src/main/resources/base/media/background.png b/bmf_lite/ohos/entry/src/main/resources/base/media/background.png new file mode 100644 index 00000000..f939c9fa Binary files /dev/null and b/bmf_lite/ohos/entry/src/main/resources/base/media/background.png differ diff --git a/bmf_lite/ohos/entry/src/main/resources/base/media/foreground.png b/bmf_lite/ohos/entry/src/main/resources/base/media/foreground.png new file mode 100644 index 00000000..4483ddad Binary files /dev/null and b/bmf_lite/ohos/entry/src/main/resources/base/media/foreground.png differ diff --git a/bmf_lite/ohos/entry/src/main/resources/base/media/layered_image.json b/bmf_lite/ohos/entry/src/main/resources/base/media/layered_image.json new file mode 100644 index 00000000..fb499204 --- /dev/null +++ b/bmf_lite/ohos/entry/src/main/resources/base/media/layered_image.json @@ -0,0 +1,7 @@ +{ + "layered-image": + { + "background" : "$media:background", + "foreground" : "$media:foreground" + } +} \ No newline at end of file diff --git a/bmf_lite/ohos/entry/src/main/resources/base/media/startIcon.png b/bmf_lite/ohos/entry/src/main/resources/base/media/startIcon.png new file mode 100644 index 00000000..4c2002d1 Binary files /dev/null and b/bmf_lite/ohos/entry/src/main/resources/base/media/startIcon.png differ diff --git a/bmf_lite/ohos/entry/src/main/resources/base/profile/main_pages.json b/bmf_lite/ohos/entry/src/main/resources/base/profile/main_pages.json new file mode 100644 index 00000000..62b6ad88 --- /dev/null +++ b/bmf_lite/ohos/entry/src/main/resources/base/profile/main_pages.json @@ -0,0 +1,7 @@ +{ + "src": [ + "pages/Index", + "pages/PlayerPage", + "pages/CameraPage" + ] +} diff --git a/bmf_lite/ohos/entry/src/main/resources/en_US/element/string.json b/bmf_lite/ohos/entry/src/main/resources/en_US/element/string.json new file mode 100644 index 00000000..96d39a4f --- /dev/null +++ b/bmf_lite/ohos/entry/src/main/resources/en_US/element/string.json @@ -0,0 +1,56 @@ +{ + "string": [ + { + "name": "module_desc", + "value": "module description" + }, + { + "name": "EntryAbility_desc", + "value": "description" + }, + { + "name": "EntryAbility_label", + "value": "BMF Lite" + }, + { + "name": "button_player_sr", + "value": "Player Super Resolution" + }, + { + "name": "button_camera_denoise", + "value": "Camera Denoise" + }, + { + "name": "button_text_to_pic", + "value": "Text to Picture" + }, + { + "name": "desc_constructing", + "value": "Constructing..." + }, + { + "name": "button_start_sr", + "value": "Start SR" + }, + { + "name": "button_stop_sr", + "value": "Stop SR" + }, + { + "name": "button_start_denoise", + "value": "Start Denoise" + }, + { + "name": "button_stop_denoise", + "value": "Stop Denoise" + }, + { + "name": "hint_unprocessed", + "value": "Unprocessed" + }, + { + "name": "hint_processed", + "value": "Processed" + } + ] +} \ No newline at end of file diff --git a/bmf_lite/ohos/entry/src/main/resources/zh_CN/element/string.json b/bmf_lite/ohos/entry/src/main/resources/zh_CN/element/string.json new file mode 100644 index 00000000..9035a155 --- /dev/null +++ b/bmf_lite/ohos/entry/src/main/resources/zh_CN/element/string.json @@ -0,0 +1,56 @@ +{ + "string": [ + { + "name": "module_desc", + "value": "模块描述" + }, + { + "name": "EntryAbility_desc", + "value": "description" + }, + { + "name": "EntryAbility_label", + "value": "BMF Lite" + }, + { + "name": "button_player_sr", + "value": "播放超分辨率" + }, + { + "name": "button_camera_denoise", + "value": "拍摄降噪" + }, + { + "name": "button_text_to_pic", + "value": "文本生成图片" + }, + { + "name": "desc_constructing", + "value": "敬请期待" + }, + { + "name": "button_start_sr", + "value": "开启超分" + }, + { + "name": "button_stop_sr", + "value": "关闭超分" + }, + { + "name": "button_start_denoise", + "value": "开启降噪" + }, + { + "name": "button_stop_denoise", + "value": "关闭降噪" + }, + { + "name": "hint_unprocessed", + "value": "处理前" + }, + { + "name": "hint_processed", + "value": "处理后" + } + ] +} \ No newline at end of file diff --git a/bmf_lite/ohos/entry/src/mock/mock-config.json5 b/bmf_lite/ohos/entry/src/mock/mock-config.json5 new file mode 100644 index 00000000..7a73a41b --- /dev/null +++ b/bmf_lite/ohos/entry/src/mock/mock-config.json5 @@ -0,0 +1,2 @@ +{ +} \ No newline at end of file diff --git a/bmf_lite/ohos/entry/src/ohosTest/ets/test/Ability.test.ets b/bmf_lite/ohos/entry/src/ohosTest/ets/test/Ability.test.ets new file mode 100644 index 00000000..85c78f67 --- /dev/null +++ b/bmf_lite/ohos/entry/src/ohosTest/ets/test/Ability.test.ets @@ -0,0 +1,35 @@ +import { hilog } from '@kit.PerformanceAnalysisKit'; +import { describe, beforeAll, beforeEach, afterEach, afterAll, it, expect } from '@ohos/hypium'; + +export default function abilityTest() { + describe('ActsAbilityTest', () => { + // Defines a test suite. Two parameters are supported: test suite name and test suite function. + beforeAll(() => { + // Presets an action, which is performed only once before all test cases of the test suite start. + // This API supports only one parameter: preset action function. + }) + beforeEach(() => { + // Presets an action, which is performed before each unit test case starts. + // The number of execution times is the same as the number of test cases defined by **it**. + // This API supports only one parameter: preset action function. + }) + afterEach(() => { + // Presets a clear action, which is performed after each unit test case ends. + // The number of execution times is the same as the number of test cases defined by **it**. + // This API supports only one parameter: clear action function. + }) + afterAll(() => { + // Presets a clear action, which is performed after all test cases of the test suite end. + // This API supports only one parameter: clear action function. + }) + it('assertContain', 0, () => { + // Defines a test case. This API supports three parameters: test case name, filter parameter, and test case function. + hilog.info(0x0000, 'testTag', '%{public}s', 'it begin'); + let a = 'abc'; + let b = 'b'; + // Defines a variety of assertion methods, which are used to declare expected boolean conditions. + expect(a).assertContain(b); + expect(a).assertEqual(a); + }) + }) +} \ No newline at end of file diff --git a/bmf_lite/ohos/entry/src/ohosTest/ets/test/List.test.ets b/bmf_lite/ohos/entry/src/ohosTest/ets/test/List.test.ets new file mode 100644 index 00000000..794c7dc4 --- /dev/null +++ b/bmf_lite/ohos/entry/src/ohosTest/ets/test/List.test.ets @@ -0,0 +1,5 @@ +import abilityTest from './Ability.test'; + +export default function testsuite() { + abilityTest(); +} \ No newline at end of file diff --git a/bmf_lite/ohos/entry/src/ohosTest/ets/testability/TestAbility.ets b/bmf_lite/ohos/entry/src/ohosTest/ets/testability/TestAbility.ets new file mode 100644 index 00000000..3e043497 --- /dev/null +++ b/bmf_lite/ohos/entry/src/ohosTest/ets/testability/TestAbility.ets @@ -0,0 +1,47 @@ +import { AbilityConstant, UIAbility, Want } from '@kit.AbilityKit'; +import { abilityDelegatorRegistry } from '@kit.TestKit'; +import { hilog } from '@kit.PerformanceAnalysisKit'; +import { window } from '@kit.ArkUI'; +import { Hypium } from '@ohos/hypium'; +import testsuite from '../test/List.test'; + +export default class TestAbility extends UIAbility { + onCreate(want: Want, launchParam: AbilityConstant.LaunchParam) { + hilog.info(0x0000, 'testTag', '%{public}s', 'TestAbility onCreate'); + hilog.info(0x0000, 'testTag', '%{public}s', 'want param:' + JSON.stringify(want) ?? ''); + hilog.info(0x0000, 'testTag', '%{public}s', 'launchParam:' + JSON.stringify(launchParam) ?? ''); + let abilityDelegator: abilityDelegatorRegistry.AbilityDelegator; + abilityDelegator = abilityDelegatorRegistry.getAbilityDelegator(); + let abilityDelegatorArguments: abilityDelegatorRegistry.AbilityDelegatorArgs; + abilityDelegatorArguments = abilityDelegatorRegistry.getArguments(); + hilog.info(0x0000, 'testTag', '%{public}s', 'start run testcase!!!'); + Hypium.hypiumTest(abilityDelegator, abilityDelegatorArguments, testsuite); + } + + onDestroy() { + hilog.info(0x0000, 'testTag', '%{public}s', 'TestAbility onDestroy'); + } + + onWindowStageCreate(windowStage: window.WindowStage) { + hilog.info(0x0000, 'testTag', '%{public}s', 'TestAbility onWindowStageCreate'); + windowStage.loadContent('testability/pages/Index', (err) => { + if (err.code) { + hilog.error(0x0000, 'testTag', 'Failed to load the content. Cause: %{public}s', JSON.stringify(err) ?? ''); + return; + } + hilog.info(0x0000, 'testTag', 'Succeeded in loading the content.'); + }); + } + + onWindowStageDestroy() { + hilog.info(0x0000, 'testTag', '%{public}s', 'TestAbility onWindowStageDestroy'); + } + + onForeground() { + hilog.info(0x0000, 'testTag', '%{public}s', 'TestAbility onForeground'); + } + + onBackground() { + hilog.info(0x0000, 'testTag', '%{public}s', 'TestAbility onBackground'); + } +} \ No newline at end of file diff --git a/bmf_lite/ohos/entry/src/ohosTest/ets/testability/pages/Index.ets b/bmf_lite/ohos/entry/src/ohosTest/ets/testability/pages/Index.ets new file mode 100644 index 00000000..423b4276 --- /dev/null +++ b/bmf_lite/ohos/entry/src/ohosTest/ets/testability/pages/Index.ets @@ -0,0 +1,17 @@ +@Entry +@Component +struct Index { + @State message: string = 'Hello World'; + + build() { + Row() { + Column() { + Text(this.message) + .fontSize(50) + .fontWeight(FontWeight.Bold) + } + .width('100%') + } + .height('100%') + } +} \ No newline at end of file diff --git a/bmf_lite/ohos/entry/src/ohosTest/ets/testrunner/OpenHarmonyTestRunner.ets b/bmf_lite/ohos/entry/src/ohosTest/ets/testrunner/OpenHarmonyTestRunner.ets new file mode 100644 index 00000000..0eb230c7 --- /dev/null +++ b/bmf_lite/ohos/entry/src/ohosTest/ets/testrunner/OpenHarmonyTestRunner.ets @@ -0,0 +1,90 @@ +import { abilityDelegatorRegistry, TestRunner } from '@kit.TestKit'; +import { UIAbility, Want } from '@kit.AbilityKit'; +import { BusinessError } from '@kit.BasicServicesKit'; +import { hilog } from '@kit.PerformanceAnalysisKit'; +import { resourceManager } from '@kit.LocalizationKit'; +import { util } from '@kit.ArkTS'; + +let abilityDelegator: abilityDelegatorRegistry.AbilityDelegator; +let abilityDelegatorArguments: abilityDelegatorRegistry.AbilityDelegatorArgs; +let jsonPath: string = 'mock/mock-config.json'; +let tag: string = 'testTag'; + +async function onAbilityCreateCallback(data: UIAbility) { + hilog.info(0x0000, 'testTag', 'onAbilityCreateCallback, data: ${}', JSON.stringify(data)); +} + +async function addAbilityMonitorCallback(err: BusinessError) { + hilog.info(0x0000, 'testTag', 'addAbilityMonitorCallback : %{public}s', JSON.stringify(err) ?? ''); +} + +export default class OpenHarmonyTestRunner implements TestRunner { + constructor() { + } + + onPrepare() { + hilog.info(0x0000, 'testTag', '%{public}s', 'OpenHarmonyTestRunner OnPrepare'); + } + + async onRun() { + let tag = 'testTag'; + hilog.info(0x0000, tag, '%{public}s', 'OpenHarmonyTestRunner onRun run'); + abilityDelegatorArguments = abilityDelegatorRegistry.getArguments() + abilityDelegator = abilityDelegatorRegistry.getAbilityDelegator() + let moduleName = abilityDelegatorArguments.parameters['-m']; + let context = abilityDelegator.getAppContext().getApplicationContext().createModuleContext(moduleName); + let mResourceManager = context.resourceManager; + await checkMock(abilityDelegator, mResourceManager); + const bundleName = abilityDelegatorArguments.bundleName; + const testAbilityName: string = 'TestAbility'; + let lMonitor: abilityDelegatorRegistry.AbilityMonitor = { + abilityName: testAbilityName, + onAbilityCreate: onAbilityCreateCallback, + moduleName: moduleName + }; + abilityDelegator.addAbilityMonitor(lMonitor, addAbilityMonitorCallback) + const want: Want = { + bundleName: bundleName, + abilityName: testAbilityName, + moduleName: moduleName + }; + abilityDelegator.startAbility(want, (err: BusinessError, data: void) => { + hilog.info(0x0000, tag, 'startAbility : err : %{public}s', JSON.stringify(err) ?? ''); + hilog.info(0x0000, tag, 'startAbility : data : %{public}s', JSON.stringify(data) ?? ''); + }) + hilog.info(0x0000, tag, '%{public}s', 'OpenHarmonyTestRunner onRun end'); + } +} + +async function checkMock(abilityDelegator: abilityDelegatorRegistry.AbilityDelegator, resourceManager: resourceManager.ResourceManager) { + let rawFile: Uint8Array; + try { + rawFile = resourceManager.getRawFileContentSync(jsonPath); + hilog.info(0x0000, tag, 'MockList file exists'); + let mockStr: string = util.TextDecoder.create("utf-8", { ignoreBOM: true }).decodeWithStream(rawFile); + let mockMap: Record = getMockList(mockStr); + try { + abilityDelegator.setMockList(mockMap) + } catch (error) { + let code = (error as BusinessError).code; + let message = (error as BusinessError).message; + hilog.error(0x0000, tag, `abilityDelegator.setMockList failed, error code: ${code}, message: ${message}.`); + } + } catch (error) { + let code = (error as BusinessError).code; + let message = (error as BusinessError).message; + hilog.error(0x0000, tag, `ResourceManager:callback getRawFileContent failed, error code: ${code}, message: ${message}.`); + } +} + +function getMockList(jsonStr: string) { + let jsonObj: Record = JSON.parse(jsonStr); + let map: Map = new Map(Object.entries(jsonObj)); + let mockList: Record = {}; + map.forEach((value: object, key: string) => { + let realValue: string = value['source'].toString(); + mockList[key] = realValue; + }); + hilog.info(0x0000, tag, '%{public}s', 'mock-json value:' + JSON.stringify(mockList) ?? ''); + return mockList; +} \ No newline at end of file diff --git a/bmf_lite/ohos/entry/src/ohosTest/module.json5 b/bmf_lite/ohos/entry/src/ohosTest/module.json5 new file mode 100644 index 00000000..d0dc5d54 --- /dev/null +++ b/bmf_lite/ohos/entry/src/ohosTest/module.json5 @@ -0,0 +1,38 @@ +{ + "module": { + "name": "entry_test", + "type": "feature", + "description": "$string:module_test_desc", + "mainElement": "TestAbility", + "deviceTypes": [ + "phone", + "tablet", + "2in1" + ], + "deliveryWithInstall": true, + "installationFree": false, + "pages": "$profile:test_pages", + "abilities": [ + { + "name": "TestAbility", + "srcEntry": "./ets/testability/TestAbility.ets", + "description": "$string:TestAbility_desc", + "icon": "$media:icon", + "label": "$string:TestAbility_label", + "exported": true, + "startWindowIcon": "$media:icon", + "startWindowBackground": "$color:start_window_background", + "skills": [ + { + "actions": [ + "action.system.home" + ], + "entities": [ + "entity.system.home" + ] + } + ] + } + ] + } +} diff --git a/bmf_lite/ohos/entry/src/ohosTest/resources/base/element/color.json b/bmf_lite/ohos/entry/src/ohosTest/resources/base/element/color.json new file mode 100644 index 00000000..3c712962 --- /dev/null +++ b/bmf_lite/ohos/entry/src/ohosTest/resources/base/element/color.json @@ -0,0 +1,8 @@ +{ + "color": [ + { + "name": "start_window_background", + "value": "#FFFFFF" + } + ] +} \ No newline at end of file diff --git a/bmf_lite/ohos/entry/src/ohosTest/resources/base/element/string.json b/bmf_lite/ohos/entry/src/ohosTest/resources/base/element/string.json new file mode 100644 index 00000000..65d8fa5a --- /dev/null +++ b/bmf_lite/ohos/entry/src/ohosTest/resources/base/element/string.json @@ -0,0 +1,16 @@ +{ + "string": [ + { + "name": "module_test_desc", + "value": "test ability description" + }, + { + "name": "TestAbility_desc", + "value": "the test ability" + }, + { + "name": "TestAbility_label", + "value": "test label" + } + ] +} \ No newline at end of file diff --git a/bmf_lite/ohos/entry/src/ohosTest/resources/base/media/icon.png b/bmf_lite/ohos/entry/src/ohosTest/resources/base/media/icon.png new file mode 100644 index 00000000..a39445dc Binary files /dev/null and b/bmf_lite/ohos/entry/src/ohosTest/resources/base/media/icon.png differ diff --git a/bmf_lite/ohos/entry/src/ohosTest/resources/base/profile/test_pages.json b/bmf_lite/ohos/entry/src/ohosTest/resources/base/profile/test_pages.json new file mode 100644 index 00000000..b7e7343c --- /dev/null +++ b/bmf_lite/ohos/entry/src/ohosTest/resources/base/profile/test_pages.json @@ -0,0 +1,5 @@ +{ + "src": [ + "testability/pages/Index" + ] +} diff --git a/bmf_lite/ohos/entry/src/test/List.test.ets b/bmf_lite/ohos/entry/src/test/List.test.ets new file mode 100644 index 00000000..bb5b5c37 --- /dev/null +++ b/bmf_lite/ohos/entry/src/test/List.test.ets @@ -0,0 +1,5 @@ +import localUnitTest from './LocalUnit.test'; + +export default function testsuite() { + localUnitTest(); +} \ No newline at end of file diff --git a/bmf_lite/ohos/entry/src/test/LocalUnit.test.ets b/bmf_lite/ohos/entry/src/test/LocalUnit.test.ets new file mode 100644 index 00000000..ed22d4dc --- /dev/null +++ b/bmf_lite/ohos/entry/src/test/LocalUnit.test.ets @@ -0,0 +1,33 @@ +import { describe, beforeAll, beforeEach, afterEach, afterAll, it, expect } from '@ohos/hypium'; + +export default function localUnitTest() { + describe('localUnitTest',() => { + // Defines a test suite. Two parameters are supported: test suite name and test suite function. + beforeAll(() => { + // Presets an action, which is performed only once before all test cases of the test suite start. + // This API supports only one parameter: preset action function. + }); + beforeEach(() => { + // Presets an action, which is performed before each unit test case starts. + // The number of execution times is the same as the number of test cases defined by **it**. + // This API supports only one parameter: preset action function. + }); + afterEach(() => { + // Presets a clear action, which is performed after each unit test case ends. + // The number of execution times is the same as the number of test cases defined by **it**. + // This API supports only one parameter: clear action function. + }); + afterAll(() => { + // Presets a clear action, which is performed after all test cases of the test suite end. + // This API supports only one parameter: clear action function. + }); + it('assertContain', 0, () => { + // Defines a test case. This API supports three parameters: test case name, filter parameter, and test case function. + let a = 'abc'; + let b = 'b'; + // Defines a variety of assertion methods, which are used to declare expected boolean conditions. + expect(a).assertContain(b); + expect(a).assertEqual(a); + }); + }); +} \ No newline at end of file diff --git a/bmf_lite/ohos/hvigor/hvigor-config.json5 b/bmf_lite/ohos/hvigor/hvigor-config.json5 new file mode 100644 index 00000000..8c56bf6a --- /dev/null +++ b/bmf_lite/ohos/hvigor/hvigor-config.json5 @@ -0,0 +1,21 @@ +{ + "modelVersion": "5.0.0", + "dependencies": { + }, + "execution": { + // "analyze": "default", /* Define the build analyze mode. Value: [ "default" | "verbose" | false ]. Default: "default" */ + // "daemon": true, /* Enable daemon compilation. Value: [ true | false ]. Default: true */ + // "incremental": true, /* Enable incremental compilation. Value: [ true | false ]. Default: true */ + // "parallel": true, /* Enable parallel compilation. Value: [ true | false ]. Default: true */ + // "typeCheck": false, /* Enable typeCheck. Value: [ true | false ]. Default: false */ + }, + "logging": { + // "level": "info" /* Define the log level. Value: [ "debug" | "info" | "warn" | "error" ]. Default: "info" */ + }, + "debugging": { + // "stacktrace": false /* Disable stacktrace compilation. Value: [ true | false ]. Default: false */ + }, + "nodeOptions": { + // "maxOldSpaceSize": 4096 /* Enable nodeOptions maxOldSpaceSize compilation. Unit M. Used for the daemon process */ + } +} \ No newline at end of file diff --git a/bmf_lite/ohos/hvigorfile.ts b/bmf_lite/ohos/hvigorfile.ts new file mode 100644 index 00000000..f3cb9f1a --- /dev/null +++ b/bmf_lite/ohos/hvigorfile.ts @@ -0,0 +1,6 @@ +import { appTasks } from '@ohos/hvigor-ohos-plugin'; + +export default { + system: appTasks, /* Built-in plugin of Hvigor. It cannot be modified. */ + plugins:[] /* Custom plugin to extend the functionality of Hvigor. */ +} diff --git a/bmf_lite/ohos/oh-package.json5 b/bmf_lite/ohos/oh-package.json5 new file mode 100644 index 00000000..55ff85ae --- /dev/null +++ b/bmf_lite/ohos/oh-package.json5 @@ -0,0 +1,15 @@ +{ + "modelVersion": "5.0.0", + "name": "bmflite", + "version": "1.0.0", + "description": "Please describe the basic information.", + "main": "", + "author": "", + "license": "", + "dependencies": { + }, + "devDependencies": { + "@ohos/hypium": "1.0.18", + "@ohos/hamock": "1.0.0" + } +} \ No newline at end of file diff --git a/bmf_lite/src/CMakeLists.txt b/bmf_lite/src/CMakeLists.txt new file mode 100644 index 00000000..f3e9e24b --- /dev/null +++ b/bmf_lite/src/CMakeLists.txt @@ -0,0 +1,209 @@ +if(ANDROID) + # file(GLOB_RECURSE Src ./*.cpp) + include_directories(./) + include_directories(./algorithm/modules/operators) + include_directories(./algorithm/modules/operators/utils) + include_directories(../api/cpp/) + + list(APPEND Src ./algorithm/algorithm_interface.cpp + ./algorithm/bmf_algorithm_impl.cpp + ./algorithm/bmf_video_frame.cpp + ./algorithm/bmf_algorithm.cpp + ./algorithm/bmf_contrib_algorithm.cpp + ./common/bmf_param.cpp + ./media/video_buffer/video_buffer_allocator.cpp + ./media/video_buffer/video_buffer_pool.cpp + ./media/video_buffer/hardware_device_context.cpp + ./media/video_buffer/raw_video_buffer.cpp + ./media/video_buffer/video_buffer.cpp + ./algorithm/modules/operators/utils/SHA256.cpp) + + if(BMF_LITE_ENABLE_OPENGLTEXTUREBUFFER) + add_compile_definitions(BMF_LITE_ENABLE_OPENGLTEXTUREBUFFER) + list(APPEND Src ./media/video_buffer/gl_texture_video_buffer/egl_hardware_device_context.cpp + ./media/video_buffer/gl_texture_video_buffer/gl_texture_video_buffer_allocator.cpp + ./media/video_buffer/gl_texture_video_buffer/gl_texture_video_buffer.cpp) + endif() + + if(BMF_LITE_ENABLE_CPUMEMORYBUFFER) + include_directories(./media/video_buffer/memory_video_buffer) + list(APPEND Src ./media/video_buffer/memory_video_buffer/cpu_memory_video_buffer.cpp + ./media/video_buffer/memory_video_buffer/cpu_memory_video_buffer_allocator.cpp) + add_compile_definitions(BMF_LITE_ENABLE_CPUMEMORYBUFFER) + endif() + + if(BMF_LITE_ENABLE_SUPER_RESOLUTION) + include_directories(algorithm/modules/super_resolution) + add_compile_definitions(BMF_LITE_ENABLE_SUPER_RESOLUTION) + list(APPEND Src ./algorithm/modules/super_resolution/super_resolution_algorithm.cpp + ./algorithm/modules/operators/opengl/sr/sr.cpp) + add_compile_definitions(BMF_LITE_ENABLE_SUPER_RESOLUTION) + endif() + + if(BMF_LITE_ENABLE_DENOISE) + include_directories(algorithm/modules/denoise) + add_compile_definitions(BMF_LITE_ENABLE_DENOISE) + list(APPEND Src ./algorithm/modules/denoise/denoise_algorithm.cpp + ./algorithm/modules/operators/opengl/denoise/denoise.cpp) + add_compile_definitions(BMF_LITE_ENABLE_DENOISE) + endif() + + if(BMF_LITE_ENABLE_TEX_GEN_PIC) + add_compile_definitions(BMF_LITE_ENABLE_TEX_GEN_PIC) + include_directories(./algorithm/contrib_modules/QNNControlNet) + include_directories(./algorithm/contrib_modules/QNNControlNet/QNN) + include_directories(./algorithm/contrib_modules/QNNControlNet/scheduler) + include_directories(./algorithm/contrib_modules/QNNControlNet/src) + include_directories(./algorithm/contrib_modules/QNNControlNet/utils) + include_directories(./media/video_buffer/transform) + include_directories(./algorithm/modules/operators/opengl/resize) + list(APPEND Src ./algorithm/contrib_modules/QnnControlNet/scheduler/scheduler_dpmpp_2m.cpp + ./algorithm/contrib_modules/QnnControlNet/inference/QnnModel.cpp + ./algorithm/contrib_modules/QnnControlNet/inference/QnnRuntime.cpp + ./algorithm/contrib_modules/QnnControlNet/inference/QnnTensorData.cpp + ./algorithm/contrib_modules/QnnControlNet/utils/time_all.cpp + ./algorithm/contrib_modules/QnnControlNet/QnnControlNet_algorithm.cpp + ./algorithm/contrib_modules/QnnControlNet/QnnControlNetPipeLine.cpp + ./media/video_buffer/transform/gl_texture_transformer.cpp + ./algorithm/modules/operators/opengl/resize/resize.cpp) + endif() + + add_library(bmf_lite ${Src}) + target_link_libraries(bmf_lite PUBLIC EGL log jnigraphics) + +elseif(APPLE) + include_directories(./) + include_directories(../api/cpp/) + include_directories(algorithm/modules/operators) + + set(Src) + set(METAL_SRCS) + + list(APPEND Src algorithm/algorithm_interface.cpp + algorithm/bmf_algorithm_impl.cpp + algorithm/bmf_video_frame.cpp + algorithm/bmf_algorithm.cpp + algorithm/bmf_contrib_algorithm.cpp + common/bmf_param.cpp + media/video_buffer/video_buffer_allocator.cpp + media/video_buffer/video_buffer_pool.cpp + media/video_buffer/hardware_device_context.cpp + media/video_buffer/raw_video_buffer.cpp + media/video_buffer/video_buffer.cpp) + + if(BMF_LITE_ENABLE_CVPIXELBUFFER) + include_directories(media/video_buffer/cvpixelbuffer_video_buffer) + list(APPEND Src media/video_buffer/cvpixelbuffer_video_buffer/cvpixelbuffer_video_buffer.mm + media/video_buffer/cvpixelbuffer_video_buffer/cvpixelbuffer_video_buffer_allocator.mm) + add_compile_definitions(BMF_LITE_ENABLE_CVPIXELBUFFER) + endif() + + if(BMF_LITE_ENABLE_METALBUFFER) + include_directories(media/video_buffer/metal_texture_video_buffer) + list(APPEND Src media/video_buffer/metal_texture_video_buffer/metal_texture_video_buffer.mm + media/video_buffer/metal_texture_video_buffer/mtl_device_context.mm + media/video_buffer/metal_texture_video_buffer/multi_metal_texture_video_buffer_allocator.mm + media/video_buffer/metal_texture_video_buffer/metal_texture_video_buffer_allocator.mm + media/video_buffer/metal_texture_video_buffer/multi_metal_texture_video_buffer.mm) + add_compile_definitions(BMF_LITE_ENABLE_METALBUFFER) + endif() + + if(BMF_LITE_ENABLE_CPUMEMORYBUFFER) + include_directories(media/video_buffer/memory_video_buffer) + list(APPEND Src media/video_buffer/memory_video_buffer/cpu_memory_video_buffer.cpp + media/video_buffer/memory_video_buffer/cpu_memory_video_buffer_allocator.cpp) + add_compile_definitions(BMF_LITE_ENABLE_CPUMEMORYBUFFER) + endif() + + if(BMF_LITE_ENABLE_BUFFER_TRANSFORM) + include_directories(media/video_buffer/transform) + list(APPEND Src media/video_buffer/transform/cvpixelbuffer_transformer.mm) + endif() + + if(BMF_LITE_ENABLE_SUPER_RESOLUTION) + include_directories(algorithm/modules/super_resolution) + list(APPEND Src algorithm/modules/super_resolution/super_resolution_algorithm.mm + algorithm/modules/operators/metal/sr/sr.mm) + list(APPEND METAL_SRCS ${CMAKE_CURRENT_SOURCE_DIR}/algorithm/modules/operators/metal/sr/sr.metal) + add_compile_definitions(BMF_LITE_ENABLE_SUPER_RESOLUTION) + endif() + + if(BMF_LITE_ENABLE_DENOISE) + include_directories(algorithm/modules/denoise) + list(APPEND Src algorithm/modules/denoise/denoise_algorithm.mm + algorithm/modules/operators/metal/denoise/denoise.mm) + list(APPEND METAL_SRCS ${CMAKE_CURRENT_SOURCE_DIR}/algorithm/modules/operators/metal/denoise/denoise.metal) + add_compile_definitions(BMF_LITE_ENABLE_DENOISE) + endif() + + if(BMF_LITE_ENABLE_CANNY) + include_directories(algorithm/contrib_modules/canny) + list(APPEND Src algorithm/contrib_modules/canny/canny_algorithm.mm) + add_compile_definitions(BMF_LITE_ENABLE_CANNY) + endif() + + list(REMOVE_DUPLICATES Src) + message(STATUS "Src:${Src}") + add_library(bmf_lite ${Src}) + target_link_libraries(bmf_lite PUBLIC "-framework AVFoundation" "-framework Metal" "-framework MetalPerformanceShaders") + + list(REMOVE_DUPLICATES METAL_SRCS) + message(STATUS "METAL SRC:${METAL_SRCS}") + + set(METAL_COMMANDS) + set(METAL_AIRS) + foreach(F ${METAL_SRCS}) + list(APPEND METAL_COMMANDS COMMAND xcrun -sdk iphoneos metal -std=ios-metal2.0 -mios-version-min=11.0 -c ${F} -o ${F}.air) + list(APPEND METAL_AIRS ${F}.air) + endforeach() + + add_custom_command(TARGET bmf_lite POST_BUILD + ${METAL_COMMANDS} + COMMAND xcrun -sdk iphoneos metal -std=ios-metal2.0 -mios-version-min=11.0 ${METAL_AIRS} -o ${CMAKE_CURRENT_BINARY_DIR}/bmf_lite.metallib + ) + + set_target_properties(bmf_lite PROPERTIES RESOURCE ${CMAKE_CURRENT_BINARY_DIR}/hydra.metallib) + +elseif(OHOS) + file(GLOB_RECURSE Src ./algorithm/modules/*.cpp) + + list(APPEND Src algorithm/algorithm_interface.cpp + algorithm/bmf_algorithm_impl.cpp + algorithm/bmf_video_frame.cpp + algorithm/bmf_algorithm.cpp + algorithm/bmf_contrib_algorithm.cpp + common/bmf_param.cpp + media/video_buffer/video_buffer_allocator.cpp + media/video_buffer/video_buffer_pool.cpp + media/video_buffer/hardware_device_context.cpp + media/video_buffer/raw_video_buffer.cpp + media/video_buffer/video_buffer.cpp) + + include_directories(./) + include_directories(../api/cpp/) + include_directories(./algorithm/modules/operators) + include_directories(./algorithm/modules/denoise) + include_directories(./algorithm/modules/super_resolution) + include_directories(./media/video_buffer/transform) + + if(BMF_LITE_ENABLE_OPENGLTEXTUREBUFFER) + list(APPEND Src media/video_buffer/gl_texture_video_buffer/egl_hardware_device_context.cpp + media/video_buffer/gl_texture_video_buffer/gl_texture_video_buffer.cpp + media/video_buffer/gl_texture_video_buffer/gl_texture_video_buffer_allocator.cpp) + add_compile_definitions(BMF_LITE_ENABLE_OPENGLTEXTUREBUFFER) + endif() + + if(BMF_LITE_ENABLE_SUPER_RESOLUTION) + add_compile_definitions(BMF_LITE_ENABLE_SUPER_RESOLUTION) + endif() + + if(BMF_LITE_ENABLE_DENOISE) + add_compile_definitions(BMF_LITE_ENABLE_DENOISE) + endif() + + add_library(bmf_lite ${Src}) + target_link_libraries(bmf_lite PUBLIC EGL hilog_ndk.z GLESv3) + +else() + message(FATAL "Unsupport plateformat") +endif() \ No newline at end of file diff --git a/bmf_lite/src/algorithm/algorithm_interface.cpp b/bmf_lite/src/algorithm/algorithm_interface.cpp new file mode 100644 index 00000000..fe9f0f97 --- /dev/null +++ b/bmf_lite/src/algorithm/algorithm_interface.cpp @@ -0,0 +1,67 @@ +/* + * Copyright 2024 Babit Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "algorithm_interface.h" +#include "algorithm/bmf_contrib_algorithm.h" +#include "contrib_modules/canny/canny_algorithm.h" +#include "modules/denoise/denoise_algorithm.h" +#include "modules/super_resolution/super_resolution_algorithm.h" +#include "contrib_modules/QNNControlNet/QnnControlNet_algorithm.h" +namespace bmf_lite { + +std::shared_ptr +AlgorithmInstance::createAlgorithmInterface(int algorithm_type) { + if (algorithm_type == AlgorithmType::BMF_LITE_ALGORITHM_SUPER_RESOLUTION) { +#ifdef BMF_LITE_ENABLE_SUPER_RESOLUTION + std::shared_ptr instance = + std::make_shared(); + return instance; +#endif + } + + if (algorithm_type == AlgorithmType::BMF_LITE_ALGORITHM_DENOISE) { +#ifdef BMF_LITE_ENABLE_DENOISE + std::shared_ptr instance = + std::make_shared(); + return instance; +#endif + } + + if (algorithm_type == AlgorithmType::BMF_LITE_ALGORITHM_CANNY) { +#ifdef BMF_LITE_ENABLE_CANNY + std::shared_ptr instance = + std::make_shared(); + return instance; +#endif + } + if (algorithm_type == AlgorithmType::BMF_LITE_ALGORITHM_TEX2PIC) { +#ifdef BMF_LITE_ENABLE_TEX_GEN_PIC + std::shared_ptr instance = + std::make_shared(); + return instance; +#endif + } + + IAlgorithmInterface *contrib_algo = + ContribAlgorithmFactory::instance().createAlgorithmInstance( + algorithm_type); + if (contrib_algo != nullptr) { + std::shared_ptr instance(contrib_algo); + return instance; + } + return nullptr; +} +} // namespace bmf_lite \ No newline at end of file diff --git a/bmf_lite/src/algorithm/algorithm_interface.h b/bmf_lite/src/algorithm/algorithm_interface.h new file mode 100644 index 00000000..f0d3839f --- /dev/null +++ b/bmf_lite/src/algorithm/algorithm_interface.h @@ -0,0 +1,42 @@ +/* + * Copyright 2024 Babit Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef _BMFLITE_ALFORITHM_INTERFACE_H_ +#define _BMFLITE_ALFORITHM_INTERFACE_H_ + +#include "algorithm/bmf_algorithm.h" +#include "algorithm/bmf_video_frame.h" +#include "common/bmf_param.h" + +namespace bmf_lite { + +enum AlgorithmType { + BMF_LITE_ALGORITHM_SUPER_RESOLUTION = 0, + BMF_LITE_ALGORITHM_DENOISE = 1, + BMF_LITE_ALGORITHM_CANNY = 2, + BMF_LITE_ALGORITHM_TEX2PIC = 3, + // more algorithm enumerations added here +}; + +class AlgorithmInstance { + public: + static std::shared_ptr + createAlgorithmInterface(int algorithm_type); +}; + +} // namespace bmf_lite + +#endif // _BMFLITE_ALFORITHM_INTERFACE_H_ \ No newline at end of file diff --git a/bmf_lite/src/algorithm/bmf_algorithm.cpp b/bmf_lite/src/algorithm/bmf_algorithm.cpp new file mode 100644 index 00000000..9519e618 --- /dev/null +++ b/bmf_lite/src/algorithm/bmf_algorithm.cpp @@ -0,0 +1,103 @@ +/* + * Copyright 2024 Babit Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "algorithm/bmf_algorithm.h" +#include "algorithm/bmf_video_frame.h" +#include "bmf_algorithm_impl.h" +#include "common/bmf_common.h" +#include "common/bmf_param.h" +#include +#include + +namespace bmf_lite { + +IAlgorithmInterface::~IAlgorithmInterface() {} + +int IAlgorithmInterface::setParam(Param param) { return -1; } + +int IAlgorithmInterface::processVideoFrame(VideoFrame videoframe, Param param) { + return -1; +} + +int IAlgorithmInterface::getVideoFrameOutput(VideoFrame &frame, Param ¶m) { + return -1; +} + +int IAlgorithmInterface::processMultiVideoFrame( + std::vector videoframes, Param param) { + return -1; +} + +int IAlgorithmInterface::getMultiVideoFrameOutput( + std::vector &videoframes, Param ¶m) { + return -1; +} + +int IAlgorithmInterface::getProcessProperty(Param ¶m) { return -1; } + +int IAlgorithmInterface::setInputProperty(Param attr) { return -1; } + +int IAlgorithmInterface::getOutputProperty(Param &attr) { return -1; } + +IAlgorithm::IAlgorithm() { impl_ = new AlgorithmImpl(); } + +IAlgorithm::~IAlgorithm() { + if (impl_ != NULL) { + delete impl_; + } +} + +int IAlgorithm::setParam(Param param) { return impl_->setParam(param); } + +int IAlgorithm::processVideoFrame(VideoFrame videoframe, Param param) { + return impl_->processVideoFrame(videoframe, param); +} + +int IAlgorithm::getVideoFrameOutput(VideoFrame &videoframe, Param ¶m) { + return impl_->getVideoFrameOutput(videoframe, param); +} + +int IAlgorithm::processMultiVideoFrame(std::vector videoframes, + Param param) { + return impl_->processMultiVideoFrame(videoframes, param); +} + +int IAlgorithm::getMultiVideoFrameOutput(std::vector &videoframes, + Param ¶m) { + return impl_->getMultiVideoFrameOutput(videoframes, param); +} + +int IAlgorithm::getProcessProperty(Param ¶m) { + return impl_->getProcessProperty(param); +} + +int IAlgorithm::setInputProperty(Param param) { + return impl_->setInputProperty(param); +} + +int IAlgorithm::getOutputProperty(Param ¶m) { + return impl_->getOutputProperty(param); +} + +IAlgorithm *AlgorithmFactory::createAlgorithmInterface() { + return new IAlgorithm(); +} + +void AlgorithmFactory::releaseAlgorithmInterface(IAlgorithm *instance) { + delete instance; +} + +} // namespace bmf_lite diff --git a/bmf_lite/src/algorithm/bmf_algorithm_impl.cpp b/bmf_lite/src/algorithm/bmf_algorithm_impl.cpp new file mode 100644 index 00000000..abecf3fa --- /dev/null +++ b/bmf_lite/src/algorithm/bmf_algorithm_impl.cpp @@ -0,0 +1,116 @@ +/* + * Copyright 2024 Babit Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "bmf_algorithm_impl.h" +#include "algorithm_interface.h" +#include "common/error_code.h" + +#include "algorithm/bmf_algorithm.h" +#include +// #include "utils/log.h" +namespace bmf_lite { + +int AlgorithmImpl::parseParam(Param param) { + if (param.getInt("change_mode", mods_param_.change_mode) != 0) { + return BMF_LITE_StsBadArg; + } + if (param.getString("instance_id", mods_param_.instance_id) != 0) { + return BMF_LITE_StsBadArg; + } + if (param.getInt("algorithm_type", mods_param_.algorithm_type) != 0) { + return BMF_LITE_StsBadArg; + } + if (param.getInt("algorithm_version", mods_param_.algorithm_version) != 0) { + return BMF_LITE_StsBadArg; + } + return BMF_LITE_StsOk; +} + +int AlgorithmImpl::setParam(Param param) { + int res = parseParam(param); + if (res < 0) { + return res; + } + if (mods_param_.change_mode == ModsMode::CREATE_MODE) { + ModsInstance mods_instance; + mods_instance.instance_id_ = mods_param_.instance_id; + mods_instance.instance_ = AlgorithmInstance::createAlgorithmInterface( + mods_param_.algorithm_type); + if (mods_instance.instance_ == NULL) { + return BMF_LITE_StsBadArg; + } + res = mods_instance.instance_->setParam(param); + if (res != BMF_LITE_StsOk) { + return res; + } + instances_.push_back(mods_instance); + } + + if (mods_param_.change_mode == ModsMode::UPDATE_MODE) { + for (size_t i = 0; i < instances_.size(); i++) { + if (instances_[i].instance_id_ == mods_param_.instance_id) { + instances_[i].instance_->setParam(param); + } + } + } + + if (mods_param_.change_mode == ModsMode::DELETE_MODE) { + for (size_t i = 0; i < instances_.size(); i++) { + if (instances_[i].instance_id_ == mods_param_.instance_id) { + instances_.erase(instances_.begin() + i); + break; + } + } + } + + if (mods_param_.change_mode == ModsMode::SET_PROCESS_MODE) { + for (size_t i = 0; i < instances_.size(); i++) { + if (instances_[i].instance_id_ == mods_param_.instance_id) { + default_instance_ = instances_[i].instance_; + return BMF_LITE_StsOk; + } + } + return BMF_LITE_StsBadArg; + } + + if (mods_param_.change_mode == ModsMode::CREATE_AND_PROCESS_MODE) { + ModsInstance mods_instance; + mods_instance.instance_id_ = mods_param_.instance_id; + mods_instance.instance_ = AlgorithmInstance::createAlgorithmInterface( + mods_param_.algorithm_type); + if (mods_instance.instance_ == NULL) { + return BMF_LITE_StsBadArg; + } + + res = mods_instance.instance_->setParam(param); + if (res != BMF_LITE_StsOk) { + return res; + } + instances_.push_back(mods_instance); + default_instance_ = mods_instance.instance_; + } + return BMF_LITE_StsOk; +} + +int AlgorithmImpl::processVideoFrame(VideoFrame videoframe, Param param) { + return default_instance_->processVideoFrame(videoframe, param); +} + +int AlgorithmImpl::getVideoFrameOutput(VideoFrame &videoframe, Param ¶m) { + return default_instance_->getVideoFrameOutput(videoframe, param); +} + +} // namespace bmf_lite \ No newline at end of file diff --git a/bmf_lite/src/algorithm/bmf_algorithm_impl.h b/bmf_lite/src/algorithm/bmf_algorithm_impl.h new file mode 100644 index 00000000..1ae975e7 --- /dev/null +++ b/bmf_lite/src/algorithm/bmf_algorithm_impl.h @@ -0,0 +1,82 @@ +/* + * Copyright 2024 Babit Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef _BMFLITE_ALFORITHM_IMPL_H_ +#define _BMFLITE_ALFORITHM_IMPL_H_ + +#include "algorithm/bmf_video_frame.h" +#include "algorithm_interface.h" +#include "common/bmf_param.h" +#include "common/error_code.h" + +namespace bmf_lite { + +enum ModsMode { + UPDATE_MODE = 1, + CREATE_MODE = 2, + DELETE_MODE = 3, + READ_MODE = 4, + SET_PROCESS_MODE = 5, + CREATE_AND_PROCESS_MODE = 6, +}; + +class ModsParam { + public: + int change_mode; + std::string instance_id; + int algorithm_type = 0; + int algorithm_version = 0; +}; + +class ModsInstance { + public: + std::shared_ptr instance_; + std::string instance_id_; +}; + +class AlgorithmImpl { + public: + int setParam(Param param); + int parseParam(Param param); + + int processVideoFrame(VideoFrame videoframe, Param param); + int getVideoFrameOutput(VideoFrame &videoframe, Param ¶m); + + int processMultiVideoFrame(std::vector videoframes, + Param param) { + return BMF_LITE_StsFuncNotImpl; + } + + int getMultiVideoFrameOutput(std::vector &videoframes, + Param ¶m) { + return BMF_LITE_StsFuncNotImpl; + } + + int getProcessProperty(Param ¶m) { return -1; } + + int setInputProperty(Param attr) { return -1; } + + int getOutputProperty(Param &attr) { return -1; } + + private: + std::vector instances_; + std::shared_ptr default_instance_; + ModsParam mods_param_; +}; + +} // namespace bmf_lite + +#endif // _BMFLITE_ALFORITHM_IMPL_H_ \ No newline at end of file diff --git a/bmf_lite/src/algorithm/bmf_contrib_algorithm.cpp b/bmf_lite/src/algorithm/bmf_contrib_algorithm.cpp new file mode 100644 index 00000000..424a3843 --- /dev/null +++ b/bmf_lite/src/algorithm/bmf_contrib_algorithm.cpp @@ -0,0 +1,42 @@ +/* + * Copyright 2024 Babit Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "algorithm/bmf_contrib_algorithm.h" + +namespace bmf_lite { + +ContribAlgorithmFactory::ContribAlgorithmFactory() {} + +ContribAlgorithmFactory::~ContribAlgorithmFactory() {} + +IAlgorithmInterface * +ContribAlgorithmFactory::createAlgorithmInstance(int algorithm_type) { + auto it = func_mp_.find(algorithm_type); + if (it != func_mp_.end()) { + return it->second(); + } + return nullptr; +} + +bool ContribAlgorithmFactory::registerCreator( + int algorithm_type, std::function pfunc) { + if (pfunc == nullptr) { + return false; + } + return func_mp_.insert(std::make_pair(algorithm_type, pfunc)).second; +} + +} // namespace bmf_lite diff --git a/bmf_lite/src/algorithm/bmf_video_frame.cpp b/bmf_lite/src/algorithm/bmf_video_frame.cpp new file mode 100644 index 00000000..ba4e8cb3 --- /dev/null +++ b/bmf_lite/src/algorithm/bmf_video_frame.cpp @@ -0,0 +1,43 @@ +/* + * Copyright 2024 Babit Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "algorithm/bmf_video_frame.h" +#include "media/video_buffer/video_buffer.h" + +namespace bmf_lite { + +class VideoFrameImpl { + public: + VideoFrameImpl(std::shared_ptr video_buffer) { + buffer_ = video_buffer; + } + + VideoFrameImpl() {} + + std::shared_ptr buffer_; +}; + +VideoFrame::VideoFrame() { impl_ = std::make_shared(); } + +VideoFrame::VideoFrame(std::shared_ptr video_buffer) { + impl_ = std::make_shared(video_buffer); +} + +std::shared_ptr VideoFrame::buffer() { return impl_->buffer_; } + +VideoFrame::~VideoFrame() {} + +} // namespace bmf_lite \ No newline at end of file diff --git a/bmf_lite/src/algorithm/contrib_modules/QnnControlNet/QnnControlNetPipeLine.cpp b/bmf_lite/src/algorithm/contrib_modules/QnnControlNet/QnnControlNetPipeLine.cpp new file mode 100644 index 00000000..aef2162a --- /dev/null +++ b/bmf_lite/src/algorithm/contrib_modules/QnnControlNet/QnnControlNetPipeLine.cpp @@ -0,0 +1,272 @@ +#include "QnnControlNetPipeLine.h" +#include + +static void QnnLogCallBack(const char *fmt, QnnLog_Level_t level, + uint64_t timestamp, va_list argp) { + switch (level) { + case QNN_LOG_LEVEL_ERROR: + BMFLITE_LOGE("controlnet", "timestamp: %lu, ", timestamp); + BMFLITE_VLOGE("controlnet", fmt, argp); + break; + case QNN_LOG_LEVEL_WARN: + BMFLITE_LOGW("controlnet", "timestamp: %lu, ", timestamp); + BMFLITE_VLOGW("controlnet", fmt, argp); + break; + case QNN_LOG_LEVEL_INFO: + BMFLITE_LOGI("controlnet", "timestamp: %lu, ", timestamp); + BMFLITE_VLOGI("controlnet", fmt, argp); + break; + case QNN_LOG_LEVEL_VERBOSE: + BMFLITE_LOGI("controlnet", "timestamp: %lu, ", timestamp); + BMFLITE_VLOGI("controlnet", fmt, argp); + break; + case QNN_LOG_LEVEL_DEBUG: + BMFLITE_LOGD("controlnet", "timestamp: %lu, ", timestamp); + BMFLITE_VLOGD("controlnet", fmt, argp); + break; + case QNN_LOG_LEVEL_MAX: + BMFLITE_LOGD("controlnet", "timestamp: %lu, ", timestamp); + BMFLITE_VLOGD("controlnet", fmt, argp); + break; + default: + BMFLITE_LOGD("controlnet", "timestamp: %lu, ", timestamp); + BMFLITE_VLOGD("controlnet", fmt, argp); + break; + } + return; +} +int QnnControlNetPipeline::init(const std::string htp_path, + const std::string system_path, + const std::string tokenizer_path, + const std::string unet_path, + const std::string text_encoder_path, + const std::string vae_path, + const std::string control_net_path) { + if (htp_runtime_ == nullptr) { + htp_runtime_ = std::make_shared(); + } + if (htp_runtime_->init(htp_path, system_path, QNN_LOG_LEVEL_ERROR, + QnnLogCallBack) == false) { + BMFLITE_LOGE("controlnet", "htp_runtime_ init error\n"); + return -1; + } + if (unet == nullptr) { + unet = std::make_shared(); + } + if (unet->init(htp_runtime_, unet_path) == false) { + BMFLITE_LOGE("controlnet", "unet init error\n"); + return -2; + } + if (text_encoder == nullptr) { + text_encoder = std::make_shared(); + } + if (text_encoder->init(htp_runtime_, text_encoder_path) == false) { + BMFLITE_LOGE("controlnet", "text_encoder inite error\n"); + return -3; + } + if (vae == nullptr) { + vae = std::make_shared(); + } + if (vae->init(htp_runtime_, vae_path) == false) { + BMFLITE_LOGE("controlnet", "vae inite error\n"); + return -4; + } + if (control_net == nullptr) { + control_net = std::make_shared(); + } + if (control_net->init(htp_runtime_, control_net_path) == false) { + BMFLITE_LOGE("controlnet", "control_net inite error\n"); + return -5; + } + + if (tokenizer.load(tokenizer_path) < 0) { + BMFLITE_LOGE("controlnet", "tokenizer load failed!\n"); + return -6; + } + + scheduler.set_timesteps(max_step_); + + tokens = std::make_shared( + text_encoder->query_input_by_name("input_1")); + text_latents = std::make_shared( + text_encoder->query_output_by_name("output_1")); + bad_text_latents = std::make_shared( + text_encoder->query_output_by_name("output_1")); + noise_latent = + std::make_shared(unet->query_input_by_name("input_1")); + noise_latent_out = + std::make_shared(unet->query_output_by_name("output_1")); + vae_in = + std::make_shared(vae->query_input_by_name("input_1")); + time_embeddings = std::make_shared( + control_net->query_input_by_name("input_2")); + canny_image = std::make_shared( + control_net->query_input_by_name("input_4")); + out_image = + std::make_shared(vae->query_output_by_name("output_1")); + + auto controlnet_outs = control_net->get_all_output_names(); + for (auto &name : controlnet_outs) { + controlnet_blks.push_back(std::make_shared( + control_net->query_output_by_name(name), + unet->query_input_by_name(name))); + } + std::vector text_encoder_inputs{ + (uint8_t *)tokens->get_tensor().v1.clientBuf.data}; + std::vector text_encoder_outputs{ + (uint8_t *)text_latents->get_tensor().v1.clientBuf.data}; + text_encoder->register_inout_buffer(text_encoder_inputs, + text_encoder_outputs); + + std::vector unet_inputs{ + (uint8_t *)noise_latent->get_tensor().v1.clientBuf.data, + (uint8_t *)time_embeddings->get_tensor().v1.clientBuf.data, + (uint8_t *)text_latents->get_tensor().v1.clientBuf.data}; + for (auto &blk : controlnet_blks) { + unet_inputs.push_back((uint8_t *)blk->get_tensor().v1.clientBuf.data); + } + std::vector unet_outputs{ + (uint8_t *)noise_latent_out->get_tensor().v1.clientBuf.data}; + unet->register_inout_buffer(unet_inputs, unet_outputs); + + std::vector controlnet_inputs{ + (uint8_t *)noise_latent->get_tensor().v1.clientBuf.data, + (uint8_t *)time_embeddings->get_tensor().v1.clientBuf.data, + (uint8_t *)text_latents->get_tensor().v1.clientBuf.data, + (uint8_t *)canny_image->get_tensor().v1.clientBuf.data}; + + std::vector controlnet_outputs{}; + for (auto &blk : controlnet_blks) { + controlnet_outputs.push_back( + (uint8_t *)blk->get_tensor().v1.clientBuf.data); + } + + control_net->register_inout_buffer(controlnet_inputs, controlnet_outputs); + + std::vector vae_inputs{ + (uint8_t *)vae_in->get_tensor().v1.clientBuf.data}; + std::vector vae_outputs{ + (uint8_t *)out_image->get_tensor().v1.clientBuf.data}; + vae->register_inout_buffer(vae_inputs, vae_outputs); + + inited_ = true; + return 0; +} + +int QnnControlNetPipeline::tokenize(std::string positive_prompt_en, + std::string negative_prompt_en, + float *canny_ptr, int max_step, int seed) { + if (inited_ == false) { + return -1; + } + + canny_image->from_float(canny_ptr); + + auto tokens_and_weights = tokenizer.tokenize(positive_prompt_en, 77, true); + auto bad_tokens_and_weights = + tokenizer.tokenize(negative_prompt_en, 77, true); + + auto tokenized = tokens_and_weights.first; + auto bad_tokenized = bad_tokens_and_weights.first; + + tokens->from_int(tokenized.data()); + text_encoder->register_output_buffer( + 0, (uint8_t *)text_latents->get_tensor().v1.clientBuf.data); + if (!text_encoder->inference()) { + BMFLITE_LOGE("controlnet", "text_encoder inference failed"); + return -7; + } + + tokens->from_int(bad_tokenized.data()); + text_encoder->register_output_buffer( + 0, (uint8_t *)bad_text_latents->get_tensor().v1.clientBuf.data); + if (!text_encoder->inference()) { + BMFLITE_LOGE("controlnet", "text_encoder inference failed"); + return -7; + } + + if (max_step != max_step_) { + if (max_step != 50 || max_step != 20) { + BMFLITE_LOGW("controlnet", "step not valid"); + max_step_ = 20; + } else { + max_step_ = max_step; + } + scheduler.set_timesteps(max_step_); + } + current_step_ = 0; + latent_input_ = scheduler.randn_mat(seed, 64 * 64 * 4, 1); + + return 0; +} + +int QnnControlNetPipeline::step(float *image_out, int step) { + if (inited_ == false) { + return -1; + } + + if (current_step_ >= max_step_) { + BMFLITE_LOGW("controlnet", "step out of range"); // Generated complete + return 2; + } + + int ongoing_step = std::min(current_step_ + step, max_step_); + std::vector denoised(64 * 64 * 4); + std::vector bad_denoised(64 * 64 * 4); + + for (; current_step_ < ongoing_step; current_step_++) { + time_embeddings->from_float( + time_embedding_input_map[max_step_][current_step_]); + noise_latent->from_float((float *)latent_input_.data()); + control_net->register_input_buffer( + 2, (uint8_t *)text_latents->get_tensor().v1.clientBuf.data); + if (!control_net->inference()) { + BMFLITE_LOGE("controlnet", "control_net inference failed"); + return -8; + } + for (auto &blk : controlnet_blks) { + blk->in_place_adjust_quantization(); + } + unet->register_input_buffer( + 2, (uint8_t *)text_latents->get_tensor().v1.clientBuf.data); + if (!unet->inference()) { + BMFLITE_LOGE("controlnet", "unet inference failed"); + return -9; + } + noise_latent_out->to_float((float *)denoised.data()); + + control_net->register_input_buffer( + 2, (uint8_t *)bad_text_latents->get_tensor().v1.clientBuf.data); + if (!control_net->inference()) { + BMFLITE_LOGE("controlnet", "control_net inference failed"); + return -8; + } + for (auto &blk : controlnet_blks) { + blk->in_place_adjust_quantization(); + } + unet->register_input_buffer( + 2, (uint8_t *)bad_text_latents->get_tensor().v1.clientBuf.data); + if (!unet->inference()) { + BMFLITE_LOGE("controlnet", "unet inference failed"); + return -9; + } + noise_latent_out->to_float((float *)bad_denoised.data()); + + for (int j = 0; j < denoised.size(); j++) { + denoised[j] = + 7.5 * (denoised[j] - bad_denoised[j]) + bad_denoised[j]; + } + + latent_input_ = scheduler.step(current_step_, latent_input_, denoised); + } + vae_in->from_float((float *)latent_input_.data()); + + if (!vae->inference()) { + BMFLITE_LOGE("controlnet", "vae inference failed"); + return -10; + } + + out_image->to_float((float *)image_out); + + return 0; +} \ No newline at end of file diff --git a/bmf_lite/src/algorithm/contrib_modules/QnnControlNet/QnnControlNetPipeLine.h b/bmf_lite/src/algorithm/contrib_modules/QnnControlNet/QnnControlNetPipeLine.h new file mode 100644 index 00000000..77864a93 --- /dev/null +++ b/bmf_lite/src/algorithm/contrib_modules/QnnControlNet/QnnControlNetPipeLine.h @@ -0,0 +1,47 @@ +#include +#include +#include + +#include "inference/QnnModel.h" +#include "scheduler/scheduler_dpmpp_2m.h" +#include "utils/time_all.h" +#include "utils/utils_tokenizer.h" + +class QnnControlNetPipeline { + public: + QnnControlNetPipeline() = default; + ~QnnControlNetPipeline() = default; + int + init(const std::string htp_path, const std::string system_path, + const std::string tokenizer_path = "/data/local/tmp/ControlNetData", + const std::string unet_path = + "/data/local/tmp/ControlNetData/unet.serialized.bin", + const std::string text_encoder_path = + "/data/local/tmp/ControlNetData/text_encoder.serialized.bin", + const std::string vae_path = + "/data/local/tmp/ControlNetData/vae_decoder.serialized.bin", + const std::string control_net_path = + "/data/local/tmp/ControlNetData/controlnet.serialized.bin"); + int tokenize(std::string positive_prompt_en, std::string negative_prompt_en, + float *canny_ptr, int max_step = 50, int seed = 0); + int step(float *image_out, int step); + + private: + std::shared_ptr htp_runtime_; + + std::shared_ptr unet, text_encoder, vae, control_net; + + std::shared_ptr tokens, text_latents, bad_text_latents, + noise_latent, time_embeddings, canny_image, noise_latent_out, vae_in, + out_image; + + std::vector> controlnet_blks; + + scheduler_dpmpp_2m scheduler; + + CLIPTokenizer tokenizer; + std::vector latent_input_; + int max_step_ = 50; + int current_step_ = 0; + bool inited_ = false; +}; \ No newline at end of file diff --git a/bmf_lite/src/algorithm/contrib_modules/QnnControlNet/QnnControlNet_algorithm.cpp b/bmf_lite/src/algorithm/contrib_modules/QnnControlNet/QnnControlNet_algorithm.cpp new file mode 100644 index 00000000..d1c5cc7d --- /dev/null +++ b/bmf_lite/src/algorithm/contrib_modules/QnnControlNet/QnnControlNet_algorithm.cpp @@ -0,0 +1,356 @@ +#if (defined(__ANDROID__) || defined(__OHOS__)) && \ + defined(BMF_LITE_ENABLE_TEX_GEN_PIC) +#include "QnnControlNet_algorithm.h" +#include "QnnControlNetPipeLine.h" +#include "algorithm/bmf_video_frame.h" +#include "common/error_code.h" +#include "gl_texture_transformer.h" +#include +namespace bmf_lite { +struct ControlNetInitParam { + int algorithm_type = -1; // algorithm_type + int process_mode = -1; // process image or video + std::string license_module_name; // tob license name + std::string qnn_htp_library_path; + std::string qnn_system_library_path; + std::string ld_library_path; + std::string adsp_system_library_path; + + std::string tokenizer_path; + std::string unet_path; + std::string text_encoder_path; + std::string vae_path; + std::string control_net_path; + + bool operator==(const ControlNetInitParam ¶m) { + if (algorithm_type != param.algorithm_type) + return false; + if (process_mode != param.process_mode) + return false; + return true; + } +}; +class ControlNetProcessParam { + public: + float *mvp = NULL; + std::string positive_prompt_en = ""; + std::string negative_prompt_en = ""; + int seed = 0; + int step = 1; + int new_prompt = 1; +}; +class QNNControlNetImpl { + public: + struct ControlNetInitParam init_param_; + struct ControlNetProcessParam process_param_; + std::shared_ptr control_net_; + std::shared_ptr video_pool_; + VideoFrame out_frame_; + std::shared_ptr trans_ = nullptr; + float *out_data_ptr_ = nullptr; + float *in_data_ptr_ = nullptr; + std::shared_ptr trans_in_video_buffer_ = nullptr; + std::shared_ptr trans_out_video_buffer_ = nullptr; + const int MODEL_WIDTH = 512; + const int MODEL_HEIGHT = 512; + const char *LD_LIBRARY_PATH = + "/data/user/0/com.bmf.lite.app/files:/vendor/dsp/cdsp:/vendor/lib64:/" + "vendor/dsp/dsp:/vendor/dsp/images"; + const char *ADSP_LIBRARY_PATH = + "/data/user/0/com.bmf.lite.app/files;/vendor/dsp/cdsp;/vendor/lib/rfsa/" + "adsp;/system/lib/rfsa/adsp;/vendor/dsp/dsp;/vendor/dsp/images;/dsp"; + const char *QNN_HTP_DEFAULT_PATH = + "/data/user/0/com.bmf.lite.app/files/libQnnHtp.so"; + const char *QNN_SYSTEM_DEFAULT_PATH = + "/data/user/0/com.bmf.lite.app/files/libQnnSystem.so"; + QNNControlNetImpl() {}; + ~QNNControlNetImpl() {}; + int parseInitParam(Param param, ControlNetInitParam &init_param) { + if (param.getInt("algorithm_type", init_param.algorithm_type) != 0) { + return BMF_LITE_StsBadArg; + } + + if (param.getInt("process_mode", init_param.process_mode) != 0) { + return BMF_LITE_StsBadArg; + } + if (param.getString("qnn_htp_library_path", + init_param.qnn_htp_library_path) != 0) { + return BMF_LITE_StsBadArg; + } + if (param.getString("qnn_system_library_path", + init_param.qnn_system_library_path) != 0) { + return BMF_LITE_StsBadArg; + } + if (param.getString("ld_library_path", init_param.ld_library_path) != + 0) { + return BMF_LITE_StsBadArg; + } + if (param.getString("adsp_system_library_path", + init_param.adsp_system_library_path) != 0) { + return BMF_LITE_StsBadArg; + } + + if (param.getString("tokenizer_path", init_param.tokenizer_path) != 0) { + return BMF_LITE_StsBadArg; + } + if (param.getString("unet_path", init_param.unet_path) != 0) { + return BMF_LITE_StsBadArg; + } + if (param.getString("text_encoder_path", + init_param.text_encoder_path) != 0) { + return BMF_LITE_StsBadArg; + } + if (param.getString("vae_path", init_param.vae_path) != 0) { + return BMF_LITE_StsBadArg; + } + if (param.getString("control_net_path", init_param.control_net_path) != + 0) { + return BMF_LITE_StsBadArg; + } + + return 0; + } + int parseProcessParam(Param param, ControlNetProcessParam &process_param) { + if (param.getString("positive_prompt_en", + process_param.positive_prompt_en) != 0) { + return BMF_LITE_StsBadArg; + } + if (param.getString("negative_prompt_en", + process_param.negative_prompt_en) != 0) { + return BMF_LITE_StsBadArg; + } + if (param.getInt("seed", process_param.seed) != 0) { + return BMF_LITE_StsBadArg; + } + if (param.getInt("step", process_param.step) != 0) { + return BMF_LITE_StsBadArg; + } + if (param.getInt("new_prompt", process_param.new_prompt) != 0) { + return BMF_LITE_StsBadArg; + } + return 0; + } + int setParam(Param param) { + BMFLITE_LOGI("controlnet", "QNNControlNetImpl setParam 0"); + struct ControlNetInitParam init_param; + int res = parseInitParam(param, init_param); + if (res < 0) { + return res; + } + res = setParam(init_param); + if (res < 0) { + return res; + } + return 0; + } + int setParam(ControlNetInitParam param) { + if (init_param_ == param) { + // do nothing + // std::cout<<"setParam"<<" set do nothing"<(); + + auto rest = + setenv("LD_LIBRARY_PATH", param.ld_library_path.c_str(), true); + rest = setenv("ADSP_LIBRARY_PATH", + param.adsp_system_library_path.c_str(), true); + ops_result = control_net_->init( + param.qnn_htp_library_path.c_str(), + param.qnn_system_library_path.c_str(), + param.tokenizer_path.c_str(), param.unet_path.c_str(), + param.text_encoder_path.c_str(), param.vae_path.c_str(), + param.control_net_path.c_str()); + if (0 != ops_result) { + return ops_result; + } + bmf_lite::MemoryType memory_type = + bmf_lite::MemoryType::kOpenGLTexture2d; + std::shared_ptr device_context; + bmf_lite::HWDeviceType device_type = bmf_lite::kHWDeviceTypeEGLCtx; + bmf_lite::HardwareDeviceCreateInfo create_info; + create_info.device_type = device_type; + bmf_lite::EGLContextInfo context_info; + context_info.egl_context = NULL; + context_info.egl_display = NULL; + context_info.egl_draw_surface = NULL; + context_info.egl_read_surface = NULL; + create_info.context_info = &context_info; + int res = bmf_lite::HWDeviceContextManager::createHwDeviceContext( + &create_info, device_context); + if (res < 0) { + return res; + } + std::shared_ptr allocator = + bmf_lite::AllocatorManager::getAllocator(memory_type, + device_context); + int max_size = 2; + video_pool_ = std::make_shared( + allocator, device_context, max_size); + if (video_pool_ == NULL) { + return BMF_LITE_StsNoMem; + } + + bmf_lite::HardwareDataInfo data_info = { + bmf_lite::MemoryType::kOpenGLTexture2d, + bmf_lite::GLES_TEXTURE_RGBA, 0}; + + trans_ = std::make_shared(); + res = trans_->init(data_info, device_context); + if (res != BMF_LITE_StsOk) { + return res; + } + if (in_data_ptr_ == nullptr) { + in_data_ptr_ = new float[MODEL_WIDTH * MODEL_HEIGHT * 3]; + } + if (out_data_ptr_ == nullptr) { + out_data_ptr_ = new float[MODEL_WIDTH * MODEL_HEIGHT * 3]; + } + + std::shared_ptr device_context_cpu; + bmf_lite::HWDeviceContextManager::getCurrentHwDeviceContext( + bmf_lite::kHWDeviceTypeNone, device_context_cpu); + bmf_lite::HardwareDataInfo data_info_cpu = { + bmf_lite::MemoryType::kByteMemory, bmf_lite::CPU_RGBFLOAT, 0}; + if (trans_in_video_buffer_ == nullptr) { + bmf_lite::VideoBufferManager:: + createTextureVideoBufferFromExistingData( + (void *)in_data_ptr_, MODEL_WIDTH, MODEL_HEIGHT, + &data_info_cpu, device_context_cpu, NULL, + trans_in_video_buffer_); + } + if (trans_out_video_buffer_ == nullptr) { + bmf_lite::VideoBufferManager:: + createTextureVideoBufferFromExistingData( + (void *)in_data_ptr_, MODEL_WIDTH, MODEL_HEIGHT, + &data_info_cpu, device_context_cpu, NULL, + trans_out_video_buffer_); + } + init_param_ = param; + return 0; + } + } + int preProcess(VideoFrame frame, ControlNetProcessParam process_param) { + return 0; + } + int createProcessOutVideoFrame(VideoFrame &frame, + ControlNetProcessParam process_param) { + return 0; + } + int processVideoFrame(VideoFrame frame, Param param) { + ControlNetProcessParam process_param; + int res = parseProcessParam(param, process_param); + if (res < 0) { + return res; + } + std::shared_ptr video_buffer = frame.buffer(); + bmf_lite::HardwareDataInfo hardware_data_info = + video_buffer->hardwareDataInfo(); + hardware_data_info.mutable_flag = 1; + std::shared_ptr output_video_buffer = + video_pool_->acquireObject(video_buffer->width(), + video_buffer->height(), + hardware_data_info); + if (output_video_buffer == NULL) { + return BMF_LITE_StsNoMem; + } + + out_frame_ = VideoFrame(output_video_buffer); + res = processVideoFrame(frame, out_frame_, process_param); + if (res < 0) { + return res; + } + return 0; + } + int processVideoFrame(VideoFrame in_frame, VideoFrame out_frame, + ControlNetProcessParam process_param) { + int width = in_frame.buffer()->width(); + int height = in_frame.buffer()->height(); + int in_tex = (long)(in_frame.buffer()->data()); + int out_tex = (long)(out_frame.buffer()->data()); + int ret = trans_->transTexture2Memory(in_frame.buffer(), + trans_in_video_buffer_); + if (ret != BMF_LITE_StsOk) { + return ret; + } + if (process_param.new_prompt == 1) { + int ops_res = control_net_->tokenize( + process_param.positive_prompt_en, + process_param.negative_prompt_en, + (float *)(trans_in_video_buffer_->data()), 20, + process_param.seed); + if (ops_res != BMF_LITE_StsOk) { + return ops_res; + } + } + int ops_res = control_net_->step( + (float *)(trans_out_video_buffer_->data()), process_param.step); + if (ops_res != BMF_LITE_StsOk) { + return ops_res; + } + ret = trans_->transMemory2Texture(trans_out_video_buffer_, + out_frame.buffer()); + return ret; + } + int getVideoFrameOutput(VideoFrame &frame, Param ¶m) { + frame = out_frame_; + out_frame_ = VideoFrame(); + return 0; + } + int unInit() { + if (out_data_ptr_ != nullptr) { + delete[] out_data_ptr_; + out_data_ptr_ = nullptr; + } + if (in_data_ptr_ != nullptr) { + delete[] in_data_ptr_; + in_data_ptr_ = nullptr; + } + + return 0; + }; + + private: + std::shared_ptr htp_runtime_; + std::shared_ptr unet, text_encoder, vae, control_net; + std::shared_ptr tokens, text_latents, bad_text_latents, + noise_latent, time_embeddings, canny_image, noise_latent_out, vae_in, + out_image; + std::vector> controlnet_blks; +}; + +QNNControlNetAlgorithm::QNNControlNetAlgorithm() {}; +QNNControlNetAlgorithm::~QNNControlNetAlgorithm() {}; +int QNNControlNetAlgorithm::setParam(Param param) { + if (impl_ == NULL) { + impl_ = std::make_shared(); + } + return impl_->setParam(param); +} +int QNNControlNetAlgorithm::processVideoFrame(VideoFrame frame, Param param) { + return impl_->processVideoFrame(frame, param); +} +int QNNControlNetAlgorithm::getVideoFrameOutput(VideoFrame &frame, + Param ¶m) { + return impl_->getVideoFrameOutput(frame, param); +} +int QNNControlNetAlgorithm::unInit() { return impl_->unInit(); }; +int QNNControlNetAlgorithm::processMultiVideoFrame( + std::vector videoframes, Param param) { + return 0; +}; + +int QNNControlNetAlgorithm::getMultiVideoFrameOutput( + std::vector &videoframes, Param ¶m) { + return 0; +}; + +int QNNControlNetAlgorithm::getProcessProperty(Param ¶m) { return 0; }; + +int QNNControlNetAlgorithm::setInputProperty(Param attr) { return 0; }; + +int QNNControlNetAlgorithm::getOutputProperty(Param &attr) { return 0; }; +} // namespace bmf_lite +#endif \ No newline at end of file diff --git a/bmf_lite/src/algorithm/contrib_modules/QnnControlNet/QnnControlNet_algorithm.h b/bmf_lite/src/algorithm/contrib_modules/QnnControlNet/QnnControlNet_algorithm.h new file mode 100644 index 00000000..ce6c7c19 --- /dev/null +++ b/bmf_lite/src/algorithm/contrib_modules/QnnControlNet/QnnControlNet_algorithm.h @@ -0,0 +1,32 @@ +#ifndef _BMF_QNN_ALGORITHM_H_ +#define _BMF_QNN_ALGORITHM_H_ +#include "algorithm/bmf_algorithm.h" +#include "algorithm/algorithm_interface.h" +#include "media/video_buffer/video_buffer_pool.h" +namespace bmf_lite { + +class QNNControlNetImpl; +class QNNControlNetAlgorithm : public IAlgorithmInterface { + + public: + QNNControlNetAlgorithm(); + virtual ~QNNControlNetAlgorithm(); + + int setParam(Param param); + int unInit(); + + int processVideoFrame(VideoFrame videoframe, Param param); + int getVideoFrameOutput(VideoFrame &frame, Param ¶m); + + int processMultiVideoFrame(std::vector videoframes, + Param param); + int getMultiVideoFrameOutput(std::vector &videoframes, + Param ¶m); + + int getProcessProperty(Param ¶m); + int setInputProperty(Param attr); + int getOutputProperty(Param &attr); + std::shared_ptr impl_; +}; +} // namespace bmf_lite +#endif \ No newline at end of file diff --git a/bmf_lite/src/algorithm/contrib_modules/QnnControlNet/inference/QnnModel.cpp b/bmf_lite/src/algorithm/contrib_modules/QnnControlNet/inference/QnnModel.cpp new file mode 100644 index 00000000..327a9cef --- /dev/null +++ b/bmf_lite/src/algorithm/contrib_modules/QnnControlNet/inference/QnnModel.cpp @@ -0,0 +1,150 @@ +#include "QnnModel.h" + +#include +#include +#include + +bool QnnModel::init(std::shared_ptr runtime, + std::string context_binary_path) { + if (inited_ == true) { + return true; + } + htp_runtime_ = runtime; + std::ifstream context_binary(context_binary_path, std::ios::binary); + if (!context_binary.is_open()) { + BMFLITE_LOGE("controlnet", "open error"); + return false; + } + context_binary.seekg(0, std::ios::end); + size_t size = context_binary.tellg(); + context_binary.seekg(0, std::ios::beg); + std::vector context_binary_data(size); + context_binary.read((char *)context_binary_data.data(), size); + context_binary.close(); + auto qnn_function_ptr = htp_runtime_->get_qnn_function_ptr(); + auto log_handle = htp_runtime_->get_log_handle(); + auto backend_handle = htp_runtime_->get_backend_handle(); + auto device_handle = htp_runtime_->get_device_handle(); + + QnnSystemContext_Handle_t sysCtxHandle{nullptr}; + if (qnn_function_ptr.qnnSystemInterface.systemContextCreate == nullptr || + qnn_function_ptr.qnnSystemInterface.systemContextFree == nullptr || + qnn_function_ptr.qnnSystemInterface.systemContextGetBinaryInfo == + nullptr) { + BMFLITE_LOGE( + "controlnet", + "qnnSystemInterface.systemContextCreateFromBinary is null"); + return false; + } + auto qnnStatus = + qnn_function_ptr.qnnSystemInterface.systemContextCreate(&sysCtxHandle); + if (qnnStatus != QNN_SUCCESS) { + BMFLITE_LOGE("controlnet", "create system context error"); + return false; + } + const QnnSystemContext_BinaryInfo_t *binaryInfo{nullptr}; + Qnn_ContextBinarySize_t binaryInfoSize{0}; + qnnStatus = qnn_function_ptr.qnnSystemInterface.systemContextGetBinaryInfo( + sysCtxHandle, context_binary_data.data(), size, &binaryInfo, + &binaryInfoSize); + if (qnnStatus != QNN_SUCCESS) { + BMFLITE_LOGE("controlnet", "get system context binary info error"); + qnn_function_ptr.qnnSystemInterface.systemContextFree(sysCtxHandle); + return false; + } + QnnSystemContext_GraphInfo_t *graphs = + binaryInfo->contextBinaryInfoV1.graphs; + QnnSystemContext_GraphInfoV1_t graphInfo = graphs[0].graphInfoV1; + graph_name_ = std::string(graphInfo.graphName); + num_input_tensors_ = graphInfo.numGraphInputs; + num_output_tensors_ = graphInfo.numGraphOutputs; + auto deleter = [](Qnn_Tensor_t *p) { + free((void *)p->v1.name); + free(p->v1.dimensions); + }; + for (int i = 0; i < num_input_tensors_; i++) { + auto ptr = std::shared_ptr( + new Qnn_Tensor_t QNN_TENSOR_INIT, deleter); + deepCopyQnnTensorInfo(ptr.get(), &graphInfo.graphInputs[i]); + input_tensors_[std::string(graphInfo.graphInputs[i].v1.name)] = ptr; + input_tensor_vector_.push_back(*ptr); + } + + for (int i = 0; i < num_output_tensors_; i++) { + auto ptr = std::shared_ptr( + new Qnn_Tensor_t QNN_TENSOR_INIT, deleter); + deepCopyQnnTensorInfo(ptr.get(), &graphInfo.graphOutputs[i]); + output_tensors_[std::string(graphInfo.graphOutputs[i].v1.name)] = ptr; + output_tensor_vector_.push_back(*ptr); + } + + qnn_function_ptr.qnnSystemInterface.systemContextFree(sysCtxHandle); + + qnnStatus = qnn_function_ptr.qnnInterface.contextCreateFromBinary( + backend_handle, device_handle, nullptr, context_binary_data.data(), + size, &context_handle_, nullptr); + if (qnnStatus != QNN_SUCCESS) { + BMFLITE_LOGE("controlnet", "create context from binary error"); + return false; + } + + qnnStatus = qnn_function_ptr.qnnInterface.graphRetrieve( + context_handle_, graph_name_.c_str(), &graph_handle_); + if (qnnStatus != QNN_SUCCESS) { + BMFLITE_LOGE("controlnet", "retrieve graph error"); + return false; + } + + inited_ = true; + return true; +} + +QnnModel::~QnnModel() { + auto qnn_function_ptr = htp_runtime_->get_qnn_function_ptr(); + if (context_handle_ != nullptr) { + qnn_function_ptr.qnnInterface.contextFree(context_handle_, nullptr); + } +} + +bool QnnModel::register_inout_buffer(std::vector &inputs, + std::vector &outputs) { + if (!inited_) { + BMFLITE_LOGE("controlnet", "model not inited"); + return false; + } + + Qnn_Tensor_t *ptr = input_tensor_vector_.data(); + for (int i = 0; i < num_input_tensors_; i++) { + if (inputs[i] == nullptr) { + BMFLITE_LOGE("controlnet", "input buffer is null"); + return false; + } + ptr[i].v1.clientBuf.data = (void *)inputs[i]; + } + ptr = output_tensor_vector_.data(); + for (int i = 0; i < num_output_tensors_; i++) { + if (outputs[i] == nullptr) { + BMFLITE_LOGE("controlnet", "output buffer is null"); + return false; + } + ptr[i].v1.clientBuf.data = (void *)outputs[i]; + } + + return true; +} + +bool QnnModel::inference() { + if (!inited_) { + BMFLITE_LOGE("controlnet", "model not inited"); + return false; + } + auto qnn_function_ptr = htp_runtime_->get_qnn_function_ptr(); + auto qnn_satus = qnn_function_ptr.qnnInterface.graphExecute( + graph_handle_, input_tensor_vector_.data(), num_input_tensors_, + output_tensor_vector_.data(), num_output_tensors_, nullptr, nullptr); + if (qnn_satus != QNN_SUCCESS) { + BMFLITE_LOGE("controlnet", "graph execute error %lu \n", qnn_satus); + return false; + } + return true; +} \ No newline at end of file diff --git a/bmf_lite/src/algorithm/contrib_modules/QnnControlNet/inference/QnnModel.h b/bmf_lite/src/algorithm/contrib_modules/QnnControlNet/inference/QnnModel.h new file mode 100644 index 00000000..ab88410a --- /dev/null +++ b/bmf_lite/src/algorithm/contrib_modules/QnnControlNet/inference/QnnModel.h @@ -0,0 +1,71 @@ +#pragma once + +#include + +#include "QnnRuntime.h" +#include "QnnTensorData.h" + +class QnnModel { + public: + QnnModel() = default; + ~QnnModel(); + QnnModel(const QnnModel &) = delete; + QnnModel &operator=(const QnnModel &) = delete; + QnnModel(QnnModel &&) = delete; + QnnModel &operator=(QnnModel &&) = delete; + virtual bool init(std::shared_ptr runtime, + std::string context_binary_path); + std::vector get_all_input_names() { + std::vector tmp_vec; + for (auto &tensor : input_tensor_vector_) { + tmp_vec.push_back(std::string(tensor.v1.name)); + } + return tmp_vec; + }; + std::vector get_all_output_names() { + std::vector tmp_vec; + for (auto &tensor : output_tensor_vector_) { + tmp_vec.push_back(std::string(tensor.v1.name)); + } + return tmp_vec; + }; + Qnn_Tensor_t *query_input_by_name(std::string name) { + return input_tensors_[name].get(); + }; + Qnn_Tensor_t *query_output_by_name(std::string name) { + return output_tensors_[name].get(); + }; + virtual bool register_inout_buffer(std::vector &inputs, + std::vector &outputs); + virtual bool register_input_buffer(int index, uint8_t *buffer) { + if (index > input_tensors_.size()) { + return false; + } + input_tensor_vector_[index].v1.clientBuf.data = buffer; + return true; + }; + virtual bool register_output_buffer(int index, uint8_t *buffer) { + if (index > output_tensors_.size()) { + return false; + } + output_tensor_vector_[index].v1.clientBuf.data = buffer; + return true; + }; + virtual bool inference(); + + private: + bool inited_ = false; + std::shared_ptr htp_runtime_; + Qnn_ContextHandle_t context_handle_ = nullptr; + Qnn_GraphHandle_t graph_handle_; + std::string graph_name_; + + std::map> input_tensors_; + std::map> output_tensors_; + + std::vector input_tensor_vector_; + std::vector output_tensor_vector_; + + uint32_t num_input_tensors_; + uint32_t num_output_tensors_; +}; diff --git a/bmf_lite/src/algorithm/contrib_modules/QnnControlNet/inference/QnnRuntime.cpp b/bmf_lite/src/algorithm/contrib_modules/QnnControlNet/inference/QnnRuntime.cpp new file mode 100644 index 00000000..82de0dd1 --- /dev/null +++ b/bmf_lite/src/algorithm/contrib_modules/QnnControlNet/inference/QnnRuntime.cpp @@ -0,0 +1,257 @@ +#include "QnnRuntime.h" + +#include +#include +#include +#include + +bool QnnHTPRuntime::load_libs(const std::string htp_path, + const std::string system_path) { + if (lib_inited_) { + return true; + } + Qnn_ErrorHandle_t error = QNN_SUCCESS; + auto htp_handle = dlopen(htp_path.c_str(), RTLD_NOW | RTLD_GLOBAL); + if (htp_handle == nullptr) { + BMFLITE_LOGE("controlnet", "load error: %s", dlerror()); + return false; + } + htp_handle_ = std::shared_ptr(htp_handle, dlclose); + QnnInterface_getProvidersPtr get_providers = + reinterpret_cast( + dlsym(htp_handle, "QnnInterface_getProviders")); + if (get_providers == nullptr) { + BMFLITE_LOGE("controlnet", "load error"); + return false; + } + QnnInterface_t **interfaceProviders{nullptr}; + uint32_t numProviders{0}; + if (get_providers((const QnnInterface_t ***)&interfaceProviders, + &numProviders) != QNN_SUCCESS) { + BMFLITE_LOGE("controlnet", "load error"); + return false; + } + if (nullptr == interfaceProviders || numProviders == 0) { + BMFLITE_LOGE("controlnet", "load error"); + return false; + } + bool foundValidInterface{false}; + for (size_t pIdx = 0; pIdx < numProviders; pIdx++) { + if (QNN_API_VERSION_MAJOR == + interfaceProviders[pIdx]->apiVersion.coreApiVersion.major && + QNN_API_VERSION_MINOR <= + interfaceProviders[pIdx]->apiVersion.coreApiVersion.minor) { + foundValidInterface = true; + qnn_function_ptr_.qnnInterface = + interfaceProviders[pIdx]->QNN_INTERFACE_VER_NAME; + break; + } + } + + auto system_handle = dlopen(system_path.c_str(), RTLD_NOW | RTLD_GLOBAL); + if (system_handle == nullptr) { + BMFLITE_LOGE("controlnet", "load error"); + return false; + } + system_handle_ = std::shared_ptr(system_handle, dlclose); + QnnSystemInterface_getProvidersPtr system_get_providers = + reinterpret_cast( + dlsym(system_handle, "QnnSystemInterface_getProviders")); + if (system_get_providers == nullptr) { + BMFLITE_LOGE("controlnet", "load error"); + return false; + } + QnnSystemInterface_t **systemInterfaceProviders{nullptr}; + uint32_t system_numProviders{0}; + if (system_get_providers( + (const QnnSystemInterface_t ***)&systemInterfaceProviders, + &system_numProviders) != QNN_SUCCESS) { + BMFLITE_LOGE("controlnet", "load error"); + return false; + } + if (nullptr == systemInterfaceProviders || system_numProviders == 0) { + BMFLITE_LOGE("controlnet", "load error"); + return false; + } + bool foundValidSystemInterface{false}; + for (size_t pIdx = 0; pIdx < system_numProviders; pIdx++) { + if (QNN_SYSTEM_API_VERSION_MAJOR == + systemInterfaceProviders[pIdx]->systemApiVersion.major && + QNN_SYSTEM_API_VERSION_MINOR <= + systemInterfaceProviders[pIdx]->systemApiVersion.minor) { + foundValidSystemInterface = true; + qnn_function_ptr_.qnnSystemInterface = + systemInterfaceProviders[pIdx]->QNN_SYSTEM_INTERFACE_VER_NAME; + break; + } + } + if (!foundValidInterface || !foundValidSystemInterface) { + BMFLITE_LOGE("controlnet", "load error"); + return false; + } + lib_inited_ = true; + return true; +} + +bool QnnHTPRuntime::init_log(QnnLog_Level_t logLevel, + QnnLog_Callback_t call_back) { + if (log_inited_ == true) { + return true; + } + if (qnn_function_ptr_.qnnInterface.logCreate == nullptr) { + BMFLITE_LOGE("controlnet", "log create error"); + return false; + } + auto qnnStatus = qnn_function_ptr_.qnnInterface.logCreate( + call_back, logLevel, &log_handle_); + if (qnnStatus != QNN_SUCCESS) { + BMFLITE_LOGE("controlnet", "log create error"); + return false; + } + log_inited_ = true; + return true; +} + +bool QnnHTPRuntime::init_backend() { + if (backend_inited_ == true) { + return true; + } + if (qnn_function_ptr_.qnnInterface.backendCreate == nullptr) { + BMFLITE_LOGE("controlnet", "backend create error"); + return false; + } + auto qnnStatus = qnn_function_ptr_.qnnInterface.backendCreate( + log_handle_, nullptr, &backend_handle_); + if (qnnStatus != QNN_SUCCESS) { + BMFLITE_LOGE("controlnet", "backend create error"); + return false; + } + backend_inited_ = true; + return true; +} + +bool QnnHTPRuntime::init_device() { + if (device_inited_ == true) { + return true; + } + if (qnn_function_ptr_.qnnInterface.deviceCreate == nullptr) { + BMFLITE_LOGE("controlnet", "device create error"); + return false; + } + auto qnnStatus = qnn_function_ptr_.qnnInterface.deviceCreate( + log_handle_, nullptr, &device_handle_); + if (qnnStatus != QNN_SUCCESS) { + BMFLITE_LOGE("controlnet", "device create error"); + return false; + } + device_inited_ = true; + return true; +} + +bool QnnHTPRuntime::setHighPerformanceMode() { + if (performance_inited_ == true) { + return true; + } + if (qnn_function_ptr_.qnnInterface.deviceGetInfrastructure == nullptr) { + BMFLITE_LOGE("controlnet", "device get infrastructure error"); + return false; + } + QnnDevice_Infrastructure_t deviceInfra = nullptr; + auto qnnStatus = + qnn_function_ptr_.qnnInterface.deviceGetInfrastructure(&deviceInfra); + if (qnnStatus != QNN_SUCCESS) { + BMFLITE_LOGE("controlnet", "device get infrastructure error"); + return false; + } + QnnHtpDevice_Infrastructure_t *htpInfra = + static_cast(deviceInfra); + QnnHtpDevice_PerfInfrastructure_t *perfInfra = &htpInfra->perfInfra; + m_perfInfra = perfInfra; + if (m_perfInfra) { + uint32_t powerConfigId = 1; + uint32_t deviceId = 0; + uint32_t coreId = 0; + auto qnnStatus = + perfInfra->createPowerConfigId(deviceId, coreId, &powerConfigId); + if (qnnStatus != QNN_SUCCESS) { + BMFLITE_LOGE("controlnet", "setPowerConfig error"); + return false; + } + m_powerConfigId = powerConfigId; + + QnnHtpPerfInfrastructure_PowerConfig_t powerConfig; + memset(&powerConfig, 0, sizeof(powerConfig)); + powerConfig.option = + QNN_HTP_PERF_INFRASTRUCTURE_POWER_CONFIGOPTION_DCVS_V3; + powerConfig.dcvsV3Config.dcvsEnable = 0; + powerConfig.dcvsV3Config.setDcvsEnable = 1; + powerConfig.dcvsV3Config.contextId = m_powerConfigId; + powerConfig.dcvsV3Config.powerMode = + QNN_HTP_PERF_INFRASTRUCTURE_POWERMODE_PERFORMANCE_MODE; + powerConfig.dcvsV3Config.setSleepLatency = 1; + powerConfig.dcvsV3Config.setBusParams = 1; + powerConfig.dcvsV3Config.setCoreParams = 1; + powerConfig.dcvsV3Config.sleepDisable = 1; + powerConfig.dcvsV3Config.setSleepDisable = 1; + uint32_t latencyValue = 40; + powerConfig.dcvsV3Config.sleepLatency = latencyValue; + powerConfig.dcvsV3Config.busVoltageCornerMin = + DCVS_VOLTAGE_VCORNER_MAX_VOLTAGE_CORNER; + powerConfig.dcvsV3Config.busVoltageCornerTarget = + DCVS_VOLTAGE_VCORNER_MAX_VOLTAGE_CORNER; + powerConfig.dcvsV3Config.busVoltageCornerMax = + DCVS_VOLTAGE_VCORNER_MAX_VOLTAGE_CORNER; + powerConfig.dcvsV3Config.coreVoltageCornerMin = + DCVS_VOLTAGE_VCORNER_MAX_VOLTAGE_CORNER; + powerConfig.dcvsV3Config.coreVoltageCornerTarget = + DCVS_VOLTAGE_VCORNER_MAX_VOLTAGE_CORNER; + powerConfig.dcvsV3Config.coreVoltageCornerMax = + DCVS_VOLTAGE_VCORNER_MAX_VOLTAGE_CORNER; + const QnnHtpPerfInfrastructure_PowerConfig_t *powerConfigs[] = { + &powerConfig, NULL}; + qnnStatus = m_perfInfra->setPowerConfig(m_powerConfigId, powerConfigs); + if (qnnStatus != QNN_SUCCESS) { + BMFLITE_LOGE("controlnet", "setPowerConfig error"); + return false; + } + } else { + return false; + } + performance_inited_ = true; + return true; +} +QnnHTPRuntime::~QnnHTPRuntime() { + if (m_perfInfra) { + auto qnnStatus = m_perfInfra->destroyPowerConfigId(m_powerConfigId); + if (qnnStatus != QNN_SUCCESS) { + BMFLITE_LOGE("controlnet", "destroyPowerConfigId error"); + } + } + if (device_handle_) { + if (qnn_function_ptr_.qnnInterface.deviceFree != nullptr) { + auto qnnStatus = + qnn_function_ptr_.qnnInterface.deviceFree(device_handle_); + if (qnnStatus != QNN_SUCCESS) { + BMFLITE_LOGE("controlnet", "device free error"); + } + } + } + if (backend_handle_) { + if (qnn_function_ptr_.qnnInterface.backendFree != nullptr) { + auto qnnStatus = + qnn_function_ptr_.qnnInterface.backendFree(backend_handle_); + if (qnnStatus != QNN_SUCCESS) { + BMFLITE_LOGE("controlnet", "backend free error"); + } + } + } + if (log_handle_) { + if (qnn_function_ptr_.qnnInterface.logFree != nullptr) { + auto qnnStatus = + qnn_function_ptr_.qnnInterface.logFree(log_handle_); + if (qnnStatus != QNN_SUCCESS) { + BMFLITE_LOGE("controlnet", "log free error"); + } + } + } +} diff --git a/bmf_lite/src/algorithm/contrib_modules/QnnControlNet/inference/QnnRuntime.h b/bmf_lite/src/algorithm/contrib_modules/QnnControlNet/inference/QnnRuntime.h new file mode 100644 index 00000000..f938e7be --- /dev/null +++ b/bmf_lite/src/algorithm/contrib_modules/QnnControlNet/inference/QnnRuntime.h @@ -0,0 +1,82 @@ +#pragma once + +#include +#include +#include + +#include +#include +#include + +#include "utils/log.h" + +typedef struct QnnFunctionPointers { + QNN_INTERFACE_VER_TYPE qnnInterface; + QNN_SYSTEM_INTERFACE_VER_TYPE qnnSystemInterface; +} QnnFunctionPointers; + +using QnnInterface_getProvidersPtr = decltype(&QnnInterface_getProviders); +using QnnSystemInterface_getProvidersPtr = + decltype(&QnnSystemInterface_getProviders); + +class QnnHTPRuntime { + public: + QnnHTPRuntime() = default; + ~QnnHTPRuntime(); + QnnHTPRuntime(const QnnHTPRuntime &) = delete; + QnnHTPRuntime &operator=(const QnnHTPRuntime &) = delete; + QnnHTPRuntime(QnnHTPRuntime &&) = delete; + QnnHTPRuntime &operator=(QnnHTPRuntime &&) = delete; + bool init(const std::string htp_path, const std::string system_path, + QnnLog_Level_t log_level = QNN_LOG_LEVEL_INFO, + QnnLog_Callback_t call_back = (QnnLog_Callback_t) nullptr) { + if (inited_) + return true; + if (!load_libs(htp_path, system_path)) { + return false; + } + if (!init_log(log_level, call_back)) { + return false; + } + if (!init_backend()) { + return false; + } + if (!init_device()) { + return false; + } + if (!setHighPerformanceMode()) { + return false; + } + inited_ = true; + return true; + }; + const QnnFunctionPointers &get_qnn_function_ptr() { + return qnn_function_ptr_; + } + const Qnn_DeviceHandle_t get_device_handle() { return device_handle_; } + const Qnn_BackendHandle_t get_backend_handle() { return backend_handle_; } + const Qnn_LogHandle_t get_log_handle() { return log_handle_; } + + private: + bool load_libs(const std::string htp_path, const std::string system_path); + bool init_log(QnnLog_Level_t log_level = QNN_LOG_LEVEL_INFO, + QnnLog_Callback_t call_back = (QnnLog_Callback_t) nullptr); + bool init_backend(); + bool init_device(); + bool setHighPerformanceMode(); + std::shared_ptr htp_handle_; + std::shared_ptr system_handle_; + QnnFunctionPointers qnn_function_ptr_; + + bool inited_ = false; + bool lib_inited_ = false; + bool log_inited_ = false; + bool backend_inited_ = false; + bool device_inited_ = false; + bool performance_inited_ = false; + Qnn_LogHandle_t log_handle_ = nullptr; + Qnn_BackendHandle_t backend_handle_ = nullptr; + Qnn_DeviceHandle_t device_handle_ = nullptr; + QnnHtpDevice_PerfInfrastructure_t *m_perfInfra = nullptr; + uint32_t m_powerConfigId = 1; +}; diff --git a/bmf_lite/src/algorithm/contrib_modules/QnnControlNet/inference/QnnTensorData.cpp b/bmf_lite/src/algorithm/contrib_modules/QnnControlNet/inference/QnnTensorData.cpp new file mode 100644 index 00000000..0d5b0766 --- /dev/null +++ b/bmf_lite/src/algorithm/contrib_modules/QnnControlNet/inference/QnnTensorData.cpp @@ -0,0 +1,222 @@ +#include "QnnTensorData.h" + +#include +#include + +template +void quant(T *out, U *in, double scale, double offset, size_t numElements) { + size_t bitWidth = sizeof(T) * 8; + double trueBitWidthMax = pow(2, bitWidth) - 1; + double encodingMin = offset * scale; + double encodingMax = (trueBitWidthMax + offset) * scale; + double encodingRange = encodingMax - encodingMin; + + for (size_t i = 0; i < numElements; ++i) { + int quantizedValue = + round(trueBitWidthMax * (in[i] - encodingMin) / encodingRange); + if (quantizedValue < 0) { + quantizedValue = 0; + } else if (quantizedValue > (int)trueBitWidthMax) { + quantizedValue = (int)trueBitWidthMax; + } + out[i] = static_cast(quantizedValue); + } +} + +template +void dequant(T *out, U *in, double scale, double offset, size_t numElements) { + for (size_t i = 0; i < numElements; i++) { + double quantizedValue = static_cast(in[i]); + out[i] = static_cast((quantizedValue + offset) * scale); + } +} + +template void quant(uint16_t *out, float *in, double scale, + double offset, size_t numElements); +template void dequant(float *out, uint16_t *in, double scale, + double offset, size_t numElements); + +bool deepCopyQnnTensorInfo(Qnn_Tensor_t *dst, const Qnn_Tensor_t *src) { + if (nullptr == dst || nullptr == src) { + BMFLITE_LOGE("controlnet", "invalid ptr"); + return false; + } + + dst->version = src->version; + const char *tensorName = src->v1.name; + if (!tensorName) { + dst->v1.name = nullptr; + } else { + dst->v1.name = strdup(src->v1.name); + } + dst->v1.id = src->v1.id; + dst->v1.type = src->v1.type; + dst->v1.dataType = src->v1.dataType; + dst->v1.quantizeParams.encodingDefinition = + src->v1.quantizeParams.encodingDefinition; + dst->v1.quantizeParams.quantizationEncoding = + src->v1.quantizeParams.quantizationEncoding; + dst->v1.quantizeParams.scaleOffsetEncoding.scale = + src->v1.quantizeParams.scaleOffsetEncoding.scale; + dst->v1.quantizeParams.scaleOffsetEncoding.offset = + src->v1.quantizeParams.scaleOffsetEncoding.offset; + dst->v1.rank = src->v1.rank; + dst->v1.dimensions = (uint32_t *)malloc(sizeof(uint32_t) * src->v1.rank); + memcpy(dst->v1.dimensions, src->v1.dimensions, + sizeof(uint32_t) * src->v1.rank); + size_t size = 0; + if (src->v1.rank > 0) { + size = src->v1.dimensions[0]; + for (int i = 1; i < src->v1.rank; i++) { + size *= src->v1.dimensions[i]; + } + } + switch (src->v1.dataType) { + case QNN_DATATYPE_FLOAT_32: + size = sizeof(float) * size; + break; + case QNN_DATATYPE_UINT_8: + case QNN_DATATYPE_UFIXED_POINT_8: + case QNN_DATATYPE_INT_8: + size = sizeof(uint8_t) * size; + break; + case QNN_DATATYPE_UINT_16: + case QNN_DATATYPE_UFIXED_POINT_16: + case QNN_DATATYPE_INT_16: + size = sizeof(uint16_t) * size; + break; + case QNN_DATATYPE_UINT_32: + case QNN_DATATYPE_INT_32: + size = sizeof(uint32_t) * size; + break; + default: + break; + } + + dst->v1.memType = QNN_TENSORMEMTYPE_RAW; + dst->v1.clientBuf.data = nullptr; + dst->v1.clientBuf.dataSize = size; + + return true; +} + +QnnTensorData::QnnTensorData(const Qnn_Tensor_t *src) { + if (src->version != QNN_TENSOR_VERSION_1) { + BMFLITE_LOGE("controlnet", "version error"); + return; + } + auto deleter = [](Qnn_Tensor_t *p) { + free((void *)p->v1.name); + free(p->v1.dimensions); + }; + tensor_ = std::shared_ptr(new Qnn_Tensor_t QNN_TENSOR_INIT, + deleter); + deepCopyQnnTensorInfo(tensor_.get(), src); + owned_data_.resize(tensor_->v1.clientBuf.dataSize, 0); + tensor_->v1.clientBuf.data = owned_data_.data(); + return; +} + +QnnTensorData::QnnTensorData(const Qnn_Tensor_t *src, + const Qnn_Tensor_t *next_layer_src) { + if (src->version != QNN_TENSOR_VERSION_1 || + next_layer_src->version != QNN_TENSOR_VERSION_1) { + BMFLITE_LOGE("controlnet", "version error"); + return; + } + auto deleter = [](Qnn_Tensor_t *p) { + free((void *)p->v1.name); + free(p->v1.dimensions); + }; + tensor_ = std::shared_ptr(new Qnn_Tensor_t QNN_TENSOR_INIT, + deleter); + tensor_next_layer_ = std::shared_ptr( + new Qnn_Tensor_t QNN_TENSOR_INIT, deleter); + deepCopyQnnTensorInfo(tensor_.get(), src); + deepCopyQnnTensorInfo(tensor_next_layer_.get(), next_layer_src); + owned_data_.resize(tensor_->v1.clientBuf.dataSize, 0); + tensor_->v1.clientBuf.data = owned_data_.data(); + return; +} + +bool QnnTensorData::from_float(float *src) { + switch (tensor_->v1.dataType) { + case QNN_DATATYPE_UFIXED_POINT_16: + quant( + (uint16_t *)owned_data_.data(), src, + (double)tensor_->v1.quantizeParams.scaleOffsetEncoding.scale, + (double)tensor_->v1.quantizeParams.scaleOffsetEncoding.offset, + owned_data_.size() / 2); + break; + default: + BMFLITE_LOGE("controlnet", "data type error"); + break; + } + return true; +} + +bool QnnTensorData::to_float(float *dst) { + switch (tensor_->v1.dataType) { + case QNN_DATATYPE_UFIXED_POINT_16: + dequant( + dst, (uint16_t *)owned_data_.data(), + (double)tensor_->v1.quantizeParams.scaleOffsetEncoding.scale, + (double)tensor_->v1.quantizeParams.scaleOffsetEncoding.offset, + owned_data_.size() / 2); + break; + default: + BMFLITE_LOGE("controlnet", "data type error"); + break; + } + return true; +} + +bool QnnTensorData::from_int(int *src) { + switch (tensor_->v1.dataType) { + case QNN_DATATYPE_INT_32: + memcpy(owned_data_.data(), src, owned_data_.size() / 4); + break; + default: + BMFLITE_LOGE("controlnet", "data type error"); + break; + } + return true; +} + +bool QnnTensorData::to_int(int *dst) { + switch (tensor_->v1.dataType) { + case QNN_DATATYPE_INT_32: + memcpy(dst, owned_data_.data(), owned_data_.size() / 4); + break; + default: + BMFLITE_LOGE("controlnet", "data type error"); + break; + } + return true; +} + +bool QnnTensorData::in_place_adjust_quantization() { + uint16_t *ptr = (uint16_t *)owned_data_.data(); + auto scale = (double)tensor_->v1.quantizeParams.scaleOffsetEncoding.scale; + auto offset = (double)tensor_->v1.quantizeParams.scaleOffsetEncoding.offset; + auto next_layer_scale = + (double)tensor_next_layer_->v1.quantizeParams.scaleOffsetEncoding.scale; + auto next_layer_offset = + (double) + tensor_next_layer_->v1.quantizeParams.scaleOffsetEncoding.offset; + double value; + switch (tensor_->v1.dataType) { + case QNN_DATATYPE_UFIXED_POINT_16: + for (int i = 0; i < owned_data_.size() / 2; i++) { + value = (ptr[i] + offset) * scale; + value = value / next_layer_scale - next_layer_offset; + value = value < 0.0 ? 0.0 : value > 65535.0 ? 65535.0 : value; + ptr[i] = (uint16_t)value; + } + break; + case QNN_DATATYPE_INT_32: + BMFLITE_LOGE("controlnet", "data type error"); + break; + } + return true; +} diff --git a/bmf_lite/src/algorithm/contrib_modules/QnnControlNet/inference/QnnTensorData.h b/bmf_lite/src/algorithm/contrib_modules/QnnControlNet/inference/QnnTensorData.h new file mode 100644 index 00000000..12436595 --- /dev/null +++ b/bmf_lite/src/algorithm/contrib_modules/QnnControlNet/inference/QnnTensorData.h @@ -0,0 +1,32 @@ +#pragma once + +#include "QnnRuntime.h" +#include + +bool deepCopyQnnTensorInfo(Qnn_Tensor_t *dst, const Qnn_Tensor_t *src); + +class QnnTensorData { + public: + QnnTensorData() = default; + ~QnnTensorData() = default; + QnnTensorData(const Qnn_Tensor_t *src); + QnnTensorData(const Qnn_Tensor_t *src, const Qnn_Tensor_t *next_layer_src); + QnnTensorData(const QnnTensorData &) = delete; + QnnTensorData &operator=(const QnnTensorData &) = delete; + QnnTensorData(QnnTensorData &&) = delete; + QnnTensorData &operator=(QnnTensorData &&) = delete; + Qnn_Tensor_t get_tensor() { return *tensor_; }; + + bool from_float(float *src); + bool to_float(float *dst); + + bool from_int(int *src); + bool to_int(int *dst); + + bool in_place_adjust_quantization(); + + private: + std::vector owned_data_; + std::shared_ptr tensor_ = nullptr; + std::shared_ptr tensor_next_layer_ = nullptr; +}; diff --git a/bmf_lite/src/algorithm/contrib_modules/QnnControlNet/scheduler/scheduler_base.h b/bmf_lite/src/algorithm/contrib_modules/QnnControlNet/scheduler/scheduler_base.h new file mode 100644 index 00000000..1e283308 --- /dev/null +++ b/bmf_lite/src/algorithm/contrib_modules/QnnControlNet/scheduler/scheduler_base.h @@ -0,0 +1,30 @@ +#ifndef STABLEDIFFUSION_SCHEDULER_BASE_H +#define STABLEDIFFUSION_SCHEDULER_BASE_H + +#include +#include + +class scheduler_base { + public: + virtual std::vector set_timesteps(int num_inference_steps) = 0; + + virtual std::vector scale_model_input(std::vector &sample, + int step_index) = 0; + + virtual std::vector step(int step_index, + std::vector &sample_mat, + std::vector &denoised) = 0; + + virtual float getInitNoiseSigma() = 0; + + virtual std::vector randn_mat(int seed, int size, + int is_latent_sample) = 0; + + virtual std::vector get_timesteps() = 0; + + virtual std::vector get_sigmas() = 0; + + virtual void set_init_sigma(float sigma) = 0; +}; + +#endif // STABLEDIFFUSION_SCHEDULER_BASE_H diff --git a/bmf_lite/src/algorithm/contrib_modules/QnnControlNet/scheduler/scheduler_dpmpp_2m.cpp b/bmf_lite/src/algorithm/contrib_modules/QnnControlNet/scheduler/scheduler_dpmpp_2m.cpp new file mode 100644 index 00000000..e379e34d --- /dev/null +++ b/bmf_lite/src/algorithm/contrib_modules/QnnControlNet/scheduler/scheduler_dpmpp_2m.cpp @@ -0,0 +1,202 @@ +#include "scheduler/scheduler_dpmpp_2m.h" +#include + +std::vector linspace_pp(float start, float end, int num_points) { + std::vector result(num_points); + + for (int i = 0; i < num_points; i++) { + result[i] = start + (end - start) * i / (num_points - 1); + } + + return result; +} + +scheduler_dpmpp_2m::scheduler_dpmpp_2m() { + if (beta_schedule == "linear") { + auto array = linspace_pp(beta_start, beta_end, num_train_timesteps); + betas.swap(array); + } else if (beta_schedule == "scaled_linear") { + auto array = linspace_pp(pow(beta_start, 0.5), pow(beta_end, 0.5), + num_train_timesteps); + for (float i : array) { + betas.push_back(pow(i, 2)); + } + } + for (float beta : betas) { + float alpha = 1.0f - beta; + alphas.push_back(alpha); + alphas_cumprod.push_back( + alpha * (alphas_cumprod.empty() ? 1.0f : alphas_cumprod.back())); + } + for (float value : alphas_cumprod) { + alpha_ts.push_back(sqrt(value)); + sigma_ts.push_back(sqrt(1. - value)); + } + for (int i = 0; i < alphas_cumprod.size(); i++) { + lambda_ts.push_back(log(alpha_ts[i]) - log(sigma_ts[i])); + } + for (float alpha : alphas_cumprod) { + sigmas_total.push_back(sqrt((1 - alpha) / alpha)); + } + timesteps = linspace_pp(0, num_train_timesteps - 1, num_train_timesteps); +} + +std::vector scheduler_dpmpp_2m::set_timesteps(int steps) { + sigmas.clear(); + timesteps.clear(); + + num_inference_steps = steps; + timesteps = + linspace_pp(0, num_train_timesteps - 1, num_inference_steps + 1); + std::reverse(timesteps.begin(), timesteps.end()); + timesteps.pop_back(); + for (float ×tep : timesteps) { + timestep = round(timestep); + } + return timesteps; +} + +std::vector +scheduler_dpmpp_2m::scale_model_input(std::vector &sample, + int step_index) { + return sample; +} + +std::vector scheduler_dpmpp_2m::dpm_solver_first_order_update( + std::vector model_output, int timestep, int prev_timestep, + std::vector sample, std::vector noise) { + float sigma_t = sigma_ts[prev_timestep]; + float alpha_t = alpha_ts[prev_timestep]; + float lambda_t = lambda_ts[prev_timestep]; + float sigma_s = sigma_ts[timestep]; + float alpha_s = alpha_ts[timestep]; + float lambda_s = lambda_ts[timestep]; + float h = lambda_t - lambda_s; + std::vector x_t(model_output.size()); + if (algorithm_type == "dpmsolver++") { + for (int i = 0; i < model_output.size(); i++) { + *((float *)x_t.data() + i) = + *((float *)sample.data() + i) * (sigma_t / sigma_s) - + *((float *)model_output.data() + i) * alpha_t * (exp(-h) - 1.0); + } + } else if (algorithm_type == "sde-dpmsolver++") { + for (int i = 0; i < model_output.size(); i++) { + *((float *)x_t.data() + i) = + *((float *)sample.data() + i) * (sigma_t / sigma_s * exp(-h)) + + *((float *)model_output.data() + i) * alpha_t * + (1 - exp(-2 * h)) + + *((float *)noise.data() + i) * sigma_t * sqrt(1 - exp(-2 * h)); + } + } + return x_t; +} + +std::vector scheduler_dpmpp_2m::multistep_dpm_solver_second_order_update( + std::array, 2> model_output_list, + std::array timestep_list, int prev_timestep, + std::vector sample, std::vector noise) { + int t = prev_timestep; + int s0 = timestep_list[1]; + int s1 = timestep_list[0]; + std::vector m0 = model_output_list[1]; + std::vector m1 = model_output_list[0]; + float lambda_t = lambda_ts[t]; + float lambda_s0 = lambda_ts[s0]; + float lambda_s1 = lambda_ts[s1]; + float alpha_t = alpha_ts[t]; + float alpha_s0 = alpha_ts[s0]; + float sigma_t = sigma_ts[t]; + float sigma_s0 = sigma_ts[s0]; + float h = lambda_t - lambda_s0; + float h_0 = lambda_s0 - lambda_s1; + float r0 = r0 = h_0 / h; + std::vector D0 = m0; + std::vector D1(m1.size()); + for (int i = 0; i < m0.size(); i++) { + *((float *)D1.data() + i) = + 1 / r0 * (*((float *)m0.data() + i) - *((float *)m1.data() + i)); + } + std::vector x_t(m0.size()); + if (algorithm_type == "dpmsolver++" && solver_type == "midpoint") { + for (int i = 0; i < m0.size(); i++) { + *((float *)x_t.data() + i) = + *((float *)sample.data() + i) * (sigma_t / sigma_s0) - + *((float *)D0.data() + i) * alpha_t * (exp(-h) - 1.0) - + *((float *)D1.data() + i) * 0.5 * alpha_t * (exp(-h) - 1.0); + } + } else if (algorithm_type == "sde-dpmsolver++" && + solver_type == "midpoint") { + for (int i = 0; i < m0.size(); i++) { + *((float *)x_t.data() + i) = + *((float *)sample.data() + i) * (sigma_t / sigma_s0 * exp(-h)) + + *((float *)D0.data() + i) * alpha_t * (1 - exp(-2 * h)) + + *((float *)D1.data() + i) * alpha_t * (1 - exp(-2 * h)) / + (1 - 2 * h) + + *((float *)noise.data() + i) * sigma_t * sqrt(1 - exp(-2 * h)); + } + } + return x_t; +} + +std::vector scheduler_dpmpp_2m::step(int step_index, + std::vector &sample_mat, + std::vector &denoised) { + int timestep = timesteps[step_index]; + int prev_timestep = + step_index == timesteps.size() - 1 ? 0 : timesteps[step_index + 1]; + + auto *x_ptr = reinterpret_cast(sample_mat.data()); + auto *d_ptr = reinterpret_cast(denoised.data()); + + int sample_length = sample_mat.size(); + + float sigma_t = sigma_ts[timestep]; + float alpha_t = alpha_ts[timestep]; + std::vector output(sample_mat.size()); + for (int hwc = 0; hwc < sample_length; hwc++) { + float sample = *(x_ptr + hwc); + float model_output = *(d_ptr + hwc); + *((float *)output.data() + hwc) = + (sample - sigma_t * model_output) / alpha_t; + } + if (solver_order > 1) { + model_outputs[1] = model_outputs[0]; + } + model_outputs[0] = output; + std::vector noise = + randn_mat(rand_seed - step_index - 1, sample_mat.size(), 0); + if (solver_order == 1 || step_index == 0) { + output = dpm_solver_first_order_update(output, timestep, prev_timestep, + sample_mat, noise); + } + if (solver_order == 2 && step_index > 0) { + std::array timestep_list{(int)timesteps[step_index - 1], + timestep}; + output = multistep_dpm_solver_second_order_update( + model_outputs, timestep_list, prev_timestep, sample_mat, noise); + } + return output; +} + +float scheduler_dpmpp_2m::getInitNoiseSigma() { return init_noise_sigma; } + +std::vector scheduler_dpmpp_2m::randn_mat(int seed, int size, + int is_latent_sample) { + std::vector cv_x(size); + rand_seed = seed; + std::mt19937 gen(rand_seed); + std::normal_distribution d(0.0, 1.0); + for (int i = 0; i < size; i++) { + *((float *)cv_x.data() + i) = d(gen); + } + + return cv_x; +} + +void scheduler_dpmpp_2m::set_init_sigma(float sigma) { + init_noise_sigma = sigma; +} + +std::vector scheduler_dpmpp_2m::get_timesteps() { return timesteps; } + +std::vector scheduler_dpmpp_2m::get_sigmas() { return sigmas; } diff --git a/bmf_lite/src/algorithm/contrib_modules/QnnControlNet/scheduler/scheduler_dpmpp_2m.h b/bmf_lite/src/algorithm/contrib_modules/QnnControlNet/scheduler/scheduler_dpmpp_2m.h new file mode 100644 index 00000000..9002269e --- /dev/null +++ b/bmf_lite/src/algorithm/contrib_modules/QnnControlNet/scheduler/scheduler_dpmpp_2m.h @@ -0,0 +1,63 @@ +#ifndef STABLEDIFFUSION_SCHEDULER_DPMPP_2M_H +#define STABLEDIFFUSION_SCHEDULER_DPMPP_2M_H + +#include "scheduler_base.h" +#include +#include + +class scheduler_dpmpp_2m : public scheduler_base { + public: + scheduler_dpmpp_2m(); + + std::vector + dpm_solver_first_order_update(std::vector model_output, int timestep, + int prev_timestep, std::vector sample, + std::vector noise); + std::vector multistep_dpm_solver_second_order_update( + std::array, 2> model_output_list, + std::array timestep_list, int prev_timestep, + std::vector sample, std::vector noise); + virtual std::vector set_timesteps(int steps) override; + + virtual std::vector scale_model_input(std::vector &sample, + int step_index) override; + + virtual std::vector step(int step_index, + std::vector &sample_mat, + std::vector &denoised) override; + + virtual std::vector randn_mat(int seed, int size, + int is_latent_sample) override; + + virtual float getInitNoiseSigma() override; + + virtual std::vector get_timesteps() override; + + virtual std::vector get_sigmas() override; + + void set_init_sigma(float sigma) override; + + private: + float beta_start = 0.00085f; + float beta_end = 0.012f; + std::string beta_schedule = "scaled_linear"; + std::vector trained_betas; + const int solver_order = 2; + bool thresholding = false; + float dynamic_thresholding_ratio = 0.995f; + float sample_max_value = 1.0f; + std::string algorithm_type = "dpmsolver++"; + std::string solver_type = "midpoint"; + bool lower_order_final = true; + bool clip_sample = false; + float clip_sample_range = 1.0f; + std::array, 2> model_outputs = {}; + int num_train_timesteps = 1000; + std::vector alphas, betas, alphas_cumprod, timesteps, sigmas, + sigmas_total, alpha_ts, sigma_ts, lambda_ts; + int rand_seed; + int num_inference_steps = 8; + float init_noise_sigma = 1.0f; +}; + +#endif // STABLEDIFFUSION_SCHEDULER_DPMPP_2M_H diff --git a/bmf_lite/src/algorithm/contrib_modules/QnnControlNet/utils/time_all.cpp b/bmf_lite/src/algorithm/contrib_modules/QnnControlNet/utils/time_all.cpp new file mode 100644 index 00000000..eeaca9c8 --- /dev/null +++ b/bmf_lite/src/algorithm/contrib_modules/QnnControlNet/utils/time_all.cpp @@ -0,0 +1,18138 @@ +#include "utils/time_all.h" + +float unet_input_time_embedding_50_0[] = { + 0.0031389827, 0.0028318902, -0.0026160441, 0.0003639215, -0.0023666392, + -0.0065185567, -0.0052222596, -0.0055722040, 0.0038499271, -0.0026677514, + -0.0010000004, 0.0019017304, -0.0011337437, -0.0010233312, -0.0025438676, + -0.0043442203, 0.0022057761, -0.0002826063, -0.0019440154, 0.0058698826, + -0.0001755250, -0.0014430201, -0.0009705088, 0.0152177811, -0.0027564459, + -0.0006176641, -0.0059804674, -0.0040559918, -0.0043772212, 0.0063952543, + 0.0015486707, 0.0026518945, -0.0051965574, 0.0030936920, 0.0018851347, + 0.0026122532, -0.0003578095, 0.0025255366, 0.0074046068, -0.0108125210, + -0.0044777999, -0.0044388440, 0.0018999572, 0.0044029858, 0.0024718596, + 0.0014398971, 0.0000693481, -0.0033945851, 0.0034155305, -0.0086679040, + 0.0004270570, -0.0010602453, -1.4190551043, -0.0013254881, 0.0062917508, + -0.0053772368, 0.0012777065, -0.0069149653, -0.0029297839, 0.0022376899, + -0.0015533406, 0.0012755018, 0.0014666221, -0.0017060596, 0.0021071304, + 0.0005740328, -0.0038468922, 0.0001051993, -0.0031978972, -0.0059491917, + -0.0023682495, 0.0028374060, 0.0011896489, 0.0026611378, -0.0047702240, + 0.0011119666, 0.0063801007, -0.0023740167, -0.0043287245, -0.0054467162, + 0.0014559296, 0.0018031687, 0.0028713988, -0.0009970339, 0.0052240212, + -0.0029397046, -0.0044748522, -0.0083951578, -0.0034527904, 0.0061513190, + 0.0024027408, -0.0043455306, 0.0062490692, -0.0001523421, -0.0299238823, + -0.0021221698, 0.0054948451, -0.0034997296, -0.0032006467, 0.0010955157, + -0.0092151295, 0.0043452769, 0.0027880729, 2.8596169949, -0.0015430884, + -0.0055345623, -0.0010936488, 0.0004577683, 0.0039371955, -0.0035845521, + -0.0043356600, -0.0042905407, -0.4581497014, 0.0014819121, 0.0028387420, + -0.0030011158, 0.0012112674, -0.0003693991, 0.0019303812, -0.0047311550, + -0.0011096043, -0.0055168401, -1.3457406759, 0.0059645842, -0.0055362023, + -0.0027625053, 0.0036871317, -0.0070306542, 0.0067453003, 0.0012832428, + -0.0039123506, -0.0013723634, -0.0012942979, 0.0040173763, -0.0005710893, + 0.0016346856, 0.0015550631, 0.0032399604, -0.0097893570, -0.0028921929, + -0.0024359960, -0.0081672296, 0.0016177339, -0.0069225943, -0.0052704262, + -0.0021138070, 0.0035412624, 0.0028908616, 0.0028109136, 0.0041578664, + -0.0000301669, -0.0025936640, 0.0009803060, 0.0058790687, -0.0032800701, + -0.0088406596, 0.0067599872, -0.0012357077, 0.0034346944, -0.0056268615, + -0.0002451618, -0.0016554344, -0.0021763956, -0.0084726540, 0.0048297248, + 0.0062634703, -0.0031029626, 0.0128282299, -4.2949647903, -0.0091658002, + -0.0028876746, 0.0019843131, 0.0050915610, 0.0012393808, -0.0005609710, + 0.0030434299, -0.0075294534, 0.0006449902, -0.0020670430, -0.0047397013, + 0.0011037900, -0.0042739967, -0.0123892613, 0.0038589826, -0.0041561695, + 0.0066509121, -0.0071139247, -0.0019652047, 0.0026698238, -0.0007413677, + 0.0086181872, -0.0073718638, 0.0010528479, -0.0041754581, 0.0005574371, + -0.0034848633, -0.0006766905, -0.0024586599, -0.0019340116, -0.0003461805, + 0.0023618322, -0.0069397180, -0.0023861490, -0.0075658723, 0.0044309711, + 0.0029912498, -0.0104727224, 0.0013704496, -0.0054989960, -0.0081043541, + -0.0043768180, -0.0045473971, 0.0016784654, 0.0051578367, -0.0034240666, + 0.0078319954, -0.0033816975, -0.0049254089, -0.0083417669, 0.0018515576, + -0.0034916736, -0.0009011765, 0.0057979068, 0.1504157633, -0.0004347779, + -0.0046485323, -0.0033707591, 0.0026833331, -0.0008882352, 0.0061366362, + 0.0062096920, 0.0052905548, 0.0017831605, 0.0044122725, -0.0005300157, + 0.0006497619, 0.0060130623, -0.0036618197, -0.0025440976, 0.0024379138, + -0.0053841490, -0.0012213220, 0.0001486831, -0.0030977800, -1.1859022379, + 0.0004116807, 0.0016936650, 0.0029903546, 0.0047311299, -0.0002418761, + -0.0042243320, 0.0017431467, -0.0025947397, -0.0065094242, -0.0030066986, + 0.0035002085, -0.0011550509, -0.0013171429, -0.0008693284, 0.0010743967, + -0.0040541030, 0.0004706208, -0.0003573387, 0.0205820315, -0.0066352612, + 0.0032071383, -0.0042786491, 0.0033403886, -0.0032182261, 0.0010376503, + 0.0001583612, -0.0096831601, -0.0015298980, 0.0011301981, 0.0014400680, + -0.0031683391, 0.0014457828, 0.0078837508, -0.0005075606, 0.0006411015, + -0.0825618953, -0.0044348706, -0.0009157694, -0.0053182291, 0.0056007267, + 0.0007631434, -0.0009212736, 0.0019693810, 0.0047805579, -0.0028229710, + 0.0089195166, 0.0001103098, -0.0037526076, -0.0009336609, 0.0040060095, + -0.0017026914, 0.0078700818, -0.0022923802, -0.0052773510, 0.0036212653, + -0.0149233090, -0.0045698341, 0.0004155970, -0.0010689865, 0.0009842471, + -0.0036685891, -0.0017687068, -0.0024678935, 0.0007995181, 0.0076114903, + 0.0040746145, -0.0007472173, -0.0031527102, -0.0042441357, 0.0000460767, + 0.0086554773, -0.0026512467, -0.0056228773, 0.0007110164, 0.0022291732, + -0.0039168429, 0.0024964516, 0.0027834824, 0.0032327902, 0.0022498816, + -0.0022999509, -0.0122829787, -0.0015001409, 2.8771052361, -0.0111692622, + 0.0041368762, -0.0024305135, -0.0078735277, 0.0052391859, -0.0047128354, + 0.0002088165, 0.0047104890, -0.0014494240, -0.0040121633, 0.0069867759, + -0.0005559428, 0.0018196751, -0.0060679885, 3.2305996418, -0.0012937242, + 0.0009871656, -0.0003620418, -0.0016501098, -0.0026964732, -0.0014649982, + 0.0031069517, -0.0034839958, 0.0026635733, -0.0021371078, 0.0037883446, + 0.0003107977, -0.0020761041, 0.0060323160, -0.0016432409, 0.0021607350, + 0.0072166752, 0.0031376001, 0.0046572471, -0.0044698673, -0.0040289373, + 0.0009785721, 0.0056534694, -0.0000428921, -0.0030183438, -1.4823269844, + -0.0019069239, -0.0038429513, -0.0037366152, 0.0039283652, -0.0047170678, + 0.0006774068, 0.0045568864, -0.0048058368, -0.0009428600, -0.0022451412, + 0.0010083715, -1.7635017633, 0.0028172308, -0.0071824794, -0.0073636342, + 0.0032595447, -0.0030750907, -0.0007662410, -0.0048151123, 0.0031741057, + -0.0024539488, 0.0040691444, -0.0003017127, -0.0010564907, 0.0031645875, + 0.0023084194, 0.0031404616, -0.0033584519, -0.0030625355, -0.0032336302, + -0.0019930748, 0.0126666548, -0.0000079412, -0.0079887901, 0.0048356866, + 0.0004764884, -0.0025730580, -0.0077443635, -0.0001814007, -0.0000844253, + -0.0005670562, -0.0006158180, -0.0057329233, -0.0040366035, -0.0046953699, + -0.0087805483, -0.0001350986, -0.0026315637, -0.0000556875, 0.0010727420, + 0.0014062778, 0.0019008752, -0.0014390871, 0.0003774764, 0.0003199251, + -0.0052746986, -0.0038565798, 0.0010632479, -0.0016815744, 0.0051284232, + 0.0010417686, -0.0083950385, 0.0021259582, 0.0077012619, 0.0048545757, + -0.0022233257, -0.0024037445, -0.0080676964, -0.0072904378, -0.0014915846, + 0.0038483096, 0.0093793608, 0.0045193597, 0.0016246720, -0.0036984656, + 0.0001576794, -0.0049193893, 0.0008291616, -0.0003299778, -0.0282273404, + 0.0037804903, 0.0016733333, 0.0009979581, -0.0044282665, -0.0048760423, + 0.0078753773, 0.0008590166, 0.0025009913, -0.0019682711, 0.0002134671, + -0.0046374802, -0.0146625619, -0.0060308431, -0.0086533194, -0.0006944900, + -0.0059920950, -0.0000322233, 0.0018176232, -0.0040755635, 0.0059980829, + -0.0036042496, 0.0005633237, -0.0000877017, 0.0027125857, 0.0042180354, + -0.0115570035, -0.0029920824, 0.0040275888, -0.0019745473, -1.4433383942, + -0.0023216517, -0.0019994671, -0.0001174565, 0.0017363864, 0.0040457430, + -0.0012843496, -0.0038782062, 0.0051208371, 0.0027182880, -0.0038064115, + -0.0000941814, 2.7720131874, -0.0062640016, 0.0008422597, -0.0040293750, + -2.8359911442, 0.0033494579, 0.0035268050, 0.0016217334, -0.0016602455, + -0.0041575511, -0.0027599763, 0.0012434190, -0.0063081463, 0.0022496730, + -0.0075879758, 0.0050675473, -0.0018255069, 0.0005486370, -0.0018065176, + -0.0073380638, 0.0000289772, -1.2660400867, 0.0047524991, -0.0016613641, + -0.0010103183, -0.0040539382, -0.0003460301, 0.0005432032, 0.0007841680, + -0.0006598136, 0.0015776590, 0.0070827715, 0.0036782757, -0.0045242077, + -0.0010661394, -0.0000229391, 0.0016944627, -0.0008278717, 0.0033441307, + -0.0015268300, 0.0034918985, -0.0039121979, -0.0104840081, 0.0026851601, + -0.0029347704, 0.0023550780, -0.0016822659, -0.0009988900, -0.0032704379, + 0.0033033295, -0.0055805268, 0.0013202662, -0.0008772877, -0.0003294949, + 0.0013863249, -0.0016282601, 0.0030466681, 0.0049760821, -0.0020407559, + -1.3769617081, -0.0037837513, -0.0010104454, -0.0025854614, -0.0017697760, + 0.0023451312, 0.0043848646, 0.0016639149, 0.0012227674, -0.0001333170, + 0.0017233444, 0.0039821016, -0.0019892766, -0.0028271480, 0.0030353386, + 0.0094237616, -0.0064743329, 0.0024057776, -0.0006974041, 0.0037683407, + -0.0011056387, 0.0038340809, -0.0033279588, 0.0013348332, 0.0010463954, + -0.0063126655, -0.0050148172, -0.0041523403, -0.0031843870, 0.0021742068, + 0.0051730368, 0.0012627128, -0.0049615824, -0.0007058465, -0.0069581987, + -0.0064912383, 0.0007192488, -0.0025759232, -0.0009162836, 0.0030203792, + 0.0010413275, 0.0193117708, -0.0039228471, 0.0019240063, -0.0060629402, + 0.0028617866, -0.0063158455, -0.0026695235, 0.0032078656, -0.0010746731, + -0.0095418449, 0.0021448052, -0.0076479400, 0.0009600583, 0.0031126069, + -0.0010460808, -0.0030217166, 0.0047872821, 0.0004188147, 0.0022911744, + -0.0000472632, -0.0012574969, -0.0010441109, 0.0029678983, -0.0053298874, + 0.0021033688, -0.0057375585, -0.0018538702, 0.0008759093, 0.0003880316, + 0.0063947127, -0.0063002314, -0.0009232559, 0.0000027940, -0.0011853478, + -0.0000689309, 0.0029414112, -0.0014356242, 0.0029292400, -0.0044174134, + -0.0047671823, -0.0009138708, 0.0009789440, -0.0042334432, -0.0017189817, + -0.0014116792, 0.0010515165, -0.0028467360, -0.0023301076, 0.0001292066, + 0.0032693846, -0.0037195112, -0.0014635588, 0.0022223385, -0.0052307374, + -0.0013672226, -0.0008185022, 0.0068178242, -0.0107622091, -0.0023130598, + -0.0066594486, -0.0082887867, -0.0035856918, 0.0046399185, -0.0079745781, + 0.0002479234, 0.0030049700, -0.0020692023, -0.0079075601, -0.0076324106, + -0.0058353832, 0.0028439672, -0.0010452267, 0.0010464900, -0.0042140954, + -0.0026017353, -0.0011452409, -0.0068252105, 0.0000209783, 0.0032465574, + 0.0019885788, 0.0035328127, -0.0030621702, -0.0025549389, 0.0074084774, + -0.0020431457, 0.0008771677, 0.0019442774, -0.0026369584, -0.0022744816, + -0.0008203501, 0.0029853336, 0.0069628330, -0.0002078340, 0.0013582073, + 0.0007886547, -0.0060685901, 0.0019086029, 0.0038252301, 0.0002669906, + 0.0005394313, 0.0037360713, 0.0013746868, -0.0042199912, -0.0042871214, + -0.0024766433, -0.0008235988, -0.0011855001, -0.0014580695, 0.0089996159, + 0.0010954952, 0.0031660483, 0.0043395171, -0.0005029889, 0.0014470774, + 0.0034517399, 0.0049285730, 0.0030006492, -0.0011763035, -0.0070145596, + 0.0024451092, 0.0135611864, -0.0055409726, -0.0066321902, 0.0061169951, + 0.0014799135, -0.0015732911, -0.0054672016, -0.0017142093, -0.0047204765, + -0.0042061266, -0.0014668810, -0.0026349956, -0.0030354783, 0.0058653755, + 0.0001577982, -0.0093165105, 0.0056700488, 0.0019306126, 0.0016297605, + -0.0002100067, 0.0060496870, 0.0054015853, -0.0029677586, 0.0085606594, + 4.5957579613, -0.0015811273, -0.0037537860, 0.0053704227, -0.0033514937, + 0.0016925284, 0.0002283650, 0.0014844083, 0.0010607853, -0.0021986160, + -0.0002805199, -0.0063781315, -0.0042883987, -0.0044490574, -0.0030295942, + 0.0025394808, 0.0032730054, 0.0064586028, 0.0025237803, -0.0020363594, + 0.0070980820, 0.0029044691, 0.0003757583, -0.0058246478, -1.3307288885, + 0.0022586682, 0.0034138781, 0.0002020737, -0.0025016260, 0.0117159877, + -0.0039231358, -0.0026472970, 0.0003825994, -0.0028890828, -0.0007576183, + 0.0020525409, 0.0051732035, -0.0033951374, 0.0035766892, 0.0002916795, + 0.0009909477, 0.0028733183, -0.0000663791, 0.0064300774, -0.0029441668, + -0.0029866435, -0.0023910850, -0.0058320146, -0.0016877442, 0.0029406534, + -0.0062627383, -3.3587765694, -0.0037656566, -0.0057782056, 0.0008546314, + -0.0016612344, 0.0017259263, 0.0068472745, -0.0004143668, -0.0073297247, + -0.0053645181, 0.0001590336, 0.0031949750, -3.8619198799, -0.0030639502, + -0.0054160687, 0.0011497370, -0.0018611649, -0.0022107596, 0.0009390395, + 0.0001649754, -0.0035873742, -0.0068583805, -0.0016356425, 0.0030734907, + 0.0038791080, 0.0081730317, 0.0041555376, -0.0013846736, -0.0034949775, + -0.0002225740, 0.0032978458, -0.0095095867, 0.0050513609, 0.0025943026, + -0.0069577666, 0.0004127239, -0.0022491240, 0.0006623354, -0.3136328459, + 0.0049947361, -0.0000450395, 0.0046683475, -0.0025107048, -0.0011555105, + -0.0090140579, 0.0047272909, -0.0002709371, -0.0043963334, -0.0044097574, + -0.0015786074, -0.0047050379, 0.0050931261, -0.0005454086, 0.0018533416, + -0.0089506879, 0.0004578969, 0.5261310339, 0.0022642217, 0.0042250985, + 0.0001198472, -0.0036213021, -0.0051281122, -0.0047473758, 0.0034144481, + 0.0119400453, 0.0031347896, -0.0039819363, -0.0031290031, 0.0005049286, + 0.0134425685, -0.0045751780, -0.0022032512, 0.0011291583, -0.0001369705, + 0.0042361668, -0.0051436261, 0.0006383592, 0.0032806508, -0.0051358948, + -0.0034868596, 0.0063429805, -0.0032902909, 0.0009132007, 0.0078731691, + 0.0004491704, 0.0076494250, -0.0091268979, 0.0025527424, -0.0028448752, + -0.0016678057, -0.0026489263, -0.0017689755, 0.0011264143, -0.0000339914, + 0.4559807181, 0.0041345949, -0.0024626320, -0.0070224162, 0.0017302472, + 0.0023515944, 0.0012371368, 0.0010695020, -0.0001805534, 0.0023617609, + 0.0013860546, 0.0006105131, -0.0033591674, -0.0067778793, -0.0001656548, + 0.0007921981, -0.0028237330, -0.0043313392, -0.0011096150, 0.0034409147, + -0.0039138943, 0.0005762642, 0.0047445539, 0.0032755462, -0.0014761686, + -0.0054653976, 0.0006874492, 0.0000371727, -0.0066158907, -0.0029305140, + 0.0043725148, -0.0064485222, 0.0013260785, 0.0020193791, -0.0010248749, + 0.0015878926, 0.0003939106, -0.0050840760, 0.0043258159, 0.0053502908, + -0.0065174466, -0.0021970812, -0.0021368479, -0.0018367614, 0.0025210571, + -0.0007421076, -0.0007827641, -0.0027806438, 0.0037709996, -0.0035261312, + 0.0004580151, 0.0053369859, 0.0029929779, 0.0015348177, 2.0297446251, + 0.0011059747, 0.0028483085, 0.0030822642, -0.0053425254, -0.0130210705, + 0.0025776159, -0.0121396082, -0.0004658811, 0.0017690589, -0.0023113010, + 0.0015752245, 0.0035610055, -0.0094305221, 0.0018359085, -0.0056338212, + 0.0023814724, -0.0053279786, 0.0071469191, 0.0001091445, -0.0002946092, + -0.0009284923, -0.0069157085, -0.0066158753, 0.0091199353, 0.0002152771, + -0.0019959677, -0.0004387468, 0.0042601298, 0.0008525127, -0.0048955362, + 0.0005205416, -0.0035576830, 0.0026631663, 0.0026195799, 0.0023067859, + -0.0016040953, -0.0022237399, 0.0011661294, 0.0013438347, -0.0041894289, + -0.0011978126, -0.0015148125, -0.0051693874, -0.0035197954, 0.0024902625, + -0.0010950237, 0.0007048752, -0.0036308337, 0.0021958412, 0.0067796027, + 0.0040570935, 0.0047965599, -0.0067321449, -0.0022737137, 0.0005747611, + 4.3047022820, -0.0069440771, 0.0038979091, -0.0074721640, -0.0002164398, + -0.0004397735, -0.0093827313, -0.0012927763, -0.0066168960, -0.0063148295, + -0.0014001329, 0.0006438447, -0.0035452270, 0.0017052284, -0.0026437351, + 0.0038942965, 0.0052475566, -0.0024020541, 0.0100786109, -0.0032110098, + 0.0041471925, -0.0025075516, 0.0086547006, 0.0008358322, -0.0037965956, + -0.0001395452, -0.0012614750, -0.0030896848, 0.0053948965, 0.0042722113, + -0.0047947601, -0.0076579200, -0.0002507692, -0.0018415407, 0.0058499128, + 0.0039856546, -0.0012304663, -0.0020598765, 0.0029982280, -0.0088460036, + -0.0009638143, 0.0030570477, -0.0016914941, -0.0042306227, 0.0024733709, + 0.0030520814, 0.0033325688, -0.0042132121, 0.0003172582, 0.0041719358, + -0.0015520779, 0.0036547855, -0.0051946319, -1.3847745657, -0.0019684972, + 1.1586902142, 0.0035582909, 0.0019483459, -0.0021473609, -1.8107284307, + 0.0045028054, 0.0003089430, -0.0055143861, -0.0014928919, 0.0005851490, + 0.0043589962, 0.0034668362, 0.0043878676, -1.4822064638, -0.0026256531, + -0.0024463164, 0.0066013001, -0.0053929086, 0.3231140375, -0.0012236945, + 0.0039850194, 0.0088660065, 0.0030791275, 0.0031526999, -0.0001949444, + 0.0045609018, 0.0064830817, 0.0032049851, 0.0107766427, -0.0034897742, + -0.0029938056, 0.0032469288, 0.0012535476, -0.0017848075, 0.0049393252, + -0.0004543480, -0.0020667284, 0.0052022459, -0.0053768712, -0.0035991233, + -0.0034852203, 0.0064593256, 0.0032005468, -0.0042188340, -0.0043373685, + -0.0021744242, -0.0022829371, -0.0027802903, -0.0071920501, 0.0010339422, + 0.0042704931, 0.0032290784, 0.0058801910, 0.0030467038, -0.0031120353, + 0.0051496848, 0.0004677884, 0.0011896391, 0.0036435984, -0.0045474600, + 0.0011751705, 0.0022100159, 0.0039475616, -0.0026344568, 0.0011169045, + 0.0067789066, -0.0065231700, -0.0056531806, 0.0079415720, -0.0070086624, + 0.0026937192, -0.0027818645, -0.0045553190, 0.0047845715, -0.0008246242, + -0.0017393124, 0.0031006960, 0.0018717549, -0.0003299732, 0.0025721234, + -0.0000911001, 0.0009644371, -0.0023166346, 0.0056925532, 0.0002408582, + -0.0026709652, -0.0038759634, -0.0095267631, -0.0020788582, -0.0036515952, + -0.0087849163, -0.0047821002, 0.0026893932, -0.0021055732, -0.0023036990, + 0.0050101196, -0.0032806369, -0.0039009517, -0.0108925421, 0.0010163337, + -0.0060533229, 0.0057043922, -0.0056760320, 0.0023354301, 0.0015820081, + 0.0054136533, 0.0019664122, 0.0073363706, -0.0003722447, -0.0043209195, + 0.0011035996, 0.0029550968, 0.0034733228, -0.0010286262, -0.0002917689, + 0.0046113571, 0.0031904483, -0.0051703523, -0.0050065909, 0.0003392147, + -0.0038254755, 0.0018266966, -0.0009549235, 0.0050583431, 0.0056669782, + -0.0060916999, -0.0030228493, -0.0022680161, -0.0018139496, 0.0001155310, + -1.2740451097, -0.0024544336, -0.0033908524, -0.0036117777, -0.0035137336, + -0.0010786534, -0.0039644605, 0.0030578936, 0.0042940630, 0.0015568505, + -0.0041716835, -0.0051223035, -0.0010930034, -0.0037574805, -0.0064477497, + -0.0008339659, -0.0008808402, -0.0016631661, -0.0097489357, 0.0021082559, + 0.0023211953, -0.6307316422, 0.0015947360, 0.0019814325, 0.0028628402, + -0.0081137475, -0.0064703738, 0.0039039492, -0.0024483800, 0.0024938146, + -0.0019293614, 0.0031615095, 0.0005520317, 0.0028709960, 0.0051577985, + 0.0004841541, 0.0028781598, -0.0010114224, -0.0023970669, 0.0011717100, + -0.0062468359, 0.0011360859, 0.0000801036, 0.0007898309, -0.0030346438, + 0.0032490168, 0.0079995412, 0.0022786274, 0.0038319509, 0.0066161230, + 0.0034123817, 0.0081632398, 0.0040689101, -0.0024946947, 0.0041979970, + 0.0012959192, -1.2137351036, -0.0110932346, 0.0058002216, -0.0019690425, + 0.0046315799, 0.0002579272, -0.0047026062, 0.0007592512, -0.0011148774, + -0.0026802104, 0.0093450686, -0.0071157487, -0.0017184247, -0.0040571797, + -0.0034365752, 0.0008416028, -0.0006191321, 0.0033349278, 0.0043509258, + -0.0009474773, -0.0022674613, 0.0040240223, 0.0075229532, 0.0054431139, + 0.0040885103, -0.0006689313, -0.0042044148, 0.0004620291, -0.0011977807, + -0.0032069697, -0.0002823560, -0.0004508579, 0.0023385100, 0.0024407343, + -0.0011684033, -0.0032812874, -0.0047994163, 0.0028205328, -0.0020050316, + -0.0012976639, -0.0018655956, -0.0029796059, -0.0061723143, 0.0038626315, + 0.0013124952, 0.0010321485, -0.2531158626, 0.0078814263, -0.0067015262}; +float unet_input_time_embedding_50_1[] = { + 0.0033154571, -0.0009251283, 0.0027057249, -0.0013803414, -0.0009275503, + 0.0031045815, -0.0003163442, -0.0014024978, -0.0004462248, 0.0013209421, + -0.0026935723, -0.0021200874, 0.0052228328, 0.0003642240, 0.0021979632, + -0.0003603315, 0.0008726660, 0.0017708966, 0.0002949588, 0.0023449310, + -0.0023349687, -0.0051048910, -0.0007581374, -0.0056164823, -0.0006066675, + -0.0017278211, 0.0014331173, 0.0009622630, -0.0015962779, -0.0033718348, + -0.0003431202, -0.0023461347, -0.0004721163, 0.0001810752, -0.0011800574, + -0.0007175864, 0.0024505537, -0.0031617654, -0.0010869801, 0.0006303508, + 0.0054053031, 0.0027131285, -0.0004264168, -0.0002720468, -0.0014830390, + -0.0011018349, 0.0006630495, 0.0002225591, -0.0028649643, -0.0007531595, + 0.0036375290, 0.0001384153, -1.4138257504, 0.0012600990, 0.0014415047, + -0.0009860186, 0.0004388455, -0.0014584926, 0.0026692604, 0.0022173470, + 0.0043199705, -0.0033955802, 0.0004179454, -0.0000069509, -0.0008942578, + -0.0002779104, 0.0000624815, -0.0006427114, -0.0010905080, 0.0004668233, + 0.0006969883, 0.0010525477, -0.0004169636, -0.0006028507, -0.0016293414, + 0.0003198888, -0.0002667001, 0.0013190536, 0.0022560335, -0.0013591268, + -0.0017500385, -0.0013621285, 0.0009187656, 0.0021366617, -0.0033586004, + -0.0005324807, -0.0001118668, 0.0014523682, -0.0000631558, 0.0005256278, + 0.0028231994, 0.0007287981, -0.0012294995, -0.0032474790, -0.0071681538, + 0.0007399893, 0.0003624456, -0.0009904448, -0.0027373184, 0.0015872465, + -0.0019132532, -0.0007167947, 0.0005051694, 2.7517025471, 0.0018617469, + 0.0032398487, 0.0005051843, 0.0005621081, -0.0022777156, 0.0014694841, + 0.0005979240, -0.0006393353, -0.3834852278, -0.0004732423, -0.0028559603, + -0.0019174996, 0.0017157425, -0.0009711750, -0.0010149637, -0.0033595965, + -0.0017454480, 0.0017830816, -1.4525897503, 0.0004376308, 0.0000083391, + 0.0024802242, -0.0010659709, 0.0027927463, 0.0001417389, -0.0003159423, + 0.0014131363, 0.0002085753, 0.0010854772, -0.0034070071, -0.0006178161, + 0.0006769246, 0.0009061715, 0.0003158217, -0.0012036972, 0.0019109333, + 0.0000050294, -0.0019409200, -0.0005083014, -0.0006134743, -0.0021032032, + -0.0007189428, -0.0012862612, -0.0010241331, -0.0017745001, 0.0015267115, + -0.0007471880, 0.0027692118, 0.0008120923, -0.0031945906, -0.0007531554, + 0.0008324324, -0.0006622882, 0.0007624682, 0.0008300971, -0.0017950209, + 0.0032978761, -0.0008976149, 0.0040545138, 0.0000624745, 0.0042093596, + 0.0013419122, 0.0023005309, 0.0049834317, -4.0310993195, -0.0005856424, + 0.0021291305, -0.0018050764, -0.0029809084, 0.0024134004, -0.0017988207, + -0.0018857550, -0.0008997413, -0.0030567097, -0.0013834448, -0.0026487685, + -0.0005880632, 0.0006681988, 0.0066534583, 0.0024855705, -0.0021477873, + -0.0003403914, -0.0031111967, -0.0009520822, -0.0003309571, 0.0028978125, + -0.0012808111, -0.0002023573, 0.0013274559, 0.0005765010, -0.0029089265, + 0.0007177670, 0.0013779375, 0.0008560792, 0.0035597037, 0.0024280674, + 0.0014416305, -0.0023433915, 0.0015382133, 0.0010573021, 0.0036905715, + 0.0013683634, -0.0000637143, -0.0009062672, 0.0008415077, -0.0008829325, + 0.0007193494, -0.0017289543, 0.0005922546, -0.0007122152, -0.0009846711, + -0.0005663359, -0.0025815042, 0.0018660459, 0.0012296789, 0.0013072117, + -0.0004794151, -0.0019421391, -0.0003583303, 0.0437486954, -0.0001389759, + 0.0024277568, -0.0104689645, -0.0015978152, -0.0008390688, -0.0010742070, + -0.0018766616, -0.0006696135, 0.0017497968, 0.0012806947, 0.0009610448, + 0.0003023674, -0.0005397233, 0.0049619433, -0.0007377658, 0.0004126207, + -0.0019671679, -0.0000723515, -0.0008898273, 0.0029106066, -1.2331923246, + -0.0028354551, 0.0035734768, -0.0018733473, -0.0017974088, 0.0023408118, + 0.0000215080, -0.0015772269, 0.0026602256, -0.0006707245, -0.0023478791, + -0.0023921316, -0.0014482443, -0.0006856507, 0.0003620067, 0.0020378488, + 0.0022297269, 0.0003575401, -0.0014153200, -0.0076826732, 0.0004900923, + -0.0000743545, -0.0037694448, 0.0005715378, -0.0000558309, 0.0014221291, + 0.0033564111, 0.0008855292, 0.0014780504, -0.0023971787, 0.0034726236, + -0.0003835743, -0.0005855742, 0.0015869336, 0.0002858359, -0.0007649646, + -0.0888125747, 0.0011684354, 0.0000436009, -0.0008009439, 0.0005194549, + -0.0011130618, 0.0026178099, 0.0005784972, -0.0008219844, -0.0008956064, + -0.0015977378, 0.0001717268, -0.0006864963, 0.0009414267, -0.0009334628, + -0.0005380725, -0.0021332796, 0.0018866551, 0.0004210225, -0.0009176154, + -0.0024840357, 0.0008664124, 0.0007069196, 0.0000805487, -0.0033472094, + 0.0022500199, -0.0000319579, -0.0022196462, -0.0006202683, -0.0018644915, + -0.0007008621, -0.0031584506, 0.0000514130, -0.0006672777, 0.0004468882, + -0.0009616367, 0.0011723555, -0.0019225520, 0.0023742989, 0.0000815978, + -0.0000355577, 0.0006863144, -0.0016552659, 0.0002415627, -0.0008549915, + -0.0016790708, -0.0099085886, 0.0017849971, 2.5081090927, 0.0048189620, + -0.0003935541, 0.0001667840, -0.0011462738, -0.0017257351, 0.0011895141, + 0.0003741039, -0.0023948092, -0.0003806270, -0.0004523206, -0.0012436905, + -0.0000557844, 0.0000329835, -0.0001433676, 3.1784310341, -0.0013669932, + 0.0001093713, -0.0040311120, 0.0005535322, 0.0016070437, 0.0018667841, + 0.0019588806, -0.0021239114, -0.0032336805, -0.0007611085, -0.0025869077, + 0.0008996129, -0.0026278894, -0.0002536614, 0.0028569843, 0.0001000487, + -0.0017167963, 0.0011025188, -0.0018456762, 0.0029529170, 0.0017218938, + 0.0008987908, -0.0032127248, -0.0021256162, -0.0030492544, -1.5367766619, + -0.0003893171, -0.0017875214, 0.0013205633, 0.0007471573, 0.0003646084, + -0.0009684460, -0.0024590644, -0.0003931194, -0.0009993596, -0.0032516154, + -0.0033143689, -1.7578409910, -0.0022239643, -0.0006631580, 0.0013872171, + 0.0010534978, 0.0005570953, -0.0015536370, 0.0018600491, -0.0022493699, + 0.0014825929, -0.0015449674, 0.0028244541, -0.0017954123, 0.0004973160, + -0.0007336191, -0.0004852982, 0.0007135378, 0.0010835188, 0.0006430643, + 0.0002200860, -0.0041077491, 0.0018571925, -0.0008270205, 0.0005265465, + 0.0020632870, -0.0008043558, 0.0015261536, -0.0002181320, 0.0008536391, + 0.0013517449, 0.0008291067, 0.0000183326, -0.0009639246, 0.0006627943, + 0.0000903553, -0.0059438432, 0.0027596168, -0.0011475682, -0.0033141105, + 0.0044979667, -0.0039765220, 0.0010742797, 0.0004568298, -0.0014072638, + -0.0022867066, -0.0004294766, 0.0026739517, 0.0000526097, -0.0006274670, + -0.0002349713, 0.0010527051, -0.0000873857, -0.0032169195, -0.0005457670, + -0.0005808159, -0.0034620063, -0.0019165005, 0.0018662307, 0.0008465175, + -0.0025158618, -0.0007654191, -0.0016378680, -0.0010343806, -0.0009923105, + 0.0009505074, 0.0018078964, -0.0034310170, -0.0013366467, -0.0200841874, + -0.0008529029, -0.0008668676, 0.0007871392, -0.0009377720, 0.0021989378, + -0.0016753897, 0.0007282393, -0.0001630085, 0.0002005016, -0.0000971674, + 0.0010188683, 0.0004207212, 0.0014027546, -0.0013540111, -0.0014005890, + 0.0003523817, 0.0008420409, -0.0024095848, -0.0014748947, -0.0019566063, + -0.0002608360, -0.0010131092, -0.0001009023, -0.0002783232, 0.0000188984, + -0.0637922958, 0.0003482625, -0.0005581373, 0.0019012736, -1.4621078968, + -0.0005308285, 0.0029296209, 0.0030102283, -0.0019081205, -0.0041626454, + 0.0011557067, 0.0022093782, 0.0016056867, 0.0010157255, 0.0016021070, + -0.0003801733, 2.6983160973, -0.0016669645, -0.0002307077, 0.0025646682, + -2.4945924282, 0.0009227255, 0.0046994211, -0.0009731697, -0.0008180728, + -0.0011166357, -0.0028124256, -0.0002362551, -0.0027470482, -0.0023696497, + -0.0008194251, -0.0016358853, 0.0004062775, 0.0001015016, 0.0019942317, + 0.0016729741, 0.0004932992, -1.3865700960, 0.0005768416, 0.0005938507, + -0.0008018110, -0.0006431406, -0.0001908531, -0.0006280108, -0.0010679681, + 0.0014168811, 0.0015795366, -0.0017473066, -0.0005146177, 0.0008918038, + -0.0028334730, -0.0011136977, 0.0011644899, 0.0002195295, 0.0021854052, + 0.0020889852, -0.0015967232, -0.0010765889, 0.0020518552, 0.0005458209, + -0.0007538842, -0.0029086277, 0.0021592544, 0.0021277778, 0.0012146002, + -0.0015830295, 0.0001247553, 0.0007317291, -0.0012802375, 0.0000722981, + 0.0002895044, -0.0006442768, 0.0003888309, 0.0014752457, 0.0012660483, + -1.4544916153, 0.0021164492, 0.0024813616, 0.0032188017, 0.0008288859, + -0.0013357144, 0.0014581052, 0.0001332788, -0.0009651850, 0.0001258031, + -0.0028838357, -0.0004709150, 0.0034078793, -0.0015371582, 0.0022173589, + 0.0013744831, 0.0018103053, 0.0006495370, -0.0010107402, -0.0011970587, + -0.0004173131, -0.0028171828, 0.0016336604, 0.0020759567, -0.0012078467, + -0.0004900834, -0.0000006529, -0.0015358259, -0.0025914847, 0.0007339425, + -0.0020487830, -0.0001692311, 0.0063075158, -0.0004210816, 0.0016383954, + 0.0016801807, -0.0001422870, 0.0005980874, -0.0009954982, -0.0012241486, + 0.0004803695, 0.0038046609, -0.0017523058, 0.0025580917, 0.0025727223, + -0.0011097295, 0.0001147041, 0.0013383063, -0.0013706950, -0.0019224468, + -0.0002436475, -0.0025214627, -0.0022926899, 0.0029253250, -0.0024402456, + -0.0010308179, -0.0015082598, 0.0006616742, -0.0009112387, -0.0003698526, + 0.0016072616, -0.0015493101, -0.0002878434, -0.0035481784, -0.0027823728, + 0.0000881469, -0.0010638214, -0.0003962903, -0.0002998556, -0.0016571453, + 0.0014300095, -0.0014210438, 0.0009382456, 0.0000705519, -0.0023500468, + 0.0026187636, -0.0032588805, -0.0001854463, -0.0001385375, 0.0006270926, + -0.0025384007, -0.0018789649, -0.0013841809, 0.0028475209, 0.0004148497, + -0.0028360235, -0.0001689743, 0.0012826420, -0.0010671299, -0.0040603257, + -0.0001816357, -0.0012342397, 0.0007241901, -0.0002022258, -0.0021527088, + 0.0000283344, -0.0001998004, 0.0011639788, -0.0029977923, -0.0001547886, + 0.0014936406, -0.0023732232, 0.0012150162, 0.0013662861, -0.0004308699, + -0.0014539429, 0.0024399934, -0.0030546617, -0.0014896260, 0.0028465311, + 0.0007516602, -0.0030012415, -0.0024481402, 0.0009909781, 0.0030281409, + -0.0006777756, -0.0024679196, -0.0029232958, -0.0005168400, 0.0003610408, + -0.0009317340, -0.0002179455, 0.0004016270, 0.0009237921, -0.0028147250, + 0.0025263513, -0.0018503111, -0.0006070361, 0.0008182093, 0.0016318150, + 0.0009343808, -0.0018928028, -0.0015992532, -0.0030227080, -0.0004954524, + 0.0011506570, -0.0006617485, -0.0008447447, -0.0017137625, 0.0011652829, + 0.0015228232, 0.0000350177, 0.0008155478, -0.0026225161, -0.0019517257, + 0.0010241759, -0.0012039063, 0.0009802571, 0.0015511436, -0.0071501993, + 0.0003159177, -0.0018069041, 0.0001185855, -0.0005388411, 0.0008791327, + 0.0004052720, -0.0011956100, -0.0000010296, 0.0006177442, 0.0023343973, + -0.0021331906, 0.0055574989, 0.0029241666, 0.0023248233, -0.0004388900, + -0.0013930961, -0.0002040928, 0.0006152662, 0.0028792580, -0.0007420238, + -0.0024989704, 0.0011860230, 0.0012651238, -0.0033207522, 0.0035402097, + 0.0016215625, -0.0003865911, -0.0014740746, -0.0007823249, 0.0036923224, + -0.0008719349, -0.0038517695, 0.0001095713, -0.0019998276, -0.0009405087, + 4.5443487167, 0.0017051599, 0.0020281589, -0.0015285169, 0.0016444577, + -0.0003385860, 0.0030449228, -0.0029053101, -0.0008377400, -0.0022087451, + 0.0000660513, -0.0017828919, -0.0023945319, 0.0005620494, 0.0044602696, + -0.0027527234, -0.0002790822, 0.0001044874, -0.0000241306, 0.0004133747, + 0.0011774092, -0.0002512275, 0.0006926780, 0.0021459123, -1.4498909712, + -0.0004194877, 0.0002668796, -0.0028567780, -0.0007526469, -0.0010469831, + 0.0017041154, 0.0006551320, 0.0009371871, 0.0006253533, -0.0012906720, + 0.0021139020, -0.0056608235, -0.0004767096, -0.0003333606, 0.0010877908, + -0.0008317586, -0.0000181030, 0.0015978385, -0.0005677184, 0.0000837585, + -0.0002299063, -0.0007068216, -0.0012164640, 0.0002564047, -0.0011366671, + 0.0012437380, -3.1328039169, 0.0013291920, -0.0003349064, 0.0004440821, + 0.0004737127, 0.0000918827, -0.0011672245, 0.0018651080, -0.0008479867, + 0.0009566103, -0.0028178310, -0.0003236473, -3.4223499298, -0.0003733122, + -0.0000483518, -0.0008585334, -0.0012625341, 0.0028629024, -0.0013731625, + 0.0013186736, 0.0031208908, 0.0007540926, 0.0033279820, 0.0026374958, + 0.0023281355, -0.0012546501, -0.0002802365, 0.0009659566, 0.0000378420, + -0.0017401753, -0.0034057982, 0.0012964075, -0.0015898386, -0.0010793477, + 0.0014005257, 0.0020315563, -0.0014119917, 0.0016744148, -0.0547191985, + -0.0010814173, -0.0019366487, -0.0009709707, -0.0008108777, -0.0016808230, + 0.0015511273, -0.0028980579, -0.0003982089, 0.0033795994, -0.0000446630, + -0.0007388059, 0.0011661816, 0.0021749497, -0.0014016721, 0.0008752974, + -0.0009671780, 0.0028323317, 0.5806131363, -0.0008924552, -0.0009524460, + -0.0017868783, -0.0002880055, 0.0001382972, 0.0014763298, 0.0038929207, + 0.0009769890, -0.0001536359, 0.0017459508, -0.0004018978, 0.0004074844, + -0.0143525694, 0.0002480438, -0.0025963308, 0.0050434549, -0.0018303599, + 0.0018332764, -0.0015263730, 0.0000163065, 0.0015087250, -0.0004262310, + 0.0005435282, -0.0023410609, -0.0065088822, 0.0003538358, -0.0008834867, + 0.0006041485, -0.0090634115, 0.0015435698, 0.0008124469, -0.0006409264, + -0.0003239436, 0.0015168698, 0.0019435426, -0.0032114983, -0.0004518565, + 0.4887837470, -0.0024768724, -0.0065084239, 0.0004451573, 0.0018798437, + -0.0017063234, 0.0013289633, -0.0004732898, -0.0008266026, 0.0005596917, + -0.0002239936, -0.0001274669, 0.0024405080, 0.0031984127, -0.0005707699, + -0.0015983523, 0.0016000529, 0.0045849546, 0.0009322250, -0.0011494486, + -0.0007934067, 0.0012016976, 0.0004018638, 0.0006902004, -0.0011845361, + -0.0017468296, -0.0024443651, -0.0013729391, -0.0029157181, 0.0003993516, + -0.0011601432, 0.0012609112, -0.0010574022, 0.0017355783, -0.0031666346, + 0.0031653708, -0.0006620581, 0.0020499395, 0.0002303398, 0.0005195970, + 0.0004532235, -0.0014914349, -0.0011287099, 0.0010972009, -0.0025135758, + -0.0021584090, -0.0020514685, 0.0001038671, -0.0031672586, -0.0007820359, + -0.0003604097, 0.0036203421, -0.0001565727, -0.0030759349, 2.0098564625, + -0.0007019395, -0.0012778658, 0.0026700422, -0.0004696662, 0.0005067177, + -0.0021431800, 0.0019027392, -0.0025636600, -0.0007293397, -0.0031242347, + 0.0004478534, 0.0010666181, -0.0034363065, -0.0001836165, 0.0014154264, + -0.0005104071, -0.0015845572, -0.0025145235, 0.0016483073, -0.0031508340, + -0.0013814336, -0.0007298547, 0.0024179856, -0.0031419904, -0.0002907793, + 0.0014881771, -0.0011316532, -0.0002497765, -0.0019444134, 0.0004618261, + 0.0047113439, -0.0005996274, 0.0009932807, -0.0013352106, 0.0014033248, + 0.0007588284, -0.0007691650, 0.0016638789, -0.0022596195, 0.0014748974, + -0.0023354385, 0.0013921638, -0.0014596400, 0.0013223743, -0.0025716135, + 0.0012459189, -0.0003376771, 0.0002194527, 0.0004736236, -0.0031548650, + -0.0007443383, -0.0020013871, -0.0013353624, 0.0003528423, 0.0009079487, + 4.2386560440, 0.0011732429, -0.0019394308, -0.0013986279, 0.0014165672, + 0.0018980175, 0.0008680318, 0.0030213706, 0.0008066874, 0.0037077775, + -0.0008199813, -0.0015474940, 0.0030720481, -0.0024282676, 0.0010542163, + -0.0021127993, 0.0010078819, -0.0012531746, -0.0007100438, -0.0012230757, + 0.0005963836, 0.0022899094, -0.0035144510, -0.0015244186, -0.0000624689, + -0.0014297212, -0.0012498987, -0.0015662310, 0.0017177055, -0.0017685480, + -0.0005594552, 0.0006773917, 0.0016019299, 0.0001223858, 0.0010340405, + -0.0000819807, -0.0005148250, 0.0020019053, -0.0007586696, -0.0004487322, + 0.0023760649, 0.0012190398, -0.0003645029, 0.0030283476, -0.0037848356, + -0.0020945151, 0.0013075289, -0.0004985613, -0.0016849326, 0.0002739597, + -0.0000993134, -0.0006144717, 0.0018373304, -1.4769630432, -0.0002875531, + 1.0942895412, 0.0000073703, 0.0005410225, -0.0012132658, -1.8318243027, + 0.0013569347, 0.0007015252, 0.0013172654, -0.0018268726, 0.0008929027, + -0.0016750875, -0.0003556376, -0.0012748046, -1.5464147329, 0.0019690790, + -0.0000676701, -0.0007579129, 0.0014279768, 0.2254779637, 0.0002860567, + 0.0005005170, -0.0034310762, -0.0014793971, -0.0002322143, -0.0008541802, + -0.0002636155, 0.0004661176, 0.0014408641, -0.0036782366, 0.0000487934, + 0.0014018526, 0.0005537535, -0.0011455021, -0.0000366629, 0.0023663547, + -0.0018371423, -0.0005835795, 0.0033370098, 0.0009832294, 0.0002522494, + -0.0008972517, -0.0017682742, -0.0041482551, 0.0002660132, -0.0004669279, + -0.0012329167, 0.0015524281, -0.0023383666, 0.0020942325, -0.0010017408, + 0.0001992928, 0.0008353856, -0.0028623932, -0.0016779348, -0.0011079083, + -0.0002990775, -0.0014270954, -0.0013873118, -0.0012759063, 0.0001234671, + -0.0001149608, 0.0021819626, -0.0000436166, 0.0008314825, 0.0019141092, + 0.0009474619, -0.0007072818, -0.0020868159, -0.0008028890, -0.0016446663, + 0.0071153580, -0.0028653184, -0.0003842138, 0.0002288618, -0.0019573155, + 0.0014731237, 0.0026273737, -0.0030258815, 0.0015661400, -0.0014535829, + 0.0004409440, -0.0008837967, -0.0006802054, 0.0023045554, 0.0006937119, + -0.0010972386, 0.0019762479, 0.0001705526, -0.0026905136, -0.0002994617, + 0.0018876349, 0.0008694185, 0.0015893505, -0.0005169753, -0.0004098108, + 0.0028449455, 0.0014380300, -0.0007597253, 0.0006553042, 0.0027096784, + 0.0004268629, -0.0009137376, -0.0005502924, 0.0019876407, 0.0003155407, + -0.0000402965, -0.0023646606, -0.0000598133, -0.0001053761, 0.0007428779, + -0.0024579964, 0.0006732701, -0.0033234423, 0.0021967359, -0.0012892825, + -0.0013858110, 0.0008892376, 0.0008802735, 0.0021585654, 0.0013604015, + 0.0005863537, -0.0006163190, 0.0009233083, 0.0021648020, -0.0013403189, + -0.0018734680, 0.0007487426, -0.0039209332, 0.0018755742, -0.0000322419, + -1.2562072277, -0.0009156410, -0.0003207790, 0.0002728816, -0.0028873894, + 0.0003139645, 0.0006803807, 0.0023647270, 0.0000076797, -0.0032491838, + -0.0001331642, -0.0006497352, -0.0004109065, 0.0008809455, -0.0011076056, + -0.0016368320, 0.0000390750, -0.0032809628, 0.0013893321, -0.0002098209, + -0.0010839268, -0.6161209941, 0.0009987855, 0.0003119782, -0.0011228828, + 0.0019480791, 0.0002213705, 0.0001400090, -0.0017739013, -0.0036944887, + -0.0012956001, -0.0035173716, 0.0014897692, -0.0009200596, -0.0038931810, + 0.0007914179, -0.0003889292, -0.0018707090, -0.0007967697, -0.0003005732, + -0.0003220557, -0.0009317705, 0.0007198961, 0.0000579697, 0.0018893294, + 0.0008621246, 0.0000271056, 0.0001571560, -0.0010756124, -0.0019017193, + -0.0001643813, -0.0018508192, -0.0002006209, -0.0011747571, -0.0002171686, + -0.0026974822, -1.2457882166, 0.0008252412, -0.0003751605, -0.0005737192, + 0.0003050908, 0.0029850670, -0.0015531413, 0.0021471193, -0.0002650670, + 0.0001308476, -0.0014852042, -0.0013241410, 0.0027276906, -0.0011060811, + 0.0023967805, -0.0046646497, 0.0003731507, 0.0011351411, -0.0006133965, + 0.0030018594, 0.0027079899, -0.0010380810, -0.0022782688, 0.0010951264, + -0.0021522357, 0.0014390391, 0.0004920568, 0.0027816342, -0.0014312782, + 0.0007862769, 0.0000536391, -0.0021192944, 0.0000590259, 0.0003204308, + 0.0002189619, -0.0036818753, 0.0001785262, 0.0001069581, -0.0004825306, + 0.0009713657, 0.0033806786, -0.0003776515, 0.0016873875, 0.0048700543, + 0.0019867616, -0.0003767908, -0.1871041656, -0.0010374601, -0.0012310325}; + +float unet_input_time_embedding_50_2[] = { + -0.0000086082, 0.0014409488, 0.0003297003, 0.0022452397, 0.0009040651, + 0.0036412200, -0.0019703568, -0.0005871150, 0.0008809825, 0.0020563991, + -0.0017479437, -0.0025105779, 0.0031168913, -0.0005755168, -0.0004085628, + 0.0004172521, 0.0000832733, 0.0006389336, 0.0027064206, -0.0005323128, + -0.0020119273, -0.0010952083, 0.0020585209, -0.0132347085, 0.0002857881, + 0.0018823699, 0.0000508111, 0.0017236304, 0.0000965382, -0.0001923032, + -0.0016481364, 0.0025794283, 0.0008797208, 0.0002117441, 0.0005178701, + 0.0001436113, 0.0018963981, -0.0008176696, 0.0012351759, -0.0020096563, + 0.0033266954, 0.0028480734, -0.0030917781, -0.0024607014, -0.0007982636, + -0.0001050963, -0.0005603991, 0.0026892349, -0.0007623662, 0.0010625541, + 0.0014725635, 0.0013684204, -1.4223241806, 0.0014556730, -0.0009371267, + 0.0001830659, -0.0015193532, 0.0039798296, -0.0016442272, -0.0016099166, + 0.0012209180, -0.0000621494, -0.0024658334, 0.0001113159, 0.0007485244, + -0.0000117486, 0.0008000107, -0.0013217089, 0.0024713911, -0.0017058889, + 0.0012239853, 0.0000660154, 0.0001299565, -0.0014322810, 0.0017267978, + 0.0008341018, 0.0011135684, -0.0005260678, 0.0022116504, -0.0012495101, + 0.0010431637, 0.0011091508, 0.0003693635, -0.0006783204, -0.0018293166, + 0.0030292815, 0.0015693307, 0.0011862037, -0.0017479113, -0.0005315016, + 0.0011194529, -0.0000990173, 0.0008859551, -0.0029561790, 0.0181664210, + 0.0026545650, -0.0005717324, 0.0012741368, 0.0011093381, 0.0011359723, + 0.0029978142, 0.0006508450, -0.0003248411, 2.6177015305, 0.0017480231, + 0.0023175413, 0.0012295288, -0.0020842003, -0.0011483436, -0.0006622258, + -0.0036460713, -0.0002769418, -0.2950654328, 0.0005813595, 0.0015397705, + 0.0012580403, -0.0021130960, 0.0034248091, -0.0012268545, 0.0022222742, + -0.0010095895, -0.0010041653, -1.5038686991, 0.0002239193, 0.0026291218, + -0.0040078065, -0.0018717977, -0.0008115130, -0.0000678757, -0.0001481553, + -0.0010632840, -0.0006281473, 0.0001171960, -0.0024980363, -0.0029667518, + -0.0004109235, -0.0015676243, 0.0029667011, -0.0001992751, 0.0022524437, + -0.0015651600, -0.0007946575, 0.0017890118, -0.0000274940, 0.0004997577, + -0.0017094007, 0.0015911362, -0.0002852972, -0.0027683782, 0.0011484802, + 0.0022421470, -0.0007162070, 0.0007269173, -0.0022790032, 0.0011420916, + 0.0002214541, -0.0032218690, -0.0005598860, -0.0003265496, -0.0001925412, + -0.0017405231, -0.0007687650, 0.0033102417, 0.0019461154, -0.0020165243, + -0.0007313646, 0.0012774665, -0.0012323419, -3.7286050320, 0.0009346369, + 0.0029882719, 0.0006043781, 0.0010061804, 0.0033350261, -0.0010700198, + 0.0006355960, 0.0034048203, -0.0008590603, -0.0002843798, 0.0001753960, + -0.0014357283, 0.0013556266, 0.0023576939, -0.0002096882, 0.0022536321, + 0.0004265546, 0.0035536252, -0.0015060143, 0.0008542589, 0.0012102504, + -0.0005964083, 0.0019794828, 0.0002909628, 0.0023155857, 0.0007768553, + 0.0025427793, -0.0000467439, 0.0039779637, 0.0043626269, 0.0003806329, + 0.0002596900, -0.0011665835, -0.0002764743, 0.0026447340, 0.0019003516, + -0.0020049484, 0.0026971747, -0.0026176339, -0.0006112289, 0.0008787946, + 0.0011928841, -0.0010900418, -0.0006926102, -0.0028406337, 0.0025774534, + -0.0004538856, 0.0014410261, 0.0000786195, 0.0006906051, -0.0003844808, + 0.0012053885, 0.0001086677, -0.0025159868, -0.0459549651, -0.0014706480, + 0.0014812737, -0.0110049071, 0.0001397664, -0.0000999377, -0.0004997281, + -0.0001912829, -0.0049549248, -0.0018580966, -0.0029304405, -0.0016994262, + 0.0005373773, 0.0052595050, 0.0006845687, 0.0028087124, 0.0004910436, + 0.0019459676, -0.0003057064, 0.0013853454, 0.0018444136, -1.2594015598, + -0.0005465657, -0.0011095176, 0.0007810338, -0.0000476399, 0.0018400657, + 0.0012021400, -0.0005542473, -0.0019692150, 0.0022441773, 0.0031797518, + -0.0001038199, -0.0015671714, 0.0000129120, 0.0032106654, -0.0014724782, + 0.0012887651, 0.0013909976, 0.0004385323, -0.0259876363, 0.0016865168, + -0.0023917067, -0.0003635408, -0.0024820776, 0.0031843232, -0.0001329877, + 0.0024782382, 0.0007061900, -0.0004922929, 0.0002121041, -0.0004243075, + 0.0019466293, -0.0017811814, 0.0013819719, 0.0004815487, 0.0022936552, + -0.1039605290, -0.0006147586, -0.0000016931, 0.0005275365, 0.0017651045, + 0.0031133918, 0.0033440655, 0.0017125912, 0.0001711929, -0.0013304651, + -0.0006502884, -0.0040973555, -0.0008006932, -0.0008500952, -0.0014121104, + 0.0005399259, -0.0012654955, -0.0000317148, 0.0017767060, -0.0005915128, + 0.0156577267, -0.0007722077, 0.0003121143, 0.0009240289, 0.0008965351, + -0.0017787027, 0.0010272018, 0.0009244867, -0.0023185648, -0.0022908975, + -0.0034969337, -0.0008499827, -0.0001655247, 0.0013392176, -0.0006805486, + -0.0023831553, 0.0014464223, 0.0011114008, -0.0015343353, -0.0022681826, + 0.0001503055, -0.0020458419, -0.0017494999, 0.0002096649, -0.0020347396, + 0.0014032754, 0.0028863307, -0.0020009428, 2.1311116219, 0.0042547355, + 0.0014665318, 0.0008251658, 0.0004238206, -0.0023702616, 0.0022800379, + -0.0011969008, -0.0017554041, 0.0008757234, -0.0025112829, -0.0030416404, + -0.0002595177, -0.0014851072, 0.0003638121, 3.1172542572, -0.0006835551, + -0.0020206207, -0.0001956777, -0.0018704369, -0.0007476564, 0.0001115874, + -0.0001034066, -0.0002012104, -0.0002539624, -0.0006047506, 0.0010949181, + 0.0019746814, 0.0006027699, -0.0025318926, 0.0004938724, 0.0005327263, + -0.0024427790, -0.0005221372, -0.0004177978, -0.0008482891, 0.0003726160, + 0.0023910499, -0.0017977837, -0.0001163883, 0.0019254796, -1.5050671101, + -0.0020623226, 0.0003405330, 0.0000895187, -0.0004607374, -0.0011479117, + 0.0014109667, -0.0031723103, -0.0011783733, -0.0004259648, -0.0009985790, + 0.0012844146, -1.7647193670, 0.0009034281, 0.0008191182, 0.0013389690, + -0.0032549398, -0.0011361106, 0.0007024771, 0.0024764524, -0.0010807724, + 0.0001357552, -0.0006423519, 0.0000168649, -0.0032903405, 0.0002040369, + 0.0020907917, -0.0006571691, -0.0006192139, 0.0004382026, -0.0014946256, + -0.0013785285, -0.0022139503, -0.0037853241, -0.0001261006, -0.0018149158, + 0.0018585860, 0.0026897909, -0.0003552344, 0.0006340132, -0.0007655136, + -0.0006110135, -0.0012573297, -0.0009135804, -0.0022846425, -0.0022953344, + 0.0000412634, -0.0021982612, -0.0004794719, 0.0014604907, 0.0028283503, + 0.0009472922, -0.0000697037, 0.0016205991, -0.0010601075, 0.0018306123, + -0.0010713008, -0.0024675764, 0.0004052908, 0.0019700446, -0.0003987919, + -0.0012031063, 0.0002023126, 0.0005980900, 0.0006333468, 0.0022445284, + -0.0000857536, -0.0019386867, 0.0009670008, 0.0029671751, -0.0006882481, + -0.0027225653, -0.0040095677, -0.0003665149, 0.0026693402, 0.0009110521, + -0.0005140970, -0.0000224784, -0.0004894086, -0.0013540797, -0.0012136353, + -0.0027738041, -0.0003244169, -0.0001914701, -0.0018570432, 0.0020994800, + -0.0055849534, -0.0015256098, -0.0013220096, -0.0028760051, -0.0004100376, + 0.0006883247, 0.0020695366, 0.0009248437, 0.0006344222, 0.0004864754, + -0.0030224016, -0.0002859808, -0.0014038049, 0.0026900563, -0.0014829752, + -0.0005528559, -0.0002346260, -0.0008944646, 0.0008576184, 0.0002400298, + -0.0682094470, 0.0005246764, -0.0022816858, 0.0013207514, -1.4254856110, + 0.0010217121, 0.0001990683, -0.0010149647, -0.0021700726, -0.0016536254, + 0.0014436777, -0.0028349331, 0.0005143685, 0.0005710698, 0.0029645406, + 0.0021182057, 2.6077225208, 0.0006047613, -0.0007590824, -0.0007514474, + -1.9527603388, 0.0004495298, 0.0022050627, -0.0016048998, 0.0000079507, + -0.0001974222, 0.0017997622, -0.0003756518, 0.0018870453, -0.0029775910, + 0.0033000400, -0.0005643633, 0.0012747751, 0.0022786693, 0.0031558452, + -0.0004194190, -0.0011158492, -1.3913798332, -0.0005673142, 0.0013844817, + 0.0004108408, -0.0007952554, 0.0001902329, 0.0005765902, -0.0008376073, + -0.0002684956, -0.0032101027, 0.0000456384, -0.0019101794, 0.0002724687, + 0.0010918765, 0.0019897942, 0.0012698001, -0.0009045498, 0.0028567789, + 0.0027664441, 0.0018257718, -0.0023181592, -0.0009675978, 0.0000929467, + -0.0006459826, 0.0008945863, 0.0012728476, 0.0006522257, 0.0007447945, + -0.0008422537, -0.0012061642, 0.0000712899, 0.0022389735, -0.0024203812, + 0.0003995150, -0.0019069323, -0.0004972564, -0.0013641785, 0.0029830066, + -1.4769101143, 0.0008533709, -0.0001191320, 0.0011380631, 0.0013753776, + -0.0014661778, -0.0006894176, -0.0008058501, 0.0014835289, -0.0034593698, + 0.0020087222, -0.0010035570, 0.0021108552, -0.0017670440, -0.0012360122, + -0.0017771814, 0.0012057573, 0.0001954623, 0.0016847299, 0.0007294086, + -0.0010546395, -0.0019141128, 0.0014785356, 0.0024531970, 0.0004949835, + 0.0015575076, -0.0036233040, 0.0014340831, -0.0000481061, 0.0013778273, + -0.0002090093, -0.0012798342, 0.0059929653, 0.0004901394, 0.0015231367, + 0.0012404278, -0.0004004980, 0.0010351255, 0.0032373965, -0.0006652805, + 0.0008317287, 0.0025590747, 0.0015161033, 0.0025083022, 0.0004151869, + -0.0004097512, 0.0020066672, -0.0025967481, -0.0007241112, 0.0004380788, + -0.0028799218, 0.0003312444, -0.0022295536, 0.0012328483, -0.0008144749, + 0.0026711293, -0.0017432185, 0.0006020248, -0.0007399908, -0.0010233121, + 0.0008206647, 0.0012851143, 0.0001694751, -0.0006068046, 0.0017138058, + 0.0030443780, 0.0007176264, 0.0011684066, -0.0016947831, 0.0017000528, + -0.0039294465, 0.0019913968, -0.0010896293, 0.0006874427, -0.0009485357, + 0.0005436512, -0.0001138630, 0.0004274796, -0.0014052237, 0.0029430599, + 0.0011219038, 0.0020803015, -0.0002206200, -0.0019173326, -0.0015096036, + -0.0005286662, -0.0000725079, 0.0021724836, 0.0019115657, -0.0020386032, + -0.0016918116, -0.0009439613, 0.0002115218, -0.0035196303, 0.0017675315, + -0.0019267370, 0.0003266213, 0.0004391044, 0.0104923146, -0.0007894253, + 0.0020771448, -0.0010492066, 0.0007212779, -0.0023172903, 0.0022990508, + 0.0002501269, -0.0000543557, -0.0008298550, -0.0002294162, 0.0024353522, + -0.0007968200, -0.0018621846, 0.0005808430, -0.0010471515, -0.0003088065, + -0.0007881373, 0.0014286509, -0.0006619618, -0.0037342568, -0.0024667219, + 0.0006359613, 0.0000200018, -0.0007288794, 0.0017667592, 0.0036234297, + -0.0009674290, 0.0006708630, 0.0000794381, -0.0028876681, 0.0000091963, + -0.0000329560, -0.0034009027, -0.0018780036, -0.0021044482, -0.0008686138, + -0.0022020950, 0.0013114298, -0.0031771564, -0.0017368901, -0.0007701563, + -0.0024079354, 0.0017382428, -0.0013720368, 0.0007625732, -0.0034985398, + 0.0002011857, -0.0016268142, -0.0018815538, 0.0014387534, -0.0091236643, + 0.0011671809, -0.0007649702, 0.0020804510, -0.0012985917, -0.0002188743, + 0.0006268811, 0.0006380137, 0.0008868636, -0.0009213246, 0.0019810493, + 0.0020952523, -0.0050720898, 0.0014441507, 0.0027236305, 0.0005489928, + -0.0008241972, 0.0009448621, 0.0017400244, 0.0004226302, -0.0009832997, + -0.0026190048, -0.0020838599, 0.0006843474, 0.0009179711, -0.0012075386, + 0.0016903528, 0.0009497413, -0.0023811082, 0.0000609932, 0.0007039243, + -0.0007578144, 0.0032356400, 0.0006839379, 0.0011124942, -0.0010227838, + 4.4577817917, -0.0004140423, 0.0003378848, -0.0010666470, 0.0001069405, + 0.0007316903, -0.0015674001, 0.0005289274, -0.0002492606, -0.0005916040, + -0.0008319579, 0.0001977583, -0.0013563399, 0.0001651910, 0.0009839665, + -0.0036762378, -0.0001227830, 0.0008207725, 0.0014421283, -0.0006887841, + 0.0006278497, 0.0021512583, -0.0020627272, -0.0004016648, -1.4279940128, + -0.0011879406, 0.0014825573, -0.0004077386, 0.0023592222, -0.0020784545, + 0.0027289125, 0.0010981212, 0.0014499752, -0.0024406193, -0.0006988780, + -0.0000501787, -0.0032287566, -0.0007346654, -0.0010900826, -0.0007153279, + 0.0000518020, 0.0012194570, -0.0022321884, -0.0026146895, -0.0014631236, + 0.0002705539, 0.0008632505, -0.0012698567, 0.0025260993, -0.0009602089, + 0.0019422402, -2.8843095303, -0.0012751063, 0.0012791585, 0.0013540587, + 0.0019403809, -0.0001347230, -0.0023582361, -0.0011650946, -0.0009262215, + 0.0016815127, 0.0000975868, 0.0000925663, -2.9409773350, -0.0017003450, + -0.0019155716, 0.0021718412, -0.0018427657, -0.0026933961, -0.0021099327, + 0.0008812556, -0.0000831252, -0.0017399380, -0.0000709446, -0.0018385364, + -0.0011315286, -0.0008992574, -0.0025569885, 0.0054198094, -0.0005479003, + 0.0008104388, 0.0002819225, 0.0035061100, -0.0002599258, 0.0012466211, + 0.0035804296, 0.0017176111, 0.0009447556, 0.0009444070, 0.1983149797, + -0.0049391761, 0.0001517490, -0.0009054708, 0.0025637511, 0.0033363439, + 0.0019368764, -0.0019885958, 0.0001315228, 0.0024137155, 0.0007680282, + 0.0004351430, -0.0013514310, -0.0027583926, -0.0008445159, 0.0004634395, + 0.0043355566, -0.0020719431, 0.6162197590, -0.0005918038, -0.0005512098, + 0.0017307568, 0.0009288792, 0.0018612477, 0.0004920261, -0.0006599838, + -0.0024226289, -0.0001249474, 0.0013752406, 0.0005941563, -0.0024204021, + -0.0192284752, 0.0012549479, 0.0032539619, -0.0009913850, -0.0015094569, + -0.0004664534, -0.0012311568, -0.0015490679, 0.0023720697, 0.0011700634, + -0.0012723422, -0.0020733140, -0.0085936775, -0.0016649768, 0.0010246061, + -0.0036417595, -0.0121255778, -0.0002044109, -0.0009381764, -0.0002068030, + 0.0009913526, 0.0009031571, -0.0003107330, 0.0001480730, -0.0001061193, + 0.4952505827, -0.0001530835, -0.0043797302, 0.0034120884, -0.0007587590, + -0.0004595097, 0.0004680003, 0.0021818476, 0.0013014779, 0.0003225640, + 0.0003860116, -0.0003059641, 0.0000559348, -0.0020732735, 0.0002225884, + -0.0015756802, -0.0000241178, 0.0027863011, 0.0021956377, -0.0032066479, + 0.0020780452, 0.0010535428, -0.0029452862, -0.0014161607, -0.0001747180, + 0.0042691827, -0.0024668863, -0.0012213328, 0.0021519489, 0.0028440137, + -0.0011072366, 0.0019619185, 0.0019139880, -0.0004888896, 0.0008328850, + 0.0034332604, -0.0003860206, -0.0013476741, -0.0001881816, 0.0010001222, + 0.0011235699, 0.0003989916, 0.0041298522, 0.0020237179, 0.0005027060, + -0.0010578800, 0.0004776376, -0.0024403161, 0.0004473095, 0.0013708187, + 0.0016085282, -0.0026708462, 0.0033175289, 0.0006098803, 1.9810155630, + 0.0023301116, -0.0021709567, 0.0012915395, 0.0008195748, 0.0031123534, + -0.0009843893, -0.0001064831, -0.0003664205, -0.0009491560, 0.0017289179, + -0.0001534984, 0.0004558922, -0.0089863874, 0.0027859297, 0.0038724639, + -0.0008177324, 0.0000256064, -0.0024745376, -0.0016208603, 0.0013549633, + 0.0013253493, 0.0015018922, 0.0010168201, -0.0000689733, 0.0012253700, + -0.0024353657, -0.0011680339, -0.0014314731, -0.0005749334, 0.0000671800, + 0.0017818057, 0.0020286320, -0.0019489797, -0.0024381499, -0.0019902838, + 0.0014057455, 0.0024528834, 0.0018070341, -0.0000788635, 0.0014674580, + -0.0003807102, -0.0003912742, -0.0029521007, 0.0041699158, 0.0008382285, + -0.0005609922, 0.0004521264, 0.0001426339, -0.0023120414, -0.0023075934, + -0.0020316681, -0.0006306153, -0.0014956840, -0.0004649260, 0.0027347379, + 4.1475014687, -0.0006883461, -0.0015009120, 0.0014110345, -0.0004642014, + -0.0002085746, 0.0039658509, 0.0010857843, 0.0020212103, 0.0006596220, + -0.0013068735, 0.0031864299, 0.0000826172, 0.0002139308, 0.0010184690, + -0.0026242314, -0.0016997652, -0.0000128169, -0.0022847245, -0.0017137616, + -0.0002008323, 0.0017929698, 0.0010708785, 0.0004794598, 0.0023724739, + -0.0016281041, -0.0009747953, 0.0008277486, -0.0024543998, 0.0010418408, + 0.0017303077, 0.0005204163, 0.0000175492, -0.0015604098, -0.0015869737, + -0.0002618843, -0.0005151007, 0.0002771416, -0.0012588680, 0.0012476458, + -0.0037879699, -0.0029478185, -0.0024904767, 0.0037700138, 0.0026125906, + -0.0032522068, 0.0011009523, -0.0038756225, 0.0003594052, -0.0008749459, + 0.0007852810, -0.0021631103, -0.0011935434, -1.4750391245, -0.0008412653, + 1.0479102135, 0.0017154531, -0.0006172215, -0.0034229609, -1.8567200899, + 0.0038564480, 0.0037321532, 0.0014409004, 0.0020931382, 0.0009341193, + 0.0009760042, -0.0016565984, 0.0010023629, -1.5486468077, 0.0007764441, + -0.0016073307, -0.0006047178, -0.0005147929, 0.1226615012, 0.0006362386, + -0.0007366017, -0.0016839923, -0.0022512656, 0.0022306738, -0.0007968335, + 0.0018175738, -0.0018283408, 0.0002549696, -0.0029499228, 0.0026076655, + -0.0015530793, -0.0003072505, -0.0009401054, 0.0006862604, -0.0035783970, + -0.0014659674, 0.0016698076, -0.0020704316, 0.0009224084, 0.0027939144, + 0.0004084719, -0.0036707073, -0.0009603305, 0.0019757315, -0.0009012930, + -0.0021348728, 0.0029526716, -0.0026031695, 0.0022890577, -0.0009537945, + -0.0007569529, -0.0019129771, -0.0018526011, -0.0027753308, -0.0012340909, + 0.0001131408, 0.0000732131, -0.0005796615, 0.0023244470, 0.0020912190, + -0.0015951863, 0.0005159754, -0.0001865244, -0.0017290921, -0.0003322110, + -0.0005187881, 0.0010053590, -0.0018020933, 0.0003493060, -0.0001139939, + 0.0119504221, -0.0008335935, -0.0089418469, 0.0011434578, 0.0033062347, + 0.0014849347, -0.0004610020, -0.0009828941, -0.0004739054, -0.0000254007, + 0.0001163799, -0.0031962306, 0.0031172214, 0.0000666487, 0.0008471361, + 0.0022248076, -0.0005327985, -0.0009402973, 0.0001522722, 0.0031017731, + 0.0013521356, -0.0014225924, -0.0017463126, -0.0022754278, -0.0024657873, + 0.0025559003, 0.0015869914, 0.0015276532, 0.0022443123, -0.0014646919, + -0.0017755260, -0.0041672047, -0.0004084464, -0.0017138859, -0.0000547820, + -0.0003193561, -0.0006379848, -0.0049142712, -0.0005113899, 0.0023125643, + -0.0020955787, 0.0005744875, -0.0009696465, 0.0035884639, -0.0032143411, + -0.0022501324, 0.0016792525, -0.0009371503, 0.0031068679, -0.0023111510, + -0.0033327611, -0.0001285183, -0.0015337646, 0.0009163528, -0.0016397592, + -0.0003463440, 0.0018947620, 0.0009270331, 0.0007844460, -0.0013259328, + -1.3013958931, -0.0013839193, 0.0004417599, 0.0012513375, -0.0021228518, + 0.0030822183, -0.0017413858, 0.0012587553, -0.0027161893, 0.0014279741, + 0.0018763728, 0.0035690963, -0.0031444575, 0.0040921643, 0.0026280000, + 0.0020439290, 0.0003207629, 0.0025254125, 0.0025479533, -0.0028811670, + -0.0005603847, -0.5736234188, 0.0013446368, -0.0006061159, -0.0028599307, + 0.0000426788, 0.0026053253, -0.0001437203, 0.0013851840, -0.0014841305, + -0.0012872145, -0.0016241521, -0.0010310528, -0.0003421563, 0.0000777019, + -0.0012657219, -0.0004601427, -0.0004857634, 0.0007194788, -0.0013598707, + 0.0008972961, -0.0002766037, -0.0006270310, 0.0023839041, 0.0021716692, + -0.0004364129, -0.0021350151, 0.0035437476, -0.0014794003, -0.0032626321, + -0.0009166106, -0.0022710878, -0.0007143496, -0.0061603263, 0.0011523915, + 0.0013073782, -1.2224866152, 0.0004084976, 0.0000158534, 0.0022535177, + 0.0031968381, -0.0010198920, 0.0002291456, -0.0008123985, -0.0019244724, + 0.0027683778, -0.0011328448, -0.0004313259, 0.0025725416, -0.0007021627, + 0.0017286218, -0.0019170776, 0.0014293976, -0.0016607600, -0.0022498416, + -0.0003464110, 0.0023662429, -0.0003815135, -0.0002408087, -0.0020933263, + -0.0020862888, -0.0016770158, -0.0009931168, -0.0001620073, -0.0008073666, + 0.0009919800, 0.0012203776, 0.0003875354, -0.0006383070, -0.0011149007, + 0.0006449712, 0.0007561152, 0.0009726696, -0.0014740155, -0.0011934659, + -0.0007170215, 0.0040761661, 0.0007677579, -0.0011029402, -0.0009942604, + -0.0049533285, -0.0007320903, -0.0677891821, 0.0015790190, 0.0023031130}; + +float unet_input_time_embedding_50_3[] = { + -0.0006268090, -0.0016747201, 0.0020656800, -0.0000742342, -0.0019346098, + 0.0007590433, -0.0006452394, 0.0004580003, 0.0004024690, 0.0007435090, + -0.0011460737, 0.0022967155, 0.0030401535, -0.0010506096, 0.0020221295, + -0.0001492174, 0.0012813173, -0.0009195677, 0.0045398446, 0.0015490833, + 0.0001843669, 0.0010929154, -0.0010595302, -0.0173366293, -0.0003013716, + 0.0019273220, -0.0003761481, -0.0017002458, -0.0000178277, 0.0007882621, + -0.0007598065, -0.0001593342, 0.0012263246, -0.0007378026, 0.0013121695, + -0.0029095248, 0.0011040857, 0.0011394543, -0.0030909814, 0.0004552566, + -0.0010416135, 0.0017353552, 0.0001357221, -0.0001964541, -0.0000113370, + -0.0027646630, -0.0012358446, -0.0006813207, -0.0016306557, 0.0008032007, + 0.0003330885, 0.0021548078, -1.4217791557, -0.0015300987, -0.0009283536, + 0.0005785684, 0.0003631141, 0.0057202461, 0.0018492774, -0.0021349664, + -0.0023568792, -0.0005652740, -0.0023166896, 0.0015480225, 0.0029782187, + -0.0016699517, 0.0018705660, 0.0023502316, 0.0010124296, -0.0006617235, + -0.0004988080, -0.0026798877, 0.0010406978, -0.0020564711, -0.0011080308, + -0.0011499831, -0.0001547392, -0.0029917257, 0.0010051443, 0.0011779077, + -0.0027656960, 0.0023637428, 0.0002904953, 0.0005898317, -0.0030310059, + 0.0024279880, 0.0016982555, 0.0004385919, 0.0002503423, -0.0023269984, + -0.0026671875, 0.0013280753, -0.0016045840, -0.0002434599, 0.0329321511, + 0.0018779091, -0.0018745214, -0.0019795885, 0.0005012804, -0.0020104190, + 0.0020092679, -0.0015292340, 0.0005560745, 2.4819827080, -0.0000734166, + 0.0018010484, -0.0001809322, -0.0030299379, -0.0023137131, -0.0002616760, + -0.0028257952, 0.0000263825, -0.2070642412, 0.0010222718, 0.0000977665, + 0.0003836663, 0.0021820818, 0.0001618050, 0.0008399924, -0.0007977907, + -0.0009890054, 0.0015620210, -1.5752986670, 0.0014677830, 0.0010187719, + 0.0000352063, -0.0019812598, 0.0018605632, -0.0027114796, 0.0019480600, + 0.0015804316, 0.0011732019, 0.0029007925, -0.0011547692, 0.0006828182, + 0.0016666895, -0.0002505237, -0.0000317944, 0.0051934905, 0.0045184493, + -0.0004018291, 0.0039517502, 0.0010585627, 0.0026105214, 0.0008330930, + 0.0000172975, -0.0009481297, 0.0005111312, -0.0016654851, -0.0008966164, + 0.0002426011, -0.0023752130, -0.0008235951, 0.0005689748, 0.0039199102, + 0.0006129374, 0.0000432353, -0.0013043033, -0.0010314127, 0.0000165305, + -0.0000045639, 0.0012016556, 0.0043062130, 0.0014228146, -0.0030152560, + 0.0008278240, 0.0017296330, -0.0040869685, -3.4792425632, 0.0021937389, + 0.0021655099, 0.0013663620, -0.0002994779, 0.0033295052, -0.0017699869, + -0.0010254821, 0.0038328590, -0.0027388567, 0.0002173004, 0.0003858218, + -0.0010993029, 0.0010398449, 0.0066693849, -0.0017462755, 0.0021298071, + -0.0011000880, 0.0011478560, 0.0013847514, -0.0015191906, -0.0014032903, + 0.0016309316, 0.0013261153, 0.0024008015, 0.0011638969, 0.0045511387, + -0.0000706404, -0.0017443605, -0.0000763685, 0.0021422233, 0.0008058506, + -0.0011089342, 0.0020249584, -0.0001910366, 0.0019081007, -0.0001854217, + -0.0011249855, -0.0000267883, -0.0008506170, -0.0028703567, 0.0029618633, + 0.0013938933, 0.0016183513, 0.0006528418, -0.0009498813, 0.0004512719, + -0.0008917991, -0.0012818649, 0.0038132421, 0.0002128534, -0.0031923801, + 0.0025799759, 0.0018974040, -0.0017941531, -0.1074114665, -0.0009925051, + 0.0002097772, -0.0092593292, -0.0001458814, 0.0002178110, -0.0043995818, + 0.0032828515, -0.0041140411, 0.0011516754, 0.0005192640, -0.0013854336, + -0.0023358981, 0.0032395315, 0.0005337223, 0.0023358166, -0.0017140396, + 0.0015771107, -0.0000398409, 0.0027953715, -0.0013843961, -1.2685946226, + -0.0000380299, 0.0004281872, -0.0005399309, 0.0029798034, 0.0011904794, + 0.0043978831, 0.0000978089, 0.0008792649, 0.0013980279, 0.0013564215, + 0.0005672576, -0.0000505578, -0.0015932451, 0.0012588704, -0.0008515682, + 0.0026497915, 0.0005572389, 0.0005826291, -0.0285527259, 0.0018587211, + -0.0007316633, 0.0037543233, -0.0024008378, 0.0002622856, -0.0007606321, + -0.0009970274, -0.0000647812, -0.0004788707, -0.0005853204, -0.0006845470, + 0.0014087998, 0.0012120190, 0.0002419772, 0.0001248466, 0.0018095202, + -0.1224051118, 0.0017971834, 0.0000502468, -0.0005508950, 0.0012603183, + 0.0030694017, 0.0007132492, -0.0006772460, -0.0023113005, 0.0019386858, + -0.0024728570, 0.0010680261, -0.0013023966, -0.0008858766, -0.0004619118, + 0.0011829538, -0.0033755428, -0.0005894923, 0.0036143926, -0.0009131003, + 0.0195650272, 0.0006938016, 0.0003503292, -0.0006895582, 0.0001319938, + 0.0024379739, -0.0010501840, 0.0010275887, 0.0010001399, -0.0059284274, + -0.0017311526, 0.0005924206, 0.0038480896, 0.0021971278, -0.0022940817, + -0.0028044903, 0.0006105426, 0.0025708801, -0.0011481214, -0.0001838119, + -0.0010118445, -0.0008103764, -0.0007883238, -0.0008128081, -0.0021044174, + 0.0009245868, 0.0070838574, -0.0037847012, 1.7799944878, 0.0010041292, + -0.0000817296, -0.0009627491, 0.0008241775, -0.0022728699, 0.0001341868, + -0.0006354870, -0.0031148184, 0.0009515033, -0.0005664877, -0.0025507738, + 0.0014378997, -0.0032788387, 0.0000154276, 3.0636532307, 0.0018297865, + -0.0007352517, 0.0022322130, 0.0011416055, -0.0002763383, 0.0004450540, + -0.0020151827, 0.0035135578, 0.0021974854, 0.0029003974, -0.0005499684, + 0.0018339073, 0.0024091227, -0.0037031071, -0.0001445976, -0.0028602420, + 0.0003767032, 0.0005940241, 0.0000631902, 0.0000507920, 0.0002202889, + 0.0010192764, -0.0013804175, 0.0018858342, 0.0000606235, -1.4704818726, + 0.0021552835, -0.0006783013, 0.0006696507, -0.0002787644, -0.0019805997, + 0.0026994888, 0.0001282391, 0.0043451372, 0.0030131841, 0.0004902706, + -0.0004818946, -1.7887852192, 0.0024807625, 0.0035688649, 0.0010896558, + 0.0013662125, 0.0004392532, -0.0000346648, -0.0014574709, -0.0014483635, + -0.0026883441, -0.0012084875, 0.0015648627, 0.0019531741, -0.0014749598, + 0.0010963888, -0.0001399936, 0.0000673105, -0.0014215386, 0.0007731318, + -0.0001944934, -0.0009567160, -0.0015327006, 0.0032345955, -0.0006007925, + -0.0021249973, 0.0008745976, -0.0008466197, -0.0016345880, -0.0006342148, + 0.0007754914, -0.0020451057, 0.0018371497, -0.0006996693, -0.0008791606, + 0.0043916348, 0.0012401557, 0.0003534695, 0.0005833376, 0.0017443933, + -0.0016536962, 0.0007833762, 0.0021871710, -0.0040896591, -0.0024274858, + 0.0008281334, 0.0013819048, -0.0022145307, 0.0030798886, 0.0026232214, + 0.0008777981, 0.0030968576, -0.0017002204, 0.0006941957, -0.0027790982, + 0.0006229963, -0.0002327235, 0.0051907757, 0.0012019128, 0.0013051659, + 0.0008423189, -0.0020322786, 0.0012222218, 0.0023944641, -0.0017378975, + -0.0001939670, 0.0010735933, -0.0013429453, 0.0040285564, 0.0122597096, + -0.0020669005, -0.0001546182, 0.0000812362, 0.0000307141, 0.0016311859, + -0.0011648312, -0.0033876048, -0.0017419616, -0.0017653359, 0.0024913289, + -0.0006046011, 0.0023957901, 0.0042667170, 0.0022725719, 0.0001119161, + 0.0009190915, 0.0015770425, 0.0002981806, -0.0020797653, -0.0020433168, + -0.0003758767, 0.0006373546, 0.0016274834, -0.0012692653, 0.0005280385, + -0.0523174331, -0.0027103340, -0.0049272156, 0.0042916154, -1.4081438780, + 0.0023939731, -0.0012090057, -0.0018009087, -0.0013009275, 0.0020528056, + -0.0007678022, -0.0010262805, 0.0006921152, 0.0013562576, 0.0028014358, + -0.0000941651, 2.5116920471, 0.0007574516, 0.0006052069, -0.0012305421, + -1.4879180193, -0.0007358948, 0.0000375314, -0.0028224438, 0.0014892435, + 0.0032891813, 0.0006223526, -0.0020434642, 0.0010687034, -0.0016937926, + 0.0006247116, -0.0030632471, 0.0008154724, 0.0015072678, -0.0007165917, + -0.0023427566, 0.0007502316, -1.4030081034, -0.0052732364, 0.0024095930, + -0.0002381830, -0.0002000900, -0.0004438153, -0.0010522604, -0.0020512734, + 0.0023053191, -0.0013890113, -0.0002955199, -0.0024260548, -0.0025435360, + 0.0017214171, 0.0010703823, 0.0005978676, -0.0015364531, 0.0015319912, + 0.0014372363, 0.0023954599, -0.0006481470, -0.0005051915, 0.0000551797, + -0.0020339217, 0.0001923244, -0.0006754000, -0.0028485367, -0.0022565369, + 0.0011338321, -0.0015941029, -0.0011038128, 0.0012941244, -0.0000691586, + 0.0012581050, 0.0009852936, -0.0010060472, -0.0006363802, 0.0038917297, + -1.5149605274, -0.0000728555, -0.0003460604, -0.0003258418, -0.0005939533, + -0.0000852089, 0.0013374728, -0.0010178117, 0.0015378078, -0.0021265559, + -0.0004353328, -0.0019715773, 0.0010807426, -0.0006478345, -0.0004707230, + 0.0001284815, 0.0039227302, -0.0018987684, -0.0023712944, 0.0014847480, + -0.0023920485, -0.0013028411, -0.0007805317, -0.0001021482, 0.0012011831, + 0.0021046167, -0.0016305624, 0.0008536209, 0.0005719406, 0.0001680877, + -0.0030773692, 0.0004420360, 0.0075169890, 0.0002194770, 0.0005851258, + 0.0004642021, -0.0013814303, -0.0001728931, 0.0012144260, 0.0000390629, + -0.0008564732, -0.0008318000, -0.0032888260, -0.0002375478, -0.0021082168, + 0.0033386806, 0.0014170067, -0.0008629095, 0.0031215693, 0.0011992683, + 0.0006867512, 0.0006953133, -0.0021204473, 0.0003973970, -0.0011337434, + -0.0004020531, -0.0005403046, -0.0005785644, 0.0018891142, -0.0016670849, + -0.0025368691, -0.0002067881, -0.0018897406, -0.0020769066, 0.0011754613, + 0.0001139008, 0.0034644608, -0.0006605177, 0.0003304672, 0.0000003965, + -0.0021600546, 0.0054855710, 0.0023417803, 0.0001675244, 0.0022775619, + 0.0020118207, -0.0014120701, -0.0003277089, -0.0007848302, -0.0008338504, + 0.0014385590, 0.0029927276, 0.0019352316, 0.0017511367, 0.0010936209, + -0.0005299849, -0.0016862291, 0.0029897490, 0.0026866943, 0.0032403343, + -0.0003429031, -0.0008888112, 0.0018730748, -0.0010437688, -0.0001228391, + -0.0008439050, -0.0003882702, -0.0024388053, 0.0188053120, 0.0018800879, + -0.0010361715, 0.0019612899, 0.0007134613, -0.0021008854, 0.0023042667, + 0.0008367484, -0.0006577112, 0.0018893797, 0.0046994677, 0.0031579486, + -0.0007968456, -0.0017286143, 0.0001478655, 0.0008912369, 0.0006922274, + 0.0008217376, -0.0000652874, 0.0032004253, 0.0011410925, -0.0023036464, + -0.0005847306, 0.0034391403, -0.0013127702, -0.0008695235, -0.0011077449, + 0.0004035318, 0.0005789433, -0.0014565177, -0.0006058291, 0.0004824637, + -0.0029760629, -0.0003290358, -0.0021955026, 0.0003041848, -0.0024454528, + 0.0002828380, 0.0017862460, -0.0017164806, 0.0005943687, 0.0014032451, + -0.0018019006, 0.0018782411, -0.0027746030, 0.0006411162, -0.0001967386, + 0.0001844219, -0.0019036201, -0.0010276558, 0.0007046608, -0.0114487186, + -0.0028313063, -0.0008920752, 0.0014443242, -0.0034088830, -0.0016104789, + 0.0016407347, -0.0046805544, 0.0037684315, -0.0022326468, 0.0012240929, + 0.0013550986, -0.0028752843, 0.0012477534, 0.0004248247, -0.0015830868, + -0.0015375409, -0.0016534715, -0.0000557443, 0.0020743140, 0.0012702029, + 0.0001682704, 0.0021173158, -0.0012513279, 0.0005390350, -0.0010440394, + -0.0006671450, 0.0034816647, -0.0040823971, -0.0017574602, 0.0014928463, + -0.0005347775, -0.0009217579, -0.0003764539, -0.0004832842, -0.0013913792, + 4.3773570061, -0.0019391556, 0.0004611993, 0.0003573378, 0.0036896435, + 0.0010397411, 0.0007745763, -0.0027498901, 0.0003146338, -0.0005795863, + -0.0009605968, -0.0000243705, 0.0017421051, -0.0003468916, -0.0023561809, + 0.0000311339, -0.0003135812, 0.0009671466, 0.0010271529, -0.0020566864, + -0.0018403050, 0.0002231919, -0.0011609445, -0.0018685202, -1.4369248152, + -0.0006976738, 0.0010989083, 0.0017701518, 0.0000325120, -0.0031596045, + 0.0004362473, -0.0006844228, -0.0007397477, -0.0030222544, 0.0003714361, + 0.0011497801, 0.0001025321, -0.0030500470, -0.0010969506, -0.0013192105, + -0.0023153014, 0.0015988033, -0.0016326439, -0.0014643455, -0.0014998363, + 0.0005225576, 0.0034746677, -0.0004536083, 0.0003388957, 0.0010205843, + 0.0021140338, -2.6627397537, -0.0031543737, -0.0005117459, 0.0009547449, + 0.0039045364, 0.0001415431, -0.0003221504, 0.0000083908, 0.0007863857, + 0.0013120663, 0.0026706206, 0.0012819696, -2.5177750587, -0.0007332156, + -0.0019959430, -0.0007842791, 0.0000895014, -0.0021579945, -0.0022360347, + 0.0006837910, -0.0005306191, -0.0018445004, 0.0015536991, -0.0004069282, + -0.0039316001, 0.0001009533, 0.0000477418, -0.0004658476, 0.0003248048, + -0.0007240940, 0.0003107945, 0.0002551610, -0.0001068052, -0.0013738822, + 0.0051483521, 0.0000701760, 0.0013217977, -0.0017973545, 0.4148436487, + 0.0001925975, -0.0008290492, 0.0016286672, 0.0014287580, 0.0036057984, + 0.0031417913, -0.0022217440, 0.0012860945, -0.0004765063, -0.0000241250, + 0.0013328849, -0.0007842276, -0.0037870756, 0.0034242067, 0.0005775042, + 0.0030915854, -0.0012648203, 0.6216113567, 0.0024607605, -0.0037311120, + 0.0029950105, 0.0011025635, -0.0011365865, 0.0012035025, -0.0017219449, + -0.0028506648, -0.0025950496, -0.0011620425, 0.0013823542, 0.0002623471, + -0.0257087257, 0.0025722086, 0.0006442843, -0.0003037821, -0.0004213396, + 0.0007531545, 0.0015060152, -0.0008616438, 0.0008930691, 0.0027474724, + 0.0000256868, -0.0049024876, -0.0088151759, 0.0014195859, -0.0010220018, + -0.0020073052, -0.0001215828, -0.0025962447, 0.0006637878, 0.0014335043, + 0.0001393247, 0.0005528415, 0.0003202269, -0.0009935609, -0.0004491708, + 0.4776045084, -0.0014481420, -0.0014852607, 0.0026114341, 0.0006818573, + -0.0006652910, -0.0001965505, 0.0019839210, 0.0024209165, -0.0010998412, + -0.0012241651, -0.0006542639, -0.0005398490, -0.0015238398, 0.0005939347, + -0.0005608245, -0.0004091079, 0.0022427877, -0.0023450125, -0.0004527988, + -0.0007977411, 0.0010157758, -0.0018702848, 0.0016567605, -0.0011677984, + 0.0037229694, 0.0001886962, -0.0014298531, 0.0031185388, 0.0049722348, + -0.0026254675, 0.0007673107, 0.0012750681, 0.0000598347, 0.0017009028, + 0.0024430372, 0.0000090860, -0.0005544506, 0.0008284892, -0.0007174350, + -0.0013610646, -0.0009307973, -0.0003970424, 0.0025340063, -0.0003556642, + 0.0000732653, 0.0006715893, -0.0006931000, -0.0010333826, 0.0004352735, + 0.0028335610, -0.0016795836, 0.0022719814, -0.0002243798, 1.9509764910, + -0.0025538856, -0.0010495214, 0.0011160709, -0.0005027514, 0.0064582080, + -0.0028316453, -0.0012551484, 0.0006178189, -0.0006373404, 0.0006277487, + -0.0005664352, -0.0031034662, -0.0103068873, -0.0000549487, 0.0010602497, + 0.0016100225, 0.0044021537, -0.0005951398, -0.0027347445, 0.0012216957, + 0.0003007632, 0.0017838688, 0.0032525214, -0.0034926091, 0.0012755711, + 0.0008414928, -0.0012744246, -0.0015885928, 0.0005296301, 0.0030871127, + 0.0022882514, -0.0006337753, -0.0014802953, -0.0037259529, -0.0032682661, + -0.0000976177, 0.0030927449, -0.0007473548, 0.0001140512, 0.0013551703, + -0.0011093398, 0.0013070689, -0.0010737544, 0.0011128621, 0.0014476748, + -0.0010078389, 0.0006209286, 0.0023916480, 0.0004594014, -0.0007717190, + 0.0000041638, -0.0001955656, -0.0005990365, -0.0013251598, 0.0033160415, + 4.0630984306, 0.0011242405, 0.0000753626, 0.0016033135, -0.0026700464, + -0.0009236664, 0.0023153340, 0.0028271982, -0.0011105649, -0.0018569457, + 0.0006568988, 0.0011453284, 0.0004169736, -0.0003839971, -0.0002495009, + -0.0027126679, -0.0014643138, -0.0005034264, -0.0018008805, 0.0004373058, + -0.0010804888, 0.0020427560, -0.0004366450, 0.0017144866, -0.0000802088, + -0.0014610882, 0.0009351219, 0.0012703056, -0.0026481131, 0.0006516702, + -0.0008689561, 0.0007596181, -0.0014421217, -0.0005739455, 0.0007294123, + -0.0011586716, 0.0016343620, -0.0001337952, -0.0029179289, 0.0005110591, + -0.0009449038, -0.0004669279, -0.0033857841, -0.0016642935, 0.0017586404, + 0.0020771590, -0.0025840248, 0.0006287711, 0.0008851396, 0.0005799420, + 0.0004782225, -0.0001918953, 0.0011120983, -1.4901626110, 0.0023908282, + 0.9795863032, 0.0026639772, -0.0019804877, -0.0023483674, -1.8659548759, + 0.0007317453, 0.0012213299, 0.0009671981, 0.0023792707, -0.0007346133, + 0.0001232610, -0.0012309002, -0.0029302249, -1.5794236660, 0.0025771926, + -0.0007677453, 0.0012520554, -0.0015104531, 0.0284132119, 0.0022511315, + -0.0040674163, -0.0036581757, -0.0025985069, 0.0010633690, 0.0014031678, + -0.0000982834, 0.0007130634, -0.0010009714, -0.0034925225, 0.0017536902, + -0.0018785095, -0.0013153281, -0.0007194811, 0.0008499990, -0.0017924262, + 0.0006278805, 0.0009848757, -0.0045398986, 0.0020635580, 0.0016730528, + 0.0005057522, -0.0021623578, 0.0024050297, 0.0033167466, 0.0025382880, + -0.0014589934, -0.0019300813, 0.0008494053, -0.0047020381, -0.0030604657, + -0.0023141345, -0.0016785557, 0.0002031334, -0.0023614939, 0.0025006244, + -0.0029871464, -0.0022005085, 0.0008010578, -0.0006681513, 0.0020685301, + 0.0019774248, 0.0006489478, -0.0013028802, -0.0016255290, 0.0006675991, + -0.0047380193, 0.0001582559, 0.0005408949, -0.0019776109, -0.0025331397, + 0.0004061526, 0.0012742055, 0.0059086801, 0.0004875013, -0.0031479667, + 0.0021418142, 0.0003575393, 0.0003907694, -0.0008704807, -0.0024370800, + -0.0005526617, 0.0007785787, 0.0035109716, 0.0005808312, 0.0018545180, + 0.0012179473, -0.0030509233, -0.0003082086, -0.0002824841, 0.0005297079, + -0.0024227458, 0.0011692317, 0.0015548087, -0.0009784494, -0.0040397421, + 0.0018719183, 0.0010195309, 0.0022373339, 0.0011753445, -0.0002879119, + -0.0017269175, -0.0026163331, -0.0006047371, -0.0030369787, 0.0015310079, + 0.0007529575, -0.0028839214, -0.0023626406, 0.0006696742, 0.0005065907, + 0.0000685309, 0.0003653115, -0.0000486784, -0.0008820307, -0.0037739337, + -0.0038378641, -0.0011874608, -0.0005417163, -0.0017346982, 0.0020945133, + -0.0023978865, 0.0011234921, 0.0012306951, -0.0015070267, -0.0011501722, + 0.0028833505, 0.0003191831, 0.0029700447, -0.0004819245, 0.0001903758, + -1.3606870174, -0.0005944911, -0.0007299761, -0.0026981689, 0.0016992774, + 0.0030375689, 0.0017589016, 0.0012885744, 0.0001102267, 0.0037292535, + 0.0015819576, 0.0011133646, 0.0003394266, 0.0019760188, 0.0003833189, + 0.0010869447, -0.0005052849, 0.0003200704, -0.0010597520, -0.0001173220, + -0.0008031237, -0.5134259462, -0.0012112802, -0.0026185634, 0.0000200274, + 0.0002815593, 0.0001759555, 0.0005812137, 0.0010498166, 0.0024332879, + 0.0005435534, 0.0001222808, -0.0000377153, -0.0008675642, 0.0015894312, + -0.0021913289, -0.0016523614, 0.0003385297, 0.0013971995, -0.0010990482, + 0.0006885611, -0.0014588246, -0.0016999966, -0.0011511627, -0.0021240674, + -0.0021293170, -0.0050964649, -0.0000940794, -0.0008309651, -0.0018617501, + -0.0014594003, -0.0045591118, -0.0004248666, -0.0021063592, 0.0005032821, + 0.0016630465, -1.1976578236, 0.0013843272, 0.0009205868, -0.0001336189, + -0.0009926765, -0.0031544983, 0.0000447754, -0.0001507162, -0.0007052948, + -0.0002455418, -0.0030392618, 0.0017407251, 0.0028693466, -0.0002722084, + 0.0001620972, 0.0027230079, 0.0005430146, -0.0012943097, -0.0022231042, + -0.0018368512, 0.0012636390, 0.0015078438, -0.0021473267, -0.0001176698, + -0.0015874566, -0.0013305079, 0.0012191776, -0.0003879480, -0.0002928854, + -0.0012944896, -0.0020000390, 0.0016402258, -0.0011403713, 0.0000319229, + 0.0004422744, 0.0022284356, 0.0004759943, -0.0025979998, 0.0013467853, + -0.0006169826, -0.0031434186, 0.0010855724, -0.0012252638, -0.0013828436, + -0.0033182465, -0.0004246347, 0.0132275354, 0.0011044766, -0.0021220224}; + +float unet_input_time_embedding_50_4[] = { + -0.0038061952, -0.0015488626, 0.0013997108, 0.0014239687, -0.0013575493, + 0.0023416129, -0.0015480863, 0.0015243040, -0.0012429787, 0.0003396857, + 0.0007352454, -0.0014168420, 0.0030014524, 0.0012712381, -0.0009374665, + 0.0018069809, -0.0028621145, -0.0007899425, 0.0012778138, -0.0014178692, + 0.0020052711, 0.0051469961, 0.0000607969, -0.0280132033, 0.0006970912, + -0.0006547587, 0.0007585250, 0.0001540314, 0.0003497765, -0.0001137573, + 0.0004919469, -0.0008998262, 0.0008959444, -0.0003831950, -0.0001214221, + -0.0017647282, 0.0000031758, 0.0018111393, -0.0033986345, 0.0029526725, + 0.0016405620, 0.0002998239, -0.0002873871, 0.0016884888, -0.0014612349, + -0.0030334687, -0.0002643820, 0.0003047781, -0.0027001835, 0.0038000548, + 0.0001190426, 0.0006898560, -1.4114795923, 0.0013625892, -0.0023092481, + 0.0013298626, -0.0002186794, 0.0024012397, 0.0001539276, -0.0002537107, + -0.0032319159, -0.0004825949, -0.0038655144, 0.0004777987, 0.0014491547, + 0.0020836880, 0.0017919065, -0.0003175131, 0.0059090108, 0.0008201150, + -0.0016753268, -0.0011836407, -0.0006403488, -0.0032362500, 0.0030851206, + -0.0024954882, -0.0016796757, 0.0019983156, -0.0015732613, 0.0000494539, + 0.0010891701, -0.0004795290, 0.0002936879, -0.0009055017, -0.0023660546, + 0.0039916635, 0.0046559870, -0.0001031612, 0.0022462932, -0.0017026062, + -0.0019042535, 0.0017670877, -0.0023993282, 0.0017252126, 0.0305984952, + 0.0022852770, 0.0010018004, 0.0002560169, 0.0016420835, -0.0021221517, + 0.0037054047, 0.0012811772, -0.0000355984, 2.3460292816, 0.0004289164, + 0.0015536593, 0.0051068771, 0.0004362175, -0.0014726506, -0.0003054407, + -0.0035995226, 0.0008310191, -0.1267175078, 0.0025893953, 0.0010119677, + 0.0019904110, -0.0005989033, -0.0001302951, -0.0010248842, 0.0032411932, + -0.0022469428, -0.0007386173, -1.6328647137, 0.0011997912, 0.0014357623, + -0.0012486861, 0.0000796127, 0.0025800322, -0.0030383999, 0.0011789589, + 0.0001372299, 0.0006969478, -0.0001628005, -0.0030160900, 0.0003111809, + -0.0008015276, 0.0017763546, 0.0005299142, 0.0052918959, -0.0002821665, + -0.0000374473, 0.0011746194, 0.0014989779, 0.0020947719, 0.0009704295, + 0.0032329494, 0.0005554180, -0.0018811021, -0.0015641623, 0.0007470706, + -0.0005794680, -0.0024927589, -0.0028250911, 0.0010702489, -0.0006931038, + 0.0023369663, -0.0023069354, 0.0006609643, -0.0005030809, 0.0014840546, + 0.0009248727, -0.0009466644, -0.0014800383, 0.0010569538, -0.0073825778, + -0.0020617105, 0.0021413995, -0.0031839563, -3.2207028866, 0.0010108219, + 0.0004832364, -0.0016708989, -0.0019963998, -0.0005571610, 0.0005514380, + 0.0000829222, 0.0050116680, 0.0025318423, -0.0011078562, 0.0018296335, + -0.0010751360, -0.0001390791, 0.0013515516, -0.0025060577, 0.0046895733, + 0.0004617632, 0.0014224174, 0.0032033189, -0.0016173706, -0.0005493346, + -0.0016813320, 0.0034479662, 0.0011818771, 0.0032060014, -0.0009655273, + 0.0035180696, 0.0004641610, 0.0006763926, 0.0007395920, -0.0012717308, + -0.0010581398, 0.0023143017, -0.0013139546, 0.0003615464, -0.0011409307, + -0.0012808889, 0.0019660520, -0.0024114894, -0.0003894251, 0.0041407836, + -0.0003727567, -0.0008651889, -0.0005323957, -0.0033002377, 0.0035256811, + -0.0030884221, 0.0014635008, 0.0024103802, 0.0014758088, -0.0019281266, + -0.0012098383, 0.0012136744, -0.0035390167, -0.1591402590, -0.0010536581, + 0.0000552372, -0.0088197859, -0.0018344461, -0.0011980825, -0.0013005873, + 0.0069796154, -0.0039446335, -0.0004684217, -0.0022320137, -0.0009709485, + -0.0011715735, 0.0050606192, 0.0009842729, 0.0040178038, 0.0020484626, + 0.0002324919, -0.0002901433, 0.0025330328, 0.0015670601, -1.3206866980, + 0.0007775931, -0.0023320676, 0.0001341371, 0.0020185076, 0.0020111832, + -0.0004346762, 0.0011707037, 0.0001260261, 0.0028570732, 0.0007369504, + 0.0013032185, -0.0001607742, 0.0002545590, 0.0021430606, -0.0009125475, + 0.0003247904, 0.0021569550, -0.0004745091, -0.0271194689, 0.0045999172, + -0.0034373528, 0.0026886971, -0.0003424822, 0.0014122287, -0.0019800575, + -0.0021100640, 0.0017285419, -0.0008245106, 0.0024567517, -0.0012545295, + 0.0028899552, -0.0012532379, -0.0009755781, 0.0006706528, -0.0009501274, + -0.1256178916, 0.0012031775, -0.0017696804, 0.0010973853, -0.0010282709, + 0.0020750705, -0.0008245497, 0.0001770041, -0.0020966996, 0.0010131411, + -0.0025593024, 0.0022430664, 0.0025959911, 0.0008014266, -0.0052976683, + -0.0009127101, -0.0031794137, -0.0010923357, 0.0003740829, -0.0005347859, + 0.0224197358, 0.0006391427, 0.0022352687, 0.0021049236, 0.0007719353, + 0.0008906205, -0.0016873167, 0.0045932024, -0.0006953366, -0.0032487758, + -0.0024605589, -0.0004490541, 0.0020870382, 0.0007270407, 0.0013337177, + -0.0043731495, -0.0002789180, 0.0006945296, -0.0002058335, -0.0019590049, + 0.0015383514, -0.0013981811, -0.0028307096, -0.0005212706, -0.0024110163, + 0.0023799227, 0.0090643074, -0.0017117970, 1.4575589895, 0.0054858648, + 0.0002258720, -0.0008343514, 0.0018187127, -0.0036853473, 0.0008212812, + -0.0020109722, -0.0022792395, -0.0004243237, 0.0005273600, -0.0008302019, + 0.0002620528, -0.0004887937, 0.0015432436, 2.9952321053, 0.0014152026, + -0.0023275251, 0.0007649144, 0.0016040994, -0.0001010457, 0.0006617719, + -0.0033304878, 0.0003523547, -0.0001546573, 0.0034118537, -0.0010532407, + 0.0012018355, 0.0020163881, -0.0000840471, 0.0010212618, 0.0004733982, + -0.0038978253, 0.0004756306, -0.0022177259, -0.0002313987, 0.0030803024, + 0.0011182933, -0.0041869846, -0.0007416559, -0.0011916403, -1.4514696598, + 0.0000223760, 0.0004964550, 0.0006690975, -0.0015440760, -0.0004595134, + 0.0021563536, -0.0002456758, -0.0007086403, -0.0011938217, 0.0003934260, + -0.0002856184, -1.7880119085, 0.0014404305, 0.0021388060, 0.0022641765, + -0.0012501562, -0.0000069416, -0.0004442120, 0.0018405071, -0.0008678432, + -0.0000582952, -0.0034223236, -0.0016551116, 0.0011109135, -0.0011459636, + -0.0018564253, -0.0002963543, -0.0005824036, -0.0009863451, -0.0006082710, + 0.0004240789, -0.0010264590, -0.0007941274, 0.0019588242, -0.0035970490, + 0.0007618046, 0.0019053918, -0.0022056643, -0.0012163199, -0.0007754564, + -0.0012567868, 0.0011479170, -0.0003254707, -0.0002119860, 0.0001093121, + 0.0043498669, -0.0006055096, -0.0002393816, -0.0005748095, 0.0014765495, + -0.0003312088, 0.0018863531, -0.0005688052, 0.0011994282, 0.0008212915, + 0.0028356682, 0.0002761036, -0.0017530082, -0.0010557508, -0.0000148784, + -0.0002628616, 0.0003372780, -0.0014272591, -0.0024961056, -0.0034930785, + 0.0018508781, 0.0008267714, 0.0039287964, 0.0013730917, -0.0012619912, + 0.0009980630, -0.0035630986, -0.0020683152, -0.0005102062, 0.0016748894, + 0.0006549680, 0.0012183841, 0.0008265018, -0.0011989041, 0.0189343803, + -0.0029768585, 0.0011710823, 0.0015277283, -0.0004545292, 0.0027384139, + -0.0012392960, 0.0028503248, -0.0029424587, -0.0014275396, 0.0002555861, + -0.0002591801, 0.0041447449, 0.0016563509, 0.0018691603, 0.0019426635, + 0.0015670704, 0.0009428305, -0.0020429138, 0.0038278680, -0.0014864239, + 0.0008639800, 0.0012219420, 0.0011788672, -0.0005364374, -0.0018974729, + -0.0488024577, -0.0000497270, -0.0023714132, 0.0015569534, -1.3812073469, + -0.0002344386, -0.0003283951, 0.0035487302, -0.0035722165, -0.0002368062, + 0.0019125586, 0.0009234620, 0.0019004969, -0.0011571939, 0.0019337547, + -0.0004078546, 2.4058744907, 0.0021926858, 0.0008017174, -0.0009074961, + -1.0609819889, 0.0002825102, -0.0025719069, -0.0014132373, -0.0031708190, + -0.0008200170, 0.0010121893, -0.0007005250, 0.0026058550, -0.0003427714, + -0.0000046594, -0.0021932744, -0.0004838376, 0.0009485078, 0.0013301279, + 0.0022391474, -0.0012149308, -1.4241397381, -0.0017366689, -0.0014948753, + 0.0008154465, 0.0009386549, -0.0006020432, 0.0017807458, -0.0027403235, + 0.0002302215, -0.0009409855, -0.0015521870, -0.0009099958, 0.0004627379, + -0.0000191895, 0.0015546179, -0.0009739171, -0.0033812057, -0.0006438336, + 0.0017146512, -0.0016126405, 0.0001704781, 0.0015264985, -0.0008137107, + -0.0010934139, -0.0011427624, -0.0016400490, -0.0001802873, -0.0004879208, + -0.0013824655, 0.0015127426, -0.0033296011, 0.0000603567, 0.0004807222, + -0.0021711979, 0.0007407842, -0.0014777612, -0.0003530495, 0.0007697633, + -1.5416762829, -0.0016863421, -0.0035648593, -0.0003994536, 0.0019799774, + -0.0008101299, 0.0004303702, 0.0001966385, 0.0013236254, -0.0035247635, + 0.0010467945, -0.0004660572, -0.0012821588, 0.0018299595, 0.0010707527, + -0.0054692831, 0.0017118915, 0.0001051817, 0.0006488832, 0.0014142892, + -0.0006195163, -0.0018721772, 0.0012649209, -0.0002606514, -0.0022422890, + 0.0044229934, -0.0004919199, 0.0006530308, 0.0002314323, 0.0011448327, + 0.0016364790, -0.0030377223, 0.0009428817, 0.0009740588, 0.0015099419, + 0.0009223821, 0.0008519483, -0.0006601517, 0.0010312125, -0.0009488431, + -0.0020274092, -0.0006380030, 0.0000169631, -0.0007097125, -0.0005290178, + -0.0010855617, -0.0003641738, -0.0007831054, 0.0012066658, 0.0028808075, + -0.0008506184, -0.0003357166, 0.0029998897, -0.0000577958, -0.0013891270, + 0.0003250877, 0.0000225840, 0.0004007735, 0.0004607764, -0.0030592161, + -0.0006273426, 0.0036985455, 0.0026130886, -0.0004684585, 0.0016312068, + 0.0009623561, 0.0020209602, 0.0004148540, -0.0014098319, -0.0000656045, + -0.0011142450, 0.0003129606, -0.0001621586, 0.0008584168, 0.0007230169, + 0.0004907004, -0.0014686731, -0.0027829830, -0.0014019152, 0.0032096268, + 0.0000084741, 0.0005650546, 0.0017239890, 0.0014663937, 0.0001006904, + 0.0022089938, -0.0015295062, 0.0038303384, 0.0021986924, 0.0041837827, + 0.0000453504, -0.0016300909, 0.0035815442, -0.0006004369, 0.0025753430, + 0.0011861472, 0.0014915578, -0.0014871315, 0.0164426733, 0.0002529463, + 0.0009025614, -0.0001860233, 0.0010722794, -0.0020534373, 0.0013588923, + 0.0002240811, 0.0008439198, 0.0019585826, 0.0029390494, 0.0015681866, + 0.0012216857, -0.0016878438, -0.0005966244, 0.0000234203, 0.0007507890, + 0.0007801754, 0.0010829889, 0.0020489160, -0.0017558567, -0.0020095506, + 0.0000726564, 0.0005939386, 0.0000389477, 0.0008665144, 0.0020086840, + 0.0004693307, 0.0021147053, 0.0015477426, 0.0021277019, -0.0007622605, + -0.0004461820, -0.0008051018, -0.0036879433, -0.0001531561, -0.0024830298, + 0.0012901039, 0.0005001118, -0.0013503360, 0.0014227196, -0.0012070807, + -0.0013830666, -0.0015893932, 0.0004823606, 0.0020402388, -0.0012495522, + -0.0011200365, 0.0005796044, -0.0027538119, -0.0022377169, -0.0103636570, + 0.0010489402, -0.0025799279, -0.0021146305, -0.0000497887, -0.0002238438, + -0.0014911178, -0.0019028788, 0.0013385029, 0.0006608691, 0.0016578592, + 0.0001692045, -0.0082814554, 0.0013154233, 0.0025461074, -0.0007734285, + -0.0029241359, -0.0005564485, 0.0011437470, 0.0004655921, 0.0016052304, + 0.0005604504, 0.0004196041, -0.0004997907, 0.0016775015, -0.0039887102, + 0.0007713069, 0.0023791594, -0.0042660232, 0.0005108677, -0.0046343170, + -0.0006608786, -0.0011811014, -0.0005964672, 0.0026431931, -0.0022609257, + 4.2830677032, -0.0033691381, -0.0017741518, -0.0021674340, 0.0008783727, + -0.0011321097, 0.0002375813, -0.0004609441, -0.0002749297, 0.0001926403, + 0.0000944249, 0.0016050435, 0.0007282618, 0.0021539689, 0.0003602169, + -0.0011873266, -0.0007067847, -0.0045528430, -0.0017332952, 0.0012716202, + -0.0010840534, 0.0001479383, -0.0010135729, -0.0016361850, -1.4243396521, + -0.0004430353, 0.0014930179, 0.0007225890, 0.0021310332, -0.0011610282, + 0.0032250569, 0.0012442494, -0.0008644267, -0.0023698781, 0.0012204233, + -0.0016744314, -0.0030412795, 0.0018250039, -0.0016424714, -0.0002269982, + 0.0011393428, -0.0014148895, 0.0003299024, -0.0016871882, 0.0024478035, + 0.0006070305, 0.0006250517, 0.0035955308, 0.0016218689, 0.0011229264, + 0.0016048630, -2.4352083206, 0.0027336935, 0.0013568802, 0.0006866078, + -0.0005499440, 0.0005086351, -0.0011867287, 0.0001745722, 0.0029941697, + 0.0027537649, 0.0009791749, -0.0004567817, -2.1052122116, -0.0001693233, + 0.0016471843, 0.0029373567, -0.0006044764, -0.0030406760, 0.0012881150, + 0.0026843557, -0.0001472798, 0.0032189738, 0.0004504931, -0.0017419358, + -0.0018955484, -0.0028107075, 0.0020857942, 0.0019234456, 0.0014907462, + -0.0003492432, -0.0003631632, 0.0013369890, -0.0017563791, 0.0005154491, + 0.0039481381, 0.0014325258, 0.0010279152, -0.0010803069, 0.6312399507, + 0.0001762239, 0.0007873133, -0.0030273488, 0.0022668804, 0.0034394390, + 0.0015264188, -0.0032317536, 0.0001206468, 0.0007269413, -0.0000130255, + 0.0034001658, 0.0005398076, -0.0033257320, 0.0025157612, 0.0021411353, + 0.0027402607, 0.0003311159, 0.6346035004, -0.0022135158, -0.0017267661, + -0.0012960602, 0.0005136584, 0.0007482911, 0.0031049550, 0.0008687412, + -0.0045012068, -0.0015800458, 0.0015723504, 0.0015149373, -0.0009252587, + -0.0235135946, 0.0003405856, 0.0002721054, -0.0030220146, -0.0003006537, + 0.0006983220, 0.0028456966, -0.0001150174, -0.0024731304, -0.0003878721, + 0.0014474746, -0.0030815909, -0.0035333643, 0.0010005508, -0.0022273557, + -0.0016828203, 0.0027707550, 0.0013901922, -0.0022699537, 0.0012431787, + 0.0001628136, -0.0005028737, 0.0002251407, 0.0036898777, 0.0007980089, + 0.4629448354, -0.0022469689, -0.0005134232, 0.0033654850, 0.0000493552, + -0.0003655485, -0.0023179245, 0.0013156617, -0.0006848907, -0.0009650025, + -0.0004810935, -0.0029412680, -0.0002057855, -0.0015429952, -0.0008464144, + -0.0002562709, -0.0009400810, 0.0015464703, -0.0000381563, 0.0008450039, + 0.0041847434, -0.0003025075, -0.0023374469, -0.0015654694, 0.0031404570, + 0.0063495487, 0.0007684818, 0.0019506625, 0.0025753113, 0.0017370512, + -0.0031737837, 0.0025628125, -0.0002490571, 0.0004103933, 0.0023872778, + -0.0027880569, -0.0002532136, 0.0000050194, 0.0008041947, -0.0018949797, + -0.0018703993, -0.0011981260, -0.0013024798, 0.0002537672, -0.0002960577, + -0.0016624155, 0.0004041600, 0.0009079780, -0.0015019133, 0.0004110051, + 0.0016997405, -0.0010801099, -0.0012618998, 0.0016137641, 1.9201011658, + 0.0018659944, -0.0009678639, 0.0000877231, 0.0009987287, 0.0059746020, + -0.0022397581, 0.0028291591, 0.0011501815, -0.0024665068, 0.0009141853, + -0.0009355430, 0.0014338358, -0.0031783357, -0.0002574518, 0.0047839605, + -0.0013475451, 0.0033121172, -0.0041287038, -0.0009311312, -0.0001614282, + 0.0012989808, -0.0018597259, 0.0021070114, -0.0024698335, 0.0021285992, + 0.0003576297, 0.0012144439, -0.0031925594, 0.0008472675, 0.0049276333, + 0.0012823932, 0.0004067207, -0.0014220821, -0.0024768407, -0.0023076925, + -0.0001756868, 0.0004309242, -0.0018468240, -0.0011652368, 0.0020983005, + 0.0010766927, -0.0005061026, -0.0021203035, 0.0019973456, -0.0008953745, + 0.0014714052, 0.0005094716, 0.0035857284, -0.0014366372, -0.0023663482, + -0.0018431611, -0.0025089104, 0.0002640006, -0.0005309726, -0.0003983146, + 3.9586441517, 0.0020349771, -0.0031318739, 0.0048371172, -0.0003768024, + 0.0001837469, 0.0018933979, -0.0001496793, 0.0006281938, -0.0002739358, + 0.0016228023, 0.0016400507, 0.0008393405, -0.0012453154, 0.0028569424, + -0.0002311924, -0.0031715212, -0.0025198739, -0.0036972498, -0.0005043666, + -0.0023407768, 0.0003025454, 0.0003019590, 0.0020377338, 0.0025330153, + 0.0001577963, -0.0003375090, 0.0016251768, -0.0045665782, -0.0019047381, + 0.0002476531, 0.0006666470, -0.0006049437, -0.0037926391, -0.0002782680, + 0.0003093200, 0.0020943403, 0.0007893448, -0.0019454064, -0.0000707717, + 0.0001205115, -0.0038446244, -0.0013069371, -0.0000087642, 0.0006440801, + -0.0013763364, -0.0008380148, -0.0015547482, -0.0004460864, -0.0003222246, + -0.0003676577, -0.0037136339, 0.0006631664, -1.4921410084, -0.0009471790, + 0.9201268554, -0.0021202604, -0.0006688926, 0.0021567175, -1.8949327469, + 0.0010202616, -0.0006285524, 0.0022010682, 0.0011703158, -0.0028347569, + 0.0008636997, -0.0016838098, 0.0007256856, -1.5838743448, 0.0000847965, + -0.0011134839, 0.0008757107, -0.0026273020, -0.0480101518, 0.0018027509, + -0.0022648275, -0.0027980395, -0.0017461777, 0.0005464458, 0.0009089685, + -0.0010531107, -0.0019875150, -0.0004703408, -0.0005713017, 0.0008063796, + 0.0000345686, -0.0034852193, -0.0012167059, 0.0025832490, -0.0044210013, + 0.0011096033, -0.0008861150, -0.0020626513, -0.0017512175, 0.0019479457, + 0.0009051657, -0.0026817247, 0.0004212307, -0.0012007677, 0.0035934784, + -0.0027114211, -0.0022262381, 0.0036459006, 0.0001778612, -0.0023299307, + 0.0018099360, -0.0047340463, -0.0002306078, -0.0010055143, 0.0011748308, + -0.0033506192, 0.0021414314, -0.0014572691, -0.0009262878, 0.0036734713, + -0.0010818134, -0.0005525403, 0.0009726640, -0.0008994401, -0.0012503060, + -0.0022539333, 0.0028188732, 0.0016315966, -0.0021621012, 0.0025894577, + 0.0017259326, 0.0015866568, 0.0026054075, -0.0026579290, 0.0018454329, + 0.0011322848, -0.0025872914, 0.0006508431, -0.0026637800, -0.0009663159, + 0.0004500113, -0.0003463593, -0.0000803983, -0.0007131225, 0.0006235200, + 0.0013553621, 0.0008378103, 0.0003989986, -0.0024736738, 0.0015857886, + 0.0005566371, 0.0008857530, -0.0012500164, -0.0015646424, 0.0001701117, + -0.0016386015, 0.0017212788, 0.0011322323, 0.0017487248, 0.0013737911, + 0.0007518730, -0.0014850528, -0.0005325307, -0.0005096411, -0.0031442118, + 0.0002191272, 0.0017248234, -0.0028593475, 0.0008711156, 0.0035575768, + 0.0016577030, 0.0016973650, -0.0021660184, 0.0017335129, -0.0020908420, + -0.0020569016, -0.0015716538, -0.0007512416, 0.0007089730, -0.0011436269, + -0.0031513656, 0.0002669659, 0.0022222481, 0.0001466706, -0.0023173657, + -0.0008351235, 0.0030081740, 0.0013823148, 0.0003786846, 0.0021529305, + -1.4098747969, -0.0001176652, 0.0004639552, -0.0006143708, 0.0024543826, + 0.0012367580, -0.0015720415, 0.0010499696, -0.0007755468, -0.0020226617, + 0.0016362891, 0.0026388732, -0.0015744655, -0.0007465966, 0.0018680482, + 0.0011255592, -0.0010801749, 0.0018749470, 0.0026493650, 0.0039749690, + -0.0014446233, -0.4613172412, 0.0013090444, -0.0026279222, 0.0002078970, + 0.0019518249, 0.0027928508, -0.0011204393, 0.0016431399, 0.0014951583, + 0.0007059015, -0.0002273023, -0.0008857888, -0.0006222776, 0.0004441158, + -0.0007410948, -0.0020787143, 0.0019660885, 0.0010944717, 0.0000836458, + -0.0007396878, -0.0017677890, -0.0037253811, 0.0003694263, -0.0002313033, + -0.0015576712, -0.0033333688, -0.0006528539, -0.0011390578, -0.0016649710, + -0.0002087496, -0.0027525648, -0.0012425287, 0.0000705068, -0.0026387693, + 0.0018588012, -1.2050813437, 0.0022904305, -0.0020164186, 0.0000722099, + -0.0023005747, -0.0013109266, -0.0025382068, -0.0012649691, -0.0012166076, + 0.0019419044, -0.0013478327, 0.0034068222, 0.0015397868, -0.0008877735, + -0.0004548202, -0.0000537712, -0.0003769440, -0.0006687925, -0.0017224746, + 0.0012124572, 0.0020733457, 0.0003360650, -0.0021334128, -0.0036055418, + -0.0020917854, -0.0015745549, 0.0025138324, -0.0011622701, 0.0016568161, + -0.0008767151, 0.0025215563, 0.0008907886, -0.0010216039, -0.0006330907, + -0.0007957793, 0.0043544886, 0.0003219452, -0.0020216191, -0.0003017832, + 0.0007545911, 0.0024234261, 0.0015446937, 0.0016012890, -0.0019883355, + -0.0022533210, -0.0021923203, 0.0971420854, -0.0000980099, 0.0015926192}; + +float unet_input_time_embedding_50_5[] = { + -0.0019252216, -0.0004296568, 0.0000833552, 0.0032956058, 0.0027555418, + -0.0025144396, 0.0005057757, -0.0023245588, -0.0006245228, 0.0014452569, + 0.0001329982, 0.0006947783, -0.0051494651, 0.0011336305, -0.0021739164, + -0.0002930677, 0.0001322683, -0.0019142574, -0.0040164385, -0.0013449243, + -0.0019122330, 0.0054374831, 0.0005260241, -0.0109385438, 0.0002630596, + -0.0019261998, 0.0003833827, 0.0015632519, 0.0010282939, 0.0011350699, + -0.0026925174, 0.0021951078, -0.0001093233, -0.0006942926, 0.0005601498, + -0.0032967613, -0.0006126789, 0.0023442255, -0.0011250861, 0.0013351273, + -0.0007817298, 0.0004161200, -0.0005713641, -0.0010367092, 0.0002296707, + -0.0016844107, -0.0010477696, 0.0005195527, 0.0005340036, 0.0014034084, + -0.0025660964, 0.0002552925, -1.3867870569, 0.0008187769, -0.0012697728, + 0.0028783581, -0.0001084406, 0.0014050244, -0.0013540792, -0.0016866929, + -0.0030799361, 0.0012614239, -0.0000199475, -0.0015903036, 0.0015770402, + 0.0016289931, -0.0012415582, -0.0002752702, -0.0029014610, -0.0020345452, + -0.0032821395, -0.0010294584, -0.0002184438, -0.0019257572, 0.0011648014, + 0.0002148896, 0.0005729357, -0.0011090348, 0.0002270447, 0.0017567023, + -0.0007580766, -0.0003790989, -0.0027485071, -0.0031282706, -0.0004646906, + -0.0010275214, 0.0022710487, -0.0007615830, 0.0014873901, -0.0005654427, + 0.0000567318, 0.0008760858, -0.0003379686, 0.0033078082, 0.0287047625, + 0.0016698907, -0.0012692260, -0.0004781652, 0.0014240153, 0.0004186677, + 0.0002972633, -0.0017997348, 0.0022173082, 2.2166149616, -0.0006562327, + -0.0006966991, 0.0000460106, 0.0003652377, 0.0004452760, -0.0005166368, + -0.0011491999, -0.0010848939, -0.0569133535, -0.0010552723, -0.0030572228, + 0.0029402445, 0.0006082025, 0.0013064786, 0.0009973785, 0.0027842268, + 0.0003183219, -0.0020954979, -1.6704438925, 0.0004375023, 0.0003712457, + -0.0028311689, -0.0015025432, 0.0004948680, 0.0022770120, 0.0026250440, + -0.0029286700, -0.0014231764, 0.0016919023, -0.0010932721, 0.0004171859, + -0.0006042623, -0.0006909573, -0.0013772929, 0.0023091082, 0.0014031185, + 0.0009815397, 0.0017057313, -0.0002485528, 0.0007650063, -0.0004401554, + -0.0005573472, 0.0019627190, 0.0006112149, -0.0013605030, -0.0009623915, + 0.0013489975, -0.0009389514, -0.0002033492, 0.0012907106, 0.0021319739, + -0.0002361531, -0.0009308988, -0.0027062939, 0.0010731192, 0.0005054115, + -0.0011393675, -0.0013170886, -0.0036335960, -0.0011142329, -0.0019228184, + -0.0034051405, 0.0001510626, -0.0012938390, -3.0143272877, 0.0002001855, + -0.0025241924, 0.0012773350, 0.0005056169, 0.0008597178, -0.0002677515, + -0.0003758268, 0.0009002212, -0.0007933723, 0.0014571971, 0.0005858075, + -0.0010010921, -0.0017139902, 0.0028181975, -0.0002690880, 0.0026653735, + -0.0014248802, 0.0001371335, 0.0014014593, -0.0007754513, 0.0005039372, + -0.0003174809, -0.0000076727, -0.0015424016, 0.0021499011, 0.0021027960, + 0.0017727227, -0.0024350127, 0.0025823331, -0.0014676201, -0.0007959553, + 0.0000915444, 0.0003998042, -0.0012289602, 0.0008350960, -0.0018050140, + -0.0006532632, -0.0007856402, 0.0004412169, -0.0043707658, -0.0008579302, + -0.0019847681, 0.0009426200, -0.0009541153, -0.0009440512, 0.0005165378, + -0.0010304633, 0.0010071620, 0.0013782186, -0.0028924369, 0.0001691877, + 0.0020530820, 0.0000382793, -0.0012705440, -0.1627023667, -0.0017701329, + -0.0009629973, -0.0018405365, -0.0014794688, 0.0023574873, 0.0011023162, + 0.0058857128, 0.0017095543, -0.0007415339, 0.0019845772, -0.0003567673, + 0.0006733951, 0.0063812905, -0.0023523262, -0.0023472160, 0.0021249894, + 0.0031664295, -0.0019979337, 0.0020235491, -0.0016057082, -1.3277095556, + 0.0006089399, -0.0008520032, 0.0020497886, -0.0002209460, -0.0026567732, + -0.0011121184, 0.0028765700, -0.0010271524, 0.0021487391, -0.0016994947, + 0.0007212909, 0.0015180153, -0.0018981941, 0.0003778839, -0.0006288806, + 0.0000597639, -0.0046223588, -0.0029701961, -0.0296419337, -0.0018161883, + -0.0014356743, 0.0067680846, 0.0008599688, 0.0001391675, -0.0025643357, + -0.0026234593, 0.0019099896, 0.0012714607, 0.0012181597, -0.0019354036, + 0.0018841985, -0.0001581437, 0.0006491849, 0.0019270238, -0.0007900749, + -0.1251849085, -0.0001701312, -0.0019611400, 0.0020667254, 0.0000214284, + 0.0005680854, -0.0016517593, -0.0007796523, 0.0007969318, -0.0006262045, + 0.0001318847, 0.0008332229, 0.0028655364, 0.0000835371, -0.0003641006, + -0.0009746039, -0.0006420757, -0.0020404463, -0.0012670537, -0.0003568297, + 0.0138597330, -0.0019367763, 0.0011328699, -0.0019436772, -0.0005206026, + 0.0007668757, -0.0016944786, 0.0058253948, -0.0002939068, 0.0015590745, + -0.0001802575, 0.0028350116, 0.0020496857, -0.0000372529, 0.0011043535, + -0.0026034596, 0.0030209809, -0.0007837587, 0.0010212883, 0.0001054010, + -0.0006170652, -0.0007566889, 0.0024162347, -0.0013674796, -0.0009166893, + -0.0003355048, 0.0111538675, -0.0022559389, 1.1999210119, 0.0001486926, + 0.0009312143, 0.0004902007, 0.0006731151, 0.0000723032, 0.0004573306, + -0.0014808811, -0.0008599253, -0.0018444239, -0.0001529097, -0.0004516640, + 0.0011360981, 0.0013661194, -0.0018619306, 2.9389841557, -0.0000490898, + 0.0012325742, -0.0026271581, -0.0001294737, 0.0021597035, 0.0022642035, + -0.0004887916, 0.0038005281, -0.0002694707, 0.0020493288, 0.0019337703, + -0.0017560469, 0.0024138785, 0.0004154361, -0.0016778675, 0.0015328084, + 0.0012091547, -0.0010605953, 0.0016353740, -0.0016780482, -0.0005027713, + -0.0008902766, -0.0013258178, 0.0046196962, 0.0000286456, -1.4181202650, + 0.0022570677, 0.0019703754, -0.0019299705, -0.0011074273, 0.0013680134, + 0.0022942442, 0.0018645670, 0.0002852615, -0.0000812693, 0.0015263651, + 0.0005947823, -1.7819455862, 0.0018780031, -0.0012837895, -0.0004687766, + 0.0014697963, 0.0012019998, 0.0003756275, -0.0026183934, 0.0003679995, + -0.0036070393, 0.0007072742, -0.0004501636, 0.0003020095, -0.0014160518, + -0.0004711240, -0.0003193514, -0.0015002248, 0.0007421365, -0.0009750351, + 0.0004061582, -0.0015868638, 0.0026282177, 0.0019866987, -0.0016944846, + 0.0002371161, 0.0006683563, -0.0013412787, -0.0027860231, -0.0022206390, + 0.0024178519, 0.0003983532, 0.0004496989, 0.0015198214, 0.0006307298, + 0.0003820083, 0.0042920178, 0.0010620523, -0.0024023671, -0.0020135771, + 0.0008692343, 0.0007257129, 0.0001619300, -0.0021353231, -0.0000587916, + 0.0014207656, -0.0000128215, -0.0032344593, -0.0005381324, 0.0021325168, + 0.0003956496, 0.0026427894, -0.0008439363, -0.0002527842, 0.0005889657, + -0.0020057908, 0.0023497818, 0.0006377671, -0.0010093339, 0.0022136003, + 0.0000742632, 0.0006494368, 0.0001622034, -0.0000028291, 0.0014158625, + -0.0036863391, -0.0017028581, -0.0012649302, 0.0016202149, 0.0223315172, + -0.0003642156, -0.0004252158, -0.0003903934, -0.0012156172, -0.0031161928, + 0.0012293234, -0.0004659435, -0.0008885534, -0.0012227381, -0.0029639129, + 0.0017796182, 0.0005849153, 0.0019568338, 0.0029326580, 0.0023934422, + 0.0008999771, -0.0000518062, 0.0008622613, 0.0004887088, 0.0002977694, + -0.0022776895, 0.0008685666, 0.0032189051, 0.0004217483, -0.0003003152, + -0.0244394895, -0.0017898055, -0.0019852347, 0.0013942877, -1.3572432995, + -0.0029778047, 0.0006785337, -0.0002904814, 0.0023398332, 0.0023419850, + -0.0033784234, 0.0007034016, -0.0004031686, 0.0002642241, 0.0012457583, + 0.0003515566, 2.3063957691, -0.0002741986, -0.0015559881, -0.0007893634, + -0.7041139603, 0.0024937028, -0.0029886621, 0.0008931672, -0.0009180298, + -0.0005436675, 0.0025334898, -0.0047866935, 0.0008384059, -0.0007358883, + -0.0005422132, -0.0024085348, -0.0004547435, -0.0018358896, -0.0014530546, + 0.0036127346, -0.0016903440, -1.4320186377, -0.0031347172, 0.0003967145, + 0.0035567787, -0.0010073902, 0.0001795953, 0.0007031793, -0.0000725351, + 0.0016052718, -0.0005868576, -0.0016890840, -0.0015736767, -0.0018837256, + 0.0013578120, 0.0002708485, 0.0003727744, -0.0000983765, -0.0036805095, + 0.0018141631, -0.0007112003, 0.0015410162, 0.0019286468, 0.0009254094, + 0.0014628310, 0.0036354477, -0.0030627607, 0.0008027032, 0.0003277371, + -0.0017411029, -0.0012087831, 0.0003240909, 0.0025670822, -0.0013116975, + -0.0024029948, 0.0000079637, 0.0014159959, -0.0020541032, 0.0001902217, + -1.5796155930, -0.0016799867, 0.0015475729, -0.0038570762, 0.0001480370, + 0.0009385959, -0.0002453136, -0.0015148735, -0.0036991537, -0.0025123991, + 0.0018086862, 0.0003648371, -0.0017039510, 0.0010344600, 0.0003801882, + -0.0017351778, 0.0002936451, 0.0021018693, 0.0016784789, 0.0000917064, + -0.0004626890, 0.0003388757, 0.0010275613, 0.0004216095, 0.0004725982, + 0.0026970832, -0.0023213448, -0.0000994941, 0.0025382475, -0.0019513641, + 0.0009290837, -0.0014937292, -0.0015178123, 0.0012823298, -0.0012841776, + 0.0015268514, -0.0009702155, 0.0007536388, 0.0041660406, 0.0030997000, + -0.0003843048, -0.0050322847, 0.0009064693, -0.0026360834, -0.0001993668, + 0.0038019056, 0.0020836620, 0.0016970071, 0.0016088071, -0.0002903878, + 0.0023288834, -0.0004923241, 0.0032686247, -0.0025892467, -0.0003942826, + -0.0002688945, -0.0010976658, 0.0035753169, 0.0015710861, 0.0017011245, + 0.0019763364, -0.0008812407, 0.0017479886, -0.0010245065, 0.0017188364, + 0.0020943424, 0.0016263444, 0.0000789939, -0.0030797939, -0.0007565620, + -0.0008874792, -0.0008712542, 0.0005415766, 0.0021994193, 0.0015239096, + 0.0009674570, -0.0030800167, -0.0006756231, -0.0009651929, -0.0008149697, + 0.0005049864, 0.0007727563, 0.0014494370, -0.0034797348, 0.0008450714, + -0.0017143460, -0.0011787589, -0.0012350451, -0.0007716008, 0.0034147189, + 0.0001473568, 0.0014020635, 0.0004745636, 0.0015703866, -0.0008948022, + -0.0005989858, 0.0034208735, -0.0001706027, 0.0161177553, 0.0009168023, + -0.0000740070, 0.0032159081, 0.0003168352, -0.0006575868, 0.0010055420, + 0.0003592882, -0.0021819267, 0.0033328105, -0.0002319885, 0.0002329308, + -0.0010714359, 0.0014048540, -0.0025504795, -0.0003040171, -0.0025332184, + -0.0005709613, 0.0025053592, 0.0022689952, -0.0010409520, 0.0001532933, + -0.0020876115, -0.0002507076, -0.0024171250, -0.0016699273, 0.0010950454, + -0.0022168485, 0.0047134510, 0.0004517380, 0.0001884047, 0.0006090612, + -0.0031628290, 0.0024831579, 0.0029294891, 0.0028477050, -0.0019452618, + -0.0003234684, -0.0011539822, 0.0001577123, -0.0002728296, -0.0019832300, + -0.0009344355, 0.0020826086, 0.0026052266, 0.0004526700, -0.0011681127, + -0.0008529038, 0.0027251034, -0.0000445535, -0.0010339955, -0.0020672381, + -0.0015273551, 0.0008475655, -0.0009628667, 0.0004531255, 0.0006139618, + -0.0033960952, -0.0009066658, -0.0015196777, -0.0007898358, -0.0001721751, + 0.0002894271, -0.0055118715, -0.0024086311, -0.0011311993, 0.0002670507, + -0.0008854270, 0.0005742703, 0.0002681697, -0.0000350478, -0.0003014538, + -0.0008171732, 0.0009575770, 0.0002754162, 0.0003003203, -0.0001369386, + -0.0027558831, 0.0040622968, -0.0015795133, -0.0047272774, -0.0013946607, + 0.0002891077, 0.0021696780, -0.0000480458, 0.0028638612, 0.0017236131, + 4.1772189140, -0.0010350556, -0.0033584693, -0.0006788443, 0.0010965783, + 0.0003109728, -0.0014741058, -0.0009879139, 0.0006712875, 0.0000255611, + 0.0006016241, -0.0007209877, 0.0014072611, -0.0025504758, -0.0043899138, + -0.0005315247, 0.0003207845, 0.0006385525, -0.0003295336, 0.0018810125, + 0.0002090367, -0.0005375980, -0.0009183685, -0.0027091915, -1.4351389408, + 0.0005812072, 0.0009694768, 0.0006215400, 0.0001986041, 0.0002251277, + -0.0007686727, -0.0020090877, -0.0013646651, -0.0001533940, -0.0001771660, + 0.0001616282, 0.0030261027, 0.0001815213, 0.0001742623, -0.0007763137, + -0.0009804685, -0.0021861177, 0.0012018215, -0.0008441638, 0.0000023572, + 0.0019094003, 0.0005716981, 0.0006995981, 0.0004733508, 0.0007280838, + 0.0005517565, -2.2559006214, 0.0010508569, 0.0008029034, -0.0017516599, + 0.0013907455, 0.0006165963, -0.0023240896, -0.0030455482, 0.0008463908, + -0.0014042365, 0.0063115442, -0.0005727314, -1.7805902958, 0.0007848195, + 0.0015719613, 0.0018094599, 0.0007571889, -0.0003453214, -0.0021581817, + 0.0021849787, -0.0032230194, 0.0024542704, 0.0006937122, -0.0003909323, + -0.0009438858, -0.0013100749, -0.0008346007, 0.0009583849, 0.0030372445, + 0.0026335651, 0.0006791633, -0.0008452339, 0.0010979606, 0.0014771635, + 0.0014822343, 0.0017523979, -0.0009125401, 0.0020458784, 0.8002372980, + 0.0017290311, 0.0005530373, 0.0008673595, 0.0008967987, 0.0012905514, + 0.0013431550, -0.0001367861, 0.0007803845, -0.0034911304, 0.0000151610, + 0.0019336056, 0.0020252671, 0.0003626593, 0.0048827995, 0.0005032601, + 0.0010710922, -0.0014271401, 0.6131101847, -0.0007413053, 0.0004582023, + 0.0005376181, 0.0000738953, 0.0028255801, -0.0007478995, -0.0008468202, + -0.0004216302, -0.0019351926, -0.0001665024, 0.0012407401, -0.0001386702, + -0.0097895684, -0.0023030234, 0.0010481412, -0.0005916203, 0.0006914977, + -0.0008606785, 0.0020842622, -0.0003623273, -0.0004595913, -0.0002024900, + -0.0020974157, -0.0007152092, -0.0048697013, 0.0000255655, -0.0010744022, + -0.0027728910, 0.0119835176, -0.0002203812, -0.0005676455, -0.0018484364, + 0.0021223312, -0.0012912340, -0.0048770485, 0.0013068245, -0.0015294417, + 0.4335600436, 0.0003094905, 0.0030570682, 0.0002639927, -0.0009672169, + 0.0010149509, 0.0010858974, 0.0010322742, 0.0012288813, 0.0005683987, + -0.0015920794, 0.0003393828, -0.0008213562, -0.0022120927, 0.0025149933, + -0.0011296726, -0.0011850821, -0.0017841208, -0.0000401568, 0.0029496374, + -0.0011663288, 0.0001638038, -0.0007919483, -0.0026090275, 0.0002803253, + 0.0021131728, 0.0003471458, 0.0020424491, 0.0005826741, -0.0027758027, + -0.0000078550, 0.0006268189, 0.0013312511, -0.0017787812, 0.0013578390, + -0.0014714382, 0.0008004010, 0.0009163574, 0.0002145148, -0.0027955780, + -0.0017017694, -0.0026858859, -0.0024800571, -0.0011592577, 0.0017456585, + -0.0002364852, 0.0034107282, 0.0023860456, -0.0015052279, 0.0004515400, + 0.0031642532, -0.0007890157, -0.0006605784, -0.0002504457, 1.8957639933, + -0.0003919441, 0.0012224140, 0.0024233311, -0.0011053851, -0.0006829686, + 0.0020375438, 0.0005904610, 0.0016662460, 0.0005475827, 0.0005855667, + -0.0004905203, -0.0003533768, -0.0041912850, -0.0007373102, 0.0003717788, + -0.0021619550, -0.0008258888, 0.0019609816, -0.0004544714, 0.0009956432, + 0.0015430441, -0.0001429669, -0.0007699297, -0.0013806708, 0.0010593813, + -0.0003392063, 0.0026635295, 0.0000738488, -0.0011182763, 0.0014858115, + 0.0021606006, -0.0001226636, -0.0046077128, -0.0013951990, -0.0011216337, + -0.0016851688, -0.0015884886, -0.0024359371, -0.0003028931, 0.0010951059, + 0.0006767106, 0.0012140931, -0.0001790491, -0.0012977299, -0.0015636599, + 0.0008638923, 0.0013576169, 0.0039036465, -0.0018975693, -0.0001549930, + -0.0003577314, -0.0012710802, 0.0053770537, 0.0015775184, -0.0004461994, + 3.8555610180, -0.0004587006, -0.0000905897, 0.0008627779, -0.0001656679, + -0.0000234388, 0.0001689480, -0.0023000543, -0.0011929553, -0.0002385306, + 0.0021700317, 0.0011385391, 0.0013580690, -0.0005280520, -0.0006799087, + -0.0000615725, -0.0000098376, -0.0006538797, 0.0017833954, 0.0003714706, + -0.0023623612, 0.0001257925, 0.0033321902, 0.0019581113, 0.0014972878, + -0.0008013467, 0.0015242831, 0.0000196567, -0.0014824227, 0.0011866046, + -0.0009282646, -0.0027018974, -0.0003339820, -0.0015258149, -0.0003590886, + -0.0008565226, 0.0010452782, 0.0014924244, -0.0013300090, 0.0001836750, + 0.0013097080, -0.0004766192, 0.0007574959, -0.0004021763, 0.0018521284, + -0.0003171675, -0.0017695907, 0.0021257568, -0.0016575983, 0.0006732456, + -0.0008766786, 0.0012366250, 0.0003130832, -1.5003974438, 0.0015954098, + 0.8576883674, -0.0013704954, 0.0007236307, 0.0021234045, -1.9063991308, + 0.0015394031, -0.0002001924, -0.0010810951, 0.0017831898, 0.0011765091, + -0.0017099497, -0.0018931879, 0.0010123802, -1.6122661829, 0.0018030689, + -0.0011569450, 0.0005074285, -0.0012924738, -0.0993950367, 0.0000693239, + -0.0017195782, -0.0001066108, 0.0032724787, -0.0015744215, 0.0019271527, + 0.0011384198, 0.0027528927, -0.0015705926, 0.0007094429, 0.0006455290, + -0.0027930199, -0.0031675694, -0.0005901246, -0.0015523094, -0.0002957788, + -0.0009127525, -0.0012112267, 0.0017880416, -0.0006708181, 0.0024477418, + 0.0006647038, 0.0003074463, 0.0034136148, 0.0018641776, 0.0025034286, + 0.0017661245, 0.0001403233, 0.0028824881, -0.0009960374, -0.0003659120, + 0.0020971857, -0.0007989923, -0.0012797203, 0.0006467674, 0.0017076740, + -0.0018001162, -0.0023929998, 0.0015610505, -0.0003343709, 0.0048216032, + -0.0004768150, -0.0009971276, -0.0041256715, 0.0010858676, -0.0004326942, + -0.0021357923, 0.0006561745, -0.0019085323, 0.0017465134, -0.0007904265, + -0.0061486345, 0.0017283631, 0.0030597239, 0.0006739204, -0.0005895044, + -0.0008134129, -0.0004680875, 0.0038897390, -0.0022224197, 0.0002838748, + 0.0014737435, 0.0037411232, -0.0000149040, 0.0010061163, 0.0017803716, + 0.0018109428, -0.0013959631, 0.0015316191, 0.0020073298, 0.0002175844, + -0.0017702538, -0.0014666012, 0.0001578146, -0.0019759331, -0.0006047506, + 0.0013436461, -0.0039632795, 0.0022354880, 0.0004379819, 0.0017965110, + -0.0000650131, 0.0005506191, 0.0016524377, 0.0021067569, -0.0015703139, + -0.0024629273, 0.0028642220, -0.0004425542, 0.0032592148, -0.0007440097, + 0.0012853350, -0.0006577610, 0.0027249027, 0.0016019410, -0.0019433186, + 0.0017058707, -0.0016832318, -0.0014243512, -0.0026853476, 0.0002944046, + -0.0018640282, -0.0006138603, 0.0003801051, 0.0000346213, 0.0025591026, + -0.0000629211, 0.0003640011, -0.0007893012, 0.0023211609, 0.0012769573, + -1.4631085396, 0.0015675742, -0.0006545706, 0.0043523549, 0.0015368008, + 0.0003812432, -0.0009198708, 0.0003060365, -0.0019897232, 0.0038736905, + -0.0007198313, 0.0023025475, 0.0016607628, -0.0004194938, 0.0004197485, + 0.0026173787, 0.0017107427, -0.0012140004, -0.0025481377, 0.0046413639, + -0.0001363172, -0.4033468366, 0.0022352196, -0.0003403435, 0.0036071588, + 0.0016270224, -0.0021406163, -0.0009849393, 0.0002175570, 0.0021004761, + 0.0014825091, 0.0002004365, -0.0006557894, -0.0009158761, -0.0003629795, + 0.0003008056, 0.0021692743, 0.0007461947, -0.0013855794, -0.0011994559, + -0.0013726812, 0.0007396517, 0.0003079423, 0.0010989192, -0.0007304940, + -0.0006457798, -0.0018857485, 0.0006940765, 0.0017733183, -0.0001690537, + -0.0019895276, -0.0006574430, 0.0004525641, 0.0020813793, -0.0001657736, + 0.0009358121, -1.1882821321, 0.0022344501, 0.0015442674, 0.0008897928, + -0.0012527083, -0.0029564470, -0.0009679764, -0.0011526851, -0.0006159837, + -0.0002908688, 0.0025679017, 0.0022548097, -0.0013783560, -0.0016612462, + 0.0005415189, 0.0024201334, -0.0005306215, 0.0013103085, -0.0018454334, + 0.0005696025, -0.0009000171, 0.0001509441, 0.0015633196, -0.0000761794, + -0.0003658584, -0.0008324659, -0.0012517953, -0.0007012519, 0.0026514574, + -0.0011675745, 0.0010944107, 0.0013483772, -0.0024244417, -0.0029730164, + -0.0012000273, 0.0015084487, 0.0013365848, -0.0020567770, 0.0002037936, + -0.0009249225, 0.0028069653, 0.0028946067, 0.0020036399, -0.0016422989, + 0.0007142955, -0.0013038935, 0.1437297761, 0.0014501025, 0.0001621235}; + +float unet_input_time_embedding_50_6[] = { + 0.0016346732, -0.0013134587, -0.0004145727, -0.0007539916, 0.0021886793, + -0.0063495766, 0.0025940514, -0.0029781340, -0.0005205239, 0.0020067196, + -0.0001409159, 0.0007509789, -0.0021301126, 0.0041709519, -0.0023861425, + -0.0016665207, -0.0012548715, -0.0012233949, -0.0077296030, 0.0004600645, + 0.0020740326, 0.0051781097, -0.0009431149, -0.0018493384, 0.0004998620, + 0.0016651454, -0.0013282150, -0.0001732484, 0.0006339658, 0.0049560154, + -0.0002655215, -0.0002737856, -0.0021120850, -0.0001002387, -0.0007106015, + -0.0002926425, -0.0038696015, 0.0033156106, 0.0017604716, -0.0002106056, + -0.0015338659, -0.0010332563, -0.0012617153, 0.0000656163, 0.0018040529, + -0.0044767130, 0.0010085888, -0.0004032110, 0.0023825509, -0.0011216954, + -0.0055549303, 0.0007151219, -1.3581782579, 0.0034144907, 0.0001191011, + 0.0031242031, -0.0024100414, -0.0035025706, -0.0020236108, 0.0013516459, + -0.0034335300, 0.0007663869, 0.0041912529, -0.0018295958, 0.0012004767, + 0.0024004523, 0.0005631419, -0.0039638011, -0.0046877861, -0.0005859847, + -0.0034824694, -0.0011428478, 0.0006497472, 0.0001704078, -0.0005860114, + -0.0011054883, 0.0011283411, 0.0014734147, -0.0011834805, 0.0018421418, + -0.0000207643, -0.0014489129, -0.0006963396, 0.0017783670, -0.0006459223, + -0.0026634221, 0.0029677786, -0.0017334777, 0.0028738081, 0.0007310291, + 0.0005431412, -0.0011688573, -0.0028705653, 0.0010370974, 0.0202011019, + 0.0001084558, -0.0006272737, 0.0003847610, -0.0020897065, 0.0027137371, + -0.0006251656, 0.0008292231, 0.0022371379, 2.0798959732, -0.0018174541, + -0.0014966084, -0.0032208753, -0.0019020820, 0.0026352420, -0.0023098276, + -0.0032521980, -0.0004337588, 0.0175211020, -0.0009346455, 0.0007884949, + -0.0013325741, -0.0019030753, 0.0030242398, 0.0037244176, -0.0037799396, + 0.0020471751, -0.0004856649, -1.7212251425, 0.0019744793, 0.0019613616, + -0.0018397938, -0.0009142356, -0.0008046101, -0.0007065618, 0.0009006676, + -0.0030132527, -0.0027177669, 0.0015695768, 0.0046286108, 0.0018355118, + 0.0013980551, 0.0011357332, -0.0002524899, 0.0003456287, -0.0017954139, + -0.0019070187, 0.0025355751, -0.0026300859, 0.0012240305, 0.0014370035, + -0.0006791418, -0.0009857533, 0.0020813877, 0.0031711841, -0.0016241227, + 0.0019125668, -0.0012672817, 0.0022109873, 0.0046579279, 0.0018170713, + -0.0024598003, -0.0004395964, 0.0026880512, 0.0035505192, -0.0007996154, + 0.0016261577, -0.0008110477, -0.0034855027, -0.0025860015, -0.0010399618, + -0.0039474582, -0.0020506501, -0.0041645924, -2.7921173573, -0.0024449863, + -0.0014302477, 0.0035108868, 0.0029085055, -0.0018269653, -0.0001235846, + -0.0012160139, -0.0018195714, 0.0006722407, -0.0000133696, -0.0007789601, + -0.0008485867, -0.0028573843, -0.0027309889, 0.0016011251, 0.0026156297, + -0.0015914761, -0.0032759751, 0.0006301231, 0.0010990887, 0.0001681284, + 0.0048236507, -0.0001411894, -0.0014711275, -0.0006263845, 0.0026928298, + -0.0014788485, -0.0014187255, -0.0006011417, -0.0062742578, -0.0002567046, + 0.0019202875, 0.0003038258, -0.0023918971, -0.0051843305, -0.0002940269, + 0.0008053891, -0.0060291365, 0.0003934940, -0.0037942026, -0.0041708513, + -0.0042910599, 0.0019579506, -0.0005805022, 0.0041813897, -0.0036437435, + -0.0002297414, -0.0009597475, -0.0015466246, -0.0028255139, -0.0011313615, + 0.0004786476, -0.0001764940, 0.0007875364, -0.1930426955, 0.0002432794, + -0.0042797807, 0.0002607396, 0.0000595218, 0.0037144616, 0.0022475654, + 0.0081446543, 0.0027339272, 0.0023594797, 0.0026829182, -0.0013933014, + 0.0023204819, 0.0018095286, -0.0036797905, -0.0000023097, 0.0018363819, + 0.0026769789, -0.0014355637, 0.0012023572, -0.0041170008, -1.3476529121, + -0.0004895141, -0.0030817478, -0.0007339822, -0.0005363198, -0.0044648801, + -0.0009415103, 0.0027355566, -0.0003539943, -0.0008987365, -0.0055799698, + -0.0008498614, 0.0029498474, -0.0015845647, 0.0015652122, -0.0008803973, + -0.0039476566, -0.0004619334, -0.0040240623, -0.0243990012, -0.0032599918, + -0.0016787848, 0.0068383026, 0.0036427041, -0.0042449776, -0.0010366072, + -0.0061907806, 0.0002663319, -0.0014083642, 0.0053622322, 0.0001323021, + 0.0004160360, -0.0024920376, 0.0011347579, -0.0004111845, -0.0027892492, + -0.1210883409, -0.0006599901, -0.0016257315, -0.0015112767, -0.0032884316, + -0.0017451691, -0.0013495004, -0.0010061536, 0.0027169771, -0.0032040570, + 0.0032381099, 0.0024532920, 0.0033968894, -0.0008876051, 0.0011376143, + -0.0023057340, 0.0003161994, -0.0007976298, -0.0004520002, 0.0030495864, + 0.0047443127, -0.0006714815, -0.0018924311, -0.0020690518, 0.0007129156, + 0.0018581101, -0.0008606766, 0.0056537301, -0.0010549165, 0.0037450581, + 0.0032290304, 0.0019065714, 0.0031539572, 0.0011237385, 0.0032885517, + 0.0013122656, 0.0019461244, -0.0010036719, -0.0005059624, 0.0024136645, + 0.0009687359, -0.0011896235, 0.0027158663, 0.0019788351, 0.0038714423, + 0.0002903636, 0.0065556485, -0.0001468342, 0.9473965168, -0.0028804713, + 0.0007457198, 0.0056291637, 0.0005824751, 0.0038764463, -0.0004275949, + -0.0008800104, 0.0019362813, 0.0027544247, -0.0007848176, 0.0017771195, + 0.0017498741, -0.0016802384, -0.0024579938, 2.8858418465, 0.0020254275, + 0.0005731871, 0.0020061214, 0.0018351354, -0.0011379048, -0.0028088149, + -0.0003464092, 0.0013409257, 0.0022300771, 0.0037533361, 0.0025014547, + -0.0008362001, 0.0035756601, 0.0005466464, -0.0024284874, 0.0065109772, + 0.0056996625, 0.0009062053, 0.0027043507, -0.0017092493, -0.0026329742, + -0.0029584470, 0.0024180044, 0.0047317008, -0.0035990998, -1.4073175192, + 0.0012145694, 0.0024980190, -0.0007367264, 0.0000952389, 0.0048267553, + 0.0027038632, 0.0027528533, 0.0002794266, 0.0014955678, 0.0034643672, + 0.0020224624, -1.7527028322, 0.0035404381, -0.0013164864, -0.0023119356, + 0.0024402267, 0.0020837816, 0.0004941439, -0.0009832806, 0.0059959996, + -0.0041095521, 0.0017262773, -0.0030861101, 0.0019545688, 0.0012165597, + -0.0001383838, 0.0005923519, -0.0019007545, 0.0015563224, -0.0007417779, + -0.0010192213, 0.0007737507, 0.0022717130, 0.0017689378, -0.0005098712, + 0.0000224612, -0.0001459973, 0.0009423224, -0.0010914481, 0.0002962090, + -0.0012695207, 0.0025664777, 0.0015502577, 0.0050656497, 0.0042369147, + -0.0022953541, 0.0058918046, -0.0008060327, -0.0029894486, -0.0022494057, + 0.0008156889, 0.0032432827, 0.0005575810, 0.0019470307, -0.0012289733, + 0.0035111248, -0.0020927964, -0.0023506994, -0.0025470501, 0.0014049453, + 0.0021390258, -0.0017412459, -0.0000018475, 0.0031172512, 0.0022157328, + -0.0011380869, 0.0030436767, 0.0005004418, -0.0022241357, -0.0010254129, + 0.0007913257, 0.0007136427, 0.0010236359, 0.0003500080, -0.0000559140, + -0.0027872962, -0.0028630849, 0.0035166931, 0.0015093908, 0.0273171924, + 0.0009808638, -0.0014119856, -0.0006838844, 0.0017411085, -0.0020417091, + 0.0061713876, 0.0020149956, 0.0019477932, -0.0000763116, -0.0022155687, + -0.0028840355, -0.0003094580, 0.0005073913, -0.0030167163, 0.0049951011, + 0.0019619232, 0.0015647099, -0.0017193863, 0.0001922069, 0.0014439006, + 0.0004417489, 0.0015449061, 0.0011458024, 0.0029208071, -0.0016239202, + -0.0053832214, -0.0024933275, -0.0016410140, -0.0016937666, -1.3480609655, + -0.0042150188, -0.0000705272, 0.0008994173, 0.0037297846, 0.0065298374, + -0.0024735173, -0.0007568190, 0.0000107354, -0.0007857732, -0.0025401276, + -0.0007722038, 2.2042706013, -0.0017384463, 0.0011408706, -0.0002736193, + -0.3522128463, -0.0005490715, -0.0023386776, -0.0000049407, -0.0013252059, + -0.0021167700, 0.0024189698, -0.0025372216, 0.0002769842, 0.0010219626, + -0.0026851119, 0.0024603861, 0.0013204914, -0.0007291934, -0.0026458721, + 0.0040569566, -0.0033852654, -1.4551612139, -0.0025835908, -0.0045496034, + -0.0009716777, -0.0005856333, -0.0013798391, -0.0000552954, -0.0025024470, + 0.0030654767, -0.0012347563, 0.0029873960, 0.0019616992, 0.0026358170, + 0.0008034040, -0.0024425869, 0.0036069942, -0.0014870428, -0.0046387650, + 0.0017980847, -0.0019793208, -0.0021479451, -0.0012039796, -0.0010296481, + 0.0010606613, 0.0014191752, -0.0006743821, -0.0022754092, 0.0005812626, + -0.0039451485, -0.0022922521, -0.0022140527, 0.0005175523, 0.0008382737, + -0.0008039107, 0.0008015437, 0.0029284945, 0.0004774947, -0.0030613048, + -1.6032841206, -0.0026775915, 0.0008099605, -0.0047662072, 0.0007161382, + 0.0014188603, -0.0025737179, -0.0025907727, -0.0019188267, -0.0021129902, + 0.0005052881, 0.0036204206, -0.0044673397, 0.0007813638, -0.0023832330, + 0.0019038823, -0.0048754727, 0.0001119794, -0.0023526838, -0.0017604101, + -0.0016203136, 0.0028887624, 0.0001431336, -0.0037461051, 0.0013145697, + 0.0007604090, -0.0021974323, -0.0023366720, 0.0013612905, 0.0013612311, + 0.0032295994, -0.0011069612, -0.0031774682, -0.0014051361, -0.0022061600, + -0.0004191014, -0.0016321694, 0.0015976387, 0.0025706328, 0.0028264984, + -0.0001695334, -0.0003213645, 0.0023763804, -0.0019594962, -0.0030991328, + 0.0025790036, 0.0016280677, 0.0009866008, -0.0011000563, 0.0006256676, + 0.0014050915, 0.0024594599, 0.0003959900, -0.0040351599, 0.0020360614, + -0.0002608078, 0.0014150193, 0.0001608443, 0.0001042270, 0.0027224023, + 0.0000863061, -0.0045149866, 0.0017951080, -0.0001626830, -0.0005980283, + 0.0010834197, 0.0003673143, 0.0015919600, -0.0068300809, -0.0049766451, + 0.0002233484, -0.0006842950, 0.0009559519, -0.0015546223, -0.0001516663, + 0.0008715708, -0.0020865288, -0.0010882898, 0.0015890412, -0.0002223155, + 0.0014173472, -0.0013562918, 0.0013948438, -0.0021526774, 0.0015486726, + -0.0009192610, -0.0002889771, -0.0038748602, -0.0000032280, 0.0025527873, + 0.0008575056, 0.0010970787, -0.0011335043, 0.0033966729, -0.0019361661, + -0.0004749839, 0.0037280917, 0.0012102842, 0.0121057844, -0.0000287248, + -0.0014694134, -0.0017188760, 0.0004254684, 0.0014429572, -0.0009026942, + -0.0004498812, -0.0023347838, 0.0027887486, -0.0032872937, -0.0034356494, + -0.0006535049, 0.0035223425, -0.0024114442, -0.0000105967, -0.0021625371, + -0.0000758031, 0.0030474353, 0.0032586791, 0.0002750892, -0.0024497495, + -0.0004088429, -0.0039896918, 0.0005249863, -0.0027467643, -0.0005189553, + -0.0023131454, 0.0034080963, 0.0030175326, 0.0043638228, -0.0012378364, + -0.0007728811, 0.0031100255, 0.0015660329, 0.0047389697, 0.0007005129, + 0.0032100561, -0.0031034602, 0.0012082958, 0.0011575581, -0.0033741975, + 0.0025023841, 0.0020538662, 0.0001623423, 0.0027270655, -0.0004245886, + -0.0007802537, 0.0040441784, 0.0014386792, -0.0012884291, -0.0000419505, + -0.0007487712, 0.0003484483, -0.0014040621, -0.0009383226, 0.0018727952, + -0.0020734104, -0.0028062034, -0.0008560731, -0.0006602998, 0.0013902730, + 0.0005528294, -0.0007342147, -0.0004871375, -0.0014880728, 0.0020001954, + -0.0010884337, 0.0001150928, -0.0061597517, -0.0027805867, 0.0006680172, + 0.0011243941, -0.0005787364, -0.0008135700, 0.0007084477, -0.0021545261, + -0.0004943185, -0.0006023971, 0.0013084845, -0.0010954468, -0.0038049449, + -0.0007908167, -0.0030326005, 0.0011728432, -0.0007949392, -0.0003479812, + 4.0767550468, -0.0011782446, -0.0031455802, -0.0001137094, -0.0001799362, + 0.0000781668, -0.0025148103, 0.0002368349, 0.0025720452, -0.0006880183, + 0.0001612082, -0.0012864048, 0.0012396454, -0.0067649465, -0.0046614129, + 0.0010221095, 0.0000602200, 0.0014867717, -0.0013499372, -0.0001480787, + 0.0002907887, -0.0016645244, -0.0003259514, -0.0026112462, -1.4486924410, + -0.0002333052, 0.0023369153, 0.0010040738, -0.0024848995, 0.0052142828, + -0.0029556081, -0.0051353439, -0.0026118178, 0.0014131977, 0.0004004776, + -0.0017015552, 0.0053672837, 0.0036048545, 0.0009854229, -0.0002015308, + -0.0004039276, 0.0024172124, 0.0008966792, 0.0027895975, 0.0019272724, + -0.0006709704, -0.0002456306, -0.0005535746, -0.0001099049, -0.0003451742, + -0.0034931307, -2.0498700142, -0.0017018085, -0.0019369936, 0.0043530739, + -0.0006775096, -0.0002035482, 0.0014432811, -0.0021560686, 0.0010133919, + 0.0005439413, 0.0077030035, -0.0027239842, -1.4659562111, 0.0005528941, + -0.0009024882, 0.0019647840, 0.0038359561, -0.0010870108, 0.0004617209, + -0.0012208289, -0.0008659003, -0.0015203620, -0.0016357319, 0.0014821069, + -0.0014602892, 0.0019681246, 0.0016501726, -0.0001102462, 0.0012631663, + 0.0009854361, 0.0024534464, -0.0016448097, 0.0031005100, 0.0022910119, + 0.0017741462, 0.0015033473, -0.0036056940, 0.0028744165, 0.9784306288, + 0.0003798520, 0.0013607137, -0.0001274439, 0.0012474519, -0.0020995005, + -0.0025088016, 0.0044359402, -0.0016456158, -0.0065563573, -0.0035312390, + 0.0016872354, 0.0032541472, 0.0005244487, 0.0049681440, 0.0014737699, + -0.0010363678, -0.0020228317, 0.6052277684, 0.0000995980, 0.0012894245, + -0.0001674397, -0.0011699605, 0.0008267756, -0.0007029269, -0.0018653499, + -0.0015110094, -0.0020184566, -0.0024281400, 0.0028706552, -0.0003622649, + -0.0097812442, -0.0023552417, 0.0007774355, -0.0012134644, 0.0014936617, + -0.0039002732, -0.0024871645, -0.0024652071, -0.0027926392, 0.0006224569, + 0.0006349729, -0.0017482685, -0.0065501919, 0.0017501551, 0.0017203981, + -0.0019528288, 0.0187258683, -0.0002469798, 0.0013229388, -0.0031128661, + -0.0015278293, -0.0030087554, -0.0024439851, 0.0036699791, -0.0010822932, + 0.4040736854, 0.0025884942, 0.0083757536, -0.0069912821, -0.0022780814, + 0.0015838670, 0.0031846161, 0.0019571399, 0.0001940450, -0.0002625911, + 0.0007408771, 0.0033448427, -0.0012662127, -0.0009063804, 0.0012029014, + 0.0001106972, -0.0034625682, -0.0029267278, -0.0032497533, 0.0026453901, + -0.0013972521, 0.0005746158, 0.0027722418, -0.0059218248, 0.0025891410, + -0.0002297070, -0.0001039365, 0.0011612492, -0.0041727838, -0.0039148736, + 0.0025491265, -0.0006615337, -0.0007350715, -0.0020256399, -0.0000895169, + -0.0023426956, 0.0037409151, 0.0000536607, -0.0012330641, -0.0005264636, + -0.0042970916, -0.0015508756, -0.0025272509, -0.0016705780, 0.0022090119, + 0.0001581404, 0.0028830185, -0.0005023042, 0.0033200402, 0.0002588848, + 0.0021263980, 0.0017642163, -0.0026140888, -0.0008775201, 1.8661375046, + -0.0019253695, 0.0019079139, -0.0022998415, -0.0015801501, -0.0016478207, + 0.0036798883, 0.0001744876, 0.0020819730, 0.0017728987, 0.0006444803, + 0.0024138247, -0.0012366702, -0.0086690392, -0.0032572916, -0.0023938841, + -0.0034852489, -0.0004198564, 0.0057050604, 0.0010840092, 0.0013529377, + 0.0018911483, -0.0021290011, -0.0036961229, 0.0021155118, -0.0007853181, + 0.0042866226, -0.0004898005, 0.0016453178, -0.0015894566, -0.0019380134, + -0.0078605646, -0.0013825083, -0.0022767326, -0.0018343995, 0.0024114894, + -0.0037723372, -0.0020981715, 0.0004132305, 0.0018785875, -0.0020734789, + 0.0012688772, 0.0005727601, 0.0016964870, -0.0032782606, -0.0043052798, + 0.0026033625, -0.0003475565, 0.0008646087, -0.0005362728, -0.0003708815, + -0.0038438281, -0.0009996081, 0.0031931917, 0.0003774925, -0.0026081372, + 3.7499325275, -0.0018608291, 0.0028001219, 0.0002109974, 0.0007075141, + 0.0010476902, -0.0009786985, -0.0034345342, -0.0034138281, -0.0014927203, + 0.0020713739, -0.0012758514, -0.0005020355, -0.0007448597, -0.0038651167, + 0.0016566627, 0.0024054041, 0.0002149679, 0.0031076253, -0.0003414429, + -0.0032515358, -0.0020400328, 0.0036098156, 0.0026939791, 0.0019903895, + 0.0006663133, 0.0011955020, 0.0023347477, 0.0007892724, -0.0003295643, + 0.0005353810, -0.0039050307, -0.0022116313, -0.0033248749, 0.0012736283, + 0.0002899504, 0.0018846308, 0.0017519644, 0.0026815168, -0.0005655135, + 0.0007828141, 0.0006307475, 0.0030636499, -0.0029087090, 0.0026913860, + -0.0008771787, 0.0004546442, 0.0029688757, 0.0012104999, 0.0015729275, + 0.0003355215, 0.0026808362, -0.0015107426, -1.5197296143, 0.0029972710, + 0.7915129066, 0.0002702063, 0.0020538704, 0.0027321901, -1.9391977787, + 0.0003674082, -0.0009998539, -0.0003442829, 0.0020859004, 0.0008619232, + -0.0019239760, 0.0012637367, 0.0000732364, -1.6289066076, 0.0009213197, + -0.0008074252, 0.0027917780, -0.0001191167, -0.1587171406, -0.0004968708, + 0.0012611309, 0.0040940186, 0.0041716071, -0.0015753771, 0.0016206098, + 0.0027093785, 0.0038647484, -0.0016021869, 0.0033588777, -0.0020138728, + 0.0006994901, -0.0015649477, 0.0009859637, -0.0030810586, 0.0038684458, + 0.0004147119, -0.0025231715, 0.0027665673, 0.0030309879, -0.0021509316, + -0.0001493624, 0.0009867661, 0.0050567472, 0.0016614287, 0.0025117267, + 0.0037045532, -0.0024596574, 0.0044851452, -0.0033049369, -0.0000290424, + 0.0034513613, -0.0027966681, 0.0027737718, 0.0026259210, 0.0028716410, + -0.0011195205, -0.0014973078, 0.0005062905, -0.0029869825, 0.0006245093, + -0.0010257571, -0.0013771640, -0.0039460566, 0.0034762933, -0.0045215860, + -0.0006685783, 0.0030945605, -0.0005999915, 0.0062893168, 0.0000546249, + -0.0093031432, 0.0022834425, 0.0091884313, -0.0007619797, 0.0028996919, + -0.0031341291, -0.0007453981, 0.0051802876, -0.0040148296, 0.0046022041, + 0.0018006992, 0.0050246431, -0.0009044157, 0.0028513614, 0.0007639169, + 0.0007470259, -0.0035999492, 0.0034969202, 0.0031055976, -0.0020722360, + -0.0017035170, -0.0011124713, 0.0000475330, -0.0000138208, -0.0005232142, + 0.0010038046, -0.0027476279, 0.0000933270, -0.0039787260, 0.0000741696, + 0.0007884069, 0.0015425140, 0.0025592046, 0.0027248980, 0.0028617030, + 0.0016005915, 0.0050435653, 0.0011645379, 0.0010065467, -0.0016401451, + 0.0004922152, -0.0007871101, 0.0021314081, 0.0001699519, 0.0025600898, + 0.0034360725, -0.0000218585, 0.0032928404, -0.0011353102, 0.0012677391, + -0.0001639975, -0.0013285982, 0.0013171888, 0.0007212892, 0.0049145017, + -0.0010388093, -0.0009682213, 0.0012676709, -0.0009395718, 0.0011191783, + -1.4879109859, 0.0047991909, -0.0035393555, 0.0019805741, 0.0018952575, + -0.0009225059, 0.0005883763, -0.0009458678, 0.0031248946, -0.0006808755, + -0.0024766997, -0.0017765838, 0.0014166837, -0.0017305380, 0.0032364442, + 0.0026959293, -0.0012108209, 0.0033782804, -0.0093251076, 0.0002933987, + 0.0003499840, -0.3361440301, 0.0026405116, 0.0039511127, 0.0034577937, + 0.0006494690, -0.0045000669, 0.0012115031, -0.0000461023, -0.0005440768, + 0.0014420114, 0.0015619267, 0.0011901218, 0.0006413967, -0.0006726610, + -0.0001390926, 0.0007949020, 0.0025957753, 0.0014662864, -0.0031059068, + -0.0000365825, 0.0013172692, 0.0003899360, -0.0022635586, -0.0024054013, + -0.0003118131, -0.0005142135, -0.0054676365, 0.0007756352, -0.0018358077, + -0.0020443490, 0.0014375672, 0.0028629946, 0.0049365098, -0.0046774773, + -0.0003556641, -1.1845744848, -0.0030442756, -0.0014371243, 0.0003653893, + 0.0013577666, 0.0006548383, -0.0007475007, -0.0005544603, -0.0009613745, + -0.0007043327, 0.0005765507, 0.0031819469, 0.0019376720, -0.0015761326, + -0.0024675834, 0.0034274464, 0.0010274267, 0.0041017621, 0.0025025085, + -0.0014447924, -0.0046426468, -0.0019289749, 0.0026866230, -0.0000437396, + 0.0030219466, -0.0027039074, -0.0007952983, -0.0013195137, 0.0013191055, + -0.0009193249, 0.0001540952, 0.0007405998, 0.0017550878, -0.0037930049, + -0.0046446430, -0.0003911550, 0.0019532396, -0.0014832314, 0.0009192487, + -0.0022842623, -0.0012706481, 0.0015629744, -0.0001411065, -0.0023376988, + -0.0005289577, 0.0000037076, 0.1959726810, 0.0019560072, -0.0012257696}; + +float unet_input_time_embedding_50_7[] = { + 0.0030605616, 0.0034322231, -0.0006879130, 0.0001376473, 0.0032541160, + -0.0060332576, 0.0008538864, -0.0036818134, -0.0033349118, 0.0002081913, + 0.0005886958, 0.0010296055, -0.0022880975, 0.0044822865, -0.0022394555, + -0.0009682635, -0.0004629456, -0.0005592986, -0.0093976511, 0.0005944283, + 0.0002696705, 0.0026958445, -0.0022675265, 0.0103124827, 0.0010567862, + 0.0003089339, 0.0004197322, 0.0006683199, 0.0005391428, 0.0049731294, + 0.0014862614, -0.0017932765, -0.0045733955, 0.0001247842, -0.0027255123, + 0.0006645224, -0.0044675088, 0.0030310361, 0.0010946281, 0.0022918098, + -0.0003886521, -0.0021063802, 0.0007518888, 0.0023186207, 0.0024990169, + -0.0001336767, 0.0015185028, 0.0009534950, 0.0014334610, 0.0005664813, + -0.0047204709, -0.0012209804, -1.3052521944, 0.0027463879, -0.0007192568, + 0.0015675767, -0.0019836717, -0.0027327877, -0.0017213090, 0.0006864315, + -0.0033023974, -0.0007378295, 0.0050699054, -0.0049321367, -0.0010854434, + 0.0041815042, -0.0014538737, -0.0018658295, -0.0051732138, 0.0019822305, + -0.0037410040, -0.0022228644, -0.0008991195, -0.0005332227, 0.0021231109, + -0.0005571898, -0.0021331524, 0.0038533388, -0.0005265852, 0.0008307479, + -0.0016276925, -0.0033789524, 0.0000969926, -0.0002548518, -0.0010246772, + -0.0019772451, 0.0027631167, -0.0003833021, 0.0031797020, 0.0015742336, + 0.0021549214, 0.0004509133, -0.0012785466, 0.0042561721, 0.0169412326, + 0.0004468351, 0.0015133312, 0.0012571244, 0.0004906466, 0.0021018283, + -0.0007355665, 0.0003402414, 0.0006784466, 1.9383404255, -0.0020374586, + 0.0001232671, -0.0015963144, 0.0015983051, 0.0010731569, -0.0020225341, + 0.0005283775, -0.0013492545, 0.0790022835, 0.0010679886, -0.0009544529, + -0.0016580825, 0.0008524419, 0.0002426140, 0.0023929952, -0.0035760005, + 0.0029696035, 0.0008342408, -1.7745697498, 0.0016215192, 0.0008844566, + -0.0035201157, 0.0011844169, 0.0020188061, 0.0008594235, 0.0013718032, + -0.0032127625, -0.0008316487, -0.0008293500, 0.0008422555, 0.0041277781, + -0.0014776157, 0.0030247925, 0.0000797203, 0.0016136803, -0.0032274579, + -0.0014699891, 0.0026401491, -0.0017442212, -0.0005940669, -0.0010636572, + 0.0005926834, -0.0015680850, 0.0024375292, 0.0010732028, -0.0024142736, + 0.0039282972, 0.0008668477, 0.0027945000, 0.0024934988, -0.0012140502, + -0.0003566225, -0.0008473564, 0.0009949952, 0.0041119494, 0.0010812278, + 0.0011679274, -0.0008854439, -0.0024751322, -0.0038719019, 0.0024648174, + -0.0007316216, -0.0029597229, -0.0043447176, -2.5662989616, -0.0012160280, + -0.0038996674, 0.0030327551, 0.0002322532, -0.0020687031, 0.0010652915, + -0.0002245563, -0.0013207513, 0.0000557685, 0.0018050415, -0.0007451130, + -0.0001946664, -0.0026303707, -0.0014787125, 0.0021572271, 0.0006209025, + -0.0026687593, -0.0040565329, -0.0007006736, -0.0000019879, 0.0021388619, + 0.0013456265, -0.0001657936, 0.0010970206, -0.0010738971, 0.0016440377, + 0.0001685419, -0.0032228595, -0.0016384311, -0.0047950028, 0.0013279892, + 0.0002279729, -0.0001195758, -0.0001024497, -0.0037230463, -0.0012063961, + -0.0010919161, -0.0043461742, 0.0009328341, -0.0021846239, -0.0029448527, + -0.0017672689, 0.0005595111, 0.0005816040, -0.0004921064, -0.0027440726, + 0.0002989266, 0.0000816174, -0.0003894088, -0.0037514032, -0.0012927951, + -0.0014689788, 0.0001586411, 0.0014496825, -0.1866702288, -0.0011188912, + -0.0019052695, -0.0013672234, 0.0005463595, 0.0065933028, 0.0045065647, + 0.0058745304, 0.0045135198, -0.0005421154, 0.0048799976, -0.0006086146, + 0.0041320124, 0.0014425204, -0.0017240653, -0.0022193845, 0.0014626216, + -0.0004519431, -0.0005439266, -0.0013843745, -0.0013694316, -1.3691656590, + -0.0012284175, -0.0003994773, -0.0003569609, -0.0012243483, -0.0011764881, + 0.0000038045, 0.0048628016, -0.0001432919, -0.0030988967, -0.0064204792, + -0.0029408073, 0.0011455705, 0.0002257136, -0.0011554288, 0.0005518334, + -0.0012660166, -0.0009130214, -0.0019584920, -0.0174369179, -0.0024213740, + 0.0013968782, 0.0042948867, 0.0005159709, -0.0026043048, -0.0026243194, + -0.0048047863, 0.0013334190, -0.0010728012, 0.0005415799, 0.0000839571, + -0.0005366660, -0.0021262588, 0.0006444370, -0.0009610662, -0.0028556944, + -0.0976778716, -0.0009460738, -0.0020794179, 0.0009917100, -0.0042595458, + -0.0024352977, -0.0025025213, -0.0010260458, -0.0000077672, -0.0028414233, + 0.0028455872, 0.0024678300, 0.0015942270, 0.0002077494, -0.0020061508, + -0.0026801741, 0.0018773568, -0.0017818878, -0.0012271903, -0.0003213403, + 0.0023272308, -0.0023792156, 0.0005969715, 0.0000756127, -0.0005795497, + 0.0016651996, -0.0014654691, 0.0069339275, -0.0017601326, 0.0055657378, + 0.0037191324, 0.0024012662, 0.0022770294, 0.0014790362, 0.0040152525, + -0.0000063670, 0.0009408860, 0.0004425771, -0.0033305008, 0.0000827406, + -0.0002117183, 0.0004103999, 0.0020104751, 0.0021520443, 0.0040316144, + 0.0019912929, 0.0035177730, 0.0024951342, 0.7183007002, -0.0025379658, + 0.0006317627, 0.0025581159, -0.0005075895, 0.0029761465, -0.0011179233, + -0.0003365227, 0.0010793733, 0.0033124154, 0.0005622231, 0.0020780931, + -0.0015841685, 0.0000756655, -0.0026801208, 2.8173713684, -0.0006806159, + 0.0012811553, 0.0010798561, 0.0005720888, -0.0003611092, -0.0013745920, + 0.0010829084, 0.0011730697, 0.0000069458, 0.0001140404, 0.0017713216, + -0.0025897743, 0.0013940197, 0.0008008062, 0.0002852152, 0.0076190112, + 0.0046232054, -0.0001300885, 0.0006974842, -0.0031584953, -0.0012060168, + -0.0018198608, -0.0009221844, 0.0027954485, -0.0018209657, -1.3844072819, + -0.0000872053, 0.0004220349, -0.0023030974, -0.0017887009, 0.0039620874, + -0.0009494749, 0.0029305161, -0.0013787316, -0.0000886119, 0.0019250084, + 0.0011302173, -1.7172244787, 0.0039146547, -0.0023395126, -0.0025758855, + 0.0000629488, 0.0004320894, -0.0000058385, -0.0012462088, 0.0044396413, + -0.0017530108, 0.0020859777, -0.0012171413, 0.0003350226, 0.0001753652, + -0.0000439598, 0.0000627441, -0.0021139369, 0.0015587439, 0.0005362108, + 0.0015291597, 0.0020890324, 0.0024904481, 0.0004458060, 0.0015584761, + 0.0006288043, -0.0000672068, 0.0029042298, -0.0003513484, -0.0002788510, + -0.0011691097, 0.0030004694, 0.0009676279, 0.0035206245, 0.0040182360, + -0.0011289062, 0.0013992852, 0.0015385794, -0.0021795491, -0.0017200643, + 0.0027513516, -0.0008759971, -0.0027371915, -0.0004418639, 0.0019711601, + 0.0005861218, -0.0007304521, -0.0020001570, -0.0016488421, -0.0008358411, + 0.0026206016, -0.0012593479, -0.0000654345, -0.0007611690, -0.0000498731, + 0.0012415475, 0.0028570658, -0.0025477360, -0.0015897555, -0.0010866493, + 0.0006221631, 0.0027194843, -0.0001738708, -0.0017582809, 0.0019283860, + -0.0008941139, -0.0019069314, 0.0019259290, -0.0003921860, 0.0231814086, + 0.0001638127, -0.0013790764, 0.0001516209, -0.0011403831, -0.0022395640, + 0.0049202107, 0.0028271088, -0.0024349587, -0.0000887290, -0.0011929176, + 0.0001684409, -0.0011189189, 0.0001335817, -0.0039064349, 0.0017655035, + 0.0018015495, 0.0007230011, -0.0013445765, -0.0019978327, 0.0009187222, + -0.0014035958, -0.0000048277, 0.0019090157, 0.0004517555, -0.0014434587, + 0.0093131866, -0.0010035597, 0.0002879860, -0.0027227513, -1.3269068003, + -0.0034867176, -0.0004037474, 0.0009722207, 0.0015478798, 0.0034023311, + -0.0013474290, 0.0011957565, -0.0022108471, 0.0009866226, -0.0002952686, + 0.0005561244, 2.0865523815, -0.0031467495, 0.0013455101, -0.0016081114, + -0.1185616106, -0.0013359571, -0.0025532441, -0.0000346079, -0.0024496736, + -0.0040691537, -0.0010125712, -0.0031483797, 0.0006202064, 0.0006826781, + -0.0061537158, 0.0005179713, -0.0003443729, -0.0030332371, -0.0027608112, + 0.0048897155, 0.0008064783, -1.4741061926, -0.0038858489, -0.0039900206, + -0.0014972494, -0.0018399293, -0.0025342898, -0.0005185488, -0.0026650000, + 0.0009257444, -0.0031019575, 0.0017159207, 0.0009613861, 0.0018223030, + -0.0003942880, -0.0043208222, 0.0019705319, -0.0011276887, -0.0058420440, + 0.0004457615, -0.0029803212, -0.0008511995, -0.0009923696, 0.0003022102, + 0.0011998088, 0.0012002562, -0.0031089617, 0.0006598365, -0.0015016189, + -0.0034078257, 0.0012348117, -0.0012818351, 0.0012308476, 0.0006564534, + -0.0023156148, -0.0005917409, 0.0031723129, 0.0015094439, -0.0019121766, + -1.6170648336, -0.0020075515, -0.0002383627, -0.0030445214, -0.0002859929, + 0.0028998549, -0.0011948538, -0.0015446628, -0.0026897441, -0.0005582981, + -0.0013189958, 0.0041456688, -0.0049139825, 0.0011249352, 0.0005579051, + -0.0019968962, -0.0034242533, 0.0008752169, -0.0032055182, 0.0010983627, + 0.0004073227, 0.0029301280, 0.0007287697, -0.0051093483, -0.0013318132, + -0.0003499025, -0.0010499703, -0.0018101963, -0.0018625329, 0.0006022311, + 0.0044513177, -0.0007391865, -0.0023782258, -0.0029478823, -0.0019665549, + 0.0027311074, -0.0002402160, 0.0011820714, -0.0005097799, -0.0015090406, + -0.0013077977, 0.0000404357, 0.0038125897, -0.0041090045, -0.0017784615, + 0.0008675298, -0.0012161782, 0.0003002654, -0.0019849581, 0.0007367954, + 0.0034742556, 0.0003320025, 0.0015690355, -0.0028024486, 0.0013991746, + 0.0000091775, 0.0010987375, 0.0004311290, 0.0003234883, 0.0023767503, + -0.0002835556, -0.0016302699, 0.0038746423, -0.0003681569, -0.0003848048, + 0.0018704906, -0.0002825622, 0.0005230383, -0.0047666612, -0.0013335797, + 0.0001936820, -0.0032831030, -0.0016653114, -0.0019216046, -0.0006689955, + -0.0011053840, -0.0014827333, -0.0007651036, 0.0058572772, -0.0007265192, + -0.0016560638, -0.0026766027, 0.0022825310, 0.0005600501, -0.0002264478, + -0.0018883748, 0.0008731533, -0.0030552517, -0.0020839768, 0.0001310618, + 0.0023337691, 0.0009752882, 0.0022018112, 0.0052184258, -0.0027290839, + -0.0009944887, 0.0005422402, 0.0007238395, 0.0115917753, 0.0007891124, + -0.0010789969, -0.0040046917, -0.0005754263, 0.0025398792, 0.0007729987, + -0.0012716970, 0.0004461762, -0.0001399927, -0.0044419011, -0.0047645182, + -0.0000322042, 0.0013074628, -0.0026400764, 0.0006879951, -0.0004476816, + -0.0013126461, 0.0015803850, 0.0011517736, 0.0022651113, -0.0006013032, + 0.0001884338, -0.0034763676, 0.0029344705, -0.0023166549, -0.0004549176, + -0.0016682530, 0.0013819445, 0.0011417074, 0.0043426147, 0.0010330644, + 0.0006788333, 0.0027180188, -0.0000510793, 0.0025952328, 0.0002075499, + 0.0032201647, -0.0016661035, 0.0038830207, -0.0007033027, -0.0032122629, + 0.0033030668, 0.0014619809, 0.0016458489, 0.0002943438, -0.0001414227, + -0.0005207579, 0.0047076982, 0.0023796130, -0.0015051703, 0.0040677655, + -0.0025054701, 0.0016781860, 0.0005561230, 0.0001346504, 0.0009031980, + -0.0041748290, -0.0002020281, -0.0011038459, 0.0003125293, 0.0006916967, + -0.0015758686, -0.0047925124, -0.0010018637, -0.0008699810, 0.0015436155, + -0.0000761095, 0.0006556343, -0.0035626246, -0.0024609196, 0.0007007844, + 0.0026457598, 0.0017968346, -0.0010843111, 0.0012077130, -0.0002984002, + -0.0003476990, 0.0014577480, 0.0012798640, 0.0000691093, -0.0036303825, + -0.0014663832, -0.0057714712, 0.0005017773, -0.0021085651, 0.0014355010, + 3.9631340504, -0.0000139405, 0.0001778463, -0.0022260244, -0.0024314034, + -0.0026170826, 0.0020183371, -0.0024276851, 0.0026708278, 0.0023831259, + 0.0010113604, -0.0004602928, 0.0032199686, -0.0042639459, -0.0023307540, + 0.0017616891, -0.0001782153, 0.0009055580, -0.0008730553, 0.0029388254, + -0.0003906880, -0.0034383968, 0.0004213745, -0.0001863132, -1.4631928205, + 0.0005513192, 0.0020665710, -0.0009228494, -0.0038794433, 0.0026312214, + -0.0026274724, -0.0006198188, -0.0006635814, 0.0016007903, 0.0001013470, + -0.0007172311, 0.0041787634, 0.0040145768, -0.0006480569, 0.0009336569, + 0.0007431190, -0.0013089068, 0.0014174525, 0.0012908997, 0.0010530679, + -0.0011755414, 0.0000627154, 0.0011774076, -0.0012294524, 0.0018696063, + -0.0050942916, -1.8429486752, 0.0030478509, -0.0018848483, 0.0048726513, + 0.0010015677, 0.0002823581, 0.0011507461, -0.0003621727, -0.0003953002, + -0.0006264462, 0.0024822699, -0.0007687338, -1.1723819971, -0.0006201407, + -0.0003834845, 0.0041607386, 0.0016595967, 0.0007866351, 0.0005773809, + -0.0011462281, -0.0016664155, 0.0024241542, -0.0008168507, 0.0004293747, + -0.0003594324, -0.0000668785, 0.0021980335, 0.0010193065, -0.0004078071, + 0.0011853827, 0.0022831941, -0.0026030177, 0.0016063533, 0.0006558413, + 0.0000520824, 0.0006377388, -0.0038460423, 0.0015654762, 1.1397532225, + 0.0027205879, 0.0018148192, -0.0012697567, -0.0004747168, -0.0025509205, + -0.0028839519, 0.0008185497, -0.0008113175, -0.0041794265, -0.0027919477, + 0.0010267172, 0.0015656594, 0.0014879615, 0.0030072108, 0.0013736360, + -0.0013390663, -0.0011158474, 0.5825784206, -0.0006810757, 0.0004852721, + -0.0016372353, -0.0027638706, 0.0008591055, -0.0007059416, -0.0004720187, + -0.0017817933, -0.0013134528, -0.0028209803, 0.0021903967, 0.0015744502, + -0.0018614306, -0.0021598227, -0.0001939218, 0.0010755626, 0.0036272518, + -0.0007667863, -0.0006356728, -0.0005815802, -0.0032023489, 0.0004284778, + 0.0023524063, 0.0010060878, -0.0039306544, -0.0006651545, 0.0017454660, + -0.0007731719, 0.0192768089, 0.0016244273, 0.0019458060, -0.0008562705, + -0.0000919758, -0.0039739478, -0.0007206379, 0.0018032697, -0.0000348724, + 0.3790844381, 0.0027384227, 0.0060373368, -0.0042565707, -0.0033979707, + 0.0023859127, 0.0017221938, 0.0015404494, 0.0016531239, 0.0013234732, + -0.0005536845, 0.0037505063, -0.0015898817, -0.0000971598, -0.0003856602, + 0.0010790157, -0.0031282494, -0.0037314817, -0.0039415518, 0.0026623625, + 0.0005275663, 0.0009393841, 0.0029453561, -0.0032027410, 0.0021663550, + -0.0012491262, 0.0002547605, 0.0031114994, -0.0030030520, -0.0023371982, + 0.0024203171, -0.0014334073, -0.0040803393, 0.0002898753, 0.0001501390, + -0.0040221279, 0.0010517901, -0.0003524942, -0.0022984887, -0.0025963625, + -0.0025201263, -0.0022390578, -0.0054425374, -0.0023091692, 0.0009575621, + -0.0002730582, -0.0006473749, 0.0024622655, 0.0006379931, -0.0007228019, + -0.0010753213, 0.0075092698, -0.0048424737, 0.0010097418, 1.8426409960, + -0.0014767961, -0.0002801074, -0.0026867278, 0.0010980412, -0.0032452270, + 0.0052587464, -0.0005611511, 0.0043386621, 0.0007794579, -0.0022096075, + 0.0006236088, 0.0006359494, -0.0059769955, -0.0022981928, -0.0036755032, + -0.0026330869, -0.0013745738, 0.0027920529, 0.0027802275, -0.0022562176, + 0.0018229112, -0.0014672088, -0.0038774905, 0.0021231491, 0.0015843008, + 0.0015899949, 0.0007459454, 0.0004303590, -0.0000066319, -0.0040673967, + -0.0026453889, -0.0026329150, -0.0002320772, -0.0003313269, 0.0025108820, + -0.0028293359, -0.0017115312, -0.0017528568, 0.0007185573, -0.0022504674, + 0.0011627548, 0.0011864924, 0.0016892753, -0.0034283162, -0.0026347814, + -0.0002588171, -0.0011557657, -0.0002117399, 0.0004224558, 0.0004901551, + -0.0005548979, -0.0004248200, 0.0049230098, -0.0004379977, -0.0029392019, + 3.6260364056, 0.0005186535, 0.0023300741, -0.0017898951, 0.0024581007, + 0.0002805970, -0.0025141966, -0.0029123956, -0.0017055310, 0.0004944053, + 0.0027274785, -0.0006284462, -0.0010450785, -0.0007683933, -0.0001955050, + 0.0003946945, 0.0040587289, 0.0001962371, 0.0026380385, -0.0020565814, + -0.0004095268, -0.0008333934, 0.0033880174, 0.0005947175, 0.0000905325, + 0.0007613976, 0.0004112832, 0.0002742189, -0.0002757458, -0.0019047712, + 0.0028077241, -0.0017802177, -0.0019245226, -0.0030356005, 0.0015903432, + -0.0016346948, -0.0004817407, -0.0010175449, 0.0028582986, -0.0023582648, + 0.0029870498, -0.0011716504, 0.0024835626, -0.0028418344, -0.0002455825, + 0.0012939763, -0.0000561881, 0.0013263467, -0.0000276553, -0.0008234195, + -0.0005993601, 0.0008559898, 0.0010329415, -1.5183973312, -0.0005232261, + 0.7171282768, -0.0034941055, 0.0013532639, 0.0040083621, -1.9413586855, + 0.0000089202, -0.0023342641, -0.0000887820, 0.0017455900, 0.0010038679, + -0.0011620387, 0.0008908352, 0.0017872620, -1.6569312811, 0.0019282722, + -0.0007771312, 0.0011657469, -0.0003379245, -0.1769413948, -0.0014204141, + 0.0007869750, 0.0017150417, 0.0044083856, -0.0026653951, 0.0007261764, + 0.0005331310, 0.0033052396, -0.0020758167, 0.0038933973, -0.0013115308, + 0.0018007306, -0.0026834540, -0.0004035099, -0.0026806765, 0.0018328363, + 0.0002768934, -0.0005522480, 0.0027031424, -0.0019574263, -0.0031971459, + 0.0010269873, 0.0022922028, 0.0009154873, 0.0008173338, 0.0030308813, + 0.0000807622, -0.0023339344, 0.0050962251, -0.0042475639, 0.0022509862, + 0.0029762732, 0.0004087542, 0.0000305798, 0.0012260370, -0.0001793895, + -0.0006415108, -0.0018003797, -0.0014732394, -0.0008943789, -0.0003460690, + -0.0007632303, -0.0032504569, -0.0025099469, 0.0045307106, -0.0019705892, + 0.0011557662, 0.0006584488, 0.0021451591, 0.0046928064, -0.0004006466, + -0.0049198754, 0.0019961109, 0.0112469904, -0.0031685722, 0.0021851365, + -0.0034677624, -0.0001554611, 0.0032127048, -0.0009595556, 0.0016937047, + 0.0004891157, 0.0026776786, -0.0017200923, 0.0009887507, -0.0013223779, + -0.0019824123, 0.0006027669, 0.0034923633, 0.0017717257, -0.0014466164, + -0.0001278198, 0.0007488998, -0.0012231868, 0.0016227942, -0.0011664294, + 0.0030975686, -0.0022559436, -0.0031494237, -0.0018267841, -0.0020739259, + 0.0010930421, 0.0032604996, 0.0035042907, 0.0035034986, 0.0008730714, + 0.0012043435, 0.0041010613, 0.0016175788, 0.0013314115, -0.0014666192, + 0.0009103734, -0.0019115899, 0.0019749496, 0.0001829895, 0.0014693136, + 0.0038441389, -0.0011188913, -0.0015849764, 0.0003513005, 0.0016201497, + 0.0003575087, -0.0014670524, -0.0005251199, -0.0003704705, 0.0023343563, + -0.0017967001, -0.0001160062, 0.0005768214, -0.0005662949, 0.0024954840, + -1.5175263882, 0.0015411656, -0.0062454529, 0.0033242295, 0.0009314784, + -0.0019062825, -0.0015546193, 0.0011542386, 0.0034199674, -0.0006766622, + -0.0017272746, -0.0009983949, 0.0030909996, -0.0034794984, 0.0002478692, + 0.0007060924, -0.0005909260, 0.0005878182, -0.0040466152, -0.0060708798, + -0.0022578160, -0.2716560066, -0.0000240637, 0.0023548845, 0.0033734695, + 0.0015034694, -0.0037615497, -0.0006976486, -0.0015801359, -0.0019343914, + 0.0006077271, 0.0013167327, 0.0011024545, 0.0002531679, -0.0000574526, + 0.0023429305, 0.0012080595, 0.0011430639, 0.0012372322, 0.0003554989, + -0.0006504936, 0.0004974743, 0.0035661557, -0.0003635255, -0.0018680990, + -0.0003060426, -0.0012466786, -0.0045806766, 0.0031997859, -0.0024427734, + 0.0017762472, 0.0030111102, 0.0015582880, 0.0015526918, -0.0021903487, + -0.0017928745, -1.1825996637, -0.0015944741, -0.0026196642, 0.0005843372, + 0.0004580289, 0.0024498824, -0.0029084317, -0.0026782409, 0.0000409354, + -0.0030014608, 0.0005259534, 0.0002459524, -0.0000027851, -0.0005485988, + -0.0003408003, 0.0003807122, -0.0027027330, 0.0029668449, 0.0007296726, + 0.0002211742, -0.0064733028, -0.0022125347, -0.0011105392, -0.0003246646, + 0.0027415608, -0.0018541832, -0.0014380766, -0.0001317519, 0.0031146004, + -0.0032810620, 0.0006492087, 0.0015674205, -0.0007523625, -0.0022083353, + -0.0004592943, -0.0002304851, -0.0007753652, -0.0029274002, 0.0013634635, + -0.0023315512, 0.0025084969, -0.0000720902, 0.0020277705, -0.0028517721, + 0.0030581104, -0.0018926775, 0.2177460492, 0.0020499814, -0.0009933767}; + +float unet_input_time_embedding_50_8[] = { + 0.0025232071, 0.0024607868, -0.0019268636, -0.0024916253, 0.0014785142, + -0.0036928179, -0.0017493712, -0.0007578742, -0.0025742280, -0.0023900133, + 0.0002369254, -0.0006681108, -0.0019928273, 0.0030905171, -0.0037769554, + 0.0005610855, -0.0009424873, -0.0007129966, -0.0042601349, -0.0011843066, + 0.0056593190, 0.0064068669, -0.0049651414, 0.0191800743, 0.0008502344, + 0.0011561478, -0.0019787028, 0.0005866885, -0.0031656763, 0.0034567779, + 0.0026843916, -0.0001779636, -0.0019127992, -0.0008632336, -0.0040888055, + 0.0011326573, -0.0020857919, -0.0001942122, 0.0014142599, -0.0007770006, + -0.0002606697, -0.0043421523, 0.0009749471, 0.0007908763, 0.0003569210, + -0.0016375615, -0.0017898660, -0.0015325854, 0.0023765808, -0.0016629191, + -0.0040127141, -0.0011412732, -1.2283344269, 0.0009257989, -0.0000572020, + 0.0002831161, -0.0013240475, -0.0026141782, -0.0018405966, -0.0000389076, + -0.0009103206, -0.0001905136, 0.0035292110, 0.0005441052, 0.0008688886, + -0.0009046625, 0.0003068717, -0.0047921399, 0.0008348301, 0.0021890772, + -0.0002829549, 0.0006308476, 0.0016672562, 0.0000512516, -0.0001751734, + -0.0019910196, -0.0000374224, 0.0034464477, -0.0020909072, -0.0000550796, + 0.0018963427, -0.0012952782, 0.0006738445, 0.0005001081, -0.0006745874, + -0.0033986901, 0.0006442592, 0.0040159547, 0.0004160311, -0.0000179256, + 0.0002290172, -0.0009352164, -0.0009578029, 0.0015878089, 0.0110995881, + 0.0009468510, -0.0003803568, -0.0003118645, -0.0017963930, 0.0009160610, + 0.0012073603, 0.0020556445, 0.0012379424, 1.8033767939, 0.0008759159, + -0.0045762630, -0.0000852053, -0.0014811521, 0.0025727558, -0.0023319242, + -0.0011996664, -0.0022114748, 0.1149318367, -0.0025028158, 0.0012479611, + -0.0021782168, 0.0005629663, 0.0006786517, 0.0021137958, -0.0012243383, + 0.0003009192, -0.0008986515, -1.8664075136, -0.0017671222, 0.0006366447, + -0.0006577284, 0.0023276028, -0.0014297063, -0.0013452461, -0.0007909168, + 0.0001951135, -0.0019326285, 0.0021783116, 0.0024243444, -0.0010282053, + 0.0009205455, 0.0016773681, 0.0000974620, 0.0001029279, -0.0036101919, + -0.0026053095, 0.0020105299, -0.0005633645, 0.0010943762, 0.0035356942, + 0.0012052404, -0.0008886070, 0.0019284207, 0.0018935462, -0.0005896264, + 0.0001488673, -0.0012366635, -0.0001739454, -0.0002330402, -0.0021162764, + -0.0008935495, -0.0017599140, 0.0020510992, 0.0028460156, 0.0019431780, + 0.0010499894, 0.0014713480, -0.0004318124, -0.0016643545, -0.0036132769, + 0.0002100237, 0.0001865022, -0.0032498203, -2.3473150730, -0.0002259929, + 0.0009208606, 0.0021165460, 0.0008533634, -0.0023772083, -0.0007785661, + 0.0008406416, -0.0024597384, 0.0015894594, -0.0011722422, -0.0004116278, + 0.0003751670, -0.0016737329, -0.0019793101, -0.0022626724, -0.0007067500, + -0.0016550547, -0.0040849647, -0.0009344839, -0.0020068702, -0.0003229002, + 0.0010085884, -0.0013793190, 0.0018538822, -0.0023976497, 0.0012029689, + -0.0007657311, 0.0019153293, -0.0007524211, -0.0022136674, 0.0000509857, + -0.0006963760, 0.0009214343, 0.0012596902, -0.0069898688, -0.0021078587, + 0.0017650994, -0.0035649675, -0.0013106195, -0.0003927704, -0.0022589206, + -0.0033356589, 0.0007258072, 0.0010079811, 0.0024284876, 0.0011676087, + -0.0022058021, 0.0006021401, -0.0025288388, 0.0003458351, -0.0008505863, + -0.0004755761, -0.0018447407, 0.0016570378, -0.1343724579, 0.0001548867, + 0.0000982382, 0.0000178656, 0.0008770283, -0.0001895756, 0.0030207438, + 0.0027635833, 0.0041398238, 0.0003744252, 0.0041458807, -0.0001374800, + 0.0024628681, 0.0020240960, -0.0052235471, 0.0002974756, 0.0004675426, + -0.0025638584, 0.0005200573, 0.0003678158, -0.0032152962, -1.3884314299, + 0.0004228924, -0.0030005551, -0.0025910905, -0.0014995392, -0.0011239951, + -0.0011172816, 0.0026555932, 0.0015579159, -0.0015759552, -0.0029613404, + -0.0008311940, -0.0007065954, -0.0000869067, -0.0019016585, -0.0005373898, + 0.0009337300, -0.0013916420, -0.0021038891, -0.0111777261, -0.0022502001, + 0.0005238825, 0.0042865477, 0.0028815004, -0.0041523995, 0.0010124417, + -0.0047364421, 0.0021115120, 0.0001076502, 0.0037059346, -0.0012989414, + -0.0016687547, -0.0018726094, 0.0007567191, -0.0013740147, -0.0014099400, + -0.0768084377, -0.0000301618, 0.0010045237, -0.0007379507, -0.0031797593, + -0.0044832323, -0.0011548675, -0.0038958706, 0.0009677494, -0.0014367178, + 0.0028877184, 0.0014978333, -0.0000098811, 0.0004365642, 0.0006621536, + -0.0022359500, 0.0012824251, -0.0002285303, 0.0000200211, -0.0004659519, + 0.0120380158, -0.0004148504, -0.0000600232, 0.0003281203, 0.0004668881, + 0.0026861024, 0.0010103961, 0.0038273423, -0.0009337720, 0.0021871752, + 0.0034418753, 0.0004089570, 0.0000614740, 0.0009024916, 0.0011954964, + 0.0027191495, -0.0009484914, 0.0008703689, 0.0019250400, 0.0005719387, + -0.0024872895, -0.0014529056, 0.0023368446, -0.0009689052, 0.0025715451, + -0.0000613662, 0.0017054137, 0.0023761922, 0.5070350766, -0.0013062716, + -0.0014776909, 0.0023348667, 0.0006818156, 0.0012175064, -0.0011204178, + -0.0006673280, -0.0006709152, 0.0028714156, -0.0015349346, 0.0030517890, + 0.0003573829, -0.0008150714, 0.0014067043, 2.7498002052, 0.0001258350, + -0.0021315706, 0.0033910112, -0.0006275749, -0.0016940972, -0.0017990804, + -0.0025626663, 0.0022282414, 0.0002750214, 0.0016883556, 0.0021498813, + -0.0004005320, 0.0008321789, 0.0000709865, 0.0005093548, 0.0024013217, + 0.0008966960, 0.0006080731, -0.0015694126, -0.0027054097, -0.0026985952, + -0.0022579539, 0.0016507772, 0.0008965498, -0.0032775560, -1.3899760246, + -0.0012555681, -0.0016607824, 0.0003228206, 0.0013102870, 0.0039239367, + -0.0013084346, 0.0009219197, 0.0004235022, 0.0024703441, 0.0032254010, + 0.0030131494, -1.6886318922, 0.0011101407, 0.0003256476, -0.0023567621, + 0.0020817756, 0.0030554379, -0.0014683409, 0.0019174260, 0.0043891431, + 0.0003573447, 0.0024241931, -0.0033302451, -0.0014075188, 0.0003252327, + 0.0013907463, 0.0006645387, -0.0014629099, -0.0014901734, 0.0001189252, + 0.0009351522, 0.0016547740, 0.0009628704, 0.0000918671, 0.0007351218, + 0.0007673516, -0.0025794720, -0.0000363579, 0.0011998662, -0.0019268095, + -0.0017724829, 0.0019372678, -0.0007896344, 0.0022287292, 0.0020271661, + 0.0007685444, -0.0001328681, -0.0013609282, -0.0020364672, -0.0017428501, + 0.0010823545, 0.0006392493, -0.0020933663, 0.0040475130, -0.0002196031, + 0.0036157831, -0.0013617529, 0.0004597452, -0.0020539628, 0.0000481814, + 0.0023151818, -0.0027701720, 0.0007113761, 0.0033645695, 0.0020052316, + 0.0014883829, 0.0033812141, -0.0016048353, -0.0005224217, -0.0020487390, + -0.0023263292, 0.0007977885, 0.0016956894, 0.0010875838, 0.0009340260, + -0.0004515559, -0.0047110710, 0.0023962180, -0.0032745702, 0.0227844045, + 0.0009749518, -0.0006122123, -0.0009683610, -0.0017746473, -0.0007805950, + 0.0025604623, 0.0039685527, 0.0017982936, -0.0015831795, -0.0007786632, + -0.0004110793, 0.0012650322, 0.0007569034, -0.0007229572, 0.0021984642, + 0.0005905535, 0.0010069874, -0.0003876183, -0.0012676192, -0.0009601009, + 0.0004434208, -0.0013248899, -0.0010626605, 0.0008702285, -0.0011632470, + 0.0098226387, -0.0009437054, -0.0004701739, -0.0023748111, -1.3301066160, + -0.0015170933, -0.0020562345, -0.0012697391, 0.0005835553, 0.0057077645, + -0.0015651699, -0.0003081413, -0.0034700381, -0.0005592299, -0.0015860561, + 0.0004127859, 1.9615746737, -0.0016316301, -0.0013591344, 0.0005204468, + -0.0181331187, -0.0046202103, -0.0006284360, -0.0004611006, 0.0000603581, + -0.0007085172, 0.0020294897, 0.0004486656, -0.0004709200, 0.0031731911, + -0.0035709636, 0.0020770743, 0.0011660274, -0.0036723888, -0.0009210338, + 0.0024426563, -0.0006269021, -1.4999666214, -0.0013408177, -0.0018326478, + -0.0018923420, -0.0025841231, -0.0010238858, 0.0007964082, -0.0025579529, + -0.0010529202, -0.0001839935, 0.0056652129, 0.0014628074, 0.0008134404, + -0.0032262360, 0.0000824270, 0.0017433451, -0.0010647746, -0.0021649804, + -0.0014507577, -0.0033226446, 0.0027923710, -0.0002682584, 0.0018814865, + 0.0000718187, 0.0004637137, 0.0009931203, -0.0007925630, -0.0002077161, + -0.0006759772, -0.0032931408, -0.0005173227, -0.0013778000, -0.0001023640, + -0.0007402031, 0.0014618877, 0.0008957768, -0.0011007078, -0.0022378834, + -1.6448869705, -0.0017858073, -0.0037174895, -0.0031967349, -0.0006833202, + -0.0002940412, -0.0027101175, -0.0012774104, -0.0000965684, -0.0011318196, + 0.0013141977, 0.0013384194, -0.0025776397, 0.0015313998, -0.0008406602, + -0.0006980076, -0.0027091289, 0.0007962631, -0.0004713815, 0.0006391611, + -0.0034185653, -0.0018742839, -0.0002457141, -0.0042394041, -0.0002121157, + 0.0000236081, 0.0006626165, -0.0021245959, 0.0019669919, 0.0003175370, + 0.0015058219, 0.0016822172, -0.0067246077, -0.0015187425, -0.0029235848, + 0.0016098341, 0.0013306509, 0.0010422389, 0.0044730641, -0.0022318517, + -0.0012012153, -0.0026029912, 0.0011618482, -0.0015271064, -0.0032256101, + -0.0009376495, 0.0005051456, 0.0008293325, 0.0003889310, 0.0017086300, + 0.0013379189, -0.0004383167, 0.0024418673, -0.0003435965, -0.0015367602, + -0.0014648926, 0.0024515563, 0.0031274457, -0.0002187259, 0.0015757543, + -0.0022643101, -0.0018746490, 0.0027237129, -0.0010845563, -0.0004047798, + 0.0009476598, 0.0014145533, 0.0034933016, -0.0031720730, -0.0013872760, + -0.0009255139, 0.0022380482, -0.0014927578, -0.0025432881, -0.0016066381, + -0.0002573142, -0.0007550863, 0.0020994248, 0.0016295756, -0.0010993057, + -0.0015658718, -0.0033370594, 0.0022226330, 0.0017019890, -0.0022412050, + -0.0002270900, 0.0019041908, -0.0016510930, -0.0003865799, 0.0015695379, + 0.0001342493, 0.0003003913, 0.0009724365, -0.0011503811, -0.0018376266, + 0.0004822387, 0.0022845771, 0.0019131291, 0.0059075709, 0.0012749983, + 0.0017115761, -0.0023189979, -0.0017935715, -0.0025603916, -0.0003727968, + -0.0020274811, -0.0017188434, -0.0006575612, -0.0004649495, -0.0029718592, + 0.0015347274, 0.0005508414, -0.0003362062, -0.0009276503, -0.0012755231, + -0.0013886639, 0.0005871518, 0.0023508836, 0.0011063816, 0.0010045344, + 0.0002791008, -0.0036228283, 0.0009313261, -0.0017810811, -0.0014884733, + -0.0016438048, 0.0010581218, 0.0000008792, 0.0029833792, -0.0004489557, + -0.0000390012, 0.0010195849, -0.0012490004, 0.0022020526, 0.0006771395, + 0.0004367041, -0.0013161497, 0.0026895732, 0.0014899927, -0.0019009495, + -0.0014319844, 0.0005387645, -0.0003781442, -0.0003295017, -0.0000569425, + 0.0004394134, 0.0049009104, -0.0016631978, -0.0012623884, 0.0019447170, + -0.0001602490, 0.0021330067, -0.0011991628, -0.0030202607, 0.0014078426, + 0.0000018920, -0.0020670630, -0.0002040244, 0.0005173830, 0.0004876933, + -0.0005755480, -0.0095804008, 0.0014107488, -0.0018465463, 0.0015005781, + -0.0000082497, -0.0000312999, -0.0036188317, -0.0009647051, -0.0004442004, + 0.0003282800, -0.0009528543, -0.0010422914, 0.0002997364, -0.0036224581, + 0.0000892780, -0.0015620608, 0.0035469844, 0.0013073669, -0.0010050223, + -0.0005717548, -0.0024298262, 0.0008235301, -0.0006005694, -0.0023511178, + 3.8412096500, -0.0023101424, -0.0020910548, -0.0006054458, -0.0025471121, + -0.0007667942, 0.0003239485, 0.0009394474, -0.0004844442, 0.0005595852, + -0.0013531186, 0.0032372777, 0.0026298994, -0.0040203938, -0.0026437212, + 0.0014538809, -0.0003136827, 0.0008882242, 0.0011130939, -0.0003121423, + -0.0013599056, -0.0030851867, -0.0008959022, 0.0004334615, -1.5450946093, + 0.0013669976, 0.0010238083, -0.0028136775, -0.0024323207, 0.0008675889, + -0.0017705313, -0.0030995100, -0.0037920121, -0.0003118194, 0.0021479339, + -0.0006293813, -0.0021123448, 0.0024794461, 0.0027142556, 0.0018267618, + 0.0004032589, 0.0017387010, -0.0005357247, 0.0030900841, 0.0024947198, + -0.0017854832, 0.0004054309, 0.0007941013, 0.0009407210, 0.0015672278, + -0.0022470118, -1.6089364290, -0.0018852493, -0.0002336339, 0.0020958609, + -0.0016274265, 0.0001883975, 0.0015902359, 0.0013825432, -0.0007594454, + -0.0008071656, 0.0025130520, -0.0040882542, -0.9077721834, 0.0006412358, + -0.0015097478, -0.0004992236, 0.0027980157, 0.0030146977, 0.0018421300, + -0.0029363530, -0.0015098862, -0.0034722856, -0.0034865455, -0.0003344849, + -0.0023124642, 0.0032295675, 0.0010146139, -0.0023475857, -0.0009618974, + -0.0015809285, 0.0029870709, 0.0016738223, -0.0000619005, 0.0000846537, + 0.0004479876, -0.0021579647, -0.0018258565, -0.0010525312, 1.2819590569, + -0.0002777693, -0.0037738800, -0.0017721596, -0.0010952496, -0.0029749661, + -0.0010088922, 0.0002793847, -0.0017361525, -0.0026451449, -0.0005151113, + 0.0003047532, 0.0010417439, 0.0000029043, 0.0009121615, 0.0006927563, + -0.0023649405, -0.0016835639, 0.5398162007, 0.0029251636, 0.0025737202, + 0.0004023868, -0.0005463562, 0.0005555279, 0.0019894829, 0.0013631524, + -0.0013483185, -0.0008714546, -0.0016299245, 0.0035989420, 0.0000635227, + -0.0036095898, -0.0016011717, 0.0009507285, 0.0021477235, 0.0017882651, + -0.0039495905, -0.0017893580, -0.0017524315, -0.0016156243, 0.0011974573, + 0.0020170985, 0.0005741780, 0.0023992611, -0.0007883871, 0.0014447839, + -0.0013981531, 0.0068523097, 0.0035265121, 0.0001176957, -0.0007404741, + 0.0006640300, -0.0011377488, 0.0005988898, 0.0021724794, 0.0013788389, + 0.3341512978, 0.0018940297, 0.0025489544, -0.0037185941, 0.0004584098, + -0.0001517131, -0.0006907121, -0.0012595607, 0.0005379592, 0.0004572826, + 0.0007729072, -0.0005773795, 0.0004115957, 0.0024832035, 0.0009508142, + -0.0010986140, -0.0024491607, -0.0000269160, -0.0010373062, 0.0014095623, + -0.0023648888, 0.0019391775, 0.0011122059, -0.0038431687, 0.0009666653, + 0.0020357557, 0.0010016514, 0.0009600905, -0.0008475571, 0.0007722271, + 0.0033717693, -0.0024315016, -0.0014093714, 0.0018749323, -0.0022477824, + -0.0004667772, 0.0038585283, 0.0001332120, 0.0006125481, -0.0005528796, + -0.0015690988, -0.0006925128, 0.0003739744, -0.0008291486, 0.0017520157, + 0.0019519310, -0.0005149846, -0.0007295781, 0.0024450971, -0.0009382727, + 0.0031250496, 0.0009587936, -0.0013570233, 0.0008830372, 1.8192832470, + -0.0006662025, 0.0013830233, -0.0019693784, -0.0003435502, -0.0005540177, + 0.0021585021, 0.0008259161, 0.0016194428, -0.0010279412, -0.0016126004, + 0.0001162760, 0.0011185650, 0.0001918804, 0.0001006399, 0.0002205805, + -0.0024173739, -0.0031950970, 0.0050155167, 0.0012019635, 0.0025132278, + 0.0003913827, -0.0033516842, -0.0035080917, 0.0002058628, -0.0012624813, + 0.0018759985, -0.0027790016, 0.0023665247, 0.0021402924, -0.0039861780, + -0.0077869566, -0.0018198555, -0.0014526118, -0.0002308930, 0.0010998007, + -0.0024133085, 0.0002682110, -0.0015495151, 0.0016172742, -0.0015034480, + 0.0013553048, 0.0012601041, 0.0036240024, -0.0031451653, -0.0019044140, + 0.0013564464, -0.0010177670, -0.0024812957, 0.0007529301, -0.0014899843, + -0.0019121423, -0.0005859882, 0.0024661045, 0.0005315924, -0.0006754957, + 3.5086228848, -0.0008720178, 0.0018304605, 0.0016930725, 0.0009739525, + 0.0006964772, -0.0002955953, -0.0015426087, -0.0005727801, -0.0011009315, + 0.0005839784, -0.0002669571, 0.0000087651, -0.0002464182, -0.0019171449, + 0.0033313679, 0.0010858579, -0.0005416051, 0.0018369968, -0.0029729311, + -0.0033661183, -0.0026545767, 0.0035710158, 0.0003626598, -0.0002888101, + 0.0019863215, -0.0010556481, 0.0006841312, 0.0006589808, -0.0002330919, + 0.0004810817, 0.0016002043, -0.0022552689, -0.0014903650, 0.0015986376, + -0.0006967263, 0.0002679199, -0.0029215585, 0.0011245778, -0.0011159158, + 0.0002642076, 0.0007662680, 0.0016876385, -0.0007380708, 0.0001975482, + -0.0034167855, 0.0017298018, 0.0006020087, 0.0008898809, 0.0005206913, + 0.0000712443, 0.0007377397, -0.0015888377, -1.5414990187, 0.0020879994, + 0.6422619224, -0.0016056921, -0.0021962724, 0.0027966255, -1.9782513380, + -0.0019305074, -0.0030485829, 0.0001490852, 0.0003796895, 0.0001229784, + -0.0007449747, -0.0009009298, 0.0023131454, -1.7155107260, -0.0003156164, + -0.0024425613, -0.0002281901, 0.0016528246, -0.1342922151, -0.0009901794, + 0.0032979976, 0.0024109036, 0.0017655613, 0.0029315872, -0.0002883882, + -0.0006524315, 0.0010627639, -0.0031956695, 0.0015656385, -0.0015436742, + -0.0003972196, -0.0011681893, -0.0023747548, 0.0012652813, 0.0040165042, + -0.0012348467, -0.0016981063, -0.0000376282, 0.0022893366, -0.0027010732, + -0.0012985601, 0.0010242257, 0.0040899189, 0.0017142273, 0.0027099699, + 0.0024020986, -0.0018319068, 0.0028318036, -0.0029125577, 0.0025440324, + 0.0021874253, -0.0012482828, 0.0023059219, 0.0006936949, -0.0026865005, + -0.0003477484, -0.0009059105, 0.0016034853, -0.0018288251, 0.0004358797, + -0.0023834223, -0.0020288317, -0.0011300156, 0.0014816052, -0.0024433844, + 0.0017708144, 0.0003317734, 0.0027327538, 0.0042413925, -0.0002629552, + -0.0082382225, 0.0033034121, 0.0117747281, -0.0008397144, 0.0017783497, + -0.0024894676, 0.0000084628, -0.0002363385, -0.0003958279, 0.0010109249, + 0.0011345278, 0.0027991324, -0.0002820995, 0.0009723005, 0.0003300752, + -0.0032456471, -0.0012309849, 0.0002531330, 0.0020768736, 0.0008568051, + -0.0008568424, -0.0007761912, -0.0007700463, -0.0000250451, 0.0004365090, + -0.0035620863, -0.0035687191, -0.0019736532, -0.0005983948, -0.0019528633, + -0.0004142360, 0.0009896315, 0.0027506659, 0.0025725635, 0.0011935441, + 0.0008656466, 0.0023529800, 0.0023299977, 0.0018175843, -0.0033761845, + -0.0002353298, 0.0010907757, 0.0018525007, -0.0015021632, 0.0032489221, + 0.0024304974, 0.0010171734, 0.0028327447, 0.0007974599, 0.0006959005, + 0.0012117485, 0.0006146212, 0.0022419959, 0.0016251508, 0.0001532836, + 0.0014481349, 0.0023335547, 0.0026560419, -0.0011781733, 0.0014470317, + -1.5220249891, -0.0012518801, -0.0009703896, 0.0011194892, 0.0016824913, + -0.0008657604, -0.0009142428, -0.0014562623, 0.0040251743, -0.0004342911, + 0.0009992588, -0.0048660398, 0.0023872838, -0.0007996345, 0.0010508983, + -0.0024181558, 0.0012250249, 0.0000772970, -0.0020186156, 0.0084997434, + -0.0001048311, -0.2302868366, -0.0002142622, 0.0017884080, 0.0017192003, + -0.0008276310, -0.0034519595, 0.0004780139, 0.0005273335, -0.0015337812, + 0.0006082691, 0.0018811068, -0.0002993424, 0.0014134990, -0.0009987189, + 0.0010330030, -0.0015992401, 0.0014838702, 0.0015571988, 0.0004503597, + -0.0008492439, 0.0000497838, 0.0021297173, -0.0012789671, 0.0023561344, + -0.0009603424, 0.0015397402, -0.0046011223, -0.0009499155, 0.0029188748, + -0.0003645207, 0.0007795850, 0.0038457187, 0.0038019828, -0.0012569446, + 0.0015818781, -1.1954790354, -0.0001443177, -0.0014700755, 0.0005075510, + 0.0012085594, 0.0025420424, -0.0011153582, 0.0019969947, -0.0000582463, + -0.0007134718, -0.0008170981, 0.0000662891, 0.0016533961, -0.0003148629, + -0.0011451929, -0.0009227194, 0.0001598359, 0.0024131122, 0.0017743465, + -0.0015758742, -0.0021751374, -0.0002025599, -0.0024735699, 0.0005826754, + 0.0010318044, -0.0003618072, -0.0002788939, -0.0009642928, 0.0017903249, + 0.0007444158, -0.0010966151, 0.0002081068, 0.0011655242, -0.0008353968, + -0.0057702116, -0.0000901255, 0.0014707977, -0.0000838424, 0.0028207775, + -0.0022605620, 0.0004922776, 0.0007564111, 0.0002235854, -0.0002810647, + 0.0001127571, 0.0009542573, 0.2088685930, -0.0001167239, 0.0002544921}; + +float unet_input_time_embedding_50_9[] = { + -0.0037226295, 0.0002217458, -0.0022284063, -0.0014738797, -0.0006484701, + -0.0008046762, -0.0004749931, 0.0020573428, -0.0047134161, -0.0035613889, + 0.0008280852, -0.0022920142, -0.0039226357, 0.0018451479, -0.0002139574, + 0.0024510538, -0.0037568929, 0.0003164501, -0.0006025407, -0.0024333517, + 0.0032407059, 0.0010583969, -0.0014117936, 0.0313195772, 0.0003283308, + -0.0016510270, -0.0009864662, 0.0005978039, -0.0022610864, 0.0005763383, + 0.0016681817, -0.0004575914, -0.0004053344, -0.0005694451, -0.0033668624, + 0.0023546345, -0.0024854699, -0.0024750640, -0.0005448256, 0.0017644987, + -0.0003240556, -0.0001663216, 0.0022435975, 0.0026820861, -0.0019756658, + -0.0005870557, -0.0030098502, -0.0014328505, -0.0003328605, 0.0002574140, + -0.0017425539, -0.0028271412, -1.1437003613, 0.0012547569, -0.0006264487, + -0.0015744976, 0.0020734889, -0.0017538504, -0.0022527887, 0.0008944508, + -0.0006852264, -0.0017968382, 0.0012976225, 0.0001513637, -0.0005804170, + -0.0007133866, 0.0024075815, -0.0027159350, 0.0040406622, 0.0004290191, + -0.0010025073, 0.0003980552, -0.0003183607, -0.0026389658, 0.0035012607, + 0.0003295019, -0.0018611131, 0.0029859459, -0.0006209375, 0.0004527296, + 0.0033641416, 0.0031761765, -0.0001180386, -0.0018593268, 0.0009421746, + -0.0035841807, 0.0039792266, 0.0034359805, 0.0003326358, -0.0000093686, + -0.0000943007, -0.0003178483, 0.0001025386, 0.0000127944, 0.0031297537, + 0.0002282062, 0.0001959549, -0.0004103389, 0.0015926210, -0.0000343686, + 0.0022800779, 0.0000652442, -0.0014270453, 1.6650812626, -0.0014632116, + -0.0013262546, 0.0044191363, 0.0004870966, 0.0016888403, 0.0009509306, + 0.0004805145, 0.0001576673, 0.1628585160, -0.0016608648, 0.0014607664, + -0.0010476089, 0.0024554157, -0.0028214057, 0.0005671186, -0.0006824930, + -0.0035778466, -0.0011074266, -1.9356670380, 0.0000113030, -0.0009186938, + -0.0000379696, 0.0030576917, 0.0010253084, -0.0015541287, 0.0038673826, + -0.0006180960, -0.0020692423, -0.0020338332, -0.0005436940, -0.0015485771, + -0.0003395115, 0.0017804804, -0.0016343007, -0.0004118625, -0.0036749812, + 0.0009374686, -0.0024002735, 0.0000457277, -0.0003097714, 0.0040027229, + 0.0017562220, -0.0011361265, -0.0012953151, 0.0004231376, -0.0011311425, + 0.0000904100, 0.0014450891, -0.0029590908, -0.0002134750, -0.0053003174, + 0.0013069496, -0.0016368008, 0.0014620386, 0.0006169993, -0.0012907484, + 0.0000763382, 0.0004519353, -0.0028957715, -0.0022292905, -0.0020141513, + -0.0016230324, -0.0006282118, -0.0025694594, -2.1309783459, -0.0015277860, + -0.0006375149, -0.0018162988, 0.0001727734, -0.0004391587, -0.0009601014, + 0.0002681110, -0.0013059977, 0.0053664381, -0.0024479362, -0.0015734257, + 0.0005629412, -0.0030346019, 0.0016501700, -0.0001671007, 0.0012916895, + 0.0015861695, -0.0025069360, 0.0019233464, -0.0045551718, 0.0023132763, + -0.0018714149, -0.0008112942, -0.0011884320, -0.0021884653, -0.0020759441, + 0.0007414599, 0.0038484363, -0.0003029481, -0.0000046521, -0.0016349521, + -0.0004025176, 0.0014488720, 0.0013911021, -0.0014494983, -0.0014185747, + 0.0005697561, -0.0001833260, -0.0004844600, 0.0008992944, -0.0007125377, + 0.0003932896, -0.0003804727, -0.0002530064, 0.0001329936, 0.0016901586, + -0.0004739673, 0.0007643420, -0.0025271936, 0.0015048232, 0.0007681287, + 0.0001174249, -0.0034277269, -0.0005966697, -0.0891589448, -0.0002540692, + 0.0024294797, -0.0032417858, -0.0006883000, 0.0003113865, 0.0035769409, + 0.0014532758, 0.0025572833, -0.0018163286, 0.0016519087, 0.0024577957, + 0.0012132418, 0.0021294770, -0.0011274340, -0.0009642746, -0.0007524862, + -0.0036532737, -0.0027549795, 0.0008910571, 0.0013062656, -1.4068446159, + -0.0022758229, -0.0022043423, -0.0012611918, -0.0013095611, 0.0005973647, + -0.0012654494, -0.0001447410, 0.0009821090, -0.0020539863, -0.0005377047, + -0.0009348725, -0.0021654922, 0.0005051700, 0.0001059209, -0.0006954930, + 0.0013160454, -0.0015535944, -0.0024685955, 0.0008597117, 0.0000540985, + -0.0010776608, -0.0017057243, 0.0013588541, -0.0003878856, 0.0015077549, + -0.0030584196, 0.0037558635, 0.0009848555, 0.0013710884, 0.0004624010, + -0.0002056987, -0.0000933250, -0.0009837272, -0.0001616506, -0.0049666171, + -0.0464196242, -0.0006113518, 0.0014048797, -0.0001406162, -0.0060578031, + -0.0029444667, -0.0009414777, -0.0020350509, 0.0005840487, -0.0021243338, + 0.0015376230, 0.0036976004, -0.0014134168, 0.0020839621, -0.0019196626, + -0.0012723645, 0.0011669393, 0.0011998168, -0.0025253654, -0.0003320440, + 0.0069125192, -0.0011454297, 0.0035933312, 0.0030187075, 0.0013346032, + -0.0005046665, 0.0022011236, 0.0015181596, -0.0014868286, 0.0000412106, + 0.0018405784, -0.0015272028, -0.0014409085, -0.0022930419, 0.0004437226, + 0.0010116161, -0.0006323800, 0.0009304653, 0.0008501001, -0.0023217755, + -0.0017531139, 0.0004404043, 0.0007855345, -0.0001637544, 0.0004170391, + 0.0021574427, -0.0036006384, 0.0031117527, 0.3434214294, 0.0024212464, + -0.0001659747, -0.0014292207, -0.0003796761, 0.0006064940, -0.0001890929, + -0.0023717731, 0.0007138664, 0.0020106686, 0.0021040835, 0.0029604635, + -0.0020435061, 0.0021142948, 0.0018261021, 2.6842403412, 0.0000938049, + -0.0014214870, 0.0014995193, -0.0002364445, -0.0021850839, -0.0003106733, + -0.0023136903, -0.0017984495, -0.0022467561, 0.0017947052, -0.0000025503, + -0.0007928740, -0.0018485992, -0.0021197246, 0.0015581022, -0.0000253669, + -0.0020479802, 0.0004137815, -0.0031127697, -0.0000553257, 0.0002056168, + 0.0004255755, 0.0015619774, -0.0004981207, -0.0022560260, -1.3980402946, + -0.0011126576, 0.0003555776, 0.0016133413, 0.0011946978, 0.0014091667, + -0.0029017720, 0.0005921048, -0.0035955773, -0.0015434495, -0.0003462271, + 0.0003149785, -1.6142899990, 0.0001648995, 0.0026074625, -0.0006122445, + -0.0013698726, 0.0001437445, -0.0028623668, 0.0000312761, 0.0013201875, + 0.0032711430, -0.0003695796, -0.0019637458, -0.0023987633, -0.0020111939, + 0.0007204027, 0.0003823973, 0.0002328042, -0.0015998399, -0.0000094119, + 0.0016780132, 0.0000053458, 0.0010043990, -0.0015791939, -0.0025358899, + 0.0033462024, 0.0008702440, -0.0022675218, 0.0015953393, -0.0001794584, + -0.0013679829, 0.0034456509, -0.0026456839, 0.0000937002, -0.0013793288, + 0.0009674320, -0.0020473171, 0.0012071487, -0.0029207496, -0.0003296677, + -0.0003234118, -0.0009672393, -0.0021239342, 0.0014725814, 0.0006720014, + 0.0023651044, 0.0007904060, -0.0009604137, -0.0003047220, -0.0026634349, + -0.0000936757, -0.0014448254, -0.0004654729, -0.0006379085, -0.0003987782, + -0.0006303159, 0.0005386109, 0.0000795622, 0.0008917339, 0.0013969385, + 0.0018809056, 0.0001869730, 0.0002717708, -0.0022076180, 0.0019087277, + 0.0027218373, -0.0018709954, 0.0002485733, -0.0018021632, 0.0215756483, + 0.0024627433, -0.0009010769, 0.0020222811, -0.0013160771, -0.0016555949, + 0.0003231918, 0.0017011696, -0.0015370520, -0.0012520263, 0.0010746974, + -0.0005450884, -0.0027371999, -0.0037721971, 0.0010611784, -0.0010499880, + 0.0011870535, 0.0013513793, -0.0032815933, -0.0000388402, 0.0016782968, + -0.0009884317, -0.0003352107, 0.0009987904, -0.0010156773, -0.0018589748, + 0.0134602059, 0.0020518638, 0.0010080306, -0.0036511021, -1.3243582249, + -0.0023655961, -0.0006183898, 0.0011423547, -0.0003143859, 0.0014879343, + 0.0018500650, 0.0007786711, -0.0005706800, -0.0007704333, -0.0005708823, + 0.0003967136, 1.8344632387, -0.0013579004, 0.0000408292, -0.0009873533, + 0.0594966523, -0.0026741661, -0.0007710354, -0.0019179964, -0.0030816020, + -0.0006098715, -0.0004719375, 0.0016238885, -0.0008138032, 0.0021618102, + 0.0001644092, 0.0012266771, -0.0021041492, -0.0019518915, 0.0012945184, + 0.0016908788, -0.0010072659, -1.5494767427, 0.0002131006, -0.0028627198, + -0.0006310428, 0.0008939542, -0.0008917088, 0.0036646365, -0.0008931011, + -0.0015207375, 0.0021010456, 0.0004737171, 0.0028517540, 0.0014104871, + -0.0036166538, -0.0008293541, 0.0007022670, -0.0021570642, -0.0027411971, + -0.0007019036, -0.0043639415, 0.0008851546, -0.0006201838, 0.0033379074, + -0.0006972982, -0.0012889227, -0.0008403624, 0.0016923770, -0.0011001974, + -0.0002874406, -0.0010710442, 0.0007119285, -0.0034220996, -0.0014813230, + 0.0010385546, 0.0000246335, 0.0019572903, 0.0009268750, -0.0020448221, + -1.6569852829, 0.0016820747, -0.0015558742, -0.0038417410, 0.0001174021, + -0.0001615904, -0.0020690188, 0.0015423773, 0.0003248597, -0.0003606603, + 0.0001175348, 0.0001593976, -0.0010998533, 0.0024757022, 0.0027785571, + -0.0044532809, -0.0015646433, 0.0011429377, -0.0016309987, 0.0023095738, + 0.0004063430, -0.0010788525, 0.0000014636, -0.0011342142, -0.0014667618, + 0.0010271538, 0.0002467250, 0.0007606819, -0.0005113692, 0.0008239530, + 0.0029720757, -0.0010248353, -0.0056119733, -0.0010760197, -0.0003110569, + 0.0020515251, 0.0012644143, 0.0005995701, 0.0024037510, -0.0030273995, + -0.0021114340, -0.0005091210, 0.0006663688, -0.0004053237, -0.0016921596, + -0.0033052554, 0.0000420807, 0.0006899824, 0.0007892954, 0.0006563314, + -0.0020503015, -0.0026286216, -0.0042303102, -0.0000703977, -0.0021377632, + -0.0004306075, 0.0006336927, 0.0021277659, -0.0033717239, 0.0003559687, + -0.0017439860, 0.0004000189, 0.0024567083, -0.0003813994, -0.0010768203, + 0.0013407646, 0.0001261515, 0.0000194042, 0.0006873612, 0.0003222094, + 0.0001343228, -0.0017874242, -0.0017010984, -0.0036046165, -0.0031966330, + 0.0005636243, -0.0027192773, -0.0010526495, 0.0017429139, 0.0009391704, + -0.0019961474, -0.0036750559, 0.0020634420, 0.0029212662, -0.0017058649, + 0.0018479778, -0.0006683271, -0.0005717833, -0.0009257030, -0.0001558824, + -0.0008158734, -0.0002462808, -0.0004794034, 0.0003722569, 0.0003497317, + 0.0007894755, -0.0009409543, 0.0017317093, -0.0034827609, 0.0011993526, + 0.0016275066, 0.0006654700, -0.0020849262, -0.0011534435, 0.0005093059, + -0.0008041004, -0.0006043278, -0.0018666182, -0.0032013503, -0.0020064847, + 0.0025889603, -0.0013559437, -0.0015774114, -0.0020466819, -0.0027596303, + 0.0000128378, 0.0015400152, 0.0006075166, -0.0019793974, 0.0013119966, + 0.0012034180, -0.0012660727, 0.0007129384, 0.0014939962, 0.0006032959, + -0.0004631039, 0.0014084760, 0.0015688147, 0.0032945778, -0.0016509918, + 0.0027159944, 0.0009594350, -0.0028847684, 0.0033092508, 0.0009456892, + 0.0009858692, 0.0014082566, 0.0000503310, 0.0028136387, -0.0041546179, + 0.0000678524, -0.0010521188, 0.0006109483, -0.0005333053, 0.0009083971, + 0.0018422022, 0.0031897346, -0.0003576940, -0.0016911591, 0.0032559056, + -0.0004010424, 0.0006903089, -0.0029104932, -0.0028969536, -0.0002386482, + -0.0004588203, 0.0004547397, 0.0010839836, 0.0004717906, 0.0039805076, + 0.0011712089, -0.0075153606, 0.0000495352, 0.0007162346, -0.0017201924, + -0.0008385405, -0.0004839431, 0.0005200739, 0.0004192812, 0.0010790406, + 0.0002663163, -0.0014119796, -0.0001788354, -0.0007109339, -0.0026825487, + 0.0029665069, 0.0013059471, 0.0013183854, -0.0024959450, -0.0026799515, + 0.0018200083, -0.0021911059, -0.0002124112, 0.0015531867, -0.0014387281, + 3.7283866405, 0.0016681715, -0.0014004065, -0.0002504927, -0.0034941593, + -0.0047015152, 0.0014354074, 0.0009502496, 0.0004968420, 0.0003735553, + 0.0015432341, 0.0025786874, 0.0019397476, 0.0008178987, 0.0003655702, + 0.0013221221, 0.0012142367, -0.0022530211, -0.0028931624, 0.0016915721, + -0.0001293835, -0.0006960672, 0.0014616674, 0.0001245269, -1.6185077429, + 0.0029178732, -0.0015465247, -0.0031828959, 0.0005255281, 0.0007387926, + -0.0026960867, 0.0025211261, -0.0025697183, 0.0023783352, -0.0017414503, + -0.0010181656, -0.0021454189, 0.0029849065, 0.0023066660, 0.0024116752, + 0.0021093171, -0.0010091532, 0.0007926468, -0.0019401587, 0.0012894040, + -0.0002692966, 0.0007876494, 0.0006282886, 0.0029865145, 0.0016105222, + 0.0000153999, -1.3919675350, 0.0014138492, 0.0027586464, 0.0004129852, + -0.0052348943, 0.0017556783, 0.0028770792, 0.0001519532, 0.0016290585, + -0.0008954196, -0.0013527768, -0.0016022358, -0.6700517535, 0.0010867403, + -0.0003295759, 0.0002447802, 0.0005998373, 0.0023372378, 0.0014624563, + -0.0019845348, -0.0000467142, 0.0008217895, 0.0024656367, -0.0003649573, + -0.0013973989, 0.0006123444, 0.0016483426, 0.0000316454, -0.0003289930, + -0.0014222031, 0.0022961702, 0.0016407454, -0.0003546357, -0.0016696102, + 0.0027303891, -0.0013205531, -0.0018704762, -0.0023982513, 1.4262806177, + -0.0005561584, -0.0021753001, -0.0028996249, -0.0013698929, 0.0001631086, + -0.0005910771, -0.0008953796, -0.0009633335, 0.0030550763, 0.0006777770, + 0.0024254245, 0.0024020839, 0.0003704228, -0.0016541202, 0.0020653987, + -0.0030396353, -0.0006582635, 0.4964599013, -0.0023203422, 0.0011813445, + -0.0005111266, 0.0015367311, 0.0006965618, 0.0011163820, 0.0005440169, + 0.0013124067, 0.0018907252, 0.0002573146, 0.0016889754, 0.0000501145, + 0.0062857959, -0.0016720621, -0.0006875210, 0.0012480528, 0.0026260940, + 0.0008468642, 0.0011890135, -0.0020963624, -0.0032491414, -0.0011536772, + 0.0036981823, 0.0009825984, 0.0061078882, -0.0007589476, -0.0003979924, + -0.0016003894, -0.0010724687, 0.0024935747, -0.0002096940, 0.0003001927, + 0.0000674052, -0.0011176346, 0.0005305624, 0.0019227724, 0.0004827268, + 0.3023390472, -0.0018821672, 0.0011768108, 0.0009257616, -0.0012377074, + 0.0005888932, -0.0006441274, -0.0021098293, -0.0010973660, 0.0022415151, + 0.0001364162, 0.0008486430, -0.0003767177, 0.0007498837, -0.0000196970, + -0.0027715608, -0.0026915281, 0.0003085631, 0.0019488707, 0.0014594952, + -0.0017401930, 0.0004212661, 0.0008593481, -0.0010121223, 0.0019572722, + 0.0024884809, -0.0022639660, 0.0010080322, -0.0002311994, 0.0003999625, + -0.0011024142, -0.0006844833, 0.0005267952, 0.0008503341, 0.0001317523, + -0.0029145645, -0.0027492377, -0.0002548404, 0.0016260296, -0.0023876885, + 0.0003124895, 0.0015746914, 0.0009416854, -0.0008886638, -0.0011453643, + 0.0010337159, -0.0012945724, 0.0022796495, 0.0000572595, 0.0002067326, + -0.0013808724, 0.0005640470, -0.0009516185, 0.0017071292, 1.8014601469, + -0.0005992639, -0.0006105108, -0.0010470431, 0.0016337268, -0.0015565399, + 0.0013287626, 0.0036093504, 0.0006979029, -0.0004190677, -0.0010080119, + -0.0007556473, 0.0039828424, -0.0011996664, -0.0004617234, 0.0027116896, + -0.0027224268, -0.0007289214, 0.0000348934, 0.0009578210, 0.0004600359, + 0.0011962419, -0.0042711464, -0.0016207907, 0.0009256327, 0.0020921370, + -0.0018060710, -0.0012118178, -0.0012732833, 0.0008958397, -0.0017053653, + 0.0009646371, -0.0009404598, -0.0004035523, 0.0007666093, 0.0015140395, + -0.0025197288, 0.0004074782, -0.0032421874, 0.0013144468, -0.0002473583, + 0.0005379342, 0.0018097064, 0.0013458743, -0.0018880166, -0.0000199424, + 0.0005617787, 0.0002092663, -0.0023594666, 0.0007651653, 0.0003010212, + -0.0012711232, -0.0017222557, 0.0003867056, -0.0006095956, -0.0029191442, + 3.3788416386, 0.0014907736, 0.0007719044, 0.0009233744, -0.0010541664, + 0.0012283891, -0.0001349715, 0.0006909753, -0.0011007339, 0.0002802701, + 0.0002958330, -0.0023651132, 0.0029315264, 0.0011675593, 0.0007191029, + 0.0018217219, 0.0026792390, -0.0023516063, -0.0032582507, 0.0000589839, + -0.0002290476, -0.0033494546, 0.0004356010, -0.0000702348, 0.0003978559, + 0.0019134101, 0.0019548251, -0.0004195503, -0.0008963299, -0.0018934705, + 0.0008341246, 0.0018518583, -0.0008420475, -0.0002675571, -0.0002553179, + 0.0004435385, -0.0005096822, -0.0028541298, 0.0002114901, -0.0004034988, + 0.0002193109, -0.0006010234, 0.0004771771, -0.0018094168, -0.0022030158, + -0.0013085580, 0.0038623088, -0.0014262629, -0.0014709305, -0.0026385132, + -0.0034480034, -0.0003599767, -0.0028284383, -1.5568046570, -0.0007611138, + 0.5717421174, -0.0019828600, -0.0015786854, 0.0045373291, -2.0071554184, + -0.0027112882, -0.0035270294, 0.0008977866, -0.0004555625, -0.0027950788, + -0.0010264185, -0.0018140227, 0.0039099613, -1.7504637241, -0.0017659417, + 0.0017358193, -0.0012847951, 0.0014568692, -0.1150563210, -0.0028379513, + 0.0008339984, 0.0002734666, 0.0011015506, 0.0002524105, 0.0002213498, + -0.0000404781, 0.0020061154, -0.0021687280, -0.0006630919, -0.0010228711, + 0.0018544474, 0.0001754838, 0.0007355711, 0.0040124706, -0.0000812389, + -0.0010554297, -0.0005473883, 0.0002627904, -0.0002434258, 0.0009458016, + -0.0001111845, -0.0011566719, -0.0011942452, 0.0014997772, 0.0035097394, + 0.0002855675, -0.0003084848, 0.0012943204, 0.0001510726, 0.0017204718, + 0.0016856957, -0.0003420333, -0.0014239692, 0.0011451908, -0.0002813032, + 0.0000752136, 0.0011910591, 0.0000974436, 0.0010289825, 0.0014013585, + -0.0007491915, -0.0023385282, -0.0000579013, 0.0004033460, 0.0006657011, + 0.0004674583, -0.0005256436, -0.0000550067, 0.0009063617, 0.0003196448, + -0.0040366389, -0.0012000131, 0.0087553756, -0.0026248987, 0.0008753431, + -0.0036413525, -0.0005328284, -0.0023576883, 0.0014605783, 0.0000803827, + -0.0000498164, 0.0003235401, -0.0034434972, 0.0001334143, -0.0003107716, + -0.0025040871, 0.0025770739, 0.0016514412, -0.0018745651, -0.0003347085, + 0.0014285003, 0.0007105498, -0.0029313229, -0.0013090465, 0.0010289298, + -0.0065661194, 0.0007304838, 0.0000703029, -0.0003615846, 0.0007468238, + -0.0002179854, 0.0016089182, 0.0023584561, 0.0001579421, -0.0047860099, + -0.0001356024, 0.0024632197, 0.0037675248, 0.0025799761, 0.0025987211, + 0.0009218720, 0.0008852831, 0.0000447072, -0.0000326498, 0.0015077288, + 0.0017497416, 0.0006895043, -0.0003501237, 0.0010173712, -0.0005225823, + 0.0005070013, 0.0015390073, 0.0004410015, 0.0006545748, -0.0017028321, + -0.0009026453, 0.0011414117, -0.0019475126, -0.0011118068, 0.0004185718, + -1.5136879683, -0.0018168837, 0.0008949043, 0.0009451577, 0.0001205963, + -0.0028299477, -0.0015638361, -0.0006916614, 0.0016388721, -0.0009081108, + -0.0010262243, -0.0016469065, -0.0015561711, 0.0000998164, -0.0013828599, + -0.0029293383, 0.0000637695, -0.0000603637, 0.0019290447, 0.0012535700, + 0.0002700198, -0.1711029410, 0.0008294766, -0.0031958730, 0.0000937229, + 0.0025658198, 0.0014861634, -0.0038613495, -0.0007766169, -0.0019372385, + -0.0018991288, 0.0010101926, 0.0008260864, 0.0004250356, -0.0000597101, + 0.0017728652, -0.0008784351, 0.0015622652, 0.0006968547, 0.0009354521, + -0.0005684732, -0.0004277350, -0.0020242571, -0.0001939056, 0.0028115846, + 0.0009861777, 0.0013922625, -0.0011985749, -0.0032514669, 0.0011510849, + 0.0013344203, 0.0017152792, 0.0007104864, 0.0018735883, -0.0003915876, + -0.0010606128, -1.2229517698, 0.0035337480, -0.0008934760, 0.0008677205, + 0.0018608838, 0.0028024197, -0.0017070991, 0.0002404430, -0.0001305384, + 0.0012519993, -0.0008676237, -0.0012028540, 0.0002933196, 0.0006037443, + -0.0003277790, -0.0015311636, -0.0031862897, 0.0011378047, 0.0007287953, + -0.0007806774, 0.0033252239, 0.0001981482, -0.0026798523, -0.0019089626, + 0.0005386439, 0.0035743597, 0.0015259748, -0.0014608903, 0.0019140735, + -0.0011295393, 0.0002540578, -0.0003433255, 0.0019990732, -0.0000389419, + -0.0025073211, 0.0000034166, -0.0014361846, 0.0003341472, 0.0016081303, + 0.0012740828, 0.0043892516, 0.0002173202, -0.0004169149, 0.0004305291, + 0.0015668562, -0.0018725228, 0.2100502104, -0.0025187137, 0.0022993421}; + +float unet_input_time_embedding_50_10[] = { + -0.0025420533, -0.0027923691, -0.0018891683, -0.0036292935, -0.0035085897, + 0.0017656442, 0.0016839334, 0.0008155534, -0.0026904552, -0.0037500628, + 0.0018805254, -0.0060876696, -0.0031488780, -0.0019024438, 0.0001707654, + 0.0028276965, -0.0024731057, -0.0008368327, 0.0008727633, -0.0030906382, + 0.0044207484, -0.0001746332, -0.0014933281, 0.0363975540, 0.0017594311, + 0.0000183054, -0.0028890315, 0.0013250709, -0.0023590829, -0.0000234242, + 0.0021675392, 0.0012058839, 0.0008599311, -0.0013454813, -0.0026087002, + 0.0030569877, -0.0013239617, -0.0022277192, -0.0005532987, -0.0025366275, + -0.0028544627, -0.0026564919, 0.0003700801, -0.0002732435, -0.0027416004, + 0.0011282170, -0.0032206178, -0.0031685242, -0.0020455159, -0.0015949539, + -0.0014081029, -0.0025307972, -1.0530881882, -0.0008577565, -0.0015528054, + -0.0029361127, 0.0028375143, -0.0000930061, -0.0025610398, 0.0005509753, + 0.0000031928, -0.0004176501, -0.0005113115, 0.0002370472, -0.0010730941, + -0.0030172085, 0.0025184089, -0.0001088056, 0.0033095106, -0.0019891451, + 0.0002964544, 0.0019835182, 0.0013354912, 0.0008702371, -0.0001316098, + 0.0015299805, 0.0026675723, -0.0004093507, -0.0006535375, -0.0003424578, + 0.0044894223, 0.0019103080, -0.0002720328, 0.0008465210, -0.0001975072, + -0.0023106846, 0.0009030849, 0.0024103634, -0.0011186018, -0.0006336789, + -0.0010190407, -0.0013822652, -0.0005087154, -0.0031996528, -0.0011799266, + -0.0003021113, 0.0009765029, -0.0007415414, 0.0015550388, -0.0033720722, + -0.0001075771, -0.0019029356, -0.0022526702, 1.5292785168, -0.0001653559, + -0.0008659922, 0.0022812518, 0.0004649172, 0.0009626658, 0.0015601318, + -0.0006734254, 0.0003853338, 0.1983956844, -0.0036469130, 0.0018535443, + -0.0019759932, 0.0010363203, -0.0034729217, 0.0014131078, 0.0002371378, + -0.0040994431, 0.0001373223, -2.0098745823, -0.0018688217, -0.0018235436, + 0.0008499348, 0.0025618346, -0.0006574797, -0.0032048421, 0.0020577470, + -0.0013328348, -0.0028476994, -0.0002451146, 0.0011097146, -0.0022156099, + 0.0004106986, -0.0011965742, -0.0022999207, -0.0016767206, 0.0002648411, + 0.0014928367, -0.0025426839, -0.0004769287, -0.0000311527, 0.0013591934, + -0.0003323006, 0.0027394737, -0.0004809895, 0.0005706633, 0.0000809580, + -0.0021576611, 0.0004456170, -0.0041085077, -0.0029760385, -0.0036382456, + 0.0018631467, 0.0001974804, 0.0027048616, -0.0006298805, 0.0007862854, + -0.0010218252, 0.0017425047, -0.0003127838, 0.0005405927, -0.0042580054, + -0.0018445540, -0.0027939992, 0.0004671728, -1.9223465919, -0.0006156329, + -0.0019926457, -0.0028143870, -0.0003579920, 0.0010388419, -0.0052431319, + -0.0000243029, 0.0012320607, 0.0034864368, -0.0029431335, 0.0013546925, + -0.0010275026, -0.0019735964, -0.0016072360, -0.0019426001, -0.0029778397, + 0.0027096812, 0.0012672180, 0.0018277145, -0.0031146579, -0.0015478102, + 0.0001626550, -0.0014589452, -0.0007178333, -0.0005382991, -0.0032389255, + -0.0006231866, 0.0076418882, 0.0022110897, 0.0012057506, -0.0018270821, + -0.0011399221, 0.0025618509, 0.0043733986, -0.0005230787, -0.0031822734, + -0.0007667327, 0.0006653892, 0.0001843842, 0.0013414826, 0.0004177862, + 0.0010177190, -0.0005901405, -0.0010812371, 0.0008369412, 0.0009932276, + -0.0027879141, 0.0012029903, -0.0017421176, 0.0010926739, -0.0035538115, + -0.0014276123, -0.0016689727, -0.0001855588, -0.0294604711, -0.0001595954, + 0.0017448948, -0.0018429020, 0.0009500801, 0.0029087036, 0.0025771344, + -0.0008620387, 0.0002782922, -0.0017647669, 0.0003382354, 0.0041746898, + 0.0009772372, 0.0022817557, -0.0018354664, 0.0004025195, -0.0028089457, + -0.0010707749, -0.0032945389, -0.0022553473, -0.0012799706, -1.4048134089, + 0.0001132449, -0.0008247080, -0.0005573820, -0.0002330290, 0.0000617239, + -0.0017041191, -0.0032857941, -0.0012327260, -0.0016857646, 0.0024678851, + 0.0022675975, -0.0020820140, 0.0039233831, -0.0001723731, -0.0023020278, + 0.0021194159, -0.0021702957, -0.0009271319, 0.0062506250, 0.0015868651, + -0.0009503546, -0.0023543271, 0.0004003104, -0.0005737459, 0.0021401432, + -0.0009968430, -0.0005618150, -0.0002621762, 0.0014413660, 0.0000863115, + -0.0017318896, 0.0023779946, -0.0010658009, -0.0030117193, -0.0014449558, + -0.0169241652, -0.0019365773, 0.0011277591, -0.0011882316, -0.0035178731, + -0.0042264136, -0.0011269944, -0.0006743998, -0.0015727826, -0.0002773525, + -0.0015501323, 0.0024070528, -0.0051066689, 0.0008718756, -0.0011782367, + -0.0021753535, 0.0002354593, 0.0009475448, -0.0024404996, -0.0003263061, + 0.0053859865, -0.0011764888, 0.0017807421, 0.0019990471, 0.0037869283, + -0.0021891571, 0.0024237684, -0.0017641596, -0.0012754332, -0.0044819280, + 0.0004455633, -0.0033782972, -0.0033565082, -0.0030794106, -0.0001011244, + 0.0018631290, -0.0010361342, 0.0012408285, 0.0019299127, 0.0025049062, + -0.0024018779, 0.0009370190, 0.0012239960, -0.0026714597, 0.0021083294, + 0.0006135725, -0.0013161283, 0.0011085086, 0.1860974133, -0.0015113610, + -0.0008117021, -0.0015171673, 0.0006611970, -0.0013858734, -0.0011900016, + 0.0006702933, 0.0022782956, -0.0000459367, -0.0012856531, -0.0004968536, + -0.0014986154, 0.0015366378, 0.0023038129, 2.6156821251, 0.0014939925, + 0.0003645075, 0.0024698465, -0.0018389997, -0.0035707299, -0.0012896591, + -0.0013229828, -0.0009906236, -0.0000570212, 0.0017921124, 0.0018444896, + 0.0005278187, -0.0032691115, -0.0000272327, -0.0002473542, -0.0066461512, + -0.0023626825, -0.0014452296, -0.0013849474, -0.0027163741, -0.0017961791, + 0.0025628500, 0.0018223855, -0.0016937624, 0.0004368927, -1.3932359219, + -0.0004588412, -0.0004176940, 0.0008217636, 0.0006938726, -0.0005325943, + -0.0030687265, -0.0003248047, -0.0030454455, -0.0019402525, 0.0003738999, + 0.0012207754, -1.5548011065, -0.0001709233, 0.0022461866, 0.0000760546, + -0.0025032158, -0.0010073693, 0.0015688436, -0.0007264963, 0.0010273927, + 0.0047562504, -0.0020166114, -0.0016278103, -0.0004861953, -0.0021572229, + 0.0000670752, 0.0021394999, -0.0006692178, -0.0007956107, -0.0021667015, + -0.0003790444, -0.0014947616, 0.0024829556, -0.0013635061, -0.0024467912, + -0.0010704757, 0.0023717596, -0.0036348710, 0.0016137627, -0.0013113059, + -0.0011414760, -0.0013297950, -0.0017713862, -0.0013509283, -0.0012603761, + 0.0016323666, -0.0021504611, -0.0004404420, -0.0000305558, 0.0012734681, + -0.0032216392, -0.0011383567, -0.0004017120, 0.0003963744, -0.0004710178, + 0.0019991319, -0.0015254701, -0.0017619452, 0.0027690942, -0.0016892827, + -0.0012046206, -0.0011046850, -0.0015018431, 0.0027152402, 0.0009511524, + 0.0011640678, -0.0009860480, -0.0002826925, -0.0001144111, -0.0006036840, + 0.0034075668, -0.0007866840, -0.0013982434, 0.0020050651, -0.0017285880, + 0.0053995564, -0.0004837960, 0.0012540142, 0.0003240360, 0.0239797495, + -0.0010132450, 0.0008916799, -0.0004885634, -0.0002125204, -0.0039043953, + -0.0021376070, -0.0000779321, 0.0005609738, -0.0014503868, 0.0014301520, + 0.0019039842, -0.0039175116, -0.0045812819, 0.0024872846, -0.0023571448, + 0.0020365994, 0.0009659785, -0.0024643559, -0.0001951606, 0.0000402839, + -0.0033894521, -0.0003091709, 0.0018221019, -0.0010407337, -0.0003161961, + 0.0183137860, 0.0031030220, -0.0002012694, -0.0025256043, -1.3119469881, + 0.0031087617, -0.0033744457, -0.0007571289, 0.0011960629, -0.0000737390, + 0.0021994039, 0.0003440173, -0.0003888356, -0.0026681493, -0.0003883864, + 0.0006706552, 1.7144387960, -0.0006804024, -0.0030125421, -0.0027571754, + 0.1043504030, -0.0005742302, -0.0003625844, 0.0016050069, -0.0009388784, + 0.0022161393, -0.0002458720, 0.0027505876, -0.0010305517, 0.0026702592, + 0.0019714879, 0.0009188880, -0.0021103611, -0.0018403628, -0.0005537062, + -0.0008908377, 0.0007689111, -1.5820146799, 0.0002463488, 0.0000027487, + -0.0019299127, 0.0019140365, -0.0004475741, 0.0031237807, 0.0016647540, + -0.0026839967, 0.0025590737, 0.0000652782, 0.0010717525, 0.0008212691, + -0.0036280570, -0.0006907766, -0.0007949169, -0.0005539600, -0.0012380863, + -0.0044630989, -0.0016007773, 0.0013256767, -0.0016281859, 0.0026668597, + -0.0012882629, -0.0001510393, 0.0027519192, -0.0016371943, -0.0000600102, + 0.0051072678, 0.0000308612, 0.0026726057, -0.0061447467, -0.0019356678, + 0.0020712968, -0.0009329887, 0.0006053010, -0.0013071029, -0.0019761408, + -1.6738005877, 0.0028526057, 0.0007544383, 0.0003736224, -0.0005433797, + -0.0011404011, -0.0014657918, 0.0016795835, 0.0036269217, 0.0018946966, + 0.0014332859, -0.0029221699, -0.0007748003, 0.0024656933, 0.0017015133, + -0.0017632795, -0.0029209014, -0.0017364230, -0.0014644591, 0.0029920158, + -0.0021932949, 0.0009816093, 0.0015405705, 0.0009075899, -0.0002316027, + 0.0018236460, 0.0016277255, 0.0002730004, -0.0012660665, 0.0016324248, + -0.0002220776, 0.0000748984, -0.0040914421, -0.0006904296, -0.0005021372, + -0.0003859147, 0.0012640688, 0.0025647138, -0.0002689399, -0.0027704458, + -0.0007496403, 0.0009803730, 0.0023892568, 0.0014158678, 0.0008916832, + -0.0021637725, -0.0016105511, 0.0003230702, 0.0021715197, 0.0003705970, + -0.0017138091, -0.0004947553, -0.0089968825, 0.0013145697, 0.0010182450, + 0.0005579826, 0.0024056290, -0.0022626303, -0.0023872675, -0.0029448529, + 0.0005758360, 0.0012394311, 0.0012816852, 0.0027598036, -0.0014781663, + 0.0009403750, -0.0023043668, -0.0011013895, 0.0020583631, 0.0005525870, + 0.0009662746, -0.0012084731, -0.0017997460, -0.0027313554, -0.0020571616, + 0.0001137750, 0.0006833684, -0.0009434412, -0.0001620059, 0.0011985824, + -0.0020328527, -0.0024443434, -0.0003769099, 0.0024241672, -0.0002645096, + 0.0015077498, -0.0030546288, 0.0022660852, 0.0001499001, -0.0017736009, + -0.0034171143, -0.0005466916, 0.0010957757, -0.0018416049, 0.0015510875, + 0.0006936867, -0.0028908700, 0.0018562272, -0.0067724008, 0.0009419201, + -0.0006550654, 0.0034773266, -0.0019568868, -0.0024584145, -0.0005147741, + -0.0003859715, -0.0033388389, -0.0024225181, 0.0008180796, -0.0011026175, + 0.0004894417, -0.0006134766, -0.0009628205, -0.0025288071, -0.0003262335, + -0.0008193441, 0.0001173904, -0.0015770169, -0.0026683316, 0.0045793359, + -0.0002628674, -0.0018714473, 0.0001762600, 0.0005414614, 0.0012328736, + -0.0027413266, -0.0018892497, -0.0011617225, 0.0026068282, -0.0034000943, + 0.0041090641, 0.0004256680, -0.0020677093, 0.0001075370, 0.0032577533, + -0.0008906508, 0.0013334034, 0.0005218235, 0.0024393485, -0.0015980238, + 0.0004763086, -0.0000223164, -0.0022730248, -0.0024799083, -0.0001380923, + 0.0022362066, 0.0006818133, -0.0020177271, -0.0000291842, 0.0002358072, + 0.0000388208, 0.0025674463, 0.0003444168, -0.0040707104, -0.0020851730, + -0.0000669947, 0.0016334187, 0.0011112415, 0.0005364900, -0.0012822000, + -0.0013246965, -0.0108997123, -0.0016853563, -0.0000890270, -0.0033623599, + 0.0012978781, -0.0019504246, 0.0018534372, -0.0019742784, 0.0009194259, + 0.0001044311, -0.0037908084, -0.0025731153, -0.0006143409, -0.0016792424, + 0.0012412029, -0.0004850710, 0.0020216787, 0.0019558757, -0.0006673448, + -0.0010518255, -0.0004270021, -0.0006441392, -0.0010122261, -0.0011179564, + 3.6111803055, -0.0011884258, -0.0030266466, 0.0007772883, -0.0031827877, + -0.0017826604, 0.0006188108, 0.0016655945, 0.0002092550, -0.0011268500, + 0.0011069095, -0.0004717904, -0.0002163224, 0.0027701282, -0.0008629411, + 0.0009460596, 0.0006583517, -0.0028116349, -0.0007453905, -0.0007262214, + -0.0012329456, 0.0007816334, 0.0011119939, -0.0003467242, -1.7040845156, + -0.0004777457, -0.0027513320, -0.0032425120, 0.0001162379, -0.0004373197, + -0.0031268429, 0.0004680181, -0.0005567680, 0.0022235201, -0.0005438856, + -0.0028878665, -0.0022297995, -0.0005943002, 0.0022476690, -0.0005405606, + 0.0023786966, 0.0002735555, -0.0021859240, -0.0004637858, 0.0016665896, + 0.0007426031, 0.0017281455, -0.0011487736, 0.0003442322, 0.0000836127, + 0.0013615494, -1.1809145212, 0.0015574256, 0.0010291962, -0.0014345632, + -0.0054807374, -0.0006281796, 0.0019833467, -0.0000039847, 0.0001599525, + -0.0022411537, -0.0047594896, -0.0015974283, -0.4611025155, -0.0006419064, + -0.0016466187, -0.0026250866, -0.0021846429, 0.0015237899, 0.0016519628, + -0.0012933891, -0.0031957570, -0.0010840597, 0.0025234430, 0.0001784774, + -0.0008466743, 0.0031739192, -0.0036220807, 0.0003256630, -0.0004872284, + -0.0021095625, 0.0022849953, 0.0014332598, -0.0034946559, -0.0005423238, + -0.0008197622, -0.0038100043, 0.0011820490, -0.0044412138, 1.5549029112, + -0.0010184096, -0.0026451356, -0.0019522136, -0.0005528615, -0.0017846641, + -0.0023519814, -0.0016128891, -0.0006323033, 0.0045332992, 0.0004407973, + 0.0028786238, 0.0010031518, 0.0013668225, 0.0000419840, -0.0025786581, + -0.0055998894, 0.0009746766, 0.4497989416, -0.0012857332, 0.0022608461, + 0.0003616237, 0.0029089977, -0.0018916656, 0.0006329096, 0.0008574517, + 0.0025535915, 0.0027881402, 0.0018221383, -0.0018094718, 0.0002089860, + 0.0119814537, -0.0038511241, 0.0004933192, -0.0016580275, 0.0018410599, + 0.0001799609, 0.0009645852, -0.0014154641, -0.0029151929, 0.0010738838, + 0.0008115014, 0.0030207976, 0.0014136126, -0.0006566436, -0.0020683603, + 0.0002628723, 0.0037858612, -0.0006250297, 0.0014820613, 0.0002951953, + 0.0003788199, 0.0020617605, 0.0019165399, -0.0007857921, -0.0016764794, + 0.2698279321, -0.0001177775, -0.0009390600, 0.0006793002, -0.0023266592, + 0.0000037972, -0.0025325981, -0.0043304795, -0.0027583514, 0.0011783801, + 0.0004226530, 0.0023489087, -0.0002420736, 0.0008232440, -0.0032967418, + 0.0004373176, -0.0012320785, -0.0002810793, 0.0018628980, -0.0017575137, + -0.0027721301, -0.0023374604, 0.0038555767, 0.0020469930, -0.0001507830, + -0.0022879131, -0.0007670708, 0.0012253058, 0.0014235843, 0.0024028537, + 0.0004225343, -0.0013627229, 0.0039328942, -0.0009009156, -0.0025689323, + -0.0037590240, -0.0019788668, 0.0006133758, 0.0044221710, -0.0000174348, + 0.0027391277, 0.0015835501, -0.0010924675, -0.0029653735, 0.0010384773, + 0.0001298059, -0.0027121594, -0.0003768322, 0.0002059465, -0.0006167652, + -0.0032134438, -0.0011490724, -0.0007848522, 0.0021657180, 1.7804399729, + 0.0004426464, 0.0002098521, -0.0013778172, 0.0012691829, -0.0020873621, + -0.0015341546, 0.0040915753, -0.0009852536, 0.0002959440, -0.0013608877, + -0.0022372934, 0.0025598393, -0.0036808830, 0.0025717060, 0.0022385330, + -0.0007169279, 0.0010161080, 0.0027187597, 0.0006314213, 0.0012966010, + -0.0009420272, -0.0014871317, -0.0010872220, 0.0013028518, -0.0001367870, + -0.0037098275, -0.0010164443, -0.0006372151, 0.0018871566, -0.0006832201, + 0.0011129857, 0.0003403528, -0.0019712718, -0.0013937498, 0.0026612971, + -0.0004243462, -0.0003439231, -0.0028400954, 0.0021617175, -0.0012872545, + 0.0008620569, 0.0001422404, -0.0024746931, -0.0001363623, 0.0014032209, + 0.0002129145, 0.0026663654, -0.0029254025, 0.0016668900, -0.0007279655, + -0.0000380717, 0.0007240605, 0.0004787676, 0.0002561659, -0.0015320913, + 3.2610383034, 0.0000031851, 0.0020265747, 0.0003617543, -0.0002244101, + 0.0016864871, -0.0019696560, 0.0017400365, -0.0014654770, -0.0018196928, + -0.0028558208, -0.0006537167, 0.0006766259, 0.0010480599, 0.0009190744, + 0.0005333750, 0.0002322020, -0.0011450611, -0.0043319445, 0.0008983542, + -0.0020110663, -0.0036917748, -0.0021388661, -0.0022941045, 0.0012211525, + 0.0020810333, 0.0000322158, -0.0001797897, 0.0016103878, 0.0001257984, + -0.0021533254, 0.0023785711, 0.0005335765, 0.0015582123, 0.0025241161, + 0.0013740089, -0.0010916443, -0.0045196018, -0.0001923398, -0.0027809809, + -0.0024469174, 0.0012530871, -0.0031088302, 0.0007930831, -0.0020691475, + 0.0004269849, 0.0018054829, -0.0006770549, -0.0021519428, -0.0027048448, + -0.0028351527, 0.0017913096, -0.0014163260, -1.5701527596, -0.0006247310, + 0.5009222627, -0.0013095670, -0.0027893218, 0.0011489328, -2.0307114124, + -0.0011157556, -0.0031208219, -0.0012624310, -0.0021709362, -0.0024411520, + 0.0018569021, -0.0020938264, -0.0000966964, -1.7948529720, -0.0009271135, + 0.0016224550, -0.0012995333, -0.0001982983, -0.0792995021, -0.0035554087, + 0.0016016196, -0.0022006137, -0.0018103933, 0.0022411791, -0.0007758630, + -0.0010455698, -0.0009441348, 0.0015837802, -0.0023687608, -0.0018680380, + 0.0000968517, 0.0002168084, 0.0007573706, 0.0031636064, 0.0013643438, + -0.0004652352, -0.0013335876, -0.0010150643, -0.0006099124, 0.0025792203, + -0.0013026586, -0.0008221501, -0.0038144412, -0.0005569221, -0.0018160064, + -0.0009132235, 0.0002171686, -0.0001707822, 0.0004570717, 0.0018795831, + 0.0003449135, -0.0007218192, 0.0013883978, 0.0009032108, -0.0010441113, + 0.0039759669, 0.0002243901, 0.0013518494, 0.0019749301, 0.0023425811, + 0.0001247318, -0.0009348929, 0.0034320513, -0.0026410543, -0.0001732790, + 0.0006113178, 0.0004705936, 0.0003554365, -0.0012687687, 0.0013253801, + -0.0038154209, -0.0011669828, 0.0016369666, 0.0022640307, -0.0014282367, + -0.0023131543, 0.0006431619, -0.0032522534, 0.0033286894, 0.0000593744, + -0.0010275953, -0.0037202307, -0.0009800517, -0.0001368308, -0.0017085676, + -0.0017348314, 0.0028853603, -0.0015359833, -0.0044584600, 0.0011727228, + 0.0002223854, -0.0025505750, 0.0004997040, -0.0015267283, 0.0004450893, + -0.0041141566, 0.0006302977, -0.0009150900, 0.0007143663, 0.0001375582, + -0.0002172755, 0.0009402081, -0.0008943360, -0.0039650528, -0.0045459783, + -0.0009586718, -0.0000614617, 0.0029636612, 0.0001216584, 0.0004287927, + 0.0002595799, 0.0010102973, -0.0029094559, -0.0044636526, 0.0005804464, + 0.0010412603, 0.0018561227, 0.0013963724, -0.0011351872, -0.0019738772, + 0.0011780886, 0.0009934180, 0.0010521838, 0.0003443084, -0.0038306033, + -0.0021342831, 0.0000750317, 0.0010780746, -0.0015757689, -0.0004575620, + -1.5054907799, -0.0047338959, 0.0008089292, -0.0027942441, 0.0024752144, + -0.0012247583, -0.0010698994, -0.0025870388, 0.0002524746, 0.0002849991, + -0.0016626990, -0.0020438768, 0.0011103828, 0.0009847917, -0.0013640248, + -0.0032197116, 0.0002030861, 0.0008199150, 0.0030307621, -0.0030992455, + -0.0006611240, -0.1153507084, -0.0027195823, -0.0016670013, -0.0006464124, + -0.0022010393, -0.0007827266, -0.0028709122, -0.0032509891, -0.0008035246, + -0.0019863732, 0.0006956887, -0.0016125296, -0.0014518886, 0.0025270933, + 0.0008116285, 0.0000433507, -0.0019393670, 0.0020369873, -0.0006357227, + -0.0002092453, -0.0005140183, -0.0024269628, -0.0016552284, 0.0009037890, + -0.0012934401, 0.0020337070, -0.0004423484, -0.0020919126, 0.0022515599, + 0.0017926515, 0.0010624593, 0.0018569035, -0.0004932767, -0.0018252721, + -0.0000027934, -1.2334353924, 0.0031554885, 0.0005165432, 0.0013023515, + 0.0011549189, -0.0021657355, -0.0006383944, 0.0012554398, -0.0003554102, + 0.0005809292, 0.0010122150, -0.0007642239, -0.0011607124, 0.0041510840, + -0.0021926383, -0.0007968893, -0.0018890589, -0.0004327665, 0.0028434666, + -0.0012260433, 0.0035748035, 0.0011927341, -0.0029120231, 0.0002410077, + -0.0006468012, 0.0017762794, 0.0019724914, 0.0015084618, 0.0014043364, + -0.0014140304, 0.0001125648, -0.0026486358, 0.0025102668, 0.0024144095, + -0.0008968241, -0.0008358262, 0.0006573079, 0.0022139605, -0.0008189243, + 0.0009590127, 0.0001950106, 0.0016098220, -0.0021614498, 0.0015523927, + 0.0007564910, -0.0002633408, 0.1880540997, -0.0050618257, 0.0027122090}; + +float unet_input_time_embedding_50_11[] = { + -0.0022163866, -0.0026221806, -0.0005012583, -0.0018538816, -0.0018001175, + 0.0020669790, 0.0018204411, 0.0018586346, -0.0013910655, -0.0021491416, + 0.0004225017, -0.0006667380, -0.0030047921, -0.0028598527, 0.0007969141, + 0.0040223729, 0.0003818218, 0.0010944472, 0.0043396545, -0.0006087725, + 0.0026671248, -0.0013445569, 0.0025560088, 0.0463422015, 0.0003834732, + -0.0026851825, 0.0013768775, -0.0000178441, -0.0008532311, -0.0018802984, + 0.0008834195, 0.0019872361, 0.0009440994, -0.0020527393, 0.0004063500, + 0.0013885829, 0.0017928048, -0.0025828304, -0.0019431710, -0.0004906608, + -0.0004503708, 0.0012341975, 0.0010774531, 0.0017629778, -0.0043799365, + -0.0000466912, -0.0016634706, -0.0035321079, 0.0004998017, -0.0019520351, + 0.0003175074, -0.0016691515, -0.9403058887, -0.0006812029, -0.0013584160, + -0.0004164613, 0.0029657704, 0.0008001332, -0.0004347353, 0.0001935728, + 0.0007213384, -0.0017576799, -0.0016056322, 0.0019566626, 0.0004461408, + -0.0009384416, 0.0015649218, 0.0015617319, 0.0031473301, -0.0017714838, + 0.0014250090, 0.0015641223, 0.0002302758, -0.0015987307, 0.0012708372, + -0.0003810404, 0.0004374338, -0.0004254030, -0.0000678488, 0.0016243949, + 0.0026457147, 0.0028696447, -0.0002452070, -0.0009272816, -0.0022816572, + -0.0010819684, 0.0017751940, 0.0011804085, -0.0013881484, -0.0016623656, + -0.0007712772, -0.0017189048, -0.0004876181, -0.0026684152, -0.0029179179, + -0.0001057829, -0.0003404552, -0.0011628512, 0.0020804361, -0.0025107982, + 0.0011293390, -0.0031138309, -0.0019828277, 1.3860447407, -0.0022289464, + -0.0017028050, 0.0027223588, 0.0001860792, 0.0010280651, 0.0017493342, + 0.0021158783, 0.0007247059, 0.2296106517, -0.0024578646, 0.0001852699, + -0.0015734066, 0.0002572318, -0.0020412256, -0.0015933374, 0.0006979040, + -0.0025393222, 0.0007784243, -2.0645489693, -0.0003131367, -0.0016125664, + 0.0008520097, 0.0021183169, -0.0006384733, -0.0023253961, 0.0018946994, + 0.0005226149, -0.0013014507, 0.0002644577, -0.0009036614, -0.0027047349, + -0.0009463576, -0.0011187678, -0.0008668071, -0.0015598321, 0.0009315792, + 0.0013897393, -0.0006513856, 0.0006392426, -0.0016586189, 0.0014843482, + 0.0021283934, 0.0009636297, -0.0023878338, -0.0009032395, 0.0005232422, + -0.0003180373, 0.0008707714, -0.0032111569, -0.0029099844, -0.0025065900, + 0.0013486748, 0.0015562614, -0.0009751683, -0.0030349186, 0.0006323066, + 0.0020275298, -0.0004387988, 0.0018471079, 0.0015022983, -0.0024979045, + 0.0014137381, -0.0032126692, -0.0041115433, -1.6958827972, 0.0016370828, + -0.0002132839, -0.0034259595, -0.0001651216, 0.0008617995, -0.0013273954, + 0.0011414597, -0.0011113513, 0.0053785490, -0.0025501107, -0.0004028799, + 0.0005728793, -0.0004600687, 0.0017348682, -0.0008058473, -0.0024076942, + 0.0025433511, 0.0000186125, 0.0028824355, -0.0029059262, -0.0006710761, + -0.0026597199, 0.0016728388, -0.0026850239, 0.0001520591, -0.0033978987, + -0.0033439486, 0.0011106535, 0.0014821156, 0.0037699842, -0.0026444965, + -0.0003484399, 0.0038111066, 0.0014955909, 0.0005736193, 0.0001260601, + 0.0003701812, 0.0023785040, 0.0007437784, 0.0010880735, 0.0038518454, + -0.0011883699, -0.0000127503, -0.0005534007, 0.0011572808, 0.0021794026, + -0.0018251445, 0.0014237911, -0.0001794305, 0.0034563546, -0.0003267183, + -0.0003074678, -0.0010764995, -0.0021069443, 0.0117811067, -0.0012442556, + 0.0049201590, -0.0032109628, -0.0005282713, -0.0006959841, 0.0001099566, + -0.0020647729, 0.0002058279, -0.0005440377, -0.0010907664, 0.0042340597, + 0.0012617758, 0.0001562503, -0.0009448398, -0.0014322381, -0.0039825533, + -0.0003716953, -0.0023158221, -0.0005618657, 0.0011007972, -1.4218747616, + -0.0004686408, -0.0006558090, 0.0013115105, -0.0001684483, 0.0024403627, + -0.0009595696, -0.0017049224, 0.0009393203, -0.0013481276, 0.0013361014, + 0.0003757768, -0.0017318530, 0.0009455296, -0.0018478578, -0.0038634255, + 0.0019961437, 0.0000920852, 0.0008467033, 0.0031581460, 0.0002458567, + 0.0022192807, -0.0004162455, 0.0000338089, 0.0011708974, 0.0024342344, + 0.0017070137, 0.0017658721, 0.0014248420, -0.0009141015, -0.0002474978, + 0.0014568313, 0.0043545458, 0.0000927839, -0.0008265888, -0.0029914505, + 0.0201218873, -0.0008707810, 0.0000134591, 0.0004356545, -0.0010953329, + -0.0031356709, -0.0000493918, -0.0030734523, -0.0037792497, -0.0007329024, + -0.0011758598, 0.0016219339, -0.0035968197, 0.0010885552, -0.0017381869, + -0.0028380658, 0.0003579189, 0.0010613729, 0.0015528682, -0.0012258501, + 0.0041587530, -0.0022112073, 0.0021609664, 0.0029927627, 0.0020820044, + -0.0004785466, 0.0010764622, -0.0020815847, 0.0026169969, -0.0054475595, + -0.0004032464, -0.0017369282, -0.0039567230, -0.0026275609, -0.0015560011, + 0.0007952494, 0.0007615552, 0.0009600366, -0.0002529733, 0.0012891912, + -0.0010593662, 0.0021336810, -0.0020093860, -0.0021152962, 0.0020020269, + 0.0001284000, -0.0016885102, 0.0010669027, 0.0513764620, 0.0015870244, + -0.0032525053, -0.0002995022, 0.0010234186, -0.0022811105, 0.0001503830, + -0.0002836878, 0.0018086892, -0.0022410713, 0.0024988852, -0.0023757131, + 0.0000746865, 0.0012464530, 0.0029642268, 2.5488786697, 0.0013017191, + -0.0035598325, 0.0003733119, 0.0003783336, -0.0048122685, -0.0004949000, + -0.0012937337, 0.0006570667, -0.0006229468, -0.0000279862, 0.0005849061, + -0.0003375355, -0.0032884236, -0.0032274937, -0.0015369044, -0.0058515999, + -0.0032652919, 0.0021909275, -0.0019683521, 0.0008387868, -0.0005273117, + -0.0000063244, 0.0029657451, -0.0012729503, 0.0007593287, -1.4122468233, + -0.0013050046, -0.0013014306, 0.0005400591, 0.0005850922, -0.0011595979, + -0.0014158171, -0.0000573847, -0.0023394546, -0.0014263114, 0.0001869816, + 0.0005930337, -1.4453271627, -0.0013907703, 0.0025170161, 0.0022883839, + -0.0008001819, -0.0014687222, 0.0002571559, 0.0009744219, -0.0031952797, + 0.0016438356, -0.0025548497, 0.0006487640, 0.0012159504, -0.0022669020, + -0.0008093514, -0.0010119574, 0.0014414535, -0.0005072081, -0.0018057935, + 0.0008859680, -0.0001465231, -0.0002178091, 0.0000336370, -0.0047035897, + 0.0004290990, 0.0016297185, -0.0032677120, 0.0021284712, -0.0014959984, + -0.0006912635, 0.0000337563, 0.0018065223, -0.0027658625, -0.0021620728, + -0.0005007253, -0.0010543410, 0.0012808722, -0.0009586718, 0.0015459033, + -0.0029457218, -0.0022345332, 0.0009404868, 0.0001113389, 0.0002967780, + 0.0032475307, -0.0000269813, 0.0001474840, 0.0039359992, -0.0014623101, + -0.0007442278, 0.0006528902, 0.0013265091, 0.0007906398, -0.0001664533, + -0.0003033728, 0.0000386368, 0.0015076410, 0.0000076834, 0.0032283107, + 0.0042550694, -0.0022544877, -0.0021538385, 0.0020731988, 0.0008312508, + 0.0052208393, -0.0010320526, -0.0010809754, -0.0015428620, 0.0193683878, + 0.0005156067, -0.0009208005, 0.0005391564, 0.0009360686, -0.0019009621, + -0.0029283855, -0.0023163920, -0.0014424650, 0.0004651742, 0.0024699820, + 0.0009099944, -0.0031150915, -0.0024966013, 0.0040729786, -0.0033723451, + -0.0017095483, 0.0026461915, 0.0008727647, -0.0016224411, -0.0011883290, + -0.0004529213, -0.0016295777, -0.0015107105, 0.0003019206, 0.0001542578, + 0.0199409891, 0.0041697142, 0.0020553167, -0.0005361279, -1.3102995157, + 0.0020482535, -0.0003733612, -0.0025262097, 0.0003081455, -0.0010021038, + -0.0015275431, -0.0007187699, -0.0002204934, -0.0016288399, -0.0024722719, + 0.0012902981, 1.5879381895, -0.0010615527, -0.0032530711, -0.0029190299, + 0.1225751713, -0.0018404722, -0.0014434308, -0.0000503911, 0.0000689803, + 0.0004907246, 0.0002963543, 0.0044340705, -0.0007821103, 0.0029510716, + 0.0032484969, -0.0000603297, -0.0038349526, -0.0004007802, -0.0002490222, + -0.0012149082, 0.0013105450, -1.6272943020, 0.0018814933, 0.0011926860, + 0.0014045434, 0.0028749062, 0.0005917614, 0.0040466147, 0.0009995606, + -0.0017876769, 0.0011707158, -0.0008098708, 0.0010214197, 0.0009793211, + -0.0002899333, 0.0006961935, -0.0008801850, 0.0011216085, -0.0016265986, + -0.0022964163, -0.0012638313, 0.0023421957, -0.0016453902, 0.0031768091, + -0.0020700197, -0.0003302314, 0.0019362753, 0.0029385732, -0.0012995230, + 0.0023555486, 0.0001820056, 0.0022893981, -0.0013631363, -0.0033847070, + 0.0013380731, 0.0007084999, 0.0001442148, -0.0007092529, -0.0005284436, + -1.6838279963, 0.0043111611, 0.0012601186, -0.0001546592, -0.0022595441, + -0.0016786739, 0.0005561747, 0.0004646508, 0.0033353767, 0.0023774588, + 0.0004873667, -0.0017777673, 0.0008445443, 0.0012639919, 0.0030962583, + -0.0019315472, -0.0013124160, -0.0005713403, 0.0003349995, 0.0009301221, + -0.0015735845, 0.0007898472, 0.0001318096, 0.0007910922, -0.0015493096, + -0.0009226929, 0.0010089865, 0.0024085981, 0.0017765141, 0.0000177461, + -0.0031848997, 0.0023782435, -0.0044679441, -0.0002010068, 0.0009195257, + -0.0002857072, 0.0013957932, 0.0024217092, -0.0018195733, -0.0025345292, + -0.0000272208, -0.0019909092, -0.0011984911, 0.0003698617, -0.0004828689, + 0.0000211373, -0.0004963229, 0.0002985019, 0.0019379701, -0.0022070999, + -0.0026171305, -0.0035108989, -0.0025873492, 0.0018561319, -0.0014595517, + 0.0004020801, -0.0005395693, -0.0020921498, -0.0011968865, -0.0026980515, + -0.0033325902, 0.0007728459, -0.0026287604, -0.0001856410, -0.0022245301, + 0.0005942085, 0.0005017993, -0.0018599755, 0.0058954903, 0.0018376375, + 0.0020109108, 0.0013801864, -0.0023925626, -0.0026512556, -0.0020145294, + 0.0016057203, -0.0004099475, 0.0015514658, 0.0002134652, 0.0000939532, + 0.0003876272, -0.0008139571, -0.0023862263, 0.0034617826, 0.0001961207, + 0.0029097116, -0.0010655399, 0.0003029261, 0.0011393875, -0.0019236072, + 0.0005927632, 0.0006665557, -0.0024971503, -0.0020597002, 0.0005682227, + 0.0011210273, -0.0027368842, -0.0004717580, -0.0046292655, 0.0013863659, + 0.0007972176, 0.0051600775, -0.0009366132, -0.0025326353, -0.0019356853, + 0.0004906019, 0.0000996152, -0.0018354021, -0.0008838500, -0.0015728432, + 0.0005809022, -0.0020675571, 0.0010978099, -0.0010944757, 0.0002955641, + -0.0015558475, 0.0018526812, -0.0005032523, -0.0017829363, 0.0035253298, + 0.0016596357, -0.0004490952, 0.0009284893, 0.0012089976, -0.0003661644, + 0.0009903470, -0.0000207949, -0.0008906787, -0.0002105616, -0.0025528297, + -0.0007434039, -0.0016949838, -0.0008715247, -0.0005769060, 0.0008768421, + -0.0010947818, 0.0013660458, -0.0021491011, 0.0024143271, -0.0007665362, + -0.0026008701, -0.0021802336, -0.0010436082, -0.0008278943, 0.0014791801, + 0.0006509605, -0.0025625196, -0.0017293803, -0.0004305062, 0.0003518984, + -0.0008795224, -0.0010701404, -0.0024347587, -0.0027561730, -0.0022473945, + -0.0017226908, 0.0016574878, 0.0004947730, -0.0009258897, 0.0007668530, + -0.0001691272, -0.0173709989, -0.0015562207, 0.0019499650, -0.0025436599, + 0.0016957782, -0.0018230141, 0.0024723476, 0.0002082090, 0.0011474211, + -0.0022429675, -0.0010660016, -0.0013665968, -0.0024976425, 0.0004595697, + 0.0018908870, 0.0031271940, 0.0009479900, -0.0015570452, 0.0016904753, + 0.0010180352, -0.0000420865, -0.0011642331, 0.0008233981, -0.0027546757, + 3.4826204777, 0.0009146626, 0.0000016484, 0.0021353536, -0.0017459304, + -0.0004674168, 0.0011770735, 0.0023840861, -0.0019942946, 0.0020134132, + 0.0008679936, 0.0010080686, 0.0004245905, 0.0027527292, 0.0015299562, + 0.0013925943, 0.0009118167, -0.0023654667, -0.0033828747, -0.0006294644, + 0.0005270839, -0.0002465239, 0.0025139716, 0.0024764629, -1.7901936769, + 0.0032614046, -0.0018945022, -0.0021228311, 0.0003491449, -0.0005001524, + -0.0027037230, 0.0023510666, -0.0018834323, 0.0028382814, -0.0020661510, + -0.0009119771, -0.0001688972, -0.0028607221, 0.0008674783, -0.0009013223, + 0.0021663690, -0.0022784546, 0.0002870467, -0.0012580743, 0.0026908331, + -0.0007375600, 0.0003069976, -0.0015329246, 0.0016832417, 0.0014771554, + -0.0001170202, -0.9680233002, 0.0001934702, 0.0032321652, -0.0018939492, + -0.0036986843, -0.0007579138, 0.0017873726, 0.0003513317, 0.0006646581, + -0.0029699323, -0.0012485338, -0.0016780874, -0.2801208198, 0.0004086208, + -0.0014939712, -0.0034290042, 0.0022766036, 0.0024522496, 0.0004014294, + -0.0040402221, 0.0011878153, -0.0021978340, 0.0037249180, 0.0012281711, + -0.0024395916, -0.0015668145, 0.0008749807, -0.0011023795, 0.0010893275, + -0.0001121033, 0.0030357409, 0.0028214436, -0.0021428207, -0.0027056311, + -0.0017792350, -0.0000251505, -0.0001878193, -0.0022335227, 1.6719814539, + -0.0014825712, -0.0020744659, 0.0010463685, -0.0015062133, -0.0003811014, + 0.0005056940, -0.0001664939, -0.0016262741, 0.0062252022, 0.0026636762, + -0.0006704459, -0.0017417427, -0.0001848093, -0.0024808701, -0.0037161405, + -0.0033296975, 0.0003058179, 0.3992685080, -0.0009573051, 0.0002333382, + -0.0000018375, 0.0032177405, -0.0030627348, 0.0001027132, -0.0002416682, + 0.0019139647, 0.0029783964, -0.0001195754, -0.0016092421, -0.0000814786, + 0.0223185085, -0.0003443989, 0.0013802168, -0.0007728557, 0.0014304593, + 0.0015724613, 0.0010644742, 0.0007210821, 0.0003036634, -0.0003908118, + 0.0013265582, 0.0014766732, 0.0022964841, 0.0012152621, -0.0034715962, + 0.0020305687, -0.0018916004, -0.0000638259, -0.0000734224, -0.0016953447, + -0.0008676157, 0.0030771983, -0.0005874569, -0.0030817911, -0.0027043265, + 0.2279890478, -0.0015713737, -0.0009150924, 0.0028995064, -0.0018645891, + -0.0000583360, -0.0035426808, -0.0026435936, -0.0008029637, 0.0015719030, + 0.0005067962, 0.0004410059, 0.0014765146, 0.0023941225, -0.0008498416, + -0.0000570526, -0.0003305769, 0.0008211405, 0.0013183039, -0.0007037520, + -0.0013055690, -0.0034389128, -0.0009091068, 0.0028818911, 0.0009677019, + 0.0003924603, -0.0011150325, -0.0028445334, 0.0010159090, 0.0021473621, + -0.0007508553, -0.0013229850, 0.0028476864, -0.0009965596, 0.0000368059, + -0.0001550152, -0.0012641978, 0.0006604351, 0.0014229561, -0.0009821563, + 0.0020307563, 0.0032844190, 0.0010033185, -0.0001562680, -0.0014023031, + -0.0007503591, -0.0009817225, 0.0002590423, 0.0007766037, 0.0010513024, + -0.0034118704, -0.0034956962, 0.0014267204, 0.0029641576, 1.7615396976, + -0.0046881214, -0.0000781892, 0.0010619881, 0.0016263712, -0.0004624501, + -0.0014848690, 0.0026286650, -0.0025830176, -0.0015083537, -0.0005585812, + -0.0012813552, 0.0008039461, 0.0002785567, 0.0007037169, 0.0027811998, + 0.0002870061, -0.0009059323, 0.0001002764, -0.0009388677, 0.0019605809, + 0.0016543912, -0.0004037539, 0.0005849267, -0.0000425479, -0.0018264675, + -0.0044829687, -0.0014554828, -0.0004911385, 0.0013357522, -0.0028546285, + 0.0048089894, 0.0025125640, -0.0009813150, 0.0006710929, -0.0007078359, + 0.0000391228, 0.0003236852, -0.0027281183, 0.0026791152, -0.0010521421, + 0.0015549546, 0.0012304229, 0.0000501899, -0.0015704887, 0.0009616679, + 0.0000536435, 0.0004618708, -0.0017198566, 0.0018182374, -0.0014000596, + 0.0007638260, 0.0014370643, -0.0020021037, -0.0025751423, -0.0030277406, + 3.1220457554, -0.0018977597, 0.0016878983, -0.0022963232, -0.0003127023, + -0.0021828611, -0.0001698635, 0.0033047870, -0.0009406889, -0.0004827402, + -0.0029604475, -0.0013292870, 0.0006333734, 0.0015617362, -0.0018673447, + 0.0017774263, -0.0010823291, -0.0006686524, -0.0031694828, 0.0027866126, + -0.0004433375, -0.0028898288, -0.0045366008, -0.0025781374, -0.0022011413, + 0.0010084310, 0.0017524473, -0.0010115698, 0.0011723789, 0.0017453637, + -0.0019995249, 0.0032808881, 0.0001013741, 0.0039887140, 0.0011853632, + 0.0001425052, 0.0019139162, -0.0025253478, -0.0013190212, -0.0013034814, + -0.0022203533, 0.0009042434, -0.0020567602, -0.0002225605, -0.0029202683, + 0.0009965100, 0.0026868549, 0.0017432271, -0.0002842044, -0.0034492724, + -0.0006037047, 0.0029591685, -0.0020111646, -1.5942380428, 0.0010328752, + 0.4307928085, 0.0002390729, -0.0021938090, 0.0022496476, -2.0661296844, + -0.0020966451, -0.0033688350, -0.0000760918, -0.0006643289, -0.0028446158, + 0.0006846255, -0.0005325712, 0.0005044499, -1.8136364222, -0.0024202727, + 0.0025420131, -0.0006031317, 0.0017713531, -0.0445214137, -0.0039299019, + 0.0006755297, -0.0019956781, -0.0009371452, 0.0009945964, 0.0000889958, + 0.0005364371, -0.0010519437, 0.0001245569, -0.0047983737, -0.0012495308, + 0.0007673295, 0.0015896459, 0.0013571479, 0.0042443299, 0.0005514593, + -0.0001675794, -0.0004504172, -0.0016264850, 0.0000491287, 0.0006206769, + -0.0014553680, -0.0003214600, -0.0027121836, 0.0006383019, -0.0010249130, + 0.0006518976, -0.0014739474, -0.0014310721, 0.0022655157, 0.0005756225, + -0.0017968193, 0.0004262780, -0.0023757678, 0.0001726460, -0.0005768370, + -0.0004767459, 0.0001731096, 0.0006033976, 0.0005970034, 0.0024124195, + 0.0014519577, -0.0004949473, 0.0006186711, -0.0018096329, 0.0009252132, + 0.0014359276, -0.0007614405, -0.0010088608, -0.0030012634, 0.0003428441, + -0.0008172356, -0.0031201153, 0.0008263714, 0.0003976761, -0.0018178648, + -0.0004542144, -0.0005469323, -0.0031391126, 0.0012352569, -0.0009796699, + -0.0009555966, -0.0004019346, 0.0006425027, -0.0026153703, -0.0003366810, + -0.0014107032, 0.0051387623, 0.0002553496, -0.0024880553, 0.0025573685, + 0.0010665697, -0.0013530543, 0.0001090403, -0.0010155030, 0.0038494989, + -0.0046213418, 0.0026665227, 0.0028490978, 0.0000278433, -0.0005337978, + -0.0005228724, -0.0017395515, -0.0000357232, -0.0032098657, -0.0051284460, + -0.0015833825, -0.0015957984, 0.0006893519, -0.0002478885, 0.0005108357, + -0.0000487422, 0.0004647896, -0.0029241827, -0.0010888739, 0.0007764283, + -0.0009027498, 0.0013528281, -0.0005342350, -0.0002764799, 0.0013415776, + 0.0002406770, 0.0027993754, 0.0029527151, -0.0013057931, -0.0032702461, + 0.0001169909, 0.0000373496, 0.0009385706, -0.0019232340, -0.0006471872, + -1.4609751701, -0.0039309394, 0.0029737800, -0.0019813615, 0.0006491629, + 0.0004126847, 0.0012626417, -0.0030368639, -0.0029511992, -0.0016148319, + 0.0006879452, -0.0005097272, -0.0000450318, 0.0036001001, -0.0017374926, + -0.0028729914, 0.0010920432, -0.0004435545, 0.0049256524, -0.0008428521, + 0.0011689547, -0.0571949594, -0.0002064768, -0.0033146278, -0.0021935950, + 0.0001440793, 0.0017565486, -0.0015605786, -0.0012034746, 0.0004641255, + -0.0026537525, 0.0003578719, 0.0010426748, -0.0017798957, 0.0005783529, + -0.0002099564, -0.0009878967, 0.0003355495, -0.0003533084, 0.0011564214, + 0.0014394328, 0.0012686336, -0.0023138388, -0.0013056439, 0.0029641949, + -0.0013233905, 0.0024253384, 0.0002164105, -0.0029188162, 0.0008800179, + 0.0027977610, 0.0013362365, -0.0032276670, 0.0020207725, 0.0001123371, + -0.0005437316, -1.2596904039, 0.0014320752, -0.0001093177, 0.0007444716, + 0.0005192196, -0.0003091551, 0.0001771508, -0.0009901680, -0.0012849360, + 0.0018404061, 0.0004527444, -0.0031536450, -0.0027929931, 0.0006242055, + 0.0005245800, -0.0003371773, -0.0009446130, -0.0015077884, 0.0013318881, + -0.0013802890, 0.0048809405, 0.0022580186, -0.0030938885, 0.0003243005, + -0.0014700084, 0.0017987038, 0.0028095110, -0.0008841329, 0.0012651056, + -0.0007485651, 0.0002527614, -0.0022513634, 0.0014277421, 0.0018428657, + 0.0026402087, -0.0004912107, -0.0003013946, 0.0019802526, -0.0009246350, + 0.0026237294, -0.0012321468, -0.0007647879, -0.0018347409, -0.0012780717, + -0.0000654981, 0.0008830838, 0.1585135609, -0.0023263630, 0.0015207165}; + +float unet_input_time_embedding_50_12[] = { + -0.0006768862, -0.0000032065, 0.0007724538, 0.0001713705, -0.0029235813, + -0.0004339376, 0.0011772050, 0.0026620282, 0.0024165490, -0.0014585967, + -0.0013286315, -0.0023956876, -0.0018573347, -0.0053073498, -0.0016296948, + 0.0026716506, 0.0018802984, 0.0004521457, 0.0023966748, -0.0022255774, + 0.0017816010, 0.0015022829, -0.0004521933, 0.0260566827, 0.0005301484, + -0.0024982865, 0.0002253801, -0.0015745517, -0.0046816752, -0.0019122846, + 0.0034787715, 0.0036285934, 0.0004337560, 0.0002570837, 0.0010719807, + 0.0025236621, -0.0007764143, -0.0001209757, 0.0000176392, -0.0014979416, + 0.0010507181, 0.0007010275, 0.0001536184, 0.0019314215, -0.0033007571, + 0.0005027053, 0.0001434647, -0.0021638907, -0.0002738854, -0.0003345588, + 0.0015172958, -0.0030996243, -0.8318576217, -0.0003324654, -0.0002448430, + -0.0006560310, 0.0009148808, 0.0019574515, -0.0008987333, -0.0017808236, + 0.0009965755, 0.0022220197, -0.0009800191, -0.0007132874, -0.0012794230, + -0.0007139258, 0.0019979253, -0.0009505359, -0.0015330669, 0.0012096723, + 0.0013201293, 0.0001535043, 0.0002921743, 0.0008928310, -0.0026431372, + 0.0010646833, 0.0001584273, -0.0027912250, -0.0004143301, -0.0031416540, + 0.0013639019, -0.0004507269, -0.0012978120, -0.0014870325, 0.0011220744, + -0.0010400962, -0.0006894134, 0.0023603318, -0.0003917194, 0.0004698564, + 0.0001269182, -0.0008956483, 0.0015074285, -0.0027759224, 0.0038365549, + 0.0016247160, 0.0004460448, -0.0000233846, 0.0021918130, -0.0013729269, + 0.0000733654, -0.0013080281, -0.0027732409, 1.2510343790, -0.0012708381, + 0.0011267541, 0.0002943869, -0.0025782548, -0.0009003957, 0.0003122953, + 0.0005729306, -0.0011506444, 0.2618049085, 0.0006885156, 0.0016668569, + 0.0000225925, 0.0005124849, -0.0015501559, 0.0001054173, -0.0003562255, + -0.0008802577, 0.0000284605, -2.1361572742, 0.0007609893, 0.0022622626, + 0.0011190386, 0.0007992131, 0.0016598706, -0.0025474485, 0.0020745397, + -0.0013808911, 0.0000123642, 0.0004349959, -0.0013929512, -0.0028039240, + -0.0004842689, -0.0008734444, 0.0010839673, -0.0015221192, 0.0021145223, + 0.0025354938, -0.0002911049, -0.0010595717, -0.0007788939, 0.0004369661, + -0.0018568272, -0.0012222570, -0.0001366781, -0.0011205855, 0.0005655009, + -0.0008290112, 0.0016226323, -0.0024815048, -0.0051784366, -0.0010886644, + 0.0039802683, 0.0013488391, 0.0020259544, -0.0025377041, -0.0007869755, + -0.0020304355, 0.0002561038, 0.0006901771, -0.0014801687, -0.0003757016, + 0.0003364191, -0.0018582910, -0.0023721624, -1.4872579575, 0.0011876796, + 0.0005577459, -0.0045057470, -0.0023428975, -0.0010590670, -0.0015574880, + -0.0005158009, 0.0004927643, 0.0003209803, -0.0016863211, 0.0007141223, + 0.0002872660, 0.0005689384, 0.0022282503, -0.0012788386, 0.0004717554, + 0.0006241412, 0.0041622305, 0.0013988516, 0.0009043566, -0.0043877824, + -0.0009300695, 0.0006634025, 0.0007848266, -0.0021901876, 0.0003564334, + 0.0011293893, 0.0030776877, 0.0022585271, 0.0032117709, -0.0003952323, + -0.0023244699, 0.0042156228, 0.0008349065, -0.0011739153, -0.0019631013, + -0.0000647539, 0.0024360896, -0.0016528880, 0.0002588201, 0.0036312849, + 0.0017509102, -0.0000606296, 0.0005568056, 0.0004949754, -0.0008005961, + -0.0010191146, 0.0007923571, 0.0003188518, -0.0003394972, -0.0018394535, + 0.0000931858, -0.0002113712, 0.0012281209, 0.0452334061, -0.0010090445, + 0.0026773571, 0.0008913456, -0.0001531814, 0.0016029931, 0.0008957563, + -0.0057803569, 0.0016989801, -0.0018589934, 0.0003632992, 0.0040104687, + -0.0010305033, -0.0018683407, -0.0018294877, -0.0004284717, -0.0021349096, + -0.0030677698, -0.0036560909, -0.0029948100, 0.0011483561, -1.4325749874, + -0.0032558611, 0.0019233976, 0.0005136147, -0.0010834769, 0.0007674634, + -0.0002234206, -0.0019660690, 0.0009703250, -0.0003367933, 0.0024908930, + 0.0024235949, -0.0034524105, 0.0025320011, -0.0012705403, -0.0018274925, + 0.0021861535, -0.0001793646, 0.0029427090, -0.0036310363, 0.0030250205, + 0.0011957078, -0.0002849330, -0.0010267193, 0.0001491765, 0.0007973714, + 0.0026116949, 0.0006355604, -0.0005949023, -0.0013303822, 0.0026706506, + -0.0036371539, 0.0008545937, -0.0014461791, -0.0026773233, 0.0009367815, + 0.0468682013, -0.0021794811, -0.0004282984, -0.0015171953, -0.0016528347, + -0.0001125084, -0.0002062824, -0.0004830475, -0.0023597702, -0.0005276445, + -0.0032245405, -0.0014286914, -0.0027110612, 0.0017014241, 0.0025279187, + -0.0007978138, -0.0020425054, -0.0001741024, -0.0001296890, -0.0010594623, + 0.0016631731, -0.0037141896, 0.0003624323, -0.0008094194, 0.0021243051, + 0.0006967918, -0.0022756387, -0.0029561063, -0.0021264153, -0.0000661132, + 0.0009083366, 0.0000047828, -0.0026311695, -0.0006520115, -0.0001257430, + 0.0003062882, -0.0003861053, 0.0027080639, 0.0002403795, 0.0004315479, + -0.0008593646, -0.0009475849, -0.0011317076, -0.0029025879, 0.0015510508, + 0.0029013860, 0.0008203667, 0.0011247946, -0.0602016151, 0.0005096481, + -0.0015762108, 0.0023503080, 0.0002779135, 0.0015647458, 0.0003462508, + 0.0014464119, 0.0008183972, 0.0002561508, 0.0018897112, -0.0017893207, + 0.0001470763, 0.0038435764, 0.0009107471, 2.4862337112, -0.0008287670, + 0.0007781894, 0.0018098872, -0.0016661239, -0.0013624746, 0.0013080231, + 0.0004680287, 0.0011291280, 0.0003263317, -0.0006704014, -0.0003741438, + 0.0021511447, -0.0013739048, -0.0026643956, 0.0023547863, -0.0015904806, + -0.0003642016, -0.0012483601, -0.0001593218, 0.0001285397, 0.0006491853, + -0.0018235847, 0.0020479136, -0.0017254390, 0.0025344519, -1.4509371519, + -0.0014500581, -0.0007225978, -0.0009714160, 0.0005700216, -0.0013119995, + -0.0009767469, -0.0009735118, 0.0009064274, -0.0014836856, -0.0012402856, + -0.0004466792, -1.3450905085, 0.0000204379, 0.0010313825, 0.0008681100, + -0.0012765480, -0.0007636915, 0.0031880578, 0.0021530730, -0.0042415406, + 0.0048247464, 0.0000786943, -0.0013522827, 0.0000238388, 0.0003514076, + 0.0002749064, -0.0013953368, -0.0004958926, -0.0017943787, 0.0022293869, + 0.0010547279, 0.0015395992, -0.0005641363, 0.0007802923, -0.0013152938, + 0.0008826624, 0.0016690808, -0.0018689614, 0.0016001263, 0.0014736345, + 0.0002447371, -0.0026435959, -0.0013170964, -0.0037878531, -0.0014586458, + 0.0023936017, -0.0029601734, -0.0008805981, 0.0000286605, 0.0003336491, + -0.0026074189, -0.0017823365, -0.0008303942, -0.0005884783, 0.0007010628, + 0.0017415727, -0.0010166951, 0.0006864888, 0.0028961452, 0.0003304821, + -0.0002937471, -0.0008088765, 0.0000036622, 0.0010325918, 0.0017095256, + -0.0009062188, -0.0009067552, 0.0024948430, 0.0017258134, 0.0015344967, + 0.0011130855, -0.0022973656, -0.0008254949, 0.0014372880, -0.0011337150, + 0.0019390541, 0.0018727910, -0.0012684879, -0.0012904531, 0.0155246658, + 0.0011136611, 0.0002298821, -0.0004915863, -0.0009113615, -0.0017737229, + -0.0039802827, -0.0007357271, -0.0010490594, -0.0003902088, 0.0013239188, + 0.0015012086, -0.0017698146, 0.0000394539, -0.0000904727, -0.0036045555, + 0.0019343770, 0.0005472330, -0.0019747727, -0.0008579723, -0.0011556200, + 0.0004795422, -0.0002399709, -0.0009785602, 0.0005735930, -0.0021848707, + 0.0119039696, 0.0027702423, 0.0015237654, -0.0006625531, -1.3113869429, + 0.0009905854, 0.0004911800, -0.0012975424, -0.0013528087, -0.0035811409, + 0.0030889958, -0.0006470254, -0.0015631597, -0.0014763135, -0.0015830996, + 0.0007171938, 1.4758471251, 0.0023196279, -0.0050300942, -0.0017304332, + 0.1254195273, -0.0001330385, 0.0009954995, 0.0000394071, -0.0002162727, + -0.0011884333, -0.0009398097, 0.0034102062, -0.0010057059, 0.0016473597, + -0.0002413541, -0.0000852686, -0.0004359457, -0.0010421104, 0.0001247893, + -0.0023083293, 0.0009243442, -1.6983314753, -0.0015932387, 0.0002173599, + -0.0012249053, 0.0007389328, -0.0030374890, 0.0007270481, 0.0000997703, + -0.0040872856, -0.0029614414, 0.0007450831, 0.0001737941, 0.0015535471, + 0.0003476948, 0.0021062486, -0.0022604880, 0.0004523788, 0.0009912304, + -0.0034945875, -0.0015599332, -0.0004818453, -0.0002903196, -0.0005143818, + 0.0007559804, -0.0010111455, -0.0003861228, 0.0019932315, 0.0008698569, + 0.0032811789, -0.0006873771, 0.0039857565, -0.0026829508, -0.0013290201, + -0.0000221431, -0.0002018670, -0.0014340109, -0.0003200881, -0.0039915806, + -1.6934995651, 0.0047852863, -0.0005813781, 0.0007963181, 0.0002253833, + 0.0015280821, 0.0015094143, -0.0004625535, 0.0031808070, 0.0010041511, + 0.0002301438, -0.0006607632, 0.0009216708, -0.0008124039, -0.0024209600, + -0.0032483833, -0.0023711640, 0.0008517434, -0.0006011692, 0.0007205494, + 0.0007246569, 0.0019118981, -0.0018273517, -0.0005205513, -0.0000993391, + 0.0008290345, 0.0027690707, 0.0023571872, 0.0025066645, 0.0014453724, + 0.0000219550, 0.0007165167, -0.0013862094, -0.0007962963, 0.0012240240, + 0.0024840033, 0.0012816102, 0.0008491860, 0.0007583760, -0.0000736536, + -0.0013038070, -0.0023441543, -0.0003064517, 0.0006935196, 0.0006644237, + 0.0010740487, 0.0010260519, -0.0008751694, 0.0007772907, -0.0012381258, + 0.0024980321, -0.0017324961, -0.0045946846, 0.0015573918, 0.0002718030, + 0.0009367086, -0.0021962784, 0.0005027449, -0.0004592213, -0.0021752769, + -0.0013512610, -0.0026516346, -0.0015923246, 0.0028005270, -0.0024261074, + -0.0015310394, 0.0001627551, -0.0036080275, 0.0028184499, 0.0018141072, + 0.0014357311, 0.0006704776, 0.0007360331, 0.0000087991, -0.0027706590, + -0.0014486806, -0.0013101350, -0.0034318229, -0.0004101736, -0.0001424602, + -0.0017875661, -0.0005194359, -0.0022829948, 0.0027350651, -0.0001398129, + 0.0027673356, 0.0000603769, -0.0006772164, -0.0015009008, 0.0007713591, + -0.0027010129, 0.0005790198, -0.0011227501, -0.0010703236, 0.0020557228, + 0.0014797741, -0.0026943423, 0.0020971375, -0.0036981916, -0.0023505334, + -0.0013621572, 0.0000570780, -0.0023991249, -0.0010550441, -0.0005292115, + -0.0002369371, -0.0017214203, -0.0019552950, -0.0008307628, 0.0000881003, + 0.0024454789, -0.0010994640, 0.0011144098, -0.0013479627, -0.0017816951, + 0.0000465801, 0.0007880218, -0.0011729635, -0.0015840733, 0.0022162292, + 0.0014845433, 0.0013557838, -0.0015209282, 0.0022433044, 0.0002047606, + -0.0000363719, -0.0003890492, -0.0024583712, -0.0021321191, -0.0001166551, + 0.0012087675, -0.0003550686, 0.0008197026, -0.0004781853, 0.0001580240, + -0.0008976017, 0.0011864714, 0.0000490576, 0.0015018159, 0.0006165272, + 0.0000312137, -0.0003370596, 0.0017354388, -0.0013462307, 0.0013157693, + 0.0007647551, -0.0019112793, -0.0001705429, 0.0019373756, 0.0026595127, + -0.0002127010, 0.0021108841, 0.0012210917, -0.0030394646, -0.0038858391, + 0.0011592470, -0.0013299864, 0.0015604259, -0.0013482023, -0.0002507109, + 0.0007708631, -0.0078335227, -0.0012423936, 0.0000684783, 0.0002907016, + -0.0008644159, -0.0003887843, 0.0033830861, -0.0001547944, -0.0009395573, + -0.0005497774, -0.0037792395, -0.0007172279, -0.0023797392, -0.0003010414, + 0.0006854194, -0.0002464140, 0.0023856596, 0.0011930275, -0.0006373520, + 0.0011334261, -0.0007114504, -0.0015175969, -0.0001560259, -0.0019147531, + 3.3607835770, -0.0008497084, -0.0029049860, 0.0012944604, -0.0023684660, + -0.0002277480, -0.0013691885, 0.0006751744, -0.0015736637, 0.0000723172, + 0.0023465855, -0.0012521931, 0.0007161746, 0.0029826430, -0.0039178636, + -0.0019888945, 0.0025219980, -0.0016455417, 0.0008406588, -0.0042392523, + -0.0032037667, 0.0007110294, -0.0007299237, 0.0009607754, -1.9048017263, + 0.0007844162, -0.0027575551, -0.0011921951, -0.0016571530, -0.0021569724, + -0.0012951661, 0.0013011905, 0.0026449738, -0.0001552342, 0.0016103457, + -0.0001998739, 0.0012390502, -0.0019695451, -0.0004591027, -0.0001643966, + -0.0004809247, 0.0020427434, -0.0025097150, -0.0001062271, 0.0008491920, + -0.0015328331, 0.0020858850, -0.0028201810, -0.0006167414, -0.0001817686, + -0.0009278711, -0.7639806271, 0.0007844185, -0.0009525293, -0.0008990359, + -0.0019069862, -0.0016414716, 0.0008352447, 0.0014330666, 0.0030820093, + -0.0007522975, 0.0006286250, -0.0008729316, -0.1490706950, -0.0020274909, + -0.0005289953, -0.0012129371, -0.0014831746, 0.0030303802, -0.0010466124, + -0.0005611870, 0.0008867113, -0.0021594798, -0.0004957493, -0.0040033492, + -0.0021419101, 0.0007510872, 0.0006166924, -0.0000493964, -0.0021586181, + -0.0019085845, -0.0010499284, 0.0021361699, -0.0037039707, -0.0004753356, + -0.0017024307, -0.0027042972, -0.0020205225, -0.0009584043, 1.7824399471, + -0.0006624623, -0.0012951640, -0.0016046817, 0.0016221616, -0.0006535933, + 0.0007507566, -0.0003651315, 0.0013268758, 0.0057622110, 0.0017266348, + -0.0035282706, -0.0004769480, 0.0012276848, -0.0022859536, -0.0029676766, + -0.0000205948, -0.0028152615, 0.3489804268, -0.0019548167, 0.0028292323, + 0.0035842126, 0.0021526222, -0.0009820112, 0.0005312115, -0.0009447422, + -0.0029400922, 0.0002732959, -0.0013392462, -0.0029228278, 0.0007940428, + 0.0263341311, -0.0030888175, -0.0001624720, -0.0013050376, 0.0025110124, + 0.0002273167, 0.0021012141, -0.0003063688, -0.0001486962, 0.0028490224, + -0.0006992193, 0.0008682301, 0.0060385624, -0.0024124871, -0.0033729319, + 0.0016373871, -0.0020722314, 0.0021972875, -0.0001423403, 0.0021587159, + 0.0023532079, 0.0013308856, 0.0035264948, -0.0022295518, -0.0019677230, + 0.1898374856, 0.0017747994, 0.0013210904, -0.0002053855, -0.0061730286, + -0.0003582090, -0.0002545998, -0.0019438220, 0.0002845733, 0.0017953769, + 0.0006203277, 0.0000084494, -0.0000511506, 0.0009039338, -0.0033519752, + 0.0001553076, 0.0000474749, -0.0005894733, 0.0033202847, -0.0021866253, + 0.0007563978, -0.0007435423, -0.0012664367, -0.0001846151, -0.0026102485, + 0.0023961160, 0.0001875563, -0.0023428192, 0.0012045722, -0.0007079854, + -0.0003632274, 0.0007584274, 0.0017609177, 0.0013556017, -0.0001671743, + 0.0014992303, 0.0006028011, 0.0012599768, -0.0026433659, 0.0003635311, + 0.0017927699, 0.0051400270, -0.0017092079, -0.0010812464, 0.0005115340, + 0.0010290612, -0.0023773559, 0.0013654595, 0.0003097610, 0.0014628529, + -0.0013962328, -0.0007615045, 0.0016235182, 0.0034087654, 1.7422510386, + -0.0005767925, -0.0018242942, -0.0032403758, 0.0006547642, -0.0015992764, + -0.0021128599, 0.0013938114, 0.0008057728, -0.0004622363, -0.0000444138, + 0.0006641377, 0.0004298575, -0.0016664173, -0.0000296298, 0.0001788796, + -0.0016849576, -0.0002501843, 0.0039841263, 0.0006304244, -0.0001989689, + 0.0000269860, 0.0009646155, 0.0005574219, -0.0012499630, 0.0022613970, + -0.0015382953, -0.0014605136, -0.0009370320, 0.0022804583, -0.0008666422, + -0.0002320211, -0.0008035498, -0.0003808876, -0.0012877542, 0.0000749342, + 0.0017649138, 0.0024957596, -0.0008337266, 0.0019760695, -0.0013305973, + -0.0004110434, 0.0001972835, 0.0006318018, -0.0005280630, 0.0024416605, + -0.0026239639, -0.0007618610, -0.0026567588, -0.0012595104, 0.0007666014, + 0.0014689224, 0.0004299455, -0.0021561990, 0.0018549638, 0.0013865419, + 2.9956030846, -0.0000432879, 0.0008066213, 0.0013232024, -0.0022856058, + -0.0000880717, 0.0006123241, -0.0013780175, -0.0019723028, -0.0019509664, + -0.0008609716, -0.0022649681, -0.0029925336, 0.0009018118, 0.0005124743, + -0.0009818859, -0.0014884155, 0.0001904499, -0.0020585223, 0.0003788811, + -0.0012564249, -0.0031143278, 0.0003879592, -0.0013620164, 0.0005295058, + 0.0001681396, 0.0009094384, -0.0002947664, 0.0012587879, 0.0000599138, + 0.0020582755, -0.0010400775, -0.0002179857, 0.0010764736, -0.0004890854, + 0.0010712863, -0.0006359454, -0.0021524173, -0.0017298546, -0.0017080749, + -0.0020504615, 0.0007982701, -0.0019776821, 0.0066459407, 0.0004641896, + 0.0012130295, 0.0020116535, -0.0020427275, -0.0014889607, -0.0004797094, + -0.0036720522, -0.0002534483, -0.0004598275, -1.6335260868, -0.0008846407, + 0.3581668139, 0.0023790121, -0.0010953308, 0.0010432841, -2.1073296070, + -0.0015875516, -0.0005887458, 0.0010585776, -0.0001111184, -0.0008152714, + -0.0004408075, 0.0010744478, -0.0000595544, -1.8497341871, -0.0014078459, + 0.0021137137, 0.0000154888, -0.0002888596, -0.0227565710, -0.0016863551, + 0.0014064489, -0.0002232054, -0.0025995541, -0.0002367108, 0.0002481770, + -0.0004084380, -0.0018776478, 0.0008251793, -0.0051632361, 0.0003474941, + -0.0007740317, 0.0026015232, 0.0001946702, 0.0009074244, -0.0009108894, + -0.0004902054, -0.0025040244, -0.0010161782, -0.0006237947, 0.0002982698, + -0.0005395244, -0.0021529975, -0.0024823127, -0.0000614286, 0.0007342380, + 0.0000127961, 0.0033830227, 0.0002978388, 0.0017128373, 0.0017430088, + -0.0014325874, 0.0003382522, -0.0009671889, 0.0007767903, 0.0006168978, + 0.0011273557, 0.0027476437, 0.0021284700, -0.0009645678, 0.0007287578, + 0.0013153001, -0.0018585880, 0.0003400566, -0.0013183714, 0.0000640826, + -0.0014575156, 0.0016774712, 0.0027717985, -0.0002835891, 0.0017468426, + -0.0000931211, -0.0023847485, -0.0022869506, 0.0030740271, -0.0000692899, + -0.0055986787, -0.0008160501, -0.0016203695, 0.0028350176, 0.0007446499, + 0.0003372617, -0.0039523100, 0.0002663806, -0.0004622689, 0.0004770081, + -0.0019628322, 0.0017186180, 0.0006199903, -0.0032611080, 0.0035452801, + -0.0004100199, 0.0001496533, -0.0011515681, 0.0007049255, 0.0013597198, + -0.0041976422, 0.0012702551, 0.0012873003, 0.0028607016, -0.0006619487, + 0.0013674945, 0.0009533276, 0.0005952474, -0.0006267624, -0.0006335534, + -0.0029442748, 0.0001048725, -0.0001910171, 0.0001201348, 0.0005221894, + -0.0020015747, -0.0010353988, -0.0001066732, -0.0035526692, -0.0000486713, + -0.0017705227, -0.0017752916, 0.0005509094, -0.0033981930, -0.0024380344, + 0.0046149613, 0.0013411851, 0.0014601294, 0.0003077550, -0.0018670550, + 0.0028663147, 0.0011193515, -0.0003206276, -0.0009372598, -0.0012927381, + -1.4103846550, -0.0054591708, 0.0001350251, 0.0010980329, 0.0030795534, + 0.0011826882, 0.0009334723, 0.0000514707, 0.0008236002, -0.0004723468, + -0.0006654495, 0.0002288731, 0.0000659847, -0.0000867611, -0.0029308558, + -0.0021725399, 0.0016011647, 0.0001289407, 0.0019094348, -0.0062486879, + -0.0029211245, -0.0074478649, -0.0037860859, -0.0024768203, -0.0009020118, + -0.0020581596, 0.0026422066, -0.0001796880, -0.0002806557, -0.0008841772, + -0.0031352700, -0.0008634487, -0.0014328440, -0.0016947906, 0.0016219493, + -0.0017924411, 0.0020734100, -0.0006315247, -0.0007083160, -0.0006076712, + 0.0035141541, -0.0015718192, -0.0008972058, 0.0014127768, 0.0012176856, + 0.0000328526, 0.0001585357, -0.0032402035, 0.0006352495, -0.0000626668, + 0.0012817270, 0.0009579873, -0.0007341979, -0.0007820501, 0.0026619555, + -0.0000323983, -1.2868415117, 0.0019736984, 0.0019189673, 0.0018303182, + -0.0006897927, -0.0024199828, 0.0033066811, -0.0020384057, 0.0011157265, + -0.0009087375, -0.0019084591, -0.0014875332, -0.0015883176, 0.0006879815, + -0.0026216065, -0.0008689746, -0.0013383338, -0.0009029307, 0.0042712064, + 0.0005594101, 0.0009162892, -0.0013893251, -0.0035137828, 0.0021679392, + -0.0005465518, 0.0023252168, 0.0025081900, 0.0014009727, 0.0026748145, + -0.0011443436, -0.0016228235, -0.0005617132, 0.0003813106, 0.0038133892, + -0.0004590233, -0.0011843569, -0.0003224709, 0.0001565999, -0.0010049141, + 0.0012500454, 0.0029178513, 0.0005747660, -0.0017592888, 0.0012686094, + 0.0002334816, 0.0009013908, 0.1201184243, -0.0031336176, 0.0026605420}; + +float unet_input_time_embedding_50_13[] = { + 0.0011041276, -0.0011460809, 0.0027954504, 0.0006478221, 0.0038602417, + -0.0010494278, 0.0023593367, 0.0022905879, 0.0062659001, 0.0020922848, + -0.0036557757, 0.0032465779, 0.0009715157, -0.0048832563, 0.0001666835, + 0.0007707565, 0.0073476969, -0.0000233504, 0.0028890390, -0.0004555541, + -0.0019842307, 0.0039064931, 0.0021522297, 0.0338332877, 0.0015569956, + -0.0027812857, 0.0016739657, -0.0014276309, -0.0032859943, -0.0038313898, + 0.0024956535, 0.0054592858, 0.0011305781, -0.0013166354, 0.0034395442, + 0.0009252201, 0.0002372377, 0.0002066279, 0.0007610973, 0.0016543600, + 0.0017691758, -0.0006162641, 0.0000131950, 0.0004430143, -0.0006314404, + 0.0040158574, 0.0040543415, -0.0005047275, 0.0006225856, -0.0008577102, + -0.0006128373, 0.0028462221, -0.7037312388, 0.0001219246, 0.0006925015, + 0.0033962838, -0.0019748246, 0.0022968450, 0.0046944492, -0.0028391217, + 0.0018936268, 0.0013143976, -0.0020378265, -0.0006189793, -0.0023618694, + 0.0012530638, -0.0002998393, -0.0004055585, -0.0048550460, 0.0014820693, + 0.0031487020, 0.0013145311, 0.0007254321, 0.0020838915, -0.0012918320, + 0.0016270829, -0.0004435852, -0.0056452854, 0.0009847120, -0.0003257350, + -0.0008816724, -0.0019744919, -0.0032677660, -0.0021458706, 0.0015919257, + 0.0028473681, -0.0034527369, -0.0005539430, -0.0016005682, 0.0001232070, + 0.0030333281, 0.0023684772, 0.0013190936, -0.0007657149, 0.0083671696, + 0.0008016271, -0.0006513409, -0.0020639235, 0.0032151851, 0.0028520152, + -0.0001909421, -0.0032671075, -0.0006998016, 1.1134171486, 0.0007497072, + 0.0033330088, -0.0009740968, 0.0006792871, -0.0012306594, 0.0010153106, + 0.0006626919, -0.0032329746, 0.2892492115, -0.0020184834, -0.0014835000, + 0.0016643265, -0.0015666257, 0.0016494102, -0.0019181604, 0.0019740572, + 0.0036480655, -0.0007816658, -2.1378016472, -0.0029225545, 0.0026554409, + 0.0006293934, -0.0032511428, 0.0002438729, -0.0003389684, -0.0024824184, + -0.0014171912, 0.0021471484, -0.0006178997, 0.0006515961, -0.0018284367, + -0.0021363839, -0.0018479375, -0.0001193108, -0.0014691632, 0.0051709516, + 0.0046623321, 0.0033537578, -0.0018997299, 0.0004723328, -0.0050370125, + -0.0004539629, -0.0007070624, -0.0026916629, 0.0006891107, -0.0002435772, + 0.0007973509, 0.0005638931, 0.0011582677, -0.0029366743, 0.0016957768, + 0.0046403506, 0.0009196545, -0.0034977375, -0.0049021402, -0.0010245191, + -0.0024206624, 0.0020098751, 0.0072444081, 0.0001876266, 0.0046236371, + 0.0009399094, 0.0000975896, 0.0014218865, -1.2933104038, 0.0006708216, + 0.0000612374, -0.0021611070, -0.0014444347, 0.0003621145, -0.0015658904, + -0.0012174426, 0.0004950013, -0.0053635528, -0.0007043756, 0.0000645500, + -0.0000453074, 0.0021149190, 0.0008978024, -0.0000298028, -0.0043715555, + 0.0003140350, 0.0058992086, -0.0008212277, 0.0043434002, -0.0042048264, + -0.0034287940, 0.0023627481, -0.0038031861, -0.0006486599, 0.0024833120, + -0.0009644744, -0.0022937441, 0.0048112324, 0.0052643875, 0.0008247434, + 0.0017067436, 0.0032024146, -0.0010727253, 0.0014449537, -0.0012083235, + 0.0014536306, 0.0027186919, 0.0036885990, -0.0006288271, 0.0043855659, + 0.0019421433, 0.0011168639, 0.0030319043, -0.0024768871, -0.0017941007, + -0.0022625970, 0.0029946780, 0.0025031585, 0.0005967185, 0.0032899827, + -0.0013675103, 0.0013496655, -0.0003069092, 0.0660309270, -0.0022671272, + 0.0016830470, 0.0091342060, 0.0009517502, 0.0038200344, -0.0014100783, + -0.0046133613, 0.0021550003, -0.0014870223, -0.0046050572, 0.0024450300, + 0.0017937296, 0.0001033065, -0.0008572759, -0.0061524101, -0.0064910334, + 0.0044926330, 0.0006311613, -0.0023414942, 0.0027674688, -1.4414287806, + -0.0003776813, 0.0007788385, 0.0013604794, -0.0035405373, 0.0012010089, + -0.0001531187, 0.0006973720, -0.0017228392, 0.0027394732, 0.0030899369, + 0.0008210700, 0.0007762532, 0.0042630429, 0.0004057682, -0.0029693749, + 0.0003239787, -0.0044507720, 0.0002696745, -0.0078918301, 0.0018556771, + 0.0030218973, 0.0065387427, -0.0021936158, -0.0015719095, -0.0005870028, + 0.0051864926, -0.0011873350, 0.0006596022, -0.0037917038, 0.0004918792, + -0.0008128316, 0.0038991603, -0.0001576683, -0.0025674189, 0.0028493362, + 0.0747731328, -0.0016208440, 0.0024311745, -0.0023402432, 0.0039370097, + 0.0012078620, 0.0007624812, -0.0010313962, -0.0035677270, -0.0003494518, + -0.0022778567, -0.0043502431, -0.0019128907, 0.0023904268, 0.0035449509, + 0.0028987126, -0.0018668282, -0.0002227263, 0.0003881021, -0.0015013819, + -0.0024738563, -0.0032459993, -0.0009858210, -0.0010063010, 0.0001510058, + 0.0010423916, -0.0047065667, 0.0000757650, 0.0003419858, 0.0001178170, + 0.0007284041, 0.0027559116, -0.0011003714, 0.0017006630, -0.0019113324, + 0.0025849254, 0.0028656232, 0.0021162746, 0.0016553709, 0.0047836904, + 0.0008217797, 0.0000423999, -0.0011686797, -0.0018287171, 0.0009242425, + -0.0006431150, 0.0049078576, -0.0002332106, -0.1159913912, -0.0013238951, + -0.0025107260, 0.0020755110, 0.0009677768, 0.0000407719, 0.0014639262, + 0.0032552946, 0.0004059963, -0.0057286862, 0.0039360081, -0.0064930818, + 0.0022942582, 0.0030185550, -0.0011661041, 2.4218263626, -0.0031611898, + -0.0007233783, -0.0018248264, -0.0011601726, 0.0014819875, -0.0006139873, + 0.0030859616, 0.0056118015, -0.0013819104, -0.0040100720, 0.0002883753, + 0.0013870569, 0.0008114649, -0.0014155161, -0.0044467743, -0.0026321947, + 0.0012768516, -0.0029263734, 0.0000985516, 0.0016319421, 0.0015673855, + -0.0024293212, 0.0009776545, -0.0004215753, 0.0024587540, -1.4627352953, + 0.0016106497, 0.0015926831, -0.0012313630, 0.0009609163, -0.0007360138, + -0.0003583654, -0.0013185911, 0.0033552202, -0.0022227846, -0.0002747001, + -0.0029478245, -1.1530703306, -0.0030903453, -0.0014266069, -0.0010522986, + -0.0007668654, -0.0001545958, 0.0060044741, -0.0010896227, -0.0035306229, + 0.0021484559, 0.0026086587, 0.0005593193, -0.0008697135, 0.0016400008, + -0.0002757558, -0.0041770497, -0.0001180341, 0.0005311058, 0.0017536636, + -0.0016052891, 0.0008413987, -0.0009596793, 0.0031442703, -0.0012592347, + -0.0018446692, 0.0013358641, 0.0041433042, 0.0008385391, 0.0015888680, + 0.0026974967, -0.0060714637, 0.0016639405, -0.0006985899, -0.0006148294, + -0.0008589148, 0.0013992735, -0.0016894506, 0.0014979113, 0.0000413749, + -0.0029358480, -0.0005629379, -0.0023146765, -0.0035303796, -0.0004075044, + 0.0015826174, -0.0036680764, 0.0035596804, 0.0024230892, -0.0000858564, + -0.0003396566, 0.0025176439, -0.0000990031, 0.0008334871, 0.0011683946, + 0.0004277266, -0.0004993593, -0.0009830154, 0.0041402429, 0.0000875939, + -0.0014164066, -0.0031132749, -0.0026011155, -0.0020806955, 0.0012539502, + 0.0019947067, 0.0048176721, -0.0013745581, 0.0002604672, 0.0053061829, + 0.0032005277, -0.0023033638, 0.0001893521, 0.0028269570, -0.0035169334, + -0.0045863539, -0.0020930385, -0.0019838763, 0.0016830992, 0.0004541532, + 0.0018874868, 0.0026737284, 0.0022277844, 0.0016588658, -0.0049885707, + -0.0006649075, -0.0025093830, 0.0009458344, -0.0025419225, 0.0007117512, + 0.0009820978, -0.0021008400, -0.0028488832, 0.0016777224, -0.0037656138, + 0.0155466925, 0.0020305384, 0.0005500201, 0.0001292899, -1.2801737785, + 0.0000940659, -0.0003265748, -0.0028666859, -0.0011938338, -0.0038225616, + -0.0011118845, 0.0003120727, -0.0013333363, -0.0012030252, -0.0008901285, + 0.0027053538, 1.3523129225, 0.0020291922, -0.0054781805, 0.0021823584, + 0.1080147400, 0.0021539759, -0.0012746365, 0.0009146882, 0.0015836908, + -0.0012381156, -0.0000976594, 0.0022087721, -0.0036612456, 0.0008462034, + 0.0013228445, -0.0005860250, 0.0015931752, -0.0004532975, -0.0035143583, + -0.0029971648, -0.0011755293, -1.7816048861, -0.0063677989, 0.0009950566, + 0.0031887451, 0.0040474152, -0.0014280295, -0.0047616670, 0.0027189921, + -0.0047861249, -0.0020279097, -0.0007498834, -0.0018170238, -0.0006608060, + 0.0034435629, 0.0037495820, -0.0027115322, 0.0043166336, 0.0017333347, + -0.0021236923, 0.0025428990, -0.0009290888, -0.0010371555, -0.0045056241, + -0.0017574446, 0.0020043838, -0.0015998401, 0.0011119470, 0.0009542115, + 0.0011394583, 0.0015813913, 0.0005181087, -0.0002793767, 0.0005918224, + -0.0018474765, 0.0018983716, -0.0019294019, -0.0021095509, -0.0036553340, + -1.7067239285, 0.0043147113, 0.0006311461, 0.0033328235, -0.0009339822, + 0.0007414926, -0.0002713876, -0.0023028376, 0.0007056738, 0.0010774443, + 0.0013502324, -0.0013146746, 0.0028559458, -0.0027017053, -0.0012888489, + -0.0025913604, -0.0023256931, 0.0003554225, 0.0010310113, -0.0049265744, + 0.0026364275, 0.0038174400, -0.0028151192, 0.0011910608, -0.0017043054, + -0.0013879323, 0.0034864927, 0.0027544140, -0.0003274023, -0.0019387186, + -0.0035478789, 0.0021667327, 0.0011126879, 0.0015982689, 0.0024752354, + 0.0013534634, 0.0009843758, -0.0002423883, -0.0008501727, -0.0002639112, + 0.0008554264, -0.0047232104, -0.0015613027, -0.0022238176, 0.0008542617, + 0.0031520426, 0.0012113241, 0.0001859614, 0.0002130899, -0.0034712292, + 0.0033852593, -0.0011230092, -0.0006183544, 0.0008087740, -0.0008153634, + 0.0029555208, -0.0010910571, 0.0007952114, 0.0021958845, 0.0010959415, + 0.0004124455, -0.0058049140, -0.0036306567, -0.0000446197, -0.0003319727, + -0.0013863654, 0.0012999428, -0.0038003526, 0.0047281436, 0.0035878879, + 0.0007997127, 0.0034006899, 0.0033727079, 0.0013298970, -0.0009035938, + -0.0014118105, -0.0028544392, -0.0011813643, -0.0021966998, -0.0011523636, + 0.0009953186, 0.0000865783, -0.0040535182, -0.0030787888, 0.0007899557, + -0.0015500123, 0.0000891474, -0.0023824438, 0.0006868513, -0.0037681772, + -0.0010589584, 0.0029511221, -0.0040202630, -0.0000814388, 0.0018985397, + -0.0002915479, -0.0020435164, -0.0007202413, 0.0084862635, 0.0000758329, + -0.0014907244, 0.0080138398, 0.0016387997, 0.0019486533, -0.0003008726, + -0.0017746247, 0.0017348109, 0.0009872885, 0.0018330899, -0.0022588936, + -0.0007845308, -0.0012486964, 0.0020865467, -0.0027524191, 0.0003488730, + 0.0004822011, -0.0017207484, -0.0002654819, -0.0002261070, -0.0004817358, + -0.0005963647, 0.0014162336, -0.0029367527, -0.0012614324, -0.0064255241, + 0.0001410600, -0.0001902696, -0.0035261726, -0.0026388159, 0.0019825734, + -0.0038383638, -0.0020114016, 0.0016095964, -0.0034217425, -0.0014636479, + -0.0025571152, 0.0018674145, -0.0005494000, -0.0033122739, -0.0004450092, + -0.0017835079, -0.0000531673, 0.0021192788, 0.0001612657, 0.0004452849, + -0.0001123748, -0.0047616190, 0.0009030690, 0.0029035283, 0.0061401576, + -0.0012430707, 0.0018294048, 0.0022421207, 0.0009240431, -0.0030914117, + -0.0015326811, 0.0002836846, -0.0046811937, -0.0007129989, -0.0020514957, + -0.0027700644, -0.0075947428, -0.0044483966, -0.0006766114, 0.0007198295, + 0.0005369782, 0.0012146439, 0.0032442985, -0.0013116191, -0.0011745123, + 0.0002114046, -0.0000376804, -0.0019910308, -0.0002943979, 0.0038661074, + -0.0030339458, 0.0044636047, -0.0002701052, 0.0003979388, 0.0016454221, + 0.0022793291, -0.0037744381, -0.0029842898, -0.0011120243, -0.0026745028, + 3.2289993763, 0.0005675643, -0.0009867586, 0.0012314999, 0.0012256969, + 0.0000113696, -0.0021580341, 0.0024822252, 0.0000659006, 0.0010934714, + 0.0034736488, -0.0012453847, -0.0004058675, 0.0058200071, -0.0051441770, + -0.0016841043, 0.0001847085, 0.0003388640, 0.0011268156, -0.0057292418, + -0.0021554870, 0.0005892925, -0.0011315640, 0.0033399134, -2.0025534630, + 0.0027580564, -0.0015054944, 0.0000323523, 0.0014885687, -0.0021970426, + -0.0034929495, 0.0016736040, 0.0026242603, -0.0013913210, 0.0014666766, + 0.0039657429, 0.0053009819, -0.0039218338, -0.0023695801, -0.0011870391, + -0.0021677520, -0.0030433703, 0.0014964212, 0.0014794462, -0.0032993183, + -0.0001846654, -0.0045677451, -0.0012609216, -0.0014689267, -0.0032081872, + 0.0018089996, -0.6073436141, 0.0021179086, -0.0030480102, -0.0016555176, + 0.0031317612, -0.0035766333, -0.0003110355, 0.0010865028, 0.0012151143, + -0.0007096319, 0.0041309623, 0.0009419093, -0.0465764403, -0.0038363929, + 0.0045954431, -0.0006049082, 0.0003598913, 0.0015643118, -0.0022231357, + -0.0014976258, 0.0040410962, -0.0044010999, -0.0000950896, -0.0015713478, + -0.0010434702, 0.0019166095, -0.0039991676, -0.0003829142, -0.0000227853, + 0.0046330537, 0.0008445745, 0.0023716856, -0.0021103316, 0.0016991987, + -0.0040576020, -0.0003029454, 0.0002136180, 0.0003663779, 1.8933426142, + -0.0018746415, 0.0023850894, -0.0002149929, 0.0019824062, 0.0006930190, + -0.0004814274, 0.0005274420, 0.0022335905, 0.0037169226, -0.0002557826, + -0.0031715853, 0.0001503285, 0.0006968281, 0.0026328638, -0.0034825695, + 0.0024149925, -0.0034053666, 0.2945159972, -0.0004233965, -0.0008398820, + 0.0005652010, 0.0041604717, 0.0038455143, -0.0003691679, -0.0012524503, + -0.0012078341, -0.0000516635, -0.0022026913, -0.0027258261, -0.0001671240, + 0.0316857472, 0.0008163257, 0.0017183246, -0.0043441369, -0.0002081543, + 0.0015596659, 0.0010849577, 0.0018132133, 0.0028922353, 0.0023666602, + -0.0039041331, -0.0005053902, 0.0022515375, -0.0016331759, -0.0023459806, + 0.0052102432, 0.0080791749, 0.0021601408, 0.0009366313, 0.0000971602, + 0.0020517388, 0.0040216432, -0.0012446679, -0.0038590757, -0.0051901601, + 0.1508020759, 0.0004524639, 0.0044547450, 0.0000200192, -0.0028619554, + -0.0023972248, 0.0012550079, -0.0024663685, 0.0044988040, -0.0016658097, + 0.0017983716, 0.0020300667, 0.0012739389, -0.0022660387, -0.0013983252, + -0.0014879999, 0.0028779840, 0.0001746862, 0.0012699449, -0.0032737115, + -0.0013055950, -0.0025743502, -0.0007898603, -0.0010516988, -0.0050592404, + 0.0029467316, 0.0026233112, -0.0047684121, -0.0026702262, -0.0048916931, + 0.0033650317, 0.0017820616, 0.0034114262, -0.0019264377, -0.0002110349, + 0.0030365149, 0.0009144880, 0.0003025031, -0.0046019093, 0.0004763948, + 0.0020180792, 0.0050803069, 0.0005145529, -0.0005995161, -0.0002016113, + -0.0005279575, 0.0001271889, 0.0006789071, -0.0017266312, 0.0022196970, + -0.0005608741, -0.0018668055, -0.0006356031, 0.0024059340, 1.7209240198, + -0.0023894471, 0.0014800932, 0.0044777906, -0.0002969166, -0.0023770789, + -0.0017075641, -0.0027914266, 0.0018062387, 0.0006602448, 0.0025051446, + 0.0008302311, -0.0031505930, 0.0013769176, 0.0002107297, -0.0009922734, + 0.0013288339, -0.0018750209, 0.0046651764, -0.0007834765, -0.0014451868, + 0.0015248777, 0.0029227701, -0.0004507049, -0.0009149481, 0.0009819265, + -0.0003702687, 0.0010634451, -0.0005688989, -0.0002572918, -0.0005503595, + 0.0021371807, -0.0016270252, 0.0016760044, 0.0019565155, 0.0002827030, + 0.0051761884, -0.0003391003, -0.0000479455, -0.0000980934, -0.0004061675, + -0.0001480789, 0.0003688508, 0.0017803861, -0.0023984131, 0.0029156688, + -0.0073965415, 0.0008398630, 0.0017166138, -0.0031312497, 0.0001157220, + 0.0030181357, 0.0027654096, -0.0012733131, 0.0007675844, 0.0031266683, + 2.8550896645, 0.0007623043, 0.0013754331, 0.0000200567, 0.0002745059, + -0.0037827364, 0.0012801103, -0.0025804569, 0.0014296025, -0.0009357429, + -0.0019374087, -0.0040873243, -0.0049812687, -0.0013710321, -0.0006545064, + 0.0014564069, -0.0015276903, 0.0042520585, -0.0007473745, 0.0013943254, + 0.0002580900, 0.0005631681, -0.0032225046, -0.0033359434, -0.0019986699, + -0.0023784391, 0.0012030676, -0.0015663803, -0.0004396506, 0.0017020572, + 0.0002736612, -0.0015834814, 0.0004828182, 0.0036611536, -0.0012074215, + -0.0028880036, -0.0006647512, 0.0015603076, -0.0010299853, -0.0013515106, + -0.0016593316, -0.0000916524, -0.0024193041, 0.0029521608, 0.0007359942, + 0.0026620231, 0.0009166696, 0.0056248866, -0.0007651405, 0.0008269744, + -0.0011581643, 0.0020779129, 0.0016531232, -1.6679241657, 0.0003429588, + 0.2916557789, 0.0025005548, -0.0003915471, 0.0010816404, -2.1288325787, + -0.0027721985, 0.0042682961, 0.0033960463, 0.0036264858, 0.0003719805, + 0.0017994833, 0.0016294438, -0.0023554685, -1.8177478313, -0.0007586996, + 0.0012938061, -0.0021956775, -0.0010364350, -0.0109543074, 0.0000278577, + -0.0013657724, -0.0006827665, -0.0007103113, 0.0002756601, -0.0000684033, + 0.0034803385, -0.0035430898, 0.0002951948, -0.0048780129, 0.0022916393, + -0.0019090858, 0.0052109072, 0.0003959048, -0.0030410239, 0.0011973670, + 0.0003816290, -0.0025908181, 0.0000755982, 0.0008944343, -0.0018020368, + -0.0018121919, 0.0006847759, -0.0017717024, -0.0025158604, -0.0013429103, + -0.0001261292, 0.0047036409, 0.0010105949, 0.0029797396, 0.0008328781, + -0.0061009973, 0.0017886548, 0.0003013395, 0.0008853695, 0.0001663789, + -0.0004314408, 0.0010791779, -0.0008564766, -0.0006426107, 0.0016696386, + 0.0024508031, -0.0003027167, -0.0007977104, -0.0001535979, 0.0001529671, + 0.0001383063, 0.0012897495, -0.0003650817, -0.0041652187, 0.0017605433, + -0.0012182742, -0.0034788104, -0.0024729022, 0.0020449213, 0.0003666845, + -0.0024513076, -0.0014511460, -0.0007849620, 0.0019794451, 0.0013594201, + -0.0006523421, 0.0000825375, 0.0018388513, -0.0016322983, -0.0023361123, + -0.0004819380, 0.0012601241, 0.0015352275, 0.0003597150, 0.0021470669, + 0.0009726840, -0.0031060977, 0.0026801834, -0.0003133221, 0.0042713387, + -0.0003924216, 0.0010591308, 0.0043664197, 0.0029061898, -0.0002125059, + 0.0008702073, -0.0008939181, -0.0000393596, 0.0012817988, 0.0043721274, + -0.0033695931, -0.0042911801, -0.0023389636, -0.0020017731, 0.0004595971, + -0.0033076811, -0.0046121986, -0.0001052818, 0.0006149965, -0.0026680888, + 0.0002712032, -0.0027047342, 0.0014646049, -0.0029748511, 0.0020953505, + 0.0028752433, -0.0013164873, 0.0026560558, -0.0035080863, 0.0027586126, + 0.0024807630, -0.0020584427, 0.0010299360, 0.0017167679, -0.0002845610, + -1.3179113865, -0.0010901224, 0.0026498260, 0.0010600922, 0.0014990487, + 0.0043211263, 0.0037598659, -0.0003797596, -0.0002903789, -0.0001530354, + -0.0024715695, 0.0033255010, 0.0046790270, -0.0017607706, -0.0003648740, + 0.0009416006, 0.0049275216, -0.0005526906, 0.0000880407, -0.0018854192, + -0.0013108733, 0.0583096929, -0.0021801388, -0.0007587988, -0.0007916957, + -0.0014169384, -0.0016907526, 0.0031155753, 0.0006810531, 0.0012091277, + 0.0003359327, 0.0000357931, -0.0000837524, -0.0019608163, 0.0020702675, + -0.0042732679, 0.0024793092, -0.0016166880, -0.0012762416, 0.0002838224, + 0.0028188850, 0.0022309525, 0.0006111586, -0.0011005779, -0.0000935607, + -0.0001929940, -0.0009505719, -0.0032132203, 0.0044585383, -0.0000700559, + -0.0007159953, 0.0001566838, -0.0015087025, 0.0022458117, 0.0023571178, + -0.0016665681, -1.3126410246, -0.0000197291, 0.0046952427, -0.0018386963, + 0.0009791420, -0.0050235251, 0.0010412915, -0.0023783874, 0.0007202313, + -0.0012561893, -0.0008478224, -0.0017580659, -0.0050526331, 0.0017901422, + -0.0020173020, 0.0006413982, -0.0014846954, 0.0000197007, 0.0021272842, + 0.0018923823, -0.0028951997, -0.0013339622, -0.0003839269, 0.0026760502, + -0.0027251127, 0.0029773745, 0.0036721183, 0.0030869087, 0.0004360068, + 0.0017711468, -0.0005172086, -0.0025661718, -0.0031250273, 0.0010154070, + 0.0021658498, -0.0027281079, -0.0001379419, -0.0005401914, -0.0041691745, + 0.0022766367, -0.0032603424, 0.0040654493, 0.0004437249, -0.0012298608, + -0.0003888970, 0.0010752929, 0.0724957734, -0.0015127170, 0.0021231805}; + +float unet_input_time_embedding_50_14[] = { + 0.0007156646, -0.0003192292, 0.0042855237, 0.0021059380, 0.0025977856, + -0.0007479470, 0.0009772922, 0.0001204571, 0.0052996948, 0.0001891104, + -0.0028011382, 0.0031535779, -0.0011910535, -0.0036377809, 0.0000531408, + -0.0006675082, 0.0058087781, 0.0001564322, 0.0009570933, -0.0003285599, + -0.0003365059, 0.0051029110, 0.0020177872, 0.0218014307, 0.0017346772, + -0.0021147665, 0.0016917167, -0.0012378078, -0.0028877412, -0.0024568336, + 0.0006742482, 0.0044901073, 0.0025597671, 0.0018403181, 0.0024242839, + 0.0018148194, 0.0015121303, 0.0016165401, 0.0014275592, 0.0000989079, + 0.0012399163, 0.0000532609, -0.0033358461, 0.0001307502, -0.0003980901, + 0.0024987606, 0.0031916723, 0.0016176458, 0.0015619546, 0.0019537867, + -0.0008063903, 0.0016918373, -0.5759761930, -0.0025326600, -0.0007346190, + 0.0034637712, -0.0019714714, 0.0042682947, 0.0013784603, -0.0022325541, + 0.0026198712, 0.0028206776, -0.0019671894, -0.0008996748, -0.0007947329, + 0.0010102019, -0.0002019238, -0.0020205360, -0.0049595218, 0.0015342215, + 0.0025057080, 0.0030183317, -0.0001328394, 0.0020439252, -0.0029544532, + 0.0028959289, -0.0006882446, -0.0033225464, 0.0009150525, -0.0003213745, + -0.0002849563, -0.0040313597, -0.0014818003, -0.0002239970, 0.0022239380, + -0.0010138310, -0.0036074314, -0.0004790665, 0.0010957783, -0.0026584859, + 0.0027456649, 0.0007761964, 0.0040115984, -0.0010433440, 0.0063638682, + 0.0011526211, -0.0018305359, -0.0016667424, 0.0020572850, 0.0011911755, + -0.0011531543, -0.0026495336, 0.0007883045, 0.9847083092, 0.0039307699, + -0.0008342601, -0.0016395873, 0.0022124816, -0.0003837436, -0.0009354413, + -0.0009695492, -0.0039497716, 0.3065206110, 0.0006258558, 0.0006109774, + 0.0014117113, -0.0013869624, 0.0009886071, -0.0022282591, 0.0036556951, + 0.0047754771, -0.0021939073, -2.1845159531, -0.0020606946, 0.0034919847, + -0.0010229154, -0.0000975109, 0.0000438564, 0.0000720406, -0.0031613498, + 0.0011623413, 0.0031488715, -0.0011745652, -0.0005328264, -0.0005950248, + -0.0025247110, -0.0018161118, 0.0010751421, 0.0011223182, 0.0035431813, + 0.0026444045, 0.0036936845, 0.0000833743, 0.0000766586, -0.0028199733, + -0.0015034406, 0.0002813074, 0.0000209883, 0.0007206358, 0.0015601851, + -0.0018100729, 0.0001297878, 0.0025753030, -0.0027300576, 0.0012135482, + 0.0042341459, 0.0014835680, -0.0019872906, -0.0007991567, 0.0027467427, + -0.0028518331, 0.0004575438, 0.0025974298, -0.0001719061, 0.0033335020, + 0.0017669257, -0.0018093300, 0.0008911281, -1.0879793167, -0.0000312121, + -0.0013246367, -0.0032029562, -0.0030704336, -0.0017439635, 0.0005373973, + 0.0013052961, 0.0025643185, -0.0039245076, 0.0020102346, -0.0000135051, + -0.0006473050, 0.0023170961, 0.0009235824, -0.0010215905, -0.0020313729, + -0.0007104813, 0.0061804475, 0.0006308635, 0.0034582405, -0.0049538370, + -0.0018997123, -0.0006232569, -0.0010317183, -0.0010479933, 0.0030429158, + 0.0035853651, -0.0019889353, 0.0038530137, 0.0038026820, 0.0000801724, + 0.0005719885, 0.0018668617, -0.0007671067, 0.0004752786, -0.0010741809, + -0.0019075433, 0.0029075400, 0.0001949789, 0.0016386863, 0.0037825820, + -0.0005043030, -0.0017288565, 0.0005600587, -0.0003375064, -0.0017780080, + -0.0022617676, 0.0032258146, 0.0002236585, 0.0009680135, 0.0014275116, + 0.0005177031, 0.0011518886, 0.0003510520, 0.0696586892, -0.0039033403, + -0.0011386233, 0.0095345071, -0.0013542790, 0.0022717013, -0.0017645191, + -0.0035925964, 0.0020267814, -0.0009262990, -0.0007762848, 0.0012226179, + 0.0008512922, 0.0004171901, -0.0003929087, -0.0029958133, -0.0028540432, + 0.0036560113, 0.0001282932, -0.0020577123, 0.0024179695, -1.4571067095, + 0.0005032911, -0.0001189797, -0.0006151678, -0.0025414592, -0.0009826091, + -0.0018529762, -0.0015028459, -0.0018680464, 0.0045685777, 0.0015012030, + 0.0020235477, 0.0005708202, 0.0021016384, 0.0003006926, -0.0010909907, + -0.0000349674, -0.0036978752, 0.0007027618, -0.0110131809, 0.0043286080, + 0.0026739151, 0.0061423113, -0.0000678026, -0.0010764366, -0.0015427154, + 0.0026795678, -0.0020770633, -0.0011351365, -0.0015765531, -0.0026841625, + -0.0014000491, 0.0016182153, -0.0026945574, -0.0042013517, 0.0032209558, + 0.1129723489, -0.0021460932, 0.0007146448, -0.0012868000, 0.0025963159, + 0.0016065235, -0.0000159019, -0.0014529482, -0.0014329082, -0.0016495818, + -0.0017115454, -0.0071962681, 0.0015211517, 0.0021394102, 0.0026714336, + 0.0024629887, 0.0011815471, 0.0000497517, 0.0034106332, -0.0012467341, + 0.0037605828, -0.0012175625, -0.0016646645, -0.0006109267, -0.0002818655, + -0.0004704525, -0.0025156708, 0.0023094914, -0.0004838426, 0.0060284431, + 0.0005816647, 0.0027105375, -0.0003526851, 0.0023328857, 0.0000877692, + -0.0006473870, 0.0028204406, -0.0007663951, 0.0014035767, 0.0028519756, + -0.0000817140, -0.0028665555, 0.0005600050, -0.0006508604, 0.0003907274, + -0.0010629813, 0.0074904785, -0.0010730908, -0.1654547453, 0.0006389185, + -0.0024672197, 0.0022605266, 0.0001894918, -0.0006644940, 0.0006420934, + 0.0029809140, -0.0008166523, -0.0067983344, 0.0018450371, -0.0049756826, + -0.0010574227, 0.0001115385, -0.0028434058, 2.3551199436, -0.0024907121, + 0.0004347535, -0.0016640866, -0.0024209684, 0.0031925337, 0.0021428433, + 0.0022751805, 0.0046235938, -0.0019863704, -0.0032828627, 0.0004111911, + 0.0004210183, 0.0004700001, -0.0005173989, 0.0002207807, -0.0019575856, + 0.0000550598, -0.0011540954, 0.0004151603, -0.0015753037, 0.0011948900, + -0.0032052270, -0.0005327798, 0.0004997840, 0.0021707853, -1.5115944147, + -0.0005777888, -0.0004223348, -0.0010531768, -0.0020412719, 0.0007880286, + 0.0006776602, -0.0000856485, 0.0039507691, -0.0009803383, -0.0005438691, + -0.0012131397, -1.0169343948, -0.0036763074, -0.0017833537, -0.0001003658, + -0.0019624699, -0.0000427742, 0.0035112379, -0.0005703880, -0.0023579211, + 0.0011484632, 0.0027230792, 0.0002677445, -0.0000278892, -0.0000324314, + -0.0017017112, -0.0036926968, -0.0015637594, 0.0016632625, 0.0046639983, + 0.0001906373, -0.0011558896, -0.0024201775, 0.0037784441, 0.0037966939, + -0.0023464435, 0.0012038354, 0.0029463847, -0.0010481183, -0.0013548210, + 0.0011818944, -0.0039634542, -0.0011872449, -0.0003770405, 0.0002085865, + -0.0010654421, 0.0028883889, -0.0028138570, 0.0025168564, -0.0026456639, + -0.0011111477, -0.0033264419, -0.0022929520, -0.0021937902, 0.0007822458, + -0.0011392240, -0.0017084982, 0.0048874053, 0.0013439108, 0.0009060935, + -0.0016518766, -0.0000907318, -0.0016895102, 0.0010091318, 0.0017711037, + 0.0023814016, -0.0014999574, -0.0028706694, 0.0059821252, 0.0012480139, + -0.0024003750, -0.0012627840, -0.0030172407, -0.0015832034, 0.0016059510, + -0.0015079682, 0.0043501360, 0.0002125348, 0.0009163539, 0.0100336242, + 0.0000707307, -0.0002390957, -0.0021577880, 0.0000199880, -0.0017152573, + -0.0026487354, -0.0000786530, -0.0007913997, 0.0016432581, -0.0020089208, + 0.0013061925, 0.0009644348, 0.0014925462, 0.0006556396, -0.0018205037, + -0.0009138472, -0.0030408218, 0.0016435906, -0.0018646301, -0.0001369505, + 0.0001546890, -0.0018686105, -0.0007171705, 0.0033634815, -0.0011196863, + 0.0167445298, 0.0008773226, 0.0018164773, 0.0009423764, -1.2832862139, + 0.0003965138, 0.0018737959, -0.0026087360, 0.0023660751, -0.0035312565, + -0.0006025637, -0.0002001321, -0.0018150229, -0.0020977152, 0.0024905901, + 0.0019542195, 1.2308973074, 0.0034385198, -0.0032455907, 0.0008646888, + 0.0917467847, 0.0010856418, -0.0032009631, 0.0009738645, 0.0011254521, + -0.0023884228, 0.0024996428, 0.0008756788, 0.0006515179, -0.0000695484, + -0.0005289484, 0.0001017866, 0.0012301448, -0.0015390120, 0.0018353541, + -0.0015196281, -0.0014568111, -1.8390671015, -0.0012747850, -0.0003100134, + 0.0018662978, 0.0006921706, -0.0026939735, -0.0040723225, 0.0018902156, + 0.0003034137, -0.0035529942, 0.0016285776, -0.0007296228, -0.0010919729, + 0.0032759532, 0.0025778774, -0.0031844317, 0.0011492092, 0.0014992850, + 0.0007108010, 0.0031530303, -0.0031233435, 0.0001087810, -0.0039702905, + 0.0014297243, 0.0019675044, -0.0011142960, 0.0020250045, 0.0000952447, + 0.0001191366, 0.0003712596, 0.0007165409, 0.0013950565, 0.0014515831, + -0.0024723129, 0.0001851446, -0.0024150312, -0.0018838048, -0.0008736905, + -1.6928992271, 0.0005567595, -0.0007680971, 0.0019078441, 0.0008206456, + 0.0001085304, 0.0011585550, -0.0056697270, 0.0020463220, -0.0035540513, + 0.0013145795, -0.0003874657, 0.0008757892, -0.0024007261, -0.0039950535, + -0.0011481466, -0.0015105465, 0.0017623091, 0.0037946859, -0.0049311984, + 0.0034109778, 0.0013594739, -0.0008742111, -0.0005373193, -0.0002122852, + -0.0007371427, 0.0022697332, 0.0002602874, 0.0023499262, -0.0006835547, + 0.0007151067, 0.0031898166, 0.0007640743, 0.0014632995, 0.0024274748, + 0.0028410566, -0.0007035974, -0.0000928878, 0.0019153096, 0.0011298414, + 0.0009063083, -0.0037392643, -0.0003503412, -0.0002505258, 0.0009740847, + 0.0020963997, 0.0010864021, -0.0004701903, -0.0017843083, -0.0027973829, + 0.0049786526, 0.0010981876, 0.0022472432, 0.0024765281, -0.0011198975, + 0.0027118751, -0.0025561745, 0.0019197485, 0.0039623259, 0.0005173248, + 0.0010719029, -0.0035457211, 0.0008429904, 0.0005112737, 0.0008250787, + -0.0017451998, -0.0005599242, -0.0014352631, 0.0011979402, 0.0017760086, + -0.0003350396, 0.0002306578, 0.0008548680, 0.0034321453, -0.0003663744, + -0.0010807812, -0.0005062956, -0.0016749047, -0.0005905204, -0.0011856100, + -0.0012783492, 0.0014183477, -0.0036365483, -0.0013018663, 0.0011322447, + -0.0004995530, 0.0031371557, -0.0039661163, -0.0022851396, -0.0007267161, + 0.0009043944, 0.0025494790, -0.0027097357, -0.0011735747, 0.0010514618, + 0.0001167291, -0.0013449565, -0.0004792030, 0.0052807136, -0.0032839468, + -0.0004145747, 0.0051115258, -0.0005202417, 0.0010779030, 0.0010223710, + -0.0017373844, 0.0016018786, 0.0013329703, 0.0017945620, 0.0005504577, + 0.0000692513, -0.0015237373, 0.0011933300, -0.0009216125, 0.0008245814, + 0.0001205313, -0.0009691292, -0.0002487908, 0.0025560043, 0.0004733769, + 0.0009390081, 0.0006143923, -0.0013908318, -0.0006950770, -0.0036942624, + -0.0015203366, 0.0007593256, -0.0034368206, -0.0026254989, 0.0021442473, + -0.0023875041, 0.0000192868, 0.0043321056, -0.0011678537, -0.0008531092, + -0.0017892350, 0.0001075449, 0.0008948438, -0.0036716608, -0.0002627783, + -0.0026707957, 0.0007325532, 0.0024422195, 0.0002339552, -0.0004645756, + -0.0007387665, -0.0028591561, 0.0033419346, 0.0017952786, 0.0054081762, + 0.0015353234, 0.0021685236, 0.0010580232, 0.0018308971, -0.0005524484, + -0.0009480086, 0.0000185277, -0.0050382032, 0.0015044846, -0.0021932188, + -0.0028210729, -0.0045571784, -0.0021428578, -0.0011042990, 0.0003324864, + 0.0020101285, -0.0008136919, 0.0028947769, -0.0020933321, -0.0018710224, + -0.0002173474, 0.0012065847, -0.0007617866, 0.0009267746, 0.0019571625, + -0.0040803463, 0.0051375749, 0.0003664470, 0.0010836064, -0.0001404062, + 0.0020699417, -0.0003151577, -0.0016488333, -0.0002706745, -0.0019563599, + 3.1147248745, -0.0004588275, -0.0014112028, 0.0011684420, 0.0013007135, + 0.0028082407, -0.0051726387, -0.0007325062, 0.0003071195, 0.0009065848, + 0.0035662288, -0.0012721597, 0.0009535450, 0.0027061221, -0.0035620630, + -0.0038029903, 0.0013751851, 0.0040286006, 0.0028513060, -0.0025164441, + -0.0028031534, 0.0007024156, -0.0009626854, 0.0012929209, -2.0896258354, + 0.0017188466, -0.0012546836, 0.0023227707, 0.0009344150, -0.0036640284, + 0.0009595891, 0.0000357950, 0.0025317902, -0.0023129317, 0.0015773880, + 0.0031813048, 0.0051257187, -0.0027368953, -0.0038641340, -0.0004890831, + -0.0028627566, -0.0003670314, -0.0010454226, 0.0027934709, -0.0010819118, + 0.0011819955, -0.0015387329, 0.0009036043, -0.0039319587, -0.0030804735, + -0.0020097508, -0.4440047145, 0.0043681907, -0.0037559937, 0.0002857554, + 0.0036178660, -0.0007540989, -0.0007500786, 0.0034967647, 0.0017840813, + -0.0004520132, 0.0012051100, -0.0001564535, 0.0182721838, -0.0021235032, + 0.0028120489, 0.0027812205, -0.0002364448, 0.0025857342, -0.0031744083, + 0.0036617490, 0.0028452557, -0.0004792314, -0.0042146458, -0.0044497950, + 0.0021408782, -0.0012876189, -0.0015280169, 0.0022498558, 0.0008864873, + 0.0034059926, -0.0014617015, -0.0013690107, -0.0017422691, 0.0024476710, + -0.0043537868, 0.0010676765, 0.0014542690, 0.0018064317, 1.9815911055, + -0.0010687085, 0.0005456989, -0.0020376979, 0.0027150845, -0.0008630177, + 0.0011216919, 0.0008620927, 0.0033040172, 0.0013210836, 0.0008981214, + -0.0033485920, -0.0009361459, 0.0012161932, 0.0035384335, -0.0038043321, + 0.0028659892, -0.0019163582, 0.2534624934, -0.0011460944, 0.0007004488, + 0.0025043907, 0.0015475745, 0.0036407127, -0.0003913660, -0.0000886342, + -0.0009686556, -0.0011060380, -0.0005151398, -0.0013485816, -0.0008368995, + 0.0286659244, -0.0012212014, 0.0021954682, -0.0022933767, -0.0003611143, + -0.0001487932, 0.0004257294, -0.0000581685, 0.0003283137, 0.0010875040, + -0.0045863697, 0.0017939226, -0.0002107937, -0.0038482661, -0.0011391417, + 0.0020219600, 0.0022948426, 0.0011110879, 0.0003415283, 0.0012625246, + 0.0016931107, 0.0005399934, -0.0007143347, -0.0026197699, -0.0014392389, + 0.1243892685, 0.0020767283, 0.0055363001, -0.0013314644, -0.0017376451, + -0.0017685498, 0.0017749742, -0.0007104678, 0.0024440393, -0.0003345090, + -0.0011395209, 0.0007247943, 0.0007952820, -0.0012683249, -0.0025430154, + 0.0011050601, 0.0041711377, -0.0005619632, 0.0011455445, -0.0033932142, + 0.0002051853, -0.0013899619, -0.0025740350, -0.0033462076, -0.0044016526, + 0.0024910225, 0.0016204882, -0.0024650060, 0.0001926520, -0.0050285845, + 0.0018870775, 0.0018367957, 0.0013653226, -0.0000835729, 0.0027354388, + 0.0032199421, 0.0007126885, 0.0025916186, -0.0030350336, 0.0029107335, + 0.0024936674, 0.0041801259, 0.0013133390, 0.0004591565, -0.0005864683, + 0.0003573876, -0.0000414904, -0.0006039676, 0.0009565324, 0.0016756098, + 0.0006640381, 0.0000588604, 0.0004281647, 0.0006159525, 1.6939909458, + 0.0002156685, 0.0025141807, 0.0012688292, 0.0010051362, -0.0022038212, + -0.0011848127, -0.0031399061, 0.0002718405, -0.0019720891, 0.0037829643, + 0.0004928767, -0.0020286762, 0.0000811629, -0.0012951063, -0.0004409472, + -0.0012559826, -0.0000377235, 0.0029217983, 0.0008401149, -0.0001109822, + 0.0020316299, 0.0031670579, -0.0035657247, 0.0003829943, 0.0014840704, + -0.0003418028, 0.0016656513, -0.0024205749, 0.0013329624, 0.0003212839, + 0.0011137382, -0.0031813541, 0.0014456315, 0.0015006294, 0.0014485936, + 0.0031436037, 0.0004534883, 0.0009725009, -0.0024523160, 0.0002443762, + 0.0016100889, -0.0007262791, 0.0001184898, -0.0014394949, 0.0020240410, + -0.0054286891, 0.0005971147, 0.0022378052, -0.0044905618, 0.0013520587, + 0.0009774062, 0.0020652497, 0.0021231859, 0.0003097537, 0.0036825747, + 2.7160983086, 0.0017846404, -0.0009470950, -0.0006750606, 0.0020989669, + -0.0030636301, -0.0003271769, -0.0022326240, -0.0000358904, 0.0012852473, + -0.0028792399, -0.0012011337, -0.0049939598, -0.0011247261, -0.0015540164, + 0.0025660107, -0.0030832998, 0.0043600835, 0.0009112253, -0.0015130485, + 0.0011013616, 0.0006833301, 0.0018911604, -0.0029193331, -0.0021572164, + -0.0010118722, -0.0020961887, 0.0005486596, -0.0003163542, 0.0004616631, + 0.0015829965, -0.0015377218, 0.0005433509, 0.0005952197, -0.0017900704, + -0.0020275807, -0.0005246067, 0.0033246963, 0.0022560789, -0.0016211658, + -0.0004745529, 0.0008171350, -0.0016702600, 0.0033209291, 0.0004833189, + 0.0001561386, 0.0012498298, 0.0030488484, -0.0009952445, 0.0016564177, + 0.0007625618, -0.0002680561, 0.0009224252, -1.6805806160, -0.0003787221, + 0.2420058548, 0.0006499442, 0.0021090317, 0.0002530932, -2.1939783096, + -0.0001545702, 0.0028917608, 0.0016747443, 0.0022244821, 0.0000113742, + -0.0003331606, 0.0013213875, 0.0000374122, -1.8087137938, -0.0000218884, + -0.0010639664, -0.0006570455, -0.0012182455, -0.0035062595, 0.0012614680, + -0.0014365101, 0.0001097722, 0.0025460992, -0.0017051634, 0.0023971554, + 0.0007223594, -0.0029799086, -0.0007317411, -0.0016082651, 0.0030458614, + -0.0015273385, 0.0046519851, -0.0018969290, -0.0036170497, -0.0015453147, + -0.0003663185, -0.0029962098, -0.0002757357, 0.0002026134, -0.0013654635, + 0.0004071665, 0.0016382490, 0.0000508586, -0.0030139578, -0.0005946774, + 0.0001310927, 0.0050350493, 0.0010437085, 0.0017836401, 0.0006719930, + -0.0033080392, 0.0011054496, -0.0022704296, 0.0013993385, 0.0002922988, + -0.0015617181, 0.0013547274, -0.0002287410, -0.0020431676, 0.0047719860, + 0.0007412655, -0.0019724309, -0.0028471127, -0.0011852761, 0.0001878493, + -0.0027169054, 0.0023705270, 0.0011337809, -0.0009382968, 0.0015762905, + 0.0006115995, 0.0007327179, -0.0042073247, 0.0044550975, 0.0021126517, + -0.0011205012, -0.0021304898, -0.0000907653, 0.0002271729, 0.0002760910, + 0.0018084757, 0.0019244743, 0.0014058198, -0.0012701456, -0.0011409349, + -0.0003650477, -0.0005757548, 0.0000465410, 0.0029814672, 0.0036122515, + 0.0016435361, -0.0016972022, 0.0001250348, -0.0013447311, 0.0009775842, + -0.0003928458, -0.0010398934, 0.0025731847, 0.0037929635, -0.0027294485, + 0.0011344319, -0.0019018615, -0.0003789035, 0.0024975417, 0.0024220098, + -0.0035709888, -0.0018211342, -0.0031173192, -0.0001788245, 0.0007512035, + -0.0024142182, -0.0026703831, 0.0005034246, -0.0021534241, -0.0011654817, + 0.0010965284, -0.0038824400, -0.0001460644, -0.0031382591, 0.0009815148, + 0.0031098779, -0.0014300584, -0.0000107309, 0.0004388014, 0.0016062437, + 0.0038618101, -0.0022312582, 0.0002415557, -0.0000792802, -0.0001123198, + -1.2332133055, -0.0032121837, 0.0009912095, 0.0049939789, 0.0042895782, + 0.0045071207, -0.0001761613, 0.0022416732, -0.0001872010, 0.0002603303, + -0.0011447710, 0.0039530005, 0.0025847014, -0.0014843764, -0.0024925205, + 0.0001231068, 0.0021918882, -0.0011155559, -0.0021657655, 0.0028942921, + -0.0018335637, 0.1158422530, -0.0009974430, -0.0018030740, 0.0000441505, + -0.0033383667, 0.0003299080, 0.0040496723, 0.0015913653, 0.0017907545, + 0.0004712124, -0.0018012384, -0.0009096633, 0.0001640473, 0.0014518837, + -0.0042445646, 0.0039619310, -0.0018744650, -0.0018439665, 0.0008817576, + -0.0007901054, 0.0016339654, -0.0001786141, 0.0031151916, 0.0014916845, + 0.0003346999, 0.0004705735, -0.0028283484, 0.0025845426, 0.0009263335, + -0.0002995544, 0.0002040332, -0.0007602638, 0.0026336927, 0.0029928247, + 0.0006160521, -1.3461738825, 0.0001646094, 0.0037311465, 0.0000032152, + -0.0007021769, -0.0054845409, 0.0003580546, -0.0000553799, -0.0001985119, + -0.0008830461, 0.0016034223, -0.0015864944, -0.0015500444, 0.0015141182, + 0.0003607040, -0.0011294427, 0.0002784668, -0.0004793531, 0.0015878314, + 0.0021996628, -0.0048003709, -0.0036107895, -0.0010517713, 0.0020117443, + -0.0015668334, 0.0006136340, 0.0012747627, 0.0015973370, 0.0023144903, + 0.0007310597, 0.0002404642, 0.0007969635, -0.0036423728, 0.0012499895, + 0.0017516124, -0.0025022249, 0.0015617749, 0.0002797226, -0.0021083562, + 0.0018011350, 0.0026711880, 0.0035350190, 0.0001595076, -0.0007692193, + -0.0001207730, 0.0003704010, 0.0315245613, 0.0002753625, 0.0007394215}; + +float unet_input_time_embedding_50_15[] = { + -0.0043082647, -0.0018808797, 0.0049144868, -0.0001711774, 0.0017973131, + -0.0019570328, 0.0003772613, 0.0007381190, 0.0037933595, 0.0019877737, + -0.0027042043, 0.0055392436, -0.0013301801, -0.0024207109, -0.0015329560, + -0.0023256070, 0.0042871735, -0.0020495451, 0.0030501760, -0.0015310822, + 0.0017983299, 0.0062857261, 0.0007922469, 0.0204787273, 0.0000053023, + -0.0011063202, -0.0008641817, -0.0040211561, -0.0018375145, -0.0007281657, + 0.0015912633, -0.0005513337, 0.0015574554, 0.0007226975, 0.0024514575, + -0.0022406136, -0.0004786295, 0.0018687968, -0.0037034564, -0.0003227768, + 0.0013054162, 0.0004071007, -0.0020584590, 0.0002965340, -0.0020822170, + -0.0002819488, 0.0036673034, 0.0023144376, -0.0007281117, -0.0004098453, + -0.0003555948, 0.0019058536, -0.4625823796, -0.0003738399, -0.0017226666, + 0.0034349915, -0.0023014594, 0.0042012581, 0.0018534181, -0.0012913623, + 0.0015159587, 0.0033100876, 0.0004203976, 0.0012314287, 0.0025955113, + 0.0008557346, 0.0001599379, 0.0003059589, 0.0034434274, -0.0021866972, + 0.0009590145, -0.0000772136, -0.0025015960, 0.0000932505, -0.0006410070, + 0.0017069615, 0.0002199486, -0.0037190011, -0.0001111557, -0.0008900987, + -0.0010137311, 0.0010387838, -0.0019656196, -0.0007721391, 0.0003743547, + 0.0023918806, 0.0015546530, -0.0008865646, 0.0014863526, -0.0020559873, + 0.0027514764, 0.0000961400, -0.0001109969, -0.0008994314, 0.0045916918, + 0.0022551161, -0.0028581861, -0.0019306019, 0.0016492880, -0.0004191156, + -0.0007284977, -0.0001772247, 0.0006652400, 0.8617781401, -0.0005326262, + -0.0017282730, -0.0023698132, 0.0008322569, 0.0018464774, 0.0012814794, + 0.0002627186, -0.0014800876, 0.3375933468, 0.0009664688, -0.0000697989, + 0.0012104632, -0.0005514529, -0.0009115536, 0.0007703388, 0.0016271749, + 0.0001299866, 0.0017286434, -2.1843941212, 0.0004268545, -0.0002789441, + 0.0017613755, -0.0016211173, -0.0016859337, -0.0018181880, -0.0022682301, + -0.0043450850, 0.0021116193, -0.0010986326, 0.0010274258, 0.0006623806, + -0.0012046730, 0.0004474141, 0.0004151193, 0.0033205617, 0.0014444795, + 0.0015504637, 0.0025709751, -0.0014709181, -0.0000256035, -0.0008149662, + -0.0005803546, -0.0007382357, 0.0005022446, 0.0016504677, 0.0003666193, + 0.0011345660, -0.0009141130, 0.0008114842, 0.0002065850, 0.0032204012, + 0.0021657837, 0.0017161202, -0.0022504348, 0.0001381272, -0.0003760536, + -0.0013478226, 0.0014733918, 0.0028767372, 0.0022394611, 0.0007447633, + 0.0007569056, -0.0009036111, -0.0005943063, -0.9115108848, -0.0003137176, + 0.0027436223, -0.0009556655, 0.0007344978, 0.0002635605, -0.0016155951, + -0.0007068431, -0.0004648616, -0.0035750698, -0.0016363957, -0.0000440944, + -0.0019592340, 0.0013472522, 0.0047219540, -0.0000363686, 0.0004799808, + -0.0006039185, 0.0028002728, 0.0030731387, -0.0000958270, -0.0031877737, + -0.0000905343, 0.0004980434, -0.0024566981, 0.0017131537, 0.0022823140, + 0.0036315271, -0.0012623806, 0.0014175088, 0.0007304793, -0.0017435518, + 0.0013075257, 0.0038655247, -0.0007765107, -0.0002278499, -0.0006539803, + -0.0000688573, 0.0007252332, -0.0011072555, 0.0000367165, 0.0050311917, + -0.0006074491, 0.0000132411, -0.0021454017, 0.0014605047, -0.0007767449, + -0.0009528915, 0.0019886924, 0.0003164653, -0.0023973961, -0.0002123668, + 0.0028958838, 0.0010435330, -0.0008828093, 0.0724353716, -0.0010165118, + 0.0006550052, 0.0089440336, -0.0022808579, 0.0025541752, -0.0026318906, + 0.0010336372, 0.0006222473, 0.0011833217, 0.0016734279, 0.0009260615, + 0.0005937885, 0.0018735030, 0.0016926462, -0.0001245243, -0.0034835101, + 0.0072058719, 0.0011068236, -0.0017453998, 0.0002121609, -1.4668586254, + -0.0016782854, 0.0020159618, 0.0007721145, -0.0016750535, -0.0033627828, + 0.0009540627, -0.0005207886, 0.0008634087, 0.0019217590, -0.0001788787, + 0.0006439362, 0.0020338004, 0.0008754070, 0.0030574759, -0.0010225297, + 0.0013008229, -0.0021897249, 0.0018697425, -0.0002559709, 0.0016818474, + 0.0036503370, 0.0012037409, -0.0012405314, -0.0010739686, -0.0000025495, + 0.0033926796, -0.0039675673, -0.0036196145, -0.0009308206, -0.0015274573, + -0.0012634082, 0.0021996524, -0.0036984626, 0.0007511927, -0.0000772676, + 0.1409558505, 0.0002194280, 0.0006182204, -0.0010456885, 0.0017807423, + 0.0018956098, 0.0008475860, -0.0026316599, -0.0013835332, 0.0030600186, + -0.0015676188, -0.0016018578, 0.0003289480, -0.0020116635, 0.0016338490, + 0.0022358065, -0.0033594030, -0.0000884724, 0.0013721935, 0.0010861708, + 0.0004330361, -0.0007973535, 0.0008837740, -0.0022252682, -0.0041810526, + -0.0012135520, -0.0004658788, 0.0009769080, -0.0006266581, 0.0044938214, + 0.0000488370, 0.0004367121, 0.0003181857, -0.0004799617, 0.0005147201, + -0.0001274669, 0.0029901024, -0.0004495373, -0.0013180412, 0.0012754784, + 0.0004592428, 0.0004743473, -0.0006009315, -0.0019447543, 0.0003961282, + -0.0017757188, 0.0043832567, -0.0028565857, -0.1930459738, 0.0002598339, + -0.0012028986, 0.0009646318, 0.0013461190, 0.0004220502, -0.0002387227, + 0.0012195511, 0.0026010659, -0.0034161219, 0.0026626079, -0.0021375581, + 0.0000218637, -0.0015172157, -0.0013452682, 2.2851600647, -0.0018320249, + -0.0013926122, -0.0003826147, 0.0006082865, 0.0006776713, 0.0022548907, + -0.0004836423, 0.0025908863, -0.0002386095, 0.0006130449, 0.0007308951, + 0.0012658238, 0.0034582198, -0.0009312079, -0.0000244970, 0.0014152476, + 0.0009515667, -0.0010475232, -0.0000375495, 0.0019898508, 0.0000243852, + -0.0013011009, -0.0000738655, -0.0003289394, -0.0021394696, -1.5318075418, + -0.0000383630, 0.0003076228, -0.0000380897, 0.0011240551, -0.0019181881, + 0.0013850122, 0.0003903170, 0.0031739797, -0.0001688593, 0.0004045963, + 0.0008823416, -0.8461186290, -0.0016511274, 0.0022921469, -0.0011893725, + 0.0004133568, -0.0017969194, 0.0016601542, 0.0016770964, -0.0003696266, + -0.0010596453, 0.0012566886, -0.0003469693, 0.0007067325, -0.0017326847, + -0.0003944044, -0.0007587560, 0.0019810307, 0.0000999304, 0.0003706245, + -0.0007651390, 0.0002514850, -0.0009454226, 0.0013951124, -0.0007983940, + -0.0032963720, 0.0021107858, 0.0042633275, -0.0006023799, 0.0003598984, + 0.0018420573, -0.0014578700, -0.0019825683, -0.0000225931, -0.0002297992, + 0.0020182498, 0.0038306136, 0.0007688302, -0.0012530889, 0.0002642772, + -0.0002470741, 0.0007150702, -0.0018564726, -0.0015898130, -0.0006285533, + 0.0018009557, -0.0004135342, 0.0022108329, 0.0002909992, 0.0007221684, + -0.0004755966, 0.0006193663, -0.0012650106, 0.0027962555, 0.0011273791, + -0.0013578157, 0.0005293321, -0.0018052941, 0.0025782427, -0.0014307445, + -0.0013475325, -0.0000026303, -0.0013094408, -0.0004711680, -0.0000207231, + 0.0000283872, 0.0019863299, 0.0000912077, 0.0026041386, 0.0120187234, + 0.0002101404, 0.0004264731, -0.0002526694, 0.0007126443, -0.0022997824, + -0.0008354653, -0.0017637601, -0.0009613475, 0.0016700337, -0.0008522039, + -0.0012971009, 0.0025736652, 0.0001206382, -0.0000033382, 0.0012348755, + 0.0016853483, 0.0001789639, 0.0019780491, -0.0020433855, 0.0002524494, + 0.0004488728, -0.0002336607, -0.0018775752, -0.0007900663, 0.0001501832, + 0.0165684130, -0.0010056058, 0.0008978337, 0.0007369230, -1.2720378637, + -0.0010613562, 0.0008700825, -0.0007235818, 0.0011975744, 0.0015211010, + 0.0004954013, 0.0001562405, 0.0005267216, -0.0011525671, -0.0018912249, + 0.0007918691, 1.1190305948, 0.0040603220, -0.0001147995, -0.0021706265, + 0.0578013174, -0.0023153750, -0.0025631725, -0.0000390345, 0.0041766390, + 0.0003981241, 0.0002856841, -0.0006787712, 0.0015737130, -0.0008294214, + 0.0007320242, -0.0004369980, -0.0004914637, -0.0011363947, 0.0006463197, + -0.0037044443, 0.0004841145, -1.9042589664, -0.0038782209, -0.0005963218, + 0.0024269819, 0.0003533475, -0.0010539228, -0.0026564025, 0.0014061327, + -0.0005029682, -0.0013689003, 0.0031241290, -0.0007128469, -0.0026589097, + -0.0003611134, 0.0002251741, -0.0023188428, 0.0011514910, 0.0025573196, + 0.0010189691, 0.0015541506, 0.0003718175, -0.0027910445, -0.0026965507, + -0.0005754258, 0.0012142861, -0.0014145684, 0.0012255250, -0.0000437442, + -0.0015787296, -0.0006413562, -0.0015562163, -0.0000945670, 0.0021211854, + -0.0005654474, 0.0012775771, -0.0020128833, -0.0013558241, -0.0002996698, + -1.6929426193, -0.0003638435, 0.0016258955, 0.0003341832, 0.0004529404, + 0.0001091004, 0.0000209063, -0.0000794865, 0.0000475566, -0.0010682009, + 0.0012157457, -0.0019946918, 0.0007803286, 0.0007762257, -0.0008479133, + -0.0002253763, 0.0006718338, 0.0004129380, 0.0021273755, -0.0045083761, + 0.0017127632, 0.0008185720, -0.0001392507, -0.0014074508, -0.0004564510, + 0.0018657083, 0.0010191882, -0.0000180057, 0.0031830096, -0.0029507338, + 0.0001746528, 0.0027078851, 0.0005443739, -0.0019019943, 0.0017687972, + 0.0027674458, -0.0016792561, 0.0012636115, 0.0000235895, 0.0006713234, + 0.0019016167, -0.0003066272, -0.0027824435, -0.0009357184, -0.0049501886, + 0.0030552223, 0.0027141671, -0.0005662525, 0.0016693673, -0.0030684713, + 0.0009686123, -0.0004104851, -0.0018947991, 0.0001832173, -0.0009447427, + 0.0011630387, 0.0000875558, 0.0028843044, 0.0009671570, 0.0016414288, + -0.0002267184, -0.0036715893, -0.0016589388, 0.0015787978, 0.0001221295, + -0.0014711348, 0.0010760382, -0.0018202462, 0.0002778112, 0.0010981972, + -0.0001114528, 0.0007442537, 0.0030264794, 0.0023554638, 0.0000187350, + 0.0004094988, -0.0023368506, 0.0009518650, -0.0008585756, -0.0014429342, + -0.0007696804, 0.0006635762, -0.0040127793, -0.0014682685, 0.0004715326, + -0.0021587526, -0.0023200742, -0.0014763275, 0.0011531636, 0.0015495424, + 0.0003068630, 0.0024625466, -0.0018894698, 0.0001135420, -0.0020314367, + 0.0016930219, -0.0021402109, 0.0004012946, 0.0096337348, -0.0016509048, + -0.0020695806, 0.0079915235, 0.0008960075, 0.0013431129, -0.0006788620, + -0.0006939725, 0.0017009880, 0.0016463958, -0.0000915460, -0.0004991400, + -0.0006396798, 0.0004607206, 0.0013943262, 0.0002468828, -0.0020794268, + 0.0010971678, -0.0017959424, 0.0022634519, 0.0001824808, -0.0009987255, + -0.0012481322, 0.0039634630, -0.0026617537, -0.0016409664, 0.0008163564, + -0.0029384503, -0.0004251249, -0.0016134121, -0.0026305774, -0.0005978527, + -0.0015451334, 0.0020259540, 0.0014641611, 0.0010718005, -0.0013099322, + -0.0014336980, 0.0007727845, -0.0002930018, -0.0009657547, 0.0016625552, + -0.0013474459, 0.0008958308, -0.0016931996, 0.0014382678, 0.0006800271, + -0.0027147741, -0.0026738406, 0.0029795896, 0.0000384988, 0.0050302697, + -0.0001556552, 0.0009814356, -0.0001914077, -0.0022484765, -0.0020563081, + 0.0007109391, 0.0008631889, -0.0021754648, 0.0018753335, 0.0003057375, + -0.0014281217, 0.0038373610, -0.0001444960, -0.0021679671, -0.0003968463, + 0.0010807109, 0.0017487425, 0.0008561249, -0.0005390367, 0.0013044979, + 0.0007979190, 0.0010626991, 0.0006270999, -0.0004104486, -0.0008071240, + -0.0003019613, 0.0046651792, -0.0031667042, 0.0010533943, -0.0002266075, + 0.0017572483, 0.0010576267, 0.0004607441, 0.0021541021, -0.0041371840, + 2.9956164360, -0.0001417259, -0.0016261758, 0.0008312898, 0.0043691453, + -0.0024224767, -0.0042124367, -0.0020305635, 0.0014349530, -0.0015048180, + 0.0037058638, 0.0003944159, 0.0001584050, 0.0029273117, -0.0066195596, + -0.0013328332, 0.0008068837, 0.0013421134, -0.0003682575, -0.0041252584, + -0.0021161800, 0.0002233610, -0.0003593412, -0.0026665151, -2.1606271267, + -0.0002198829, 0.0006704440, 0.0013965764, 0.0010187835, -0.0009222836, + -0.0001199241, -0.0016798744, 0.0005534784, -0.0006857207, 0.0007284624, + 0.0014293310, 0.0043322509, -0.0015705945, -0.0019474037, 0.0009590127, + -0.0040803254, 0.0011250251, -0.0005521365, 0.0022299029, -0.0002870997, + 0.0025621355, -0.0002087372, -0.0011005255, -0.0022157049, -0.0025155584, + -0.0016946401, -0.3004606068, -0.0010383977, -0.0021401206, -0.0002892301, + 0.0052629579, 0.0016422223, -0.0015296394, 0.0003794846, 0.0025033737, + 0.0007251087, 0.0042378297, 0.0011317645, 0.0691001937, -0.0014561815, + 0.0025723926, 0.0002396058, -0.0002830183, -0.0005580313, -0.0006202841, + 0.0012217355, 0.0045132963, -0.0024639496, -0.0002663803, -0.0010267360, + 0.0000574066, 0.0005949528, -0.0018724628, -0.0009228238, -0.0001343838, + 0.0020432030, 0.0026132269, -0.0018859953, 0.0016588254, -0.0004608396, + -0.0017411197, -0.0005171458, 0.0005467223, -0.0012379948, 2.0527522564, + -0.0004281318, -0.0015468064, -0.0000250650, 0.0032552865, -0.0018051569, + -0.0004790502, 0.0010029697, 0.0019023330, 0.0006841084, -0.0018060217, + -0.0023719796, 0.0017163763, -0.0021049427, 0.0035743676, -0.0004485972, + 0.0016103243, -0.0017510667, 0.2016895562, -0.0004599835, -0.0022170381, + 0.0019865646, 0.0006867177, 0.0012226491, 0.0001659100, -0.0032288928, + 0.0008191140, -0.0037421344, -0.0023578550, -0.0011326340, -0.0022553373, + 0.0283627864, 0.0000610380, -0.0007123258, -0.0047280057, -0.0008339179, + -0.0012137131, 0.0009588334, -0.0005987873, 0.0024012649, 0.0005084630, + -0.0016290704, -0.0007504281, 0.0064880075, 0.0004638548, -0.0009998401, + 0.0023610517, 0.0031630634, -0.0020566047, -0.0012592075, -0.0012614285, + -0.0014359963, 0.0011363509, -0.0009047948, 0.0004638017, -0.0031595877, + 0.0946839750, 0.0004322877, 0.0017969888, -0.0019551790, -0.0014655443, + -0.0030009781, -0.0005396283, 0.0028090887, 0.0024756931, -0.0022081779, + 0.0007099276, -0.0007110792, -0.0000605206, -0.0050788973, 0.0009326339, + -0.0019385458, 0.0013685531, 0.0009931797, 0.0008408618, 0.0000257837, + -0.0010220595, 0.0012228671, -0.0001175962, -0.0017686253, -0.0030100448, + 0.0023794807, -0.0015664352, -0.0010208533, -0.0008346853, -0.0032084961, + -0.0018192413, 0.0008368116, 0.0027526813, 0.0009082037, 0.0014877017, + 0.0031517607, 0.0011804327, 0.0013325124, -0.0026533701, 0.0020125045, + -0.0009968281, 0.0020211637, -0.0016745608, 0.0008786791, 0.0008210731, + 0.0000583790, -0.0009362586, -0.0011804993, -0.0015527835, 0.0011992644, + -0.0012520868, -0.0033828013, 0.0027057319, 0.0031184684, 1.6636861563, + -0.0026034943, 0.0015991004, -0.0002075853, -0.0005114179, -0.0011050338, + -0.0009066109, -0.0000932472, -0.0008109058, 0.0027114120, -0.0000272994, + 0.0006602014, -0.0013703196, -0.0005805138, -0.0008662853, 0.0047348249, + -0.0001861989, 0.0010829695, 0.0008150577, 0.0003726180, -0.0013386800, + 0.0014928719, -0.0001602881, 0.0007595012, 0.0000722823, 0.0015471717, + 0.0020359848, 0.0026401686, -0.0021522068, -0.0000584871, 0.0021339450, + -0.0026644373, 0.0015933830, 0.0027717473, -0.0019494030, 0.0003198646, + -0.0010025075, 0.0000523975, 0.0007662688, -0.0009566904, 0.0006180452, + -0.0008859667, -0.0014446233, -0.0005151602, -0.0012585394, 0.0004018387, + -0.0001644208, 0.0002819486, 0.0029948121, -0.0017668945, 0.0009060889, + 0.0013914121, 0.0017509330, -0.0002086679, 0.0009810091, 0.0006843545, + 2.5779008865, -0.0001736693, -0.0012585744, -0.0004346902, -0.0011542263, + -0.0022036356, -0.0001292923, 0.0009260984, -0.0016419878, -0.0014072696, + -0.0002051971, 0.0010651476, -0.0017713620, 0.0005949610, -0.0027157785, + 0.0004861671, 0.0004682387, 0.0003088256, 0.0009868254, -0.0010810229, + 0.0002823658, 0.0029974622, 0.0002190275, 0.0003361953, 0.0012356839, + 0.0016042176, 0.0021275985, 0.0014537487, -0.0014036961, -0.0009129494, + -0.0014039329, -0.0007684331, 0.0007955391, -0.0021874872, -0.0009970833, + -0.0002080902, 0.0012326826, 0.0000576903, -0.0017328744, -0.0009942050, + -0.0000523736, 0.0005394220, -0.0008100793, -0.0002177260, 0.0018068904, + 0.0014244304, -0.0006414442, 0.0016480972, 0.0009504611, 0.0031023994, + 0.0008906908, 0.0022002868, 0.0018839883, -1.7065594196, 0.0010514094, + 0.1874959469, 0.0033427009, 0.0028670542, -0.0023243052, -2.2254946232, + -0.0007803063, 0.0032263473, 0.0017697439, 0.0008104774, -0.0016625300, + -0.0009245628, 0.0015919553, -0.0018716399, -1.7686158419, 0.0012963498, + -0.0018117933, 0.0029097716, -0.0020553768, -0.0002740785, 0.0015278803, + -0.0002025808, -0.0001508635, 0.0010951657, 0.0005982814, 0.0007568165, + 0.0021215258, -0.0014669695, -0.0028831637, -0.0022878773, 0.0028099141, + -0.0037987710, 0.0022753121, 0.0027510589, 0.0006980780, -0.0015378743, + -0.0010837903, -0.0004336371, -0.0018363437, 0.0033482644, -0.0006734480, + 0.0018345960, 0.0012470265, 0.0018514423, -0.0015665912, 0.0019174162, + 0.0019018145, 0.0017614430, 0.0018961560, -0.0008894382, 0.0012185173, + -0.0012020003, -0.0012129494, -0.0002920378, 0.0024722277, 0.0030437149, + -0.0027069021, 0.0023485832, -0.0008949160, -0.0004615951, 0.0020546804, + 0.0014461975, -0.0012906311, -0.0023347205, -0.0010436983, 0.0014801138, + -0.0015730001, 0.0024822187, 0.0013190131, 0.0016712388, -0.0003571888, + -0.0004056059, -0.0001345046, -0.0027321693, 0.0000869646, -0.0006572134, + -0.0012850524, 0.0011896399, 0.0022294144, -0.0012872671, 0.0013568646, + -0.0019554589, -0.0003962545, 0.0003427169, -0.0009649019, 0.0001386409, + 0.0035505099, -0.0029921569, 0.0012210417, 0.0001361533, -0.0004308135, + 0.0012136507, 0.0006432701, 0.0008853051, -0.0029469552, 0.0001747608, + -0.0021484932, 0.0008114306, 0.0013934580, 0.0031536585, -0.0009138850, + 0.0024716160, -0.0013296159, -0.0023127254, 0.0009550760, 0.0017823626, + -0.0014629494, -0.0027167178, -0.0024945717, -0.0007324438, 0.0011603633, + -0.0013618274, -0.0024227928, -0.0008752844, 0.0010651308, -0.0048611988, + -0.0001367806, -0.0004276166, -0.0003277999, -0.0014281292, 0.0025266740, + 0.0000429228, -0.0000809613, 0.0014413449, -0.0003715524, 0.0017275380, + 0.0011685574, -0.0000743016, -0.0010139281, -0.0019823681, -0.0024376824, + -1.1348395348, 0.0040992089, -0.0014746952, 0.0008824625, 0.0026496018, + 0.0016263227, 0.0003822867, -0.0012825967, 0.0002511931, 0.0016395352, + -0.0026371982, 0.0003713899, 0.0024088905, 0.0004617181, 0.0011731139, + 0.0028232308, -0.0005582199, 0.0013789488, 0.0005065762, 0.0006848429, + 0.0006590788, 0.1705099344, -0.0001343929, -0.0010659080, 0.0005417896, + 0.0003504697, -0.0003874854, 0.0003397181, 0.0009656849, 0.0012532668, + 0.0002946472, -0.0001942599, -0.0013385559, 0.0003718263, -0.0014547592, + -0.0025000875, 0.0006421267, 0.0000187261, -0.0014893259, -0.0018753447, + 0.0017603918, -0.0004135231, -0.0025696945, -0.0002289265, -0.0019607004, + -0.0014521691, 0.0002394765, -0.0019525574, 0.0011300305, -0.0014897846, + -0.0014073123, -0.0009013787, 0.0000398410, 0.0013877229, 0.0047533354, + -0.0011843055, -1.3832061291, 0.0021590507, 0.0033180905, -0.0024075489, + 0.0019245108, -0.0025472890, 0.0001253269, 0.0002744279, -0.0011443393, + -0.0022181082, 0.0002106085, 0.0002572968, -0.0022049970, 0.0009784070, + -0.0000975314, 0.0016610831, 0.0005347785, 0.0014198250, 0.0007785363, + 0.0022268333, -0.0023708288, -0.0029586072, 0.0005493682, 0.0003069444, + -0.0006910306, 0.0018617730, 0.0020091576, 0.0019195965, -0.0005497993, + -0.0008789009, -0.0003928090, -0.0011863755, -0.0009239119, -0.0009443676, + -0.0021636044, 0.0014161770, 0.0010237806, 0.0000043222, -0.0031170400, + 0.0003301082, 0.0012243502, 0.0013440896, -0.0002129106, -0.0027806917, + -0.0010844870, 0.0002985601, 0.0111175645, 0.0021789123, -0.0005006485}; + +float unet_input_time_embedding_50_16[] = { + -0.0023783632, 0.0009674189, -0.0004279464, 0.0010043147, -0.0046171821, + -0.0012067673, -0.0017170764, -0.0018632873, 0.0014547338, -0.0046675899, + -0.0012157590, 0.0012497562, 0.0009619682, -0.0025045886, -0.0048478530, + -0.0005085194, 0.0005157255, -0.0026797506, -0.0014826664, -0.0000959565, + 0.0023185355, 0.0056289108, -0.0022002519, -0.0062455442, -0.0009467818, + 0.0005066341, 0.0011111014, -0.0023019118, -0.0014728507, 0.0011174763, + 0.0000797128, -0.0042272988, -0.0024001161, 0.0031186324, 0.0016514137, + -0.0001147031, 0.0008066848, 0.0039684512, -0.0040287077, -0.0046222047, + 0.0002336474, -0.0024645156, -0.0005190643, -0.0025766166, -0.0021110624, + -0.0019272577, -0.0010677259, 0.0045966278, 0.0006179295, -0.0005155060, + 0.0025910521, 0.0006891743, -0.3579271734, -0.0012731310, 0.0020039992, + -0.0015111946, 0.0008134309, 0.0048069223, -0.0002801684, 0.0024189393, + 0.0007357167, 0.0027996073, 0.0032298989, -0.0001946441, 0.0036680307, + -0.0007426064, 0.0003295299, -0.0009229231, 0.0020252392, -0.0026539976, + -0.0008968771, -0.0010812003, -0.0027041885, -0.0004548933, -0.0053237751, + -0.0005522259, -0.0006206697, 0.0000950387, -0.0007285814, -0.0036689995, + 0.0003795582, -0.0002197170, 0.0020775693, 0.0037091807, -0.0003214080, + 0.0002531160, -0.0004382800, 0.0018056170, -0.0004894715, -0.0002693771, + -0.0010258380, -0.0020382488, -0.0006202608, -0.0005443987, 0.0059009963, + 0.0032305238, -0.0010443148, 0.0001565227, -0.0045507774, -0.0032970784, + -0.0043041133, -0.0012407810, 0.0006264695, 0.7520446181, 0.0011035972, + -0.0006814608, -0.0010228488, -0.0023182677, 0.0001380611, -0.0004976452, + -0.0018164064, 0.0010838839, 0.3625799417, 0.0018897783, -0.0003913455, + -0.0001081065, -0.0004731896, 0.0002167567, 0.0020590471, -0.0002410563, + -0.0020360225, 0.0036041474, -2.2150008678, -0.0005143802, -0.0001776218, + 0.0022850675, 0.0022179019, -0.0006624865, -0.0009292662, -0.0002660942, + -0.0008828421, -0.0002631806, 0.0003231924, -0.0016002804, 0.0028747015, + 0.0024176529, -0.0009012874, 0.0032267729, 0.0024890266, 0.0018219622, + -0.0008481327, -0.0004253623, 0.0012246273, -0.0019192705, -0.0012247229, + -0.0009020837, -0.0014401418, 0.0026981728, 0.0004856521, -0.0000845911, + -0.0017469311, -0.0002008955, 0.0002623871, -0.0020512864, 0.0009925221, + 0.0000631851, -0.0001746016, 0.0058252122, 0.0053551961, 0.0014788816, + -0.0022892202, -0.0003706432, -0.0008236403, 0.0016307347, -0.0044855229, + 0.0021182068, 0.0019072517, 0.0031090667, -0.7318257093, -0.0009261461, + 0.0010809788, 0.0000346876, -0.0037997318, -0.0003118548, -0.0005877474, + 0.0004451871, 0.0009818495, -0.0032737539, 0.0012611928, 0.0009476207, + -0.0048348284, 0.0038232487, -0.0003632181, -0.0016321954, 0.0018208055, + -0.0019138479, -0.0018859897, 0.0024406840, 0.0019272435, -0.0016042260, + 0.0026033740, -0.0004444546, 0.0022054627, 0.0007376124, -0.0003342493, + 0.0065808729, 0.0034242766, -0.0038156221, -0.0015995487, -0.0000901874, + -0.0009902804, 0.0008681896, 0.0025280435, -0.0010502953, -0.0014820416, + -0.0024959389, -0.0012938359, -0.0033574179, 0.0003263596, 0.0002915398, + -0.0008030850, -0.0033008424, -0.0050155506, 0.0010058079, 0.0027642087, + -0.0032809395, -0.0024157688, 0.0009775758, -0.0053423350, -0.0068414477, + 0.0007668827, 0.0001285603, 0.0021406238, 0.0677529871, 0.0013968048, + -0.0005577244, 0.0054369746, -0.0043473663, 0.0032104941, 0.0000068704, + 0.0006570662, -0.0022835508, 0.0016307528, 0.0053533167, 0.0006704638, + -0.0007828884, -0.0018003373, 0.0025545387, 0.0036722738, 0.0033179922, + 0.0051354580, -0.0002212084, -0.0044326261, -0.0027500838, -1.5014820099, + 0.0008398814, 0.0014152206, -0.0006681554, 0.0024354700, -0.0004017246, + 0.0000043754, 0.0003527752, 0.0016912771, 0.0009092651, -0.0002394305, + 0.0014308349, 0.0008225855, -0.0036026277, 0.0010557633, 0.0042750048, + 0.0002300590, -0.0011431605, 0.0006655210, 0.0054966160, 0.0004778827, + -0.0011319774, -0.0051537091, 0.0008790833, -0.0024616932, 0.0010152957, + 0.0020624166, -0.0038418449, -0.0048648119, -0.0005377410, 0.0010735071, + -0.0045804065, 0.0006109495, -0.0042679524, 0.0001209481, 0.0003777416, + 0.1726895124, 0.0007316088, -0.0027936241, 0.0019300971, -0.0015549646, + 0.0012062537, -0.0006924961, -0.0024098523, 0.0004499527, 0.0053478144, + -0.0039165355, 0.0007383747, 0.0027309379, -0.0023053691, 0.0004109610, + 0.0022039879, -0.0034611342, -0.0019994550, 0.0026743426, 0.0028616479, + 0.0047729900, 0.0010853012, -0.0016332465, -0.0042164749, -0.0016160130, + -0.0016979263, 0.0010679546, -0.0044512707, -0.0046290187, 0.0071216412, + -0.0013627876, -0.0016941689, 0.0000532588, -0.0030020997, 0.0037292647, + -0.0030955414, -0.0005291131, -0.0024076258, -0.0009168130, -0.0009742952, + -0.0024556422, -0.0008556326, -0.0011319059, -0.0026592799, 0.0003488021, + -0.0000253120, 0.0032074023, -0.0021352251, -0.2218318880, 0.0002189274, + 0.0018935767, -0.0013882699, -0.0004446718, 0.0013533076, -0.0029650507, + 0.0022571413, -0.0000651542, -0.0014725282, -0.0028644118, -0.0013144012, + -0.0010509696, -0.0019694858, -0.0008695887, 2.2086272240, -0.0021498406, + 0.0010109241, -0.0015555507, 0.0011880073, 0.0021285708, 0.0034107231, + -0.0016792049, -0.0018831650, -0.0008898145, 0.0010314714, -0.0004113232, + 0.0007058252, 0.0014765777, 0.0033955527, 0.0033394150, -0.0014797053, + 0.0003763977, -0.0010999064, -0.0011840961, -0.0009585158, -0.0029558414, + 0.0009226936, -0.0031132512, -0.0014745593, -0.0017513651, -1.5783777237, + -0.0036204495, -0.0009679501, -0.0028690184, -0.0010282695, -0.0034252375, + 0.0009728182, -0.0005696968, 0.0042704334, 0.0010094217, 0.0006122217, + 0.0023462498, -0.7316995263, -0.0019483259, 0.0020354246, 0.0005724733, + 0.0009454205, 0.0005880627, -0.0025307252, 0.0026341216, 0.0020997399, + 0.0006208550, 0.0015639007, 0.0005534734, 0.0010659730, -0.0008582864, + 0.0004469068, 0.0029049460, -0.0002962534, -0.0000196598, 0.0004274305, + 0.0007924486, -0.0010784380, -0.0005424924, -0.0020703003, 0.0008636015, + -0.0010551610, 0.0006578068, 0.0002947394, -0.0019994886, -0.0020137951, + 0.0021104966, 0.0013434938, -0.0023403107, -0.0011761154, 0.0019883187, + 0.0033750313, -0.0002012979, -0.0003184415, -0.0021273866, -0.0005076360, + 0.0011646489, 0.0015559515, -0.0005749718, 0.0006897866, 0.0003945474, + -0.0055873427, 0.0003302088, 0.0029268262, -0.0016314145, -0.0001696167, + -0.0009932308, -0.0000179284, -0.0019230314, 0.0018426427, 0.0033871029, + 0.0012037605, -0.0027861111, -0.0062739700, -0.0021872190, -0.0019175920, + -0.0028596865, 0.0011345353, 0.0023652404, 0.0013558513, -0.0027471504, + -0.0040682396, 0.0000695195, 0.0036420333, 0.0015738918, 0.0137448544, + -0.0044088238, 0.0039178580, 0.0009906827, -0.0021355487, 0.0026788819, + 0.0009322865, -0.0025504688, 0.0001114896, -0.0011009630, -0.0021248586, + 0.0005565486, 0.0022786316, -0.0002451986, -0.0039138380, 0.0023675482, + 0.0029794965, -0.0001617004, 0.0003560912, 0.0004045259, 0.0004925146, + -0.0000509573, 0.0030077416, 0.0021775058, -0.0013307214, 0.0045018941, + 0.0125248749, 0.0008038422, -0.0016719330, 0.0021287100, -1.2658489943, + 0.0049982830, 0.0020931140, -0.0003644000, 0.0015586964, 0.0027515993, + 0.0038092043, 0.0010649359, -0.0033725090, 0.0001116842, 0.0009439255, + -0.0032662433, 1.0162526369, 0.0025118398, 0.0001229518, -0.0011737174, + 0.0361843407, -0.0025209682, 0.0022733877, 0.0004461091, 0.0028061550, + 0.0042303693, -0.0023170905, -0.0040981472, 0.0045230519, -0.0021321103, + -0.0021093786, 0.0001188475, 0.0011663259, -0.0031831656, 0.0020368244, + 0.0006937496, 0.0005136561, -1.9541047812, -0.0049280841, 0.0029373001, + -0.0032832655, -0.0041432660, -0.0030661682, -0.0007540453, -0.0011036871, + -0.0000720355, -0.0000805636, 0.0022079446, -0.0009727743, -0.0022215690, + -0.0044023595, -0.0030032152, -0.0000384110, -0.0016212948, 0.0025585350, + 0.0008204521, -0.0000564079, 0.0001608152, -0.0005625908, 0.0002123329, + 0.0013874641, 0.0012264883, 0.0005794216, 0.0001778081, 0.0010323133, + -0.0033380967, -0.0028198957, 0.0014047795, -0.0007086969, 0.0007147784, + -0.0002430920, -0.0008612131, -0.0010057529, -0.0014278381, 0.0014405930, + -1.6982816458, -0.0046540950, -0.0035421923, 0.0018286896, 0.0004603430, + 0.0003436893, 0.0008069370, -0.0012097526, 0.0006157714, 0.0011578093, + -0.0012976178, -0.0008075415, -0.0023232275, 0.0011977586, -0.0047144992, + 0.0031058816, -0.0002094954, -0.0020557339, 0.0032507004, -0.0017373040, + -0.0013195709, -0.0018506944, 0.0035541360, -0.0008865597, 0.0000849427, + 0.0034393361, -0.0006010067, -0.0042444509, 0.0027700732, 0.0002129662, + 0.0021546278, -0.0000969185, -0.0007431186, -0.0027224408, -0.0030711915, + 0.0033032543, -0.0002321876, 0.0008678501, -0.0000612754, 0.0013005296, + 0.0009771019, 0.0003026198, 0.0019963435, 0.0034265770, -0.0016342788, + 0.0001165019, 0.0022454800, -0.0006999345, 0.0020327303, -0.0008194819, + 0.0019652755, 0.0012973715, -0.0009228708, -0.0019908263, 0.0002410088, + -0.0039241277, 0.0013886063, 0.0014494092, 0.0009958454, -0.0032169556, + 0.0027182736, -0.0024260059, -0.0007294700, 0.0023174125, -0.0016105706, + -0.0014680363, -0.0041934256, 0.0012431620, -0.0036941445, -0.0001347575, + -0.0007151044, -0.0010441189, -0.0005782307, 0.0014118413, 0.0019890037, + 0.0010366831, -0.0007867084, 0.0033946552, 0.0007576603, -0.0022409093, + -0.0056642564, 0.0006103797, -0.0036304430, 0.0027569060, -0.0002089776, + -0.0031082509, -0.0016160950, 0.0022931476, -0.0010482753, 0.0044139489, + -0.0027764281, -0.0020566310, 0.0031124910, -0.0014241396, -0.0002622502, + 0.0012683206, 0.0002007578, -0.0003467132, -0.0014760131, -0.0015165973, + -0.0011164417, -0.0018157521, -0.0000598573, -0.0003564307, -0.0016705396, + 0.0001723992, -0.0003142003, 0.0009959266, -0.0007303765, 0.0039040905, + -0.0008527683, -0.0004930533, -0.0007636693, 0.0002196458, -0.0003473801, + 0.0005068025, -0.0032527454, 0.0032640467, 0.0018258069, 0.0021017701, + -0.0010654505, 0.0014558337, -0.0022068389, -0.0000728576, 0.0043827277, + -0.0023718178, -0.0014964988, -0.0025748964, -0.0018791552, -0.0004424038, + 0.0016108495, 0.0029052361, 0.0009394148, 0.0028108901, 0.0004525660, + 0.0022726706, -0.0021779118, 0.0005407010, -0.0020538927, 0.0052598706, + -0.0000133859, -0.0001986064, -0.0032463418, -0.0013967191, -0.0000543119, + -0.0029849396, 0.0032817214, 0.0009909719, -0.0005418623, -0.0016639885, + -0.0012531327, -0.0003887895, 0.0026326797, -0.0006517640, -0.0002669212, + 0.0010497584, -0.0007509375, -0.0002671336, 0.0029266609, -0.0014347869, + -0.0014991695, 0.0088609634, 0.0031034811, -0.0053039435, -0.0021514371, + -0.0001766905, 0.0026793154, -0.0005889935, 0.0000694201, -0.0000756909, + 0.0001576738, 0.0020246035, 0.0017853671, -0.0011857869, -0.0006104738, + 0.0016194186, -0.0014876286, 0.0001623491, 0.0038015521, 0.0026002810, + -0.0012453524, 0.0035675876, -0.0001765641, 0.0004624370, 0.0018188735, + 2.8722360134, -0.0024814969, -0.0047718240, -0.0026600994, 0.0022127535, + -0.0027742083, -0.0044024433, -0.0045901807, 0.0011946091, -0.0058767833, + 0.0021539456, -0.0003213320, -0.0031358944, -0.0006185286, -0.0017003231, + -0.0007664042, 0.0002400170, 0.0000840304, 0.0042075659, 0.0008087649, + -0.0021610069, 0.0004976853, -0.0032713818, -0.0055321073, -2.2398507595, + -0.0027928608, 0.0036306658, 0.0020167301, -0.0030585998, 0.0007862090, + 0.0050079394, -0.0049095242, 0.0010530753, -0.0022332366, 0.0035023321, + -0.0000999821, -0.0049640266, -0.0003437418, -0.0012540866, 0.0003393483, + -0.0018879487, 0.0047842800, -0.0048583113, 0.0025172839, 0.0009955289, + 0.0014489433, 0.0056740576, -0.0025462850, -0.0037728320, 0.0009756330, + -0.0017520515, -0.1627045870, -0.0006337771, -0.0030520419, 0.0014689383, + 0.0029363371, 0.0015770227, -0.0039070481, -0.0013421099, 0.0002459597, + -0.0008286904, 0.0010926658, -0.0001137468, 0.1075938046, -0.0000309927, + -0.0021655550, -0.0015511841, -0.0035205218, -0.0009642174, -0.0021922116, + 0.0037896633, -0.0030663423, -0.0005464118, -0.0009581752, 0.0003968446, + 0.0012763123, 0.0011773936, 0.0015373168, -0.0027952036, -0.0029734834, + -0.0024526576, 0.0000790749, -0.0012526345, -0.0010317510, -0.0002525200, + -0.0019845981, -0.0039217742, -0.0004911357, 0.0005045731, 2.1140997410, + 0.0027578091, -0.0041099172, -0.0004276641, 0.0008826267, -0.0048697251, + -0.0004532186, -0.0011876039, -0.0000136872, -0.0043362333, 0.0006119609, + -0.0016377249, 0.0024803607, 0.0016988576, 0.0022922112, -0.0005391348, + -0.0018598731, 0.0013359380, 0.1689734906, 0.0038650669, 0.0012708751, + 0.0020612786, -0.0023976094, -0.0026383740, 0.0035432205, 0.0046169059, + -0.0042262767, -0.0040514218, 0.0040626144, 0.0006978917, -0.0047899904, + 0.0261169244, -0.0030076960, -0.0005764498, 0.0004594387, -0.0001665913, + -0.0030772765, 0.0029576491, -0.0010084487, -0.0002140262, 0.0013879538, + -0.0024801558, 0.0009789795, 0.0087963687, -0.0016407038, 0.0034708707, + 0.0004965151, 0.0024799216, -0.0038296147, -0.0038604091, 0.0026105568, + 0.0005224457, -0.0016017738, 0.0038354760, 0.0005412482, 0.0017780829, + 0.0741260722, 0.0004961322, -0.0039581656, -0.0017006043, 0.0011321760, + -0.0013873309, -0.0027300739, 0.0022168271, -0.0019642732, 0.0007539188, + 0.0000564144, -0.0019627544, -0.0004363866, 0.0002099969, 0.0006455290, + 0.0024177062, 0.0022461617, 0.0000125888, -0.0002532189, -0.0001699757, + 0.0011291355, 0.0018192246, 0.0018600738, -0.0009532273, -0.0020684092, + -0.0017194473, -0.0024062167, 0.0024618944, -0.0008279444, -0.0010066326, + -0.0007642913, 0.0038166796, -0.0003348468, 0.0053223576, -0.0000495873, + 0.0012716269, 0.0010581110, 0.0017625985, 0.0001807441, 0.0026776807, + -0.0003762776, 0.0005693762, -0.0035539465, -0.0008846042, 0.0013700044, + -0.0009928239, -0.0017193421, -0.0008339249, -0.0016767714, -0.0026263953, + -0.0017929133, 0.0043210974, 0.0015306551, 0.0025821617, 1.6244230270, + 0.0022759477, 0.0006179819, -0.0098008057, 0.0009456493, 0.0017541442, + -0.0014824085, 0.0006647437, -0.0015766635, 0.0026052208, -0.0008016336, + -0.0007116251, 0.0010974905, -0.0008203853, 0.0006190792, -0.0001084330, + -0.0001919209, 0.0018704362, -0.0029901951, 0.0056304806, -0.0003249685, + -0.0025660582, -0.0007050368, 0.0021148787, 0.0004053502, 0.0030403603, + -0.0008053323, 0.0025381870, -0.0000798684, 0.0017117956, 0.0017285962, + -0.0088660251, 0.0011566365, 0.0023660660, -0.0022094301, 0.0000271574, + -0.0007855988, -0.0020078276, 0.0039521884, -0.0020245817, 0.0011304133, + -0.0004040976, -0.0020320099, -0.0022477233, 0.0027491646, -0.0045244675, + 0.0049719289, -0.0007625706, -0.0006975215, 0.0006443318, -0.0018500718, + -0.0014742744, 0.0008618282, 0.0011397121, 0.0034677570, 0.0023425692, + 2.4412572384, -0.0007147347, -0.0056978334, -0.0013431672, -0.0003026570, + 0.0013127814, -0.0011562668, -0.0006477831, -0.0020431615, -0.0014617688, + 0.0021433365, 0.0052303034, 0.0007825703, 0.0016810000, -0.0034200996, + -0.0039839922, -0.0023551174, -0.0031770938, 0.0023516568, -0.0036061960, + 0.0005601160, -0.0010129417, 0.0030445475, 0.0021201707, 0.0012893197, + 0.0062858597, -0.0039564995, 0.0021274679, -0.0007489293, -0.0028614821, + -0.0003824160, 0.0018183903, 0.0023849453, -0.0070095109, -0.0013333242, + 0.0033131472, 0.0005746986, -0.0007811389, -0.0012470610, -0.0032964800, + 0.0027465529, 0.0010373052, 0.0014398592, 0.0035281857, -0.0000821494, + -0.0046097045, -0.0020554583, -0.0035856450, -0.0019103225, 0.0024180338, + 0.0010576388, -0.0024873214, -0.0005921226, -1.7254390717, 0.0006251840, + 0.1402426660, 0.0029699386, 0.0035365922, -0.0042474084, -2.2732772827, + 0.0021564434, 0.0000386457, -0.0012720106, -0.0066285767, 0.0007963767, + 0.0013782983, 0.0005882457, -0.0024311384, -1.7694767714, 0.0032249568, + -0.0025515633, 0.0021100095, -0.0030592275, 0.0085498970, -0.0003365558, + 0.0029118676, -0.0008021016, -0.0039082775, 0.0007348310, -0.0004813117, + -0.0043287436, -0.0011043902, -0.0009078375, 0.0001883251, 0.0024080051, + -0.0019766085, -0.0029021136, 0.0030517485, 0.0015172902, -0.0011333358, + -0.0029142112, 0.0005072935, -0.0001768870, 0.0013831011, 0.0019574307, + 0.0014085057, -0.0028142938, 0.0001169201, -0.0005652034, 0.0004588552, + 0.0018095092, 0.0003357409, 0.0031925002, -0.0000643963, 0.0020351703, + 0.0056121368, -0.0015850374, 0.0006644622, 0.0000078466, 0.0017947238, + -0.0010923464, 0.0007468099, -0.0001628369, 0.0012234342, -0.0003407781, + -0.0006810550, 0.0012919254, 0.0022445591, -0.0022875243, 0.0000006483, + -0.0022816863, 0.0013094209, 0.0021767151, 0.0048062485, -0.0014840378, + 0.0009968523, 0.0022469691, -0.0088542458, 0.0040920139, -0.0034167725, + 0.0013074209, 0.0035705287, 0.0017282288, -0.0003196700, 0.0023677982, + -0.0022835978, -0.0031149453, -0.0020311037, 0.0040105055, -0.0013163225, + 0.0020878706, -0.0037011774, -0.0011023683, -0.0021046333, 0.0002598590, + -0.0005657389, 0.0021753497, 0.0005437090, 0.0011573425, -0.0054032747, + 0.0003913329, -0.0006258423, -0.0034189122, 0.0001343766, 0.0011875848, + 0.0009891009, 0.0001741156, -0.0039254846, 0.0010503633, 0.0001929861, + 0.0008196388, -0.0002134359, 0.0003888905, 0.0025219989, -0.0013379961, + 0.0000106937, 0.0032403783, -0.0006774829, -0.0023969575, -0.0038134516, + -0.0008532209, 0.0019604936, -0.0004992527, -0.0002888609, -0.0026187480, + -0.0000004694, 0.0016717766, -0.0007953804, 0.0030901693, -0.0023608189, + -0.0009453171, 0.0033461482, -0.0015830649, -0.0008338250, -0.0012766216, + -1.0512847900, 0.0007101838, -0.0042433823, -0.0007630015, 0.0030718811, + -0.0023176435, -0.0018708061, 0.0000175575, 0.0000215648, -0.0009185881, + -0.0012259395, -0.0017179850, 0.0014577857, 0.0013526133, -0.0006212057, + 0.0002530771, -0.0041783359, 0.0006230474, 0.0016053217, 0.0005103950, + -0.0050244587, 0.2214111388, -0.0039332556, 0.0022919015, 0.0010357742, + 0.0025414396, -0.0005812889, -0.0001779897, -0.0026844093, -0.0015304075, + -0.0009070816, 0.0005848240, -0.0013931305, -0.0001972751, -0.0044494774, + 0.0011231126, 0.0001994013, -0.0020856317, -0.0014160397, -0.0016745701, + -0.0009907584, -0.0026484085, -0.0008196323, -0.0002354831, -0.0033143554, + -0.0015794744, 0.0022493512, -0.0013809577, 0.0015605898, -0.0001691915, + -0.0007936723, -0.0013397164, 0.0035191197, -0.0028611161, 0.0031506363, + 0.0001529102, -1.4169670343, 0.0026377067, 0.0035048113, -0.0003413134, + 0.0003442937, -0.0021597024, -0.0001761066, 0.0033868745, -0.0018031704, + -0.0002376800, 0.0008872227, 0.0007756726, 0.0007115505, -0.0000020768, + 0.0009598285, -0.0014783315, 0.0030146516, -0.0002914374, 0.0009320369, + 0.0004087593, -0.0003403057, -0.0020329463, 0.0005934023, 0.0012882873, + -0.0027103270, -0.0020118072, -0.0027264282, 0.0023583444, -0.0019748474, + -0.0029429118, -0.0007381584, -0.0005169744, 0.0030476768, 0.0024642404, + -0.0046927785, 0.0000750427, 0.0050793765, 0.0001887557, 0.0022525738, + -0.0027810913, 0.0028697453, 0.0000500868, -0.0001416598, 0.0002021595, + 0.0007008696, 0.0006717565, -0.0087541025, 0.0013571649, -0.0039161192}; + +float unet_input_time_embedding_50_17[] = { + 0.0017227512, 0.0007400779, -0.0011379942, -0.0021148485, -0.0008962702, + -0.0010131570, -0.0011947977, -0.0006296585, 0.0009547665, 0.0007374070, + -0.0014563643, 0.0007282901, 0.0030020829, 0.0012805392, -0.0005791388, + -0.0013916092, 0.0001680348, 0.0007558072, -0.0002914084, 0.0008579101, + -0.0012331842, 0.0062103113, -0.0025323532, 0.0060795788, -0.0007223731, + 0.0026305548, 0.0003352631, -0.0013841493, 0.0016535459, 0.0007791906, + -0.0003602044, -0.0016557104, -0.0019868650, 0.0017843260, -0.0001853639, + -0.0005232147, 0.0028516529, 0.0002667785, -0.0002900995, -0.0015769852, + 0.0024180086, -0.0003616442, 0.0007201261, -0.0035378938, -0.0009884182, + -0.0003314374, 0.0009073708, 0.0032573510, 0.0012742961, -0.0014333052, + -0.0010541845, 0.0019476276, -0.2568088174, 0.0010102596, 0.0013062236, + 0.0000236440, -0.0006406197, 0.0004487857, 0.0017145141, 0.0035079003, + -0.0012437471, -0.0011208615, 0.0014166175, 0.0007773093, 0.0022942768, + 0.0008066222, -0.0010486767, -0.0019349001, 0.0009739492, -0.0004573225, + 0.0017356132, -0.0014712168, -0.0030444872, -0.0015156546, 0.0002743369, + -0.0006192438, 0.0007130206, 0.0016547767, 0.0012032841, -0.0006357741, + -0.0013106093, 0.0025981651, 0.0022242051, 0.0002064076, -0.0001799825, + 0.0004832793, 0.0014896747, -0.0000442273, -0.0007612612, 0.0015715347, + 0.0016999220, -0.0012569111, 0.0004174234, 0.0015239584, 0.0011479878, + 0.0007539676, -0.0020306828, 0.0008668434, -0.0039037780, 0.0013463376, + -0.0007746029, 0.0001828491, 0.0001633030, 0.6503239274, -0.0002128067, + -0.0001574866, -0.0007295138, -0.0028771833, 0.0025715120, 0.0009020257, + -0.0001825928, -0.0005195746, 0.3677369058, -0.0009448193, 0.0003304128, + 0.0001933360, -0.0005584485, 0.0017465453, 0.0014291899, -0.0021818962, + -0.0012349486, 0.0023041756, -2.1696174145, -0.0004598531, -0.0002466831, + 0.0011977172, 0.0010356959, -0.0031136251, 0.0014864719, -0.0006337469, + -0.0018006493, 0.0004896456, 0.0001287947, -0.0013242681, 0.0002111676, + 0.0011193629, 0.0016687140, 0.0024518743, 0.0016418677, 0.0018592980, + -0.0026989677, 0.0000097537, 0.0006903370, -0.0013298560, 0.0020395152, + -0.0006429376, -0.0014397078, 0.0010239882, -0.0003101607, -0.0009393310, + 0.0019900892, -0.0013277748, 0.0023109182, 0.0001797723, -0.0006733262, + -0.0036983127, -0.0016118847, -0.0012000725, 0.0038458630, -0.0016011866, + -0.0022323695, -0.0015320886, -0.0001261067, -0.0008784994, -0.0017190729, + 0.0008302506, -0.0009145935, 0.0024917154, -0.5933402777, -0.0019783590, + 0.0036350805, 0.0024278462, 0.0007518139, 0.0001246756, 0.0010599811, + -0.0003879508, -0.0029753959, -0.0000084480, -0.0007443097, -0.0009087417, + -0.0008965093, 0.0008389326, 0.0007929369, 0.0009918732, 0.0021358924, + -0.0005475204, -0.0017742664, -0.0009029196, 0.0003996054, 0.0002665394, + 0.0016909936, 0.0010360433, -0.0003632581, 0.0016294254, 0.0012152493, + 0.0018386818, 0.0008386463, -0.0014533186, -0.0020263903, -0.0009637410, + 0.0002709804, -0.0011296528, -0.0005675722, -0.0014042072, 0.0004420364, + 0.0014441879, 0.0013098123, 0.0000781389, 0.0002104528, -0.0024806946, + -0.0001497201, -0.0005255784, 0.0009109685, 0.0012936052, 0.0007010852, + -0.0006291475, -0.0019206610, 0.0005536936, -0.0022212625, -0.0014361689, + 0.0002563391, 0.0006792113, 0.0006100961, 0.0579931214, 0.0002506364, + -0.0018277676, 0.0012125922, -0.0023981812, 0.0000574260, 0.0006716782, + -0.0006311866, -0.0013849116, 0.0023049568, 0.0014463277, -0.0024051424, + 0.0018784585, 0.0001120795, 0.0010303752, 0.0015521897, 0.0036650300, + 0.0051589068, 0.0015367044, 0.0003814595, 0.0009054942, -1.5122811794, + -0.0013028777, -0.0016404050, 0.0004869626, 0.0033761356, -0.0014065034, + -0.0003911350, 0.0024185344, 0.0010516089, -0.0015106825, 0.0006799889, + -0.0013615966, -0.0002150843, -0.0027378323, 0.0018024511, 0.0016469687, + -0.0003233179, 0.0005347065, -0.0006353471, 0.0080909068, -0.0010218214, + -0.0002609463, -0.0005556890, -0.0001150654, -0.0007131239, 0.0001023365, + 0.0007525226, 0.0000505825, -0.0024453294, 0.0009479644, 0.0016008529, + -0.0025272828, -0.0023688348, -0.0008095140, 0.0016835090, -0.0008538715, + 0.1892903000, 0.0002011014, 0.0015688190, 0.0005524224, 0.0018682475, + -0.0002296399, 0.0014688866, -0.0009576774, 0.0023781443, -0.0014113146, + 0.0014507856, 0.0006275864, -0.0001173855, -0.0009164116, -0.0004387936, + -0.0002855007, -0.0024547535, 0.0006035925, 0.0032902663, 0.0034870827, + 0.0023061009, 0.0019317262, -0.0002884030, 0.0012387796, -0.0020144365, + 0.0003335015, 0.0006924621, 0.0026274216, -0.0018789885, 0.0022533103, + -0.0030851748, -0.0001453995, 0.0003468317, -0.0009452924, 0.0026006815, + 0.0025778464, -0.0014821485, -0.0016171006, -0.0008677458, -0.0029678638, + -0.0002189016, -0.0001241975, -0.0004116371, 0.0036421241, -0.0000036963, + -0.0011181231, 0.0011638571, 0.0003631352, -0.1886719167, 0.0020425492, + 0.0024370251, -0.0000034692, 0.0005261862, -0.0000086480, -0.0018626712, + -0.0000948189, 0.0006546204, 0.0039350567, -0.0012916308, -0.0001472919, + -0.0001022369, -0.0037940808, 0.0007713388, 2.1430673599, -0.0008911246, + -0.0000870926, -0.0018396968, 0.0021217726, 0.0012058122, -0.0009949695, + -0.0010935832, 0.0004342394, 0.0018974142, -0.0008097794, -0.0005608943, + 0.0004833257, 0.0030243036, 0.0002690126, 0.0006084181, 0.0043335408, + 0.0013399012, 0.0009834785, -0.0032667890, 0.0009376290, -0.0010625055, + 0.0004696876, 0.0001883106, 0.0017499337, -0.0022696303, -1.5846074820, + -0.0017389115, 0.0014667273, -0.0025050640, 0.0032587424, -0.0007074408, + 0.0015291935, -0.0014521781, 0.0001992707, 0.0017633429, 0.0006999522, + 0.0040033250, -0.5057783723, 0.0002760445, 0.0003443197, -0.0011623772, + 0.0003463281, 0.0001472542, -0.0024388218, -0.0003666626, 0.0014174529, + -0.0020501837, 0.0008388351, -0.0001569781, -0.0024812312, 0.0015701603, + 0.0025179950, 0.0016201485, -0.0005358105, -0.0004699673, -0.0001825336, + 0.0001095641, 0.0005129580, -0.0021144643, -0.0005172496, 0.0000479417, + 0.0025565834, -0.0003804871, 0.0033611190, 0.0018715137, -0.0005565807, + 0.0003715414, 0.0018203519, 0.0013070242, -0.0013698351, -0.0010001874, + -0.0002544706, 0.0009563803, 0.0012907430, -0.0030486342, -0.0000746977, + 0.0040954575, 0.0050646272, -0.0008234502, 0.0019097587, -0.0003566071, + -0.0031327456, 0.0018537436, 0.0041480004, -0.0016131906, -0.0008296534, + 0.0026811869, -0.0000405037, 0.0013380127, 0.0026535899, 0.0019764500, + -0.0003420185, -0.0026706150, -0.0008306091, -0.0007240865, -0.0025753973, + -0.0010247496, 0.0017598507, 0.0008355986, 0.0003743314, 0.0000737093, + -0.0012909919, -0.0021564534, 0.0006291824, -0.0001210766, 0.0103038317, + -0.0008369931, -0.0023452779, 0.0027807308, -0.0028956253, 0.0031222939, + 0.0001033563, -0.0021950305, -0.0012400327, 0.0004780525, -0.0004525380, + -0.0007338901, 0.0027635861, 0.0007664604, -0.0027262778, 0.0030296273, + -0.0003354899, -0.0023076371, 0.0012904117, 0.0008423281, 0.0010925634, + -0.0001210629, 0.0016647958, -0.0015465273, 0.0007821366, 0.0014841398, + 0.0169589613, 0.0005859667, -0.0005282169, -0.0012743408, -1.2433472872, + 0.0009831786, 0.0003713253, 0.0002195030, 0.0003518281, 0.0033977551, + 0.0018508268, -0.0023613772, -0.0012487108, -0.0007259310, -0.0000946901, + 0.0000901883, 0.9057935476, -0.0006078216, 0.0018724590, -0.0011298242, + 0.0193535909, -0.0014133686, -0.0008247192, -0.0021814797, 0.0008019917, + 0.0028943089, -0.0017072698, -0.0015070261, 0.0007725344, -0.0044539296, + -0.0008784963, 0.0001164638, 0.0005157389, -0.0002952409, 0.0006245733, + 0.0002960223, -0.0011233529, -2.0105974674, -0.0036289184, 0.0007675042, + -0.0030128355, -0.0021187579, 0.0003402326, -0.0025224364, 0.0029218602, + -0.0000590077, -0.0008086660, 0.0024932765, 0.0003792155, -0.0008786921, + -0.0034677056, -0.0009592461, 0.0026217657, -0.0011751596, 0.0012170589, + 0.0029897315, 0.0006797528, 0.0002966914, -0.0016083627, 0.0002192378, + -0.0008058392, 0.0016430614, 0.0000082634, 0.0007527219, 0.0005062227, + -0.0036462983, -0.0030422816, -0.0008456461, 0.0017438028, 0.0008344608, + 0.0015523620, 0.0013453104, 0.0007450487, 0.0016469434, 0.0016503716, + -1.6751680374, -0.0020903894, -0.0024440447, -0.0016129976, -0.0020795900, + -0.0021787551, -0.0004715922, -0.0001094262, -0.0004704655, 0.0016123365, + 0.0007332033, -0.0007099194, -0.0000151205, 0.0023761401, -0.0032231119, + 0.0024564909, 0.0030520353, -0.0012580832, 0.0006308360, -0.0029318770, + -0.0008802876, -0.0015923297, -0.0001025370, -0.0010895629, -0.0001096944, + 0.0012190407, -0.0019224302, -0.0017578437, 0.0027877078, 0.0013699911, + 0.0005475860, 0.0020851661, -0.0007910570, -0.0017776290, -0.0041899579, + 0.0008304270, -0.0009594397, -0.0001882301, -0.0012254156, -0.0003997129, + -0.0000035152, 0.0029959637, 0.0011843573, 0.0025706608, -0.0019229064, + -0.0013859239, 0.0039675478, -0.0031619919, 0.0026664692, 0.0003082491, + 0.0006469307, -0.0013007517, 0.0020805625, -0.0016247283, 0.0003328726, + 0.0006450054, 0.0012795244, -0.0015755610, 0.0005473335, 0.0021761984, + 0.0008808151, 0.0006847666, -0.0013530659, 0.0004762555, 0.0004889499, + 0.0015220712, -0.0009848590, 0.0014063255, -0.0020885291, -0.0005663855, + 0.0001165313, 0.0014119985, -0.0029111453, 0.0002962071, 0.0030883891, + 0.0007925397, -0.0013125211, 0.0028220525, -0.0009479565, -0.0025063348, + -0.0009108400, 0.0002717588, -0.0014196587, -0.0004597313, -0.0010381066, + -0.0013334556, -0.0012553211, 0.0019300467, 0.0004117740, -0.0002156873, + -0.0002338876, -0.0005294613, 0.0004342559, -0.0002036097, 0.0009202594, + 0.0011026672, 0.0011737496, -0.0007673746, 0.0007532537, -0.0000594440, + -0.0002750868, -0.0005696407, 0.0016036269, -0.0001951847, -0.0000069053, + -0.0005534354, 0.0030818107, -0.0017486592, -0.0018613201, 0.0014569811, + 0.0003728578, 0.0008386127, 0.0007904613, 0.0002644832, 0.0006058239, + 0.0004909793, -0.0013787546, 0.0008063642, -0.0000703933, 0.0014893004, + 0.0006451013, 0.0007669919, -0.0000361085, -0.0001116951, 0.0010221321, + -0.0025442075, 0.0003135452, 0.0009022551, -0.0014838418, -0.0016505050, + 0.0006126105, -0.0013596741, -0.0013390789, 0.0015281186, 0.0000870889, + 0.0027509318, -0.0009895880, 0.0000334212, 0.0005554645, 0.0014365236, + 0.0006250096, -0.0006952956, -0.0019713629, -0.0016947847, -0.0001197867, + 0.0000362676, 0.0035978924, -0.0009940714, -0.0017248297, 0.0008309241, + -0.0006381106, -0.0010555172, -0.0002718845, -0.0002600977, 0.0014848509, + 0.0015323618, -0.0005684141, -0.0000064536, 0.0012375764, 0.0025254560, + 0.0014789687, 0.0096706962, 0.0025213691, -0.0015793145, -0.0003356948, + -0.0001763869, 0.0033166334, -0.0010542469, 0.0003347460, -0.0005807127, + 0.0014343327, 0.0004178658, 0.0006298203, 0.0012874277, 0.0005833865, + 0.0006350200, 0.0012955824, -0.0005377014, 0.0030860077, 0.0018968415, + 0.0013693878, 0.0013261298, 0.0019238244, 0.0003223508, 0.0000172681, + 2.7545092106, 0.0003787451, 0.0011059232, -0.0009162559, 0.0013322309, + -0.0019483087, -0.0020722430, 0.0002285759, 0.0005770298, -0.0033511631, + -0.0025166161, 0.0025034640, -0.0032647345, -0.0019955477, 0.0003794366, + -0.0004187524, -0.0011868610, -0.0001572531, 0.0020496552, -0.0000947633, + 0.0012674863, 0.0005424842, -0.0028034789, -0.0028711848, -2.2830824852, + 0.0004012701, 0.0051442385, 0.0016968106, -0.0000843802, 0.0030525695, + 0.0018361225, -0.0005620256, -0.0013924283, -0.0025191773, -0.0008057212, + 0.0012799860, -0.0016523125, 0.0031765560, 0.0001919318, -0.0008384725, + 0.0019419098, 0.0007295171, -0.0013581440, 0.0015692259, -0.0005788724, + -0.0009250292, 0.0003794736, -0.0019395582, -0.0008457829, -0.0007890617, + 0.0006395364, -0.0892860740, -0.0004432937, -0.0010920558, 0.0037550512, + 0.0020263111, 0.0016114328, -0.0022059244, -0.0003660056, -0.0006699993, + -0.0011103477, 0.0021130461, -0.0007122221, 0.1059991866, 0.0010123821, + -0.0004335999, 0.0000522982, 0.0010113384, -0.0020358306, -0.0007446143, + -0.0004613502, -0.0007194281, -0.0014599813, -0.0015828896, 0.0016098815, + 0.0019421199, 0.0009024430, 0.0027640951, -0.0010328395, -0.0017680563, + 0.0001179897, 0.0003634100, 0.0002665208, 0.0018219291, -0.0001274052, + -0.0002871118, -0.0016600570, -0.0002511031, 0.0019187846, 2.1731512547, + -0.0003633206, -0.0006234599, 0.0013817343, -0.0006082975, -0.0018539282, + 0.0007534772, 0.0003471761, -0.0021942859, -0.0023425419, -0.0003334340, + -0.0021062407, 0.0013718074, 0.0000906279, 0.0006619133, 0.0027731326, + 0.0022381484, -0.0002772000, 0.1272935867, 0.0022935467, 0.0008721591, + 0.0007303897, -0.0023937882, -0.0006633583, 0.0007126695, 0.0010953366, + -0.0031148931, -0.0000298165, 0.0013880095, 0.0005433424, -0.0025191493, + 0.0176066216, -0.0012395121, 0.0003463030, 0.0022270833, -0.0018792553, + -0.0007700385, -0.0012426879, -0.0022197841, 0.0017605295, -0.0001595165, + -0.0003420850, -0.0018213696, 0.0056811357, 0.0012524452, 0.0012914363, + -0.0006580916, 0.0023174896, 0.0011621835, -0.0028453895, -0.0004905970, + 0.0008992150, 0.0002138996, 0.0038109003, -0.0008492715, 0.0014938968, + 0.0514218882, -0.0011754549, -0.0005687550, 0.0013756591, 0.0027377836, + -0.0025023862, 0.0006863242, 0.0017229971, 0.0005958073, -0.0005765486, + 0.0009172247, -0.0012077221, 0.0000427454, -0.0002158596, 0.0013809111, + -0.0043756152, 0.0006681753, 0.0015294851, -0.0003474001, 0.0012179073, + 0.0001596808, 0.0007600521, -0.0007103067, -0.0011979332, 0.0001003749, + -0.0003291611, -0.0008062115, 0.0006251036, -0.0026503303, -0.0011398094, + 0.0004419088, 0.0004194014, 0.0009296471, 0.0052043684, -0.0001042653, + 0.0017532851, 0.0019766204, -0.0003961907, 0.0012471522, 0.0012943058, + -0.0016481555, -0.0003972212, -0.0001882063, 0.0026592477, -0.0002694633, + -0.0022770888, -0.0008962257, -0.0015939132, 0.0003152898, 0.0003176075, + 0.0002803011, 0.0010049295, 0.0013537217, 0.0006088493, 1.5816757679, + -0.0002290185, 0.0016515711, -0.0031916234, -0.0004217962, 0.0004741736, + 0.0022539091, -0.0010329391, -0.0011494225, 0.0027224137, -0.0004888205, + -0.0008140086, 0.0002125395, 0.0016271751, -0.0003141442, 0.0031492715, + -0.0015701312, 0.0005760329, -0.0039123418, 0.0032916670, 0.0007872819, + 0.0002553603, -0.0020760943, -0.0000073321, -0.0018057362, 0.0008212217, + 0.0021774862, 0.0012316480, 0.0029609511, 0.0000705728, -0.0009640977, + -0.0036933848, 0.0009950045, 0.0027752547, 0.0005972418, 0.0004207557, + -0.0001925996, -0.0010289015, 0.0031623698, -0.0008456782, 0.0017489512, + -0.0014130287, -0.0018559229, -0.0003332426, 0.0017289362, -0.0035119257, + 0.0010377576, 0.0010558916, -0.0016616057, 0.0017537181, -0.0003248826, + -0.0017370536, -0.0020457983, -0.0024349331, 0.0002074500, 0.0011609443, + 2.2987201214, -0.0010684975, -0.0017248467, 0.0018681136, -0.0000416124, + -0.0005052180, 0.0011078636, -0.0000742752, 0.0001514871, -0.0001060891, + 0.0015057595, 0.0014244718, 0.0002854844, 0.0016298951, -0.0021470031, + -0.0005475422, 0.0017887084, -0.0004740073, 0.0017001170, -0.0020387727, + 0.0012250263, 0.0010817727, 0.0029032640, 0.0006275587, 0.0018130466, + 0.0036839698, 0.0009616879, 0.0006585976, -0.0021944374, -0.0007069930, + -0.0013481029, -0.0016270105, -0.0015306555, -0.0044060908, -0.0018232460, + 0.0008363609, 0.0017484388, -0.0007072245, 0.0003061905, 0.0004706313, + -0.0009002497, -0.0006609838, 0.0011810623, -0.0007389369, 0.0014584444, + -0.0018088552, 0.0001915670, 0.0016501358, 0.0003393000, 0.0009091469, + 0.0015867059, -0.0006326949, 0.0017256108, -1.7151886225, 0.0028862830, + 0.0993426666, 0.0017086256, 0.0019127768, -0.0029857189, -2.2963302135, + 0.0017929473, 0.0007914873, 0.0010365834, -0.0017843219, 0.0000104681, + -0.0007433305, 0.0011121184, -0.0000355653, -1.6773358583, 0.0011593834, + -0.0013716419, 0.0007360261, 0.0021501756, 0.0099995937, -0.0009562755, + -0.0000617886, 0.0021647103, 0.0017537209, 0.0005753988, -0.0020724474, + -0.0004628222, 0.0022642743, -0.0009108910, 0.0025087888, 0.0010862139, + -0.0013992975, -0.0011433817, 0.0024887247, 0.0020695720, -0.0007890808, + -0.0026957481, 0.0009357317, 0.0014103213, 0.0014187717, -0.0002040069, + -0.0002104545, 0.0010666597, -0.0001151552, 0.0019126642, 0.0013644313, + 0.0008271744, -0.0029321732, 0.0000977097, 0.0009668646, 0.0011614310, + 0.0006293561, -0.0010535861, -0.0009225124, 0.0015520335, 0.0005858056, + -0.0005351417, -0.0001490698, -0.0015647996, 0.0027909372, 0.0003853955, + -0.0016763147, 0.0015764035, -0.0007323408, 0.0020328532, -0.0013041747, + 0.0032089355, -0.0003833179, -0.0026232982, 0.0025214355, 0.0004241876, + 0.0017477898, -0.0009848189, -0.0072803018, -0.0031540473, 0.0008697421, + -0.0005265353, 0.0002081204, -0.0000147489, -0.0015336396, 0.0013656330, + -0.0015758094, 0.0003926540, 0.0018945374, 0.0016872999, 0.0024004164, + 0.0016021915, -0.0019286163, 0.0007285266, 0.0011224775, -0.0006045639, + 0.0024390863, 0.0013634432, -0.0006092497, 0.0020457963, -0.0041336659, + 0.0011075602, -0.0004290873, -0.0001655690, -0.0014609136, 0.0008323011, + -0.0002694665, 0.0000120650, -0.0007746913, 0.0032613431, -0.0000950750, + 0.0025067646, 0.0007940989, 0.0001160642, -0.0002963545, -0.0013152346, + -0.0012176638, 0.0026068422, 0.0002075876, 0.0020919428, 0.0000593532, + 0.0011426385, 0.0014033908, -0.0001381044, 0.0033236947, -0.0025463591, + -0.0014050049, 0.0005379864, -0.0010856986, 0.0005398219, -0.0001891800, + -0.0003323499, -0.0011507303, -0.0007846979, -0.0008849418, -0.0007702159, + -0.9198037982, 0.0036550681, -0.0000198585, -0.0003544136, -0.0017241228, + -0.0029209557, -0.0000636566, -0.0009815476, -0.0002999371, 0.0004103067, + -0.0021069846, -0.0007863570, -0.0002233163, 0.0001400989, 0.0018645362, + 0.0009727426, -0.0023971051, 0.0007571867, 0.0008951714, -0.0027183550, + 0.0007443554, 0.2695606947, 0.0001782214, 0.0003630603, -0.0009320804, + 0.0037885606, -0.0007894137, 0.0008506039, 0.0022641059, -0.0027409303, + 0.0003017285, -0.0000834796, 0.0028071241, 0.0012616992, -0.0029115153, + 0.0000469270, -0.0018607229, 0.0004342799, -0.0004335879, -0.0007458059, + 0.0016828135, -0.0005104821, -0.0004168185, -0.0002272218, 0.0003595166, + -0.0005691948, 0.0010008789, -0.0017561917, -0.0012981100, -0.0001221318, + -0.0018262808, -0.0004256126, 0.0011961916, -0.0016962633, 0.0004038163, + 0.0000309428, -1.4437609911, -0.0009372095, 0.0000615320, -0.0005757429, + 0.0030980597, 0.0011149414, -0.0006110517, 0.0021525247, -0.0046255603, + 0.0017260481, -0.0017337952, -0.0003688658, -0.0013040560, 0.0019833068, + 0.0013511265, -0.0014507904, 0.0031465220, 0.0001885151, -0.0017057769, + -0.0001479480, 0.0015805503, -0.0008662343, 0.0022394611, 0.0000218181, + -0.0009799371, -0.0013291040, -0.0003125085, -0.0003254688, -0.0019948857, + 0.0006754076, 0.0003034431, -0.0011901427, -0.0002027199, -0.0022877920, + -0.0022997151, 0.0022217189, 0.0001821164, -0.0003381540, 0.0014603597, + -0.0009639030, -0.0008020308, -0.0018364240, -0.0014498457, -0.0009646853, + -0.0016935025, -0.0002125287, -0.0247945804, 0.0021442983, -0.0008864528}; + +float unet_input_time_embedding_50_18[] = { + 0.0014567403, -0.0007672408, -0.0035889130, 0.0002135618, -0.0013399883, + 0.0008977111, -0.0017182184, -0.0003409529, 0.0000845541, -0.0001235914, + 0.0023561867, -0.0030749566, -0.0005452586, 0.0002713236, -0.0013629096, + -0.0011829706, -0.0005913107, 0.0017998030, -0.0005066012, -0.0014409474, + -0.0004821350, 0.0040557724, -0.0025833836, -0.0078722220, 0.0002711259, + -0.0003134825, 0.0018793587, -0.0001434544, 0.0036439472, 0.0012562387, + -0.0010126070, -0.0019585933, -0.0027912925, 0.0007377844, -0.0007247305, + -0.0007140152, 0.0007681865, 0.0013933496, 0.0007042503, 0.0000560908, + 0.0019852491, -0.0013385378, 0.0001739650, -0.0016705813, 0.0023609172, + 0.0007028419, 0.0003061835, 0.0033789505, -0.0024354439, 0.0016328006, + 0.0032416852, -0.0010943615, -0.1591672748, 0.0006677220, 0.0022558223, + -0.0016466555, -0.0001703235, -0.0027825935, 0.0011481303, 0.0017689781, + 0.0003921830, -0.0019454315, -0.0000594449, -0.0004878687, -0.0014350424, + -0.0000115884, -0.0000713915, -0.0016980526, -0.0009573540, 0.0024014532, + -0.0019950611, 0.0015450157, -0.0000072818, -0.0011777300, 0.0022951318, + -0.0002350695, -0.0020709988, 0.0048078243, -0.0004027465, 0.0018816662, + 0.0040900325, -0.0033459011, 0.0031215698, -0.0018772716, 0.0009160840, + -0.0003058158, 0.0008891847, -0.0007353572, 0.0007518735, 0.0003344477, + 0.0021954689, -0.0012809476, -0.0030847574, 0.0002509210, -0.0057214987, + 0.0012414334, 0.0012085293, 0.0042307582, -0.0008866943, 0.0006014789, + -0.0008102092, 0.0026495154, -0.0004631518, 0.5490233302, 0.0005952814, + 0.0010782862, -0.0001526126, 0.0016918741, 0.0011222367, -0.0016142125, + 0.0010369360, 0.0008340096, 0.3760569692, -0.0005520619, -0.0004875939, + 0.0002444042, -0.0016709068, 0.0023456810, -0.0018168511, -0.0025561026, + -0.0020367256, 0.0019931293, -2.1445710659, 0.0008196281, 0.0008860510, + 0.0017926320, -0.0003348878, 0.0006334339, 0.0020889556, 0.0010279142, + 0.0022219536, 0.0014584204, 0.0004012550, -0.0021411311, 0.0002776163, + -0.0008740143, 0.0030165601, 0.0016990621, 0.0026884060, -0.0022123847, + -0.0018207391, -0.0020797662, 0.0015367086, -0.0025913366, -0.0008211408, + 0.0027968436, -0.0024160449, 0.0012887688, -0.0005723801, 0.0000354596, + 0.0028064693, 0.0007123147, -0.0006378866, 0.0007274309, -0.0028020875, + -0.0027120276, -0.0013668188, -0.0032798788, 0.0025605992, -0.0000560763, + 0.0005739885, -0.0005790520, -0.0034034345, -0.0017481782, 0.0022400147, + -0.0010684875, 0.0010831372, 0.0027780235, -0.4408924282, -0.0018353665, + -0.0000946912, 0.0000742907, -0.0000102376, 0.0011864442, 0.0042571621, + 0.0016798237, -0.0015597612, 0.0029979218, 0.0005172202, 0.0014540609, + -0.0001325565, 0.0006121043, -0.0015934878, 0.0011458253, 0.0008564689, + 0.0016934220, -0.0009888317, -0.0014669127, 0.0012321579, 0.0017215386, + 0.0004481785, -0.0001122062, 0.0000872342, 0.0020903873, -0.0026829266, + -0.0004123212, 0.0014775587, -0.0009503635, -0.0010199146, 0.0003235331, + -0.0010862146, -0.0016247854, -0.0006887130, -0.0002192149, -0.0008750185, + -0.0000681365, 0.0009711080, 0.0002319412, 0.0022104923, -0.0009986269, + 0.0003577028, -0.0001296150, -0.0003831289, -0.0005886140, 0.0015042571, + 0.0017731180, -0.0009860401, 0.0008833497, 0.0004743516, -0.0012040607, + -0.0025719358, 0.0002817761, 0.0005428039, 0.0430113897, 0.0031167113, + -0.0020648814, -0.0018913792, -0.0000742092, 0.0011919641, 0.0012576580, + -0.0024094870, 0.0002732310, 0.0011251513, 0.0008983980, -0.0019032722, + 0.0013124016, 0.0012513050, 0.0013104277, 0.0021189386, 0.0029280190, + 0.0016325561, -0.0012420621, -0.0015621770, 0.0008771345, -1.5276682377, + -0.0008279735, 0.0007684506, -0.0017261088, 0.0011810125, -0.0001082513, + -0.0003309390, 0.0017010155, -0.0015480244, -0.0025924081, -0.0000004335, + -0.0005930748, -0.0003039897, -0.0004152491, -0.0017922448, 0.0008166494, + -0.0017878748, 0.0012659777, 0.0008411657, 0.0122852148, 0.0009610072, + -0.0014069467, 0.0002022018, 0.0007997567, 0.0007596388, -0.0019891602, + -0.0021666614, 0.0035557619, 0.0006045862, 0.0006240662, -0.0004668920, + -0.0008589535, -0.0026846756, 0.0002587419, 0.0023569996, -0.0007164832, + 0.2036958486, 0.0001118314, 0.0009280370, 0.0010501109, -0.0015703444, + 0.0000563925, 0.0013596872, 0.0020689226, 0.0018217261, -0.0008897623, + 0.0016515536, 0.0005065168, 0.0018834223, 0.0017781935, -0.0036373576, + -0.0005984497, 0.0009736414, -0.0019984408, 0.0007742043, 0.0015027002, + 0.0028485814, 0.0032539300, 0.0011613214, 0.0027723797, 0.0002697317, + 0.0003489242, 0.0009988779, 0.0053904667, 0.0021561999, 0.0018291580, + -0.0007540579, -0.0002677655, -0.0006709697, 0.0023421589, 0.0026985616, + -0.0011171694, -0.0020881151, -0.0001327721, -0.0021326393, -0.0018126494, + 0.0011318990, 0.0000006924, -0.0005632264, 0.0017533954, -0.0003216412, + 0.0002606730, -0.0007130075, 0.0024133157, -0.1634317636, 0.0029511438, + 0.0029492052, -0.0002344116, 0.0004901437, -0.0003899171, -0.0010698377, + 0.0000475808, 0.0001727289, 0.0027197218, -0.0012858259, 0.0011830851, + -0.0005263602, -0.0013066146, 0.0040165819, 2.0716743469, -0.0009297736, + 0.0013181823, -0.0027752756, 0.0007538187, 0.0015390888, -0.0009960186, + 0.0008128546, 0.0016006008, 0.0008000005, -0.0005958006, -0.0008339019, + -0.0004165564, -0.0008538903, 0.0006701417, 0.0022375849, 0.0044732611, + 0.0003200416, 0.0025849487, 0.0009883367, 0.0004991391, 0.0020604725, + 0.0020724514, -0.0024953051, 0.0014668088, 0.0015674531, -1.6057412624, + -0.0018986175, -0.0018130601, -0.0009237425, -0.0011356967, 0.0010607487, + -0.0002462633, -0.0007078869, -0.0010165509, -0.0007515289, 0.0005892869, + 0.0021037185, -0.3323165774, -0.0003755197, -0.0006699297, 0.0009404169, + -0.0019347072, 0.0014655725, -0.0008575455, -0.0019738325, -0.0007271529, + -0.0010327604, -0.0014366835, -0.0002424340, -0.0011916556, 0.0009392228, + 0.0002686814, 0.0003547603, -0.0003535548, -0.0003339266, -0.0001868280, + 0.0000443596, 0.0003874386, -0.0020115913, -0.0010546935, 0.0019967565, + 0.0029149815, -0.0017505545, -0.0000136630, 0.0008313549, 0.0012184363, + -0.0014376226, 0.0017297589, 0.0015141852, 0.0014578549, 0.0001408709, + 0.0006084323, 0.0010814909, -0.0001111215, -0.0014158674, 0.0003265589, + 0.0040965034, 0.0006253945, -0.0000005864, 0.0011667649, 0.0012551192, + -0.0025852388, 0.0012104800, 0.0008793396, -0.0028226746, -0.0015263301, + 0.0001422660, -0.0013379320, 0.0020836226, -0.0012120353, -0.0009415498, + -0.0000041626, -0.0023126798, -0.0020296506, -0.0008153468, -0.0004380972, + -0.0000370177, 0.0019935712, 0.0008214946, -0.0018883455, 0.0010355453, + -0.0019340739, -0.0007671064, 0.0026532272, -0.0004781750, 0.0142255379, + -0.0014181365, -0.0000558030, -0.0014224190, -0.0059347590, 0.0030071260, + 0.0008303169, 0.0014115544, -0.0017499076, -0.0009291070, 0.0000306014, + -0.0004885970, 0.0034218803, -0.0010135816, -0.0021448238, 0.0006411215, + -0.0006426508, -0.0010261964, -0.0012189336, 0.0020534913, 0.0005773925, + 0.0007961695, -0.0009717101, -0.0012134765, 0.0021592199, 0.0012627775, + 0.0193620455, 0.0027408246, 0.0021444089, 0.0013433760, -1.2230705023, + -0.0001919442, -0.0013436317, 0.0009517972, -0.0025576011, 0.0012661424, + 0.0011721553, 0.0012830615, 0.0009025466, -0.0017509912, 0.0014400373, + 0.0003913008, 0.8048036695, -0.0012994343, 0.0007007038, 0.0015586703, + 0.0097912876, -0.0007510874, -0.0005960241, -0.0014679413, -0.0031654467, + -0.0008082031, -0.0016297684, -0.0006537386, -0.0008812998, -0.0016125729, + -0.0004804875, 0.0004403042, -0.0009063334, -0.0012870817, 0.0018459563, + 0.0043220380, -0.0029142937, -2.0509524345, 0.0005632024, -0.0003266366, + -0.0016036951, -0.0016017579, -0.0002963720, 0.0014702026, -0.0007838570, + 0.0005362602, -0.0016682516, -0.0006966401, 0.0006941524, 0.0011062729, + 0.0004990431, 0.0000646043, -0.0008589984, -0.0005884282, -0.0030653449, + -0.0018178469, 0.0004051006, -0.0018198011, -0.0003314868, 0.0004362364, + 0.0017711113, -0.0013053429, -0.0011933097, 0.0008124420, 0.0006040884, + -0.0014969464, 0.0007306263, 0.0010924563, 0.0026704259, -0.0016608103, + 0.0004098141, 0.0004245276, 0.0002728272, 0.0011079441, 0.0021864148, + -1.6559414864, -0.0010800278, -0.0004446283, 0.0010428596, -0.0010040731, + -0.0006198235, 0.0015863280, 0.0023436858, -0.0014716014, 0.0005580480, + 0.0033350587, 0.0021788613, 0.0009558066, -0.0000571168, -0.0001819008, + 0.0007756576, 0.0013460470, 0.0007353132, 0.0004883502, 0.0020882734, + -0.0005459409, 0.0006183921, 0.0017590271, -0.0002808512, -0.0018785456, + 0.0016442044, 0.0001341070, -0.0006815381, -0.0011514924, 0.0003386389, + 0.0018303795, 0.0004898994, -0.0003077090, 0.0002440248, -0.0011544691, + 0.0007334205, 0.0026659449, -0.0022339600, -0.0041417154, -0.0017449283, + -0.0004818767, 0.0047936975, 0.0033489512, -0.0012637926, 0.0023252787, + -0.0022252453, 0.0003407140, -0.0005294019, -0.0019356268, 0.0012466111, + 0.0035750319, 0.0003067860, 0.0059934994, -0.0010390787, 0.0016791553, + 0.0001091759, 0.0006653682, -0.0016819115, 0.0031323442, -0.0002053876, + -0.0001441962, 0.0034895199, 0.0012131226, -0.0011559562, 0.0023808265, + 0.0002857037, -0.0011104241, 0.0011245529, -0.0002077599, -0.0000148683, + -0.0011080019, -0.0027439904, -0.0028068000, 0.0006439835, 0.0015649330, + -0.0007167058, 0.0000901094, 0.0008975056, -0.0004336736, 0.0003697835, + 0.0003707074, 0.0018906932, -0.0001721903, -0.0002188913, -0.0007703281, + 0.0012373487, 0.0015852072, -0.0010202081, -0.0012022965, -0.0019407854, + 0.0022278083, -0.0014764054, 0.0027667463, 0.0030436411, 0.0020547579, + 0.0000494233, 0.0000809161, 0.0002403695, -0.0036796127, 0.0007473403, + 0.0004911161, -0.0015230263, -0.0000049553, 0.0008165096, 0.0024898075, + -0.0009875617, 0.0008090856, -0.0018768660, -0.0029160718, 0.0000807717, + 0.0021697422, 0.0016192109, 0.0008237917, 0.0008829593, 0.0024626055, + 0.0005192556, 0.0007595869, -0.0005558599, -0.0003898083, 0.0000639489, + -0.0011730024, -0.0012911062, 0.0029144061, 0.0018588954, -0.0022015516, + 0.0001244582, 0.0017683912, 0.0017548352, -0.0003160653, -0.0012714008, + 0.0021196858, -0.0010502250, 0.0014901720, -0.0001629796, -0.0001708297, + -0.0002338812, -0.0015928992, 0.0008903297, 0.0007292095, -0.0004282710, + -0.0000331467, -0.0022713477, 0.0010696652, -0.0006979553, -0.0008011765, + -0.0004872764, 0.0035960269, -0.0007193079, -0.0003205074, 0.0032771369, + 0.0007769307, -0.0009290469, -0.0009800436, 0.0033305197, 0.0014222339, + -0.0009000003, 0.0021175668, -0.0003900356, 0.0004548274, 0.0006045901, + -0.0031526210, -0.0069454247, 0.0012525381, -0.0005349596, 0.0000793296, + 0.0002577757, 0.0005232617, 0.0002438636, -0.0022608323, 0.0004980620, + -0.0007573804, -0.0001010620, 0.0018558613, 0.0021637562, 0.0008526319, + 0.0009681205, 0.0003479952, 0.0018547671, 0.0004337914, -0.0000081395, + 0.0019234428, 0.0005509015, -0.0007568239, 0.0004093354, -0.0003421626, + 2.6445546150, 0.0000267532, 0.0002620853, -0.0009956073, 0.0003007594, + 0.0004993374, 0.0021665310, -0.0014180904, 0.0008635926, 0.0034120604, + -0.0007407442, 0.0015549063, 0.0003396032, -0.0028940388, 0.0025107535, + 0.0018842333, -0.0011697409, -0.0008725883, 0.0016051065, 0.0027623854, + 0.0005477383, -0.0011089668, -0.0013184982, 0.0007698226, -2.3274466991, + 0.0004462432, 0.0029910735, 0.0008546361, -0.0025947285, 0.0031881523, + 0.0038060723, 0.0010084702, 0.0010532108, 0.0004622559, -0.0005697026, + -0.0012984145, -0.0012315502, 0.0041995896, -0.0006469891, -0.0010054829, + 0.0041818051, -0.0030061640, 0.0005235728, 0.0001112837, 0.0010609087, + -0.0005199481, -0.0018799299, -0.0002708633, -0.0020913552, 0.0003273576, + 0.0000420534, -0.0292622857, 0.0046657408, 0.0036535338, 0.0062032822, + -0.0005354191, 0.0037157584, -0.0000962380, 0.0003638999, -0.0010505926, + -0.0013345717, -0.0043295482, 0.0021444063, 0.1105880812, 0.0019499548, + 0.0001050833, 0.0032294362, -0.0010905998, 0.0000596605, 0.0005047508, + 0.0013736095, -0.0006146110, 0.0027142349, -0.0009237367, -0.0020753550, + 0.0029566875, -0.0013620455, 0.0020877528, -0.0011224053, -0.0009700363, + -0.0004384555, -0.0023234040, -0.0017736647, 0.0013558245, 0.0027692225, + -0.0005560592, 0.0029355520, 0.0012277444, 0.0016302636, 2.2196395397, + -0.0014088626, 0.0016778465, -0.0006528242, -0.0006837079, 0.0000744015, + -0.0012767781, -0.0001367512, -0.0014413735, -0.0015027153, 0.0006447555, + 0.0004721365, -0.0008734753, 0.0033051586, -0.0003643734, 0.0010100458, + 0.0039158701, 0.0003713209, 0.0953210145, -0.0016113971, 0.0015714450, + 0.0008378513, -0.0020829728, 0.0025402079, 0.0000066222, 0.0007870246, + -0.0027373414, 0.0029732294, 0.0021555307, 0.0012020743, 0.0002033887, + 0.0076271128, -0.0023173951, 0.0015156846, 0.0019138646, 0.0003086645, + 0.0003921096, -0.0011055958, -0.0013848701, 0.0005072342, -0.0002130815, + 0.0027078427, 0.0011331700, 0.0114761461, 0.0004738399, 0.0002041162, + -0.0018628091, 0.0045622424, 0.0023017232, -0.0019056906, -0.0006112554, + 0.0023541485, -0.0016643303, 0.0016330844, 0.0007657044, 0.0022922272, + 0.0304926373, 0.0022710152, 0.0017791577, 0.0014981350, 0.0020092612, + -0.0016547837, 0.0004246198, -0.0000747107, -0.0021322514, -0.0013277240, + 0.0000646643, -0.0005342513, -0.0007433910, 0.0003721709, 0.0020486936, + -0.0016106141, -0.0005514657, 0.0004016539, -0.0006119236, 0.0018484397, + 0.0017703678, -0.0000752676, 0.0009162026, 0.0001669200, 0.0026971195, + -0.0031206571, 0.0000035428, 0.0036194143, -0.0011999081, -0.0017773104, + -0.0001319067, -0.0017490672, -0.0032084472, 0.0010323471, -0.0005878033, + -0.0015599828, -0.0012162877, 0.0015396478, 0.0014587534, -0.0008090965, + -0.0006959331, -0.0024665846, -0.0014819046, 0.0004599192, 0.0002942316, + -0.0015035542, 0.0010238695, -0.0003660780, -0.0018980281, -0.0003689929, + -0.0014745272, 0.0045276275, 0.0003778409, 0.0002318136, 1.5359706879, + 0.0024566187, 0.0007567136, -0.0013691187, 0.0011217874, 0.0000902805, + 0.0009343941, -0.0004664980, -0.0001830505, -0.0016967631, -0.0008852114, + 0.0001158629, 0.0027614352, 0.0092604849, 0.0009731234, 0.0001158365, + -0.0013743252, 0.0013119426, -0.0037829457, 0.0018923138, 0.0000610936, + 0.0008922927, -0.0008061160, -0.0007365302, -0.0008917958, -0.0014121847, + -0.0013335589, 0.0019258001, 0.0006695967, -0.0019873949, -0.0034293002, + 0.0031884995, -0.0010451498, -0.0006668153, 0.0019380511, 0.0000365693, + -0.0006705418, 0.0003745587, 0.0015010646, -0.0002176068, 0.0003013304, + -0.0003682463, -0.0004709854, -0.0009664134, 0.0011459171, -0.0003841827, + 0.0011567657, 0.0015358627, -0.0004069977, 0.0011464846, -0.0009898581, + 0.0007733748, -0.0010798192, -0.0003388659, 0.0003033613, -0.0016458258, + 2.1588079929, 0.0018673083, -0.0003665439, 0.0009688947, 0.0012282869, + 0.0019408648, 0.0011728406, 0.0009581887, 0.0017632563, 0.0039157793, + 0.0013225812, 0.0019377978, 0.0000366815, 0.0030598161, 0.0021713215, + 0.0000916906, 0.0003986596, 0.0009720549, 0.0002474615, 0.0006975946, + 0.0010768436, -0.0004368258, 0.0015084669, 0.0006925762, -0.0009204666, + 0.0014298451, -0.0010632006, -0.0000928387, -0.0000449514, -0.0019837539, + -0.0013403106, -0.0007874456, -0.0019722851, -0.0022442355, -0.0002101143, + -0.0000443146, -0.0011145278, 0.0011659381, 0.0024456794, 0.0011131372, + 0.0020800314, -0.0015177024, -0.0002089348, 0.0014151246, -0.0005178812, + -0.0010266048, -0.0009602173, 0.0010691126, -0.0007243842, -0.0020594643, + 0.0000002198, -0.0024145136, -0.0009054190, -1.7017612457, -0.0030052646, + 0.0654807240, -0.0015810763, 0.0011128443, 0.0002294139, -2.3337182999, + 0.0020790179, 0.0012924094, 0.0000845063, -0.0024232857, 0.0027310271, + 0.0007830214, -0.0014178846, 0.0029237522, -1.6211196184, -0.0002643517, + -0.0004840314, 0.0002178981, -0.0001852174, 0.0085050557, 0.0008742744, + 0.0013029454, 0.0023613097, 0.0005489169, -0.0009151821, -0.0016403380, + -0.0010556281, 0.0017439947, 0.0001995906, 0.0047921860, -0.0001216368, + 0.0013746442, -0.0045200409, -0.0011594235, 0.0002534851, -0.0029694233, + -0.0021485658, 0.0018058422, 0.0033947537, -0.0041016466, -0.0015335277, + -0.0003233840, 0.0031969061, -0.0025687590, -0.0021293112, -0.0012683570, + -0.0009366276, -0.0022279359, 0.0013313643, 0.0001288401, -0.0011126585, + 0.0020596636, 0.0008685817, 0.0001414882, 0.0019472197, -0.0012286431, + 0.0001748912, 0.0005231444, -0.0017835933, 0.0034627151, 0.0012047871, + -0.0010108764, -0.0006458379, 0.0016013002, 0.0026524938, -0.0018697920, + 0.0023853134, 0.0000193082, -0.0010275985, 0.0024102535, 0.0000815485, + 0.0019548694, -0.0012038264, -0.0104336422, -0.0031458843, 0.0027731718, + 0.0006167912, -0.0022460404, -0.0001665601, -0.0000144765, 0.0001853677, + -0.0011410918, -0.0013291002, 0.0004371314, 0.0014326847, 0.0008454430, + -0.0016477620, 0.0029121153, -0.0016681636, 0.0007716068, 0.0020443234, + 0.0004507690, 0.0025675539, -0.0017210589, 0.0015622033, -0.0001361761, + 0.0021903489, 0.0006893314, -0.0010691312, 0.0010374920, -0.0007571331, + 0.0022373311, 0.0010200024, 0.0008524256, 0.0020614066, -0.0033920484, + -0.0005297679, 0.0027584005, 0.0002084458, -0.0011712096, 0.0016962233, + 0.0009393240, 0.0022454762, -0.0008444288, -0.0007739603, 0.0016536065, + 0.0013305002, -0.0007925773, -0.0011501131, 0.0029578377, -0.0052366378, + -0.0000951299, -0.0019512237, -0.0000711491, 0.0008765584, -0.0020815423, + -0.0002811234, 0.0021301149, -0.0012585565, 0.0002057797, 0.0006231363, + -0.8129867911, 0.0009629717, -0.0021264795, -0.0009020545, 0.0003923330, + -0.0012362364, -0.0022292819, -0.0005176345, -0.0001895796, -0.0016761175, + 0.0006126533, -0.0011280441, -0.0012017922, -0.0005953452, -0.0015277443, + -0.0025186492, -0.0015491149, -0.0024385182, 0.0005699294, -0.0094368421, + 0.0010161628, 0.3139590621, 0.0010363467, -0.0005151224, 0.0001022115, + 0.0023168530, -0.0000004608, -0.0010700251, 0.0008397305, -0.0009686220, + 0.0016459310, -0.0001594182, 0.0017009149, 0.0013138051, -0.0014030903, + 0.0020073866, 0.0000405014, 0.0015195725, 0.0008135098, 0.0001014713, + -0.0023263276, 0.0001811013, 0.0011718585, 0.0014144364, 0.0018574502, + 0.0003870602, -0.0001460445, 0.0008254433, -0.0003368696, -0.0002623573, + 0.0002454821, 0.0012197425, -0.0014947569, -0.0017523988, -0.0002052020, + 0.0024753418, -1.4692641497, 0.0006210245, -0.0027203364, -0.0002446717, + -0.0000324850, 0.0033086550, 0.0015858512, 0.0016725676, -0.0024749078, + -0.0000276179, -0.0006678941, -0.0010180093, -0.0001733364, 0.0013258192, + 0.0002733017, -0.0014372516, 0.0026499876, 0.0008335933, -0.0018119002, + 0.0026038717, -0.0010213717, 0.0021028793, 0.0015485411, -0.0031908057, + -0.0006732279, -0.0009149523, -0.0015305069, -0.0017972942, -0.0028623266, + -0.0006788742, 0.0019427002, 0.0008788188, -0.0002245930, -0.0000655022, + -0.0000135466, 0.0007175249, -0.0011606421, -0.0012045299, 0.0017593142, + 0.0009734686, 0.0006816387, -0.0025341727, 0.0007329555, 0.0028696004, + 0.0002016588, -0.0009799371, -0.0308815446, 0.0011407051, 0.0009581182}; + +float unet_input_time_embedding_50_19[] = { + 0.0003229235, -0.0000778236, 0.0001859516, -0.0001729236, 0.0023446206, + 0.0014689988, 0.0013623373, -0.0001656061, -0.0008119382, -0.0009447683, + -0.0002155604, -0.0014253561, -0.0011760443, 0.0036082524, 0.0019543031, + -0.0003329627, -0.0027431482, 0.0033875096, 0.0002418611, -0.0005887207, + -0.0018106953, -0.0008190824, -0.0051111383, -0.0030204765, -0.0009733469, + -0.0001407696, -0.0000293124, 0.0005679680, 0.0018840270, 0.0026260782, + -0.0009280232, -0.0019871069, -0.0018057721, -0.0005138665, -0.0011417130, + 0.0007808572, 0.0005557653, 0.0004086148, 0.0027841851, 0.0012836251, + 0.0045666969, -0.0025801158, 0.0001438041, -0.0007976396, 0.0037435787, + 0.0000553147, -0.0010030582, -0.0000468418, -0.0010733043, 0.0024724384, + -0.0004752474, 0.0017174233, -0.0826418623, 0.0009453776, -0.0008671653, + -0.0010133934, 0.0008311612, 0.0009495220, 0.0003340244, 0.0003284120, + -0.0032817998, -0.0007077616, -0.0001599374, 0.0035093753, 0.0008719326, + 0.0004977286, 0.0002181614, -0.0004547300, -0.0007038694, 0.0015863243, + 0.0001139287, 0.0008052150, 0.0018074743, 0.0003052559, 0.0013169795, + -0.0001657335, -0.0003421749, 0.0023138709, 0.0011597902, -0.0004940715, + 0.0025466005, -0.0023335773, 0.0008735945, -0.0006457632, 0.0001597998, + 0.0008361572, 0.0021253175, -0.0006009717, 0.0005526291, -0.0018927124, + -0.0001885953, 0.0028340775, 0.0006180331, 0.0008159637, 0.0000032554, + 0.0023230803, -0.0010319655, 0.0018801871, -0.0025306889, 0.0024098153, + 0.0003349534, 0.0026297269, 0.0011059553, 0.4676841199, -0.0018072557, + 0.0003322195, 0.0003833403, -0.0011218758, 0.0037082972, -0.0008659442, + 0.0008919933, 0.0001786426, 0.3875194490, 0.0002105311, -0.0012024874, + -0.0009908001, 0.0002831067, 0.0024516496, -0.0015778197, -0.0001236622, + -0.0038632494, 0.0023505015, -2.0792982578, 0.0012505907, -0.0001759063, + 0.0014877599, 0.0019400576, 0.0005520219, 0.0037441701, 0.0010184990, + 0.0013855319, 0.0006764317, 0.0042890068, -0.0023857569, 0.0014358372, + -0.0049838615, 0.0008148320, 0.0039424603, -0.0010128152, 0.0026747286, + 0.0003648021, -0.0012735159, 0.0009104642, 0.0017524722, 0.0021252835, + 0.0005485946, -0.0028659343, -0.0015521804, 0.0000353362, 0.0006561563, + 0.0028160624, -0.0003851651, -0.0032190587, 0.0006921813, 0.0000767997, + -0.0010140827, -0.0015051188, -0.0017836746, 0.0027711936, -0.0022327155, + -0.0001157168, 0.0007254415, -0.0010539731, -0.0025713369, 0.0003424692, + -0.0007985521, 0.0000868966, 0.0002036556, -0.3269719481, -0.0002076083, + 0.0014352530, 0.0034346124, -0.0017129485, 0.0020675459, 0.0017552353, + -0.0022670273, -0.0013292421, 0.0024026269, -0.0002526043, -0.0002289265, + -0.0004747841, -0.0013737371, 0.0021569398, -0.0003467926, -0.0002515812, + -0.0006855880, 0.0002186187, 0.0009210282, 0.0003969851, 0.0025827237, + 0.0008684758, 0.0004506870, -0.0017752984, 0.0019389072, 0.0004972331, + 0.0000114744, 0.0024517318, -0.0010372065, -0.0000629629, 0.0008710907, + 0.0006932197, -0.0040731193, -0.0008175159, -0.0007019672, -0.0004201047, + 0.0031984011, 0.0003665986, -0.0016136467, 0.0005997662, 0.0020398959, + 0.0020130624, 0.0019955281, 0.0003682573, -0.0008134355, 0.0008367382, + -0.0007583704, 0.0009468757, 0.0020625843, 0.0009061355, -0.0019191409, + -0.0005830768, -0.0004714035, 0.0030436039, 0.0344599485, -0.0014146606, + -0.0014987988, -0.0050769355, 0.0026682080, -0.0016272964, 0.0002142107, + 0.0006458079, -0.0016974984, -0.0010795225, -0.0006839265, -0.0003480446, + -0.0017283796, 0.0000380711, 0.0020073690, 0.0026733652, 0.0015419293, + 0.0017797069, -0.0021541719, -0.0001391470, 0.0021077441, -1.5339148045, + 0.0000706476, -0.0003747367, -0.0036898577, 0.0027089827, 0.0026139137, + 0.0013253428, 0.0039135213, -0.0003578407, 0.0016066274, -0.0013990588, + -0.0023977619, -0.0017738147, -0.0037113987, -0.0014024519, 0.0027255923, + -0.0015300503, -0.0018754017, -0.0007517294, 0.0044241925, 0.0005727723, + -0.0028279829, 0.0017612097, 0.0029182187, 0.0001890576, 0.0007508621, + -0.0018037222, 0.0015044136, -0.0002382072, -0.0015059314, 0.0002930490, + -0.0002740507, -0.0017426284, 0.0008475790, 0.0032710386, -0.0006780890, + 0.2210956961, 0.0025539291, 0.0005444969, 0.0025561522, -0.0001831543, + 0.0010362454, 0.0026317928, -0.0027695822, 0.0017613769, -0.0013178820, + 0.0027046027, 0.0018780632, 0.0059022838, 0.0028866429, -0.0032088235, + 0.0000313297, 0.0025731921, 0.0006728456, 0.0037464132, 0.0009150407, + 0.0030183955, 0.0021830220, 0.0023224442, 0.0071283686, 0.0013822198, + 0.0013363026, 0.0011847145, 0.0014958824, 0.0036281897, 0.0023536468, + -0.0024501383, 0.0013360032, 0.0000356536, 0.0011328529, 0.0011888300, + -0.0033886142, -0.0018679284, -0.0015742122, 0.0010835826, -0.0028346204, + -0.0006964344, -0.0015062965, -0.0018579846, -0.0004572226, -0.0017937605, + 0.0005796398, 0.0037202463, 0.0008688453, -0.1470799744, 0.0047675604, + 0.0049398444, -0.0020366637, 0.0017412007, -0.0016700225, -0.0001743878, + -0.0021768408, -0.0011005856, 0.0027918802, -0.0015604601, 0.0013137539, + -0.0017986214, 0.0002015035, 0.0013969296, 2.0027637482, -0.0014635834, + 0.0004056031, 0.0019866512, 0.0001892681, 0.0002360120, -0.0007591931, + -0.0001760158, 0.0030172635, 0.0010393634, -0.0004252130, -0.0021319091, + -0.0011089258, 0.0013563291, -0.0023783594, -0.0017090333, -0.0019199648, + 0.0018833796, 0.0022711731, 0.0019627269, 0.0024395813, -0.0000291994, + -0.0008087570, 0.0022258111, 0.0023238836, 0.0018790159, -1.5895252228, + -0.0006679697, 0.0002006087, 0.0020189593, -0.0026959549, 0.0045661172, + -0.0011323765, -0.0038968700, 0.0010780331, 0.0022134746, -0.0004155068, + 0.0000929531, -0.1542769670, 0.0008282996, 0.0001179804, 0.0009880750, + 0.0031630893, 0.0029016291, -0.0025392170, 0.0005437103, -0.0007253648, + -0.0015771436, -0.0015534115, -0.0026778388, -0.0016440880, 0.0011629993, + 0.0012198561, -0.0001799818, 0.0013012834, -0.0014228551, -0.0004528631, + -0.0017232578, 0.0022824197, -0.0022394981, 0.0002610064, 0.0001049312, + 0.0042852187, -0.0009157892, -0.0009731036, -0.0005414919, -0.0009406470, + 0.0006661240, 0.0037271408, -0.0010346379, -0.0001659186, 0.0004617190, + -0.0003830062, 0.0012771678, -0.0007786807, -0.0020080768, -0.0008683177, + 0.0052220682, 0.0002189453, 0.0008107168, -0.0002676027, 0.0012378180, + 0.0003849664, 0.0027414504, 0.0011344214, -0.0008947963, -0.0009887246, + -0.0007525282, -0.0011971430, 0.0022399297, 0.0018170788, -0.0010228575, + -0.0015146034, -0.0005654246, 0.0014047886, -0.0014376622, 0.0041582296, + -0.0000518924, 0.0021240795, -0.0024990784, -0.0011683193, 0.0042305300, + -0.0039895074, -0.0009851255, 0.0018085036, 0.0016029347, 0.0105730118, + -0.0005863425, 0.0030149110, -0.0001418837, -0.0033186041, 0.0019750237, + 0.0016381573, 0.0009441357, 0.0016223267, -0.0016791215, -0.0017263521, + -0.0022529233, 0.0012873635, 0.0003599243, -0.0000397031, 0.0004584840, + 0.0003664680, 0.0007023709, -0.0046581607, 0.0027587553, 0.0014433376, + 0.0004173068, -0.0001534226, -0.0024069487, 0.0001433573, -0.0018634205, + 0.0147151966, 0.0007413244, 0.0003107217, 0.0020610383, -1.1842671633, + -0.0011162017, -0.0018535752, 0.0011681388, 0.0000670073, 0.0004297866, + -0.0006361658, -0.0012487939, -0.0000167517, 0.0006517237, 0.0016340364, + -0.0019234237, 0.7194857597, 0.0018083747, 0.0012445678, 0.0028175591, + -0.0073033501, -0.0028969990, -0.0004463447, -0.0062908698, 0.0009615922, + -0.0001733885, 0.0008248473, -0.0014904407, 0.0011808905, 0.0017779553, + 0.0004589313, 0.0002112607, -0.0007445934, 0.0012323719, 0.0002234937, + 0.0035339433, 0.0003885245, -2.0915248394, -0.0001302483, 0.0017191096, + 0.0012873369, -0.0020649387, -0.0033289334, 0.0026129945, -0.0032609077, + 0.0000232602, -0.0011186027, -0.0026309963, 0.0016892324, -0.0008284603, + 0.0007128161, 0.0007638962, 0.0007882188, -0.0004553022, 0.0003371969, + -0.0014949900, 0.0000592400, -0.0005446975, -0.0010822786, -0.0005491276, + 0.0013256415, 0.0001619461, -0.0015271162, -0.0056886729, -0.0004594363, + -0.0017199535, -0.0021363273, 0.0002484642, 0.0006281338, 0.0000313134, + 0.0007353011, -0.0007421710, 0.0014424017, 0.0015669726, 0.0005940394, + -1.6615166664, 0.0002444964, 0.0008435883, -0.0032321550, 0.0010787505, + -0.0010217050, -0.0031423145, 0.0000397814, 0.0008773771, -0.0024283892, + 0.0015935330, -0.0002666760, 0.0010087234, 0.0020299626, -0.0003827673, + 0.0024367599, 0.0028146300, 0.0048619192, -0.0019079810, 0.0037777903, + -0.0030017304, 0.0003891499, 0.0009044190, 0.0014391837, -0.0016177990, + 0.0018417863, -0.0006759308, 0.0013047573, 0.0010337248, 0.0042168079, + 0.0019671395, -0.0005939496, 0.0014008121, 0.0024145292, -0.0014505289, + 0.0011519867, 0.0017503756, -0.0044364999, 0.0009171730, -0.0012219059, + 0.0007881323, 0.0019602864, 0.0031192647, 0.0004871795, 0.0006898884, + 0.0018430590, 0.0026064848, 0.0011531999, 0.0022097975, 0.0023486177, + 0.0060337950, 0.0006564441, 0.0014780248, -0.0000032452, 0.0002914493, + -0.0030790209, 0.0010516305, -0.0014056934, 0.0029889531, 0.0041638459, + -0.0003424784, 0.0018021930, 0.0011807173, -0.0014869920, 0.0024751564, + 0.0022783629, 0.0003917310, 0.0021835070, 0.0021114871, 0.0020191644, + 0.0010161730, -0.0003373898, -0.0009236657, -0.0019840160, -0.0001352988, + -0.0002261396, 0.0003874411, -0.0000526807, 0.0021674153, 0.0003068340, + 0.0003738450, 0.0002868504, -0.0003559798, 0.0019712346, -0.0037104553, + 0.0014321590, 0.0018934172, -0.0019357711, -0.0018465556, 0.0001684725, + -0.0004250876, 0.0002832774, 0.0030074839, 0.0019402776, 0.0012450018, + 0.0009886915, 0.0002713902, -0.0023873379, -0.0032745674, 0.0000786688, + -0.0006678529, -0.0053262496, 0.0005669377, 0.0000900989, 0.0062415930, + -0.0016437534, -0.0009330409, -0.0003575967, -0.0000104818, 0.0010872958, + 0.0062964559, -0.0014494485, -0.0000000669, -0.0008733839, 0.0023062471, + 0.0022221035, 0.0027541816, 0.0013668975, 0.0010204248, 0.0004703045, + -0.0006753569, 0.0003825321, 0.0034362029, 0.0008761541, -0.0034146290, + -0.0010093804, 0.0018120847, 0.0005465336, -0.0002801470, 0.0011961693, + -0.0002902341, 0.0002517109, -0.0009798501, 0.0005385926, -0.0014259648, + 0.0023454404, 0.0002009328, -0.0001674283, 0.0048534228, -0.0036090179, + -0.0006540231, -0.0001279032, 0.0006340656, 0.0010646833, -0.0016625328, + 0.0009854781, 0.0025414415, -0.0001882697, -0.0011522018, -0.0007484285, + 0.0013022865, -0.0001141846, -0.0022581622, 0.0023671442, 0.0021341187, + -0.0023566559, -0.0003567212, 0.0015485999, -0.0003524150, 0.0012322890, + -0.0013850005, -0.0085372077, 0.0024253645, -0.0004710234, -0.0030150185, + -0.0020543113, 0.0022125207, -0.0002888273, 0.0016294175, -0.0011113649, + 0.0001127711, 0.0033296603, 0.0018579707, 0.0044783647, -0.0015432904, + 0.0009734589, -0.0008395566, -0.0004695886, 0.0006146366, -0.0002379816, + 0.0022841068, -0.0003259145, -0.0023066164, -0.0008665072, -0.0006512317, + 2.5213599205, -0.0012425939, -0.0003326894, -0.0000051189, 0.0010779118, + 0.0002854788, -0.0007179556, 0.0006113735, -0.0003735970, 0.0020959936, + -0.0027793557, 0.0016390745, 0.0012884169, -0.0027820524, 0.0041179843, + 0.0010682135, 0.0006740673, -0.0007367609, 0.0018141265, 0.0006685045, + 0.0010683364, 0.0008068215, 0.0025865720, 0.0022373700, -2.3653361797, + 0.0041288165, 0.0014172799, -0.0002779481, -0.0009452915, -0.0003563617, + 0.0005443380, -0.0014597470, -0.0017775311, -0.0022117747, -0.0010069706, + -0.0007329346, -0.0026878426, 0.0020234343, -0.0000926058, 0.0018850663, + 0.0018536008, -0.0022667758, -0.0005086055, 0.0000624550, -0.0000752746, + -0.0030581038, 0.0002559937, 0.0005030709, 0.0023170309, 0.0025861836, + 0.0021574269, 0.0254682973, 0.0035751099, 0.0034084274, 0.0054636826, + -0.0029003206, 0.0023391659, 0.0000791551, -0.0039617652, 0.0013386765, + -0.0028856229, -0.0032497761, -0.0003531325, 0.1062764451, 0.0035775909, + 0.0019560843, 0.0021650062, 0.0009856116, 0.0006083697, -0.0020130014, + -0.0010334807, -0.0011439575, 0.0018535769, -0.0013193863, -0.0033279653, + -0.0017674851, -0.0017050856, 0.0044743405, 0.0005379003, 0.0002457411, + -0.0026631681, -0.0013801660, -0.0007869378, 0.0015811434, 0.0011048596, + 0.0025058379, 0.0019201027, 0.0024818475, 0.0021725663, 2.2454597950, + -0.0010826956, 0.0011933642, 0.0009873853, 0.0022898018, 0.0006068435, + 0.0025784408, 0.0010154988, 0.0000712429, -0.0009477949, 0.0035696991, + 0.0005087645, -0.0004528658, 0.0044699796, -0.0002811374, 0.0030424488, + 0.0010286644, 0.0004953300, 0.0708431154, 0.0020123967, -0.0014196343, + 0.0005290802, -0.0000738027, 0.0015617735, 0.0016081017, -0.0005859104, + -0.0017563608, 0.0023403631, 0.0013073798, 0.0021347203, 0.0044123502, + -0.0060643125, 0.0005728984, 0.0013713501, 0.0039773122, 0.0000713961, + 0.0016914287, 0.0018488555, -0.0019351980, 0.0009301138, 0.0002661333, + 0.0026187338, 0.0002276904, 0.0072004236, 0.0000703556, 0.0012384033, + -0.0009320136, -0.0017669066, 0.0037903092, -0.0007519994, 0.0003820448, + 0.0026072904, -0.0016188486, 0.0021014577, 0.0003024930, 0.0023225036, + 0.0242167115, 0.0033397535, 0.0003729397, 0.0013254507, 0.0032982489, + 0.0024054998, 0.0009258664, 0.0008539287, -0.0006555847, -0.0015649928, + 0.0006659685, -0.0009205784, 0.0002706866, 0.0011469722, 0.0008023945, + 0.0006416354, 0.0012224538, 0.0007239251, -0.0012847162, 0.0007115193, + -0.0007630205, 0.0032822071, -0.0029395865, -0.0025815526, 0.0013895747, + -0.0008901064, -0.0006563691, 0.0006450325, -0.0006664251, 0.0006052593, + -0.0032199824, -0.0038342206, 0.0003890162, -0.0002564671, -0.0012103915, + -0.0013640493, 0.0009674446, 0.0004664464, -0.0002258387, -0.0001007079, + -0.0001619710, -0.0021090917, 0.0024177674, 0.0001772474, 0.0014841943, + -0.0015349286, 0.0000485478, 0.0005185578, 0.0002869325, 0.0009435647, + 0.0016484265, 0.0025154257, 0.0006733356, -0.0004403945, 1.4875867367, + 0.0048232004, 0.0033418862, -0.0021578725, 0.0016685207, 0.0024271975, + 0.0017620679, 0.0011511467, -0.0007312270, -0.0002630665, -0.0005551740, + 0.0013026454, 0.0014049350, 0.0027379710, 0.0030413845, -0.0013698884, + -0.0007201871, 0.0005901369, -0.0028102808, 0.0010519894, -0.0024810049, + -0.0002377732, 0.0001029451, -0.0020956085, -0.0015908820, -0.0010176168, + -0.0001111794, -0.0011990394, 0.0021052095, -0.0034897691, -0.0043573361, + 0.0049175909, -0.0009151092, 0.0002370905, -0.0003877482, -0.0002340768, + -0.0011400308, 0.0009865978, 0.0011851204, -0.0009202631, 0.0002412712, + -0.0035469676, 0.0014294942, 0.0009964458, 0.0008837233, 0.0009592432, + 0.0021897026, 0.0003035702, -0.0008509126, 0.0007327120, 0.0003882754, + 0.0016257538, -0.0027741061, -0.0004927632, 0.0007464108, 0.0013163318, + 2.0184650421, 0.0045343074, 0.0012288485, 0.0003029522, 0.0000366974, + 0.0018232872, 0.0009494536, 0.0007651228, 0.0000530388, 0.0042547141, + 0.0013991869, -0.0011743321, 0.0017748359, 0.0027658502, 0.0008345239, + 0.0013655182, 0.0007284810, -0.0009116968, -0.0017470234, -0.0001781760, + 0.0009695273, 0.0010261611, -0.0004601125, 0.0012072530, -0.0022241049, + 0.0006689141, -0.0013288916, -0.0012125799, -0.0023962271, -0.0016051747, + -0.0021127351, 0.0011657055, -0.0032668735, -0.0021167928, -0.0009199549, + -0.0005990241, -0.0005066433, -0.0010234811, 0.0002181765, 0.0020082337, + 0.0036839882, 0.0007710434, -0.0007021683, -0.0012355852, -0.0009721837, + -0.0006148652, -0.0001653587, 0.0014179827, 0.0004440927, -0.0011777077, + 0.0009204168, -0.0051873215, -0.0010196776, -1.6959145069, -0.0016473073, + 0.0407734662, 0.0007521550, 0.0001103631, 0.0009489348, -2.3305981159, + 0.0037893592, -0.0003362037, 0.0011891108, -0.0030479096, 0.0026705018, + -0.0003310209, -0.0017695287, 0.0022966554, -1.5622513294, -0.0011607981, + 0.0015486309, 0.0001825711, 0.0034149773, 0.0106148180, -0.0011197655, + -0.0026229047, 0.0019518062, -0.0008345991, 0.0017686577, -0.0018274519, + 0.0037397528, 0.0026521208, 0.0003806904, 0.0024003987, -0.0001195285, + 0.0026166132, -0.0027703226, -0.0013756210, -0.0021243789, 0.0007888073, + -0.0014924291, 0.0007831098, 0.0022401507, -0.0011256090, 0.0000962454, + 0.0016467597, 0.0013647950, 0.0008089831, 0.0003436129, 0.0019318853, + -0.0008240680, -0.0006820625, -0.0004181825, -0.0010901745, -0.0035521630, + 0.0005732542, -0.0034574703, -0.0020575628, 0.0034562501, 0.0018355660, + -0.0016915677, -0.0041716825, -0.0004983670, 0.0018324265, 0.0008742071, + 0.0005952518, -0.0016570982, -0.0028214799, 0.0032716608, -0.0000800922, + 0.0012588860, -0.0002161823, 0.0014431281, -0.0004036902, -0.0005194300, + -0.0023078956, -0.0007447248, -0.0000956882, -0.0049354672, 0.0022809152, + 0.0003355765, -0.0011866816, 0.0003430070, 0.0021357303, -0.0012871553, + 0.0003316021, -0.0017957964, 0.0026974967, 0.0018216833, 0.0000067675, + -0.0010460396, -0.0005505104, -0.0005102893, 0.0009381836, 0.0027188086, + 0.0024638644, 0.0042204047, -0.0021238672, 0.0018246183, -0.0018928833, + 0.0032338824, 0.0007625548, -0.0024537439, 0.0027045552, -0.0016894811, + 0.0002766470, 0.0017514171, 0.0033869171, 0.0028996794, -0.0001830875, + -0.0012761420, 0.0008711508, -0.0002025068, 0.0020059259, 0.0003824154, + 0.0008927803, 0.0030521629, 0.0011783727, -0.0013186946, 0.0026344694, + 0.0017941070, -0.0009034782, 0.0023450605, 0.0009851269, -0.0058098328, + -0.0008374769, 0.0002398421, -0.0011459168, 0.0013142367, -0.0001889355, + 0.0027217921, 0.0033200879, 0.0004414821, 0.0021745921, 0.0021650917, + -0.6984048486, -0.0003164336, -0.0008084400, 0.0005664373, 0.0005504185, + 0.0017635617, -0.0015443226, -0.0003242882, 0.0003925310, -0.0016117659, + 0.0009191013, 0.0007063482, -0.0027153413, 0.0014125197, 0.0001886836, + -0.0032236520, -0.0015698047, -0.0015439587, -0.0000950564, -0.0049422677, + 0.0004689456, 0.3582733870, 0.0015187801, -0.0020056725, 0.0013403911, + 0.0018175589, 0.0001302955, 0.0023527606, -0.0019445410, 0.0013934430, + 0.0028635310, 0.0010140091, 0.0018101619, 0.0020001293, -0.0019361528, + 0.0007107094, 0.0008048562, 0.0040401085, 0.0008082022, 0.0013988186, + -0.0021935110, -0.0003679553, -0.0000660642, -0.0001073680, 0.0033480609, + -0.0015270552, -0.0009540227, 0.0015276184, -0.0001170645, 0.0010470301, + 0.0012283347, 0.0002310313, 0.0015178681, -0.0023234636, -0.0017234124, + 0.0013151119, -1.4844263792, 0.0025778939, -0.0031506629, 0.0006901033, + 0.0009374423, 0.0038421492, 0.0022430264, 0.0018442294, -0.0009497269, + -0.0017993129, -0.0003469534, -0.0007450938, 0.0025519533, -0.0001205686, + -0.0011394755, -0.0032396656, 0.0025193221, 0.0013790908, -0.0026616529, + -0.0015068147, 0.0007026969, 0.0014773514, 0.0013897548, -0.0016639787, + -0.0014603075, 0.0002663825, -0.0028852220, -0.0010835100, 0.0013554872, + 0.0004909051, -0.0000568000, 0.0024819258, -0.0018709869, 0.0011540926, + -0.0002816482, -0.0002125376, 0.0005446095, -0.0015604213, 0.0016611035, + 0.0013443176, 0.0019164565, -0.0007364310, 0.0004884424, 0.0012449939, + 0.0000529103, 0.0004838328, -0.0380248353, 0.0000507503, 0.0006270838}; + +float unet_input_time_embedding_50_20[] = { + -0.0007704999, 0.0011999658, -0.0009204466, 0.0023156556, -0.0002590783, + 0.0015274808, -0.0001042588, 0.0019972366, -0.0027260487, 0.0012426961, + 0.0018154925, -0.0029528323, 0.0020515169, 0.0013416479, -0.0003917022, + 0.0024013715, -0.0028023226, 0.0006231421, -0.0002336180, -0.0015315728, + -0.0014889077, 0.0004558275, -0.0033355183, 0.0040677376, -0.0010667958, + -0.0008890131, -0.0017932951, 0.0016494663, 0.0002720134, -0.0002268478, + -0.0013163192, 0.0016018456, 0.0017555533, -0.0027695177, -0.0013791076, + -0.0020496477, 0.0009963624, -0.0005251397, 0.0016843015, 0.0002644779, + 0.0018461654, 0.0008279150, -0.0005262177, 0.0002060849, 0.0014261780, + -0.0026590887, -0.0011421661, -0.0000230088, -0.0012778866, 0.0034771005, + -0.0003494518, -0.0012685528, -0.0273159910, 0.0005289312, -0.0035415858, + -0.0016871187, 0.0022092501, -0.0023480169, -0.0007233559, -0.0027154123, + -0.0021459945, -0.0010900495, -0.0016891970, 0.0014218516, -0.0003115213, + 0.0001808451, 0.0007973048, 0.0019524022, 0.0003794301, 0.0005739566, + -0.0004405524, -0.0012939861, 0.0024403993, -0.0008864580, 0.0001623221, + 0.0009028669, 0.0020196927, -0.0024503116, -0.0003012140, -0.0013873952, + -0.0009788480, -0.0006596028, -0.0016913605, 0.0003720568, -0.0011493915, + 0.0009992487, 0.0002043757, -0.0004426809, -0.0009320867, -0.0030277953, + -0.0014039032, 0.0018008403, 0.0002492825, -0.0009939304, 0.0042754360, + -0.0003154385, -0.0014190944, 0.0017558024, -0.0005101480, 0.0009387881, + 0.0015296447, 0.0028519782, 0.0002288613, 0.3882071674, 0.0004298408, + 0.0016397256, 0.0004705382, -0.0001660958, 0.0032846108, 0.0014079325, + 0.0000534989, -0.0016923193, 0.3871320188, 0.0000743000, 0.0012119412, + 0.0008818856, 0.0036108401, -0.0013639831, 0.0003806180, 0.0018976468, + -0.0019569010, -0.0002769118, -2.0071194172, 0.0015449449, -0.0026215678, + -0.0021312693, -0.0015240218, -0.0007692403, 0.0023805359, -0.0010992982, + 0.0004867832, 0.0000616070, 0.0028345373, -0.0028992044, -0.0001024285, + -0.0036819705, -0.0007851443, 0.0009339517, -0.0019890089, 0.0023144176, + 0.0023163918, -0.0030172062, -0.0001848754, 0.0001209099, 0.0013654649, + -0.0036493815, 0.0015738336, -0.0011291099, 0.0003061835, 0.0003287501, + 0.0000585343, 0.0003093729, -0.0005241237, 0.0017930076, 0.0010740287, + -0.0002678144, 0.0000240160, -0.0029227687, -0.0023807567, -0.0010697842, + 0.0008292329, 0.0006921467, 0.0015228391, -0.0021732082, -0.0012876014, + -0.0006669827, 0.0002146255, 0.0003049648, -0.2327538431, -0.0007557010, + 0.0000127481, 0.0023172116, -0.0009194831, 0.0004372013, 0.0005695056, + -0.0037443973, 0.0001544418, 0.0003408948, -0.0032470706, -0.0011214260, + 0.0004338641, -0.0043715788, -0.0011045132, -0.0027170009, -0.0011851098, + -0.0002609240, -0.0017966591, 0.0004422194, -0.0017546774, 0.0022990592, + 0.0008009076, 0.0002090647, -0.0000359142, -0.0008357007, 0.0008129207, + -0.0013465923, 0.0009232761, 0.0023881937, 0.0008491605, -0.0003706510, + 0.0007814849, -0.0027133850, -0.0014249319, -0.0011478732, 0.0001553958, + 0.0025854083, -0.0007969646, -0.0026014075, -0.0025042128, -0.0010092882, + 0.0002662078, 0.0032779379, 0.0001831737, -0.0000158239, -0.0003846101, + -0.0009455876, -0.0015058895, 0.0030737580, -0.0003312429, 0.0005435207, + -0.0009353701, -0.0008944545, -0.0002120992, 0.0244049057, -0.0022313411, + 0.0001968821, -0.0003108326, 0.0013440093, -0.0048399195, -0.0000397442, + 0.0010973243, -0.0006550578, -0.0006835656, -0.0024322760, -0.0009470703, + -0.0000098920, 0.0008054799, -0.0001217062, 0.0004512565, 0.0009428706, + -0.0009414845, 0.0005783811, 0.0032012665, -0.0001278771, -1.5240640640, + -0.0011895134, 0.0006643459, 0.0002145474, -0.0000908347, 0.0011046077, + -0.0003654864, 0.0012584352, 0.0008786763, 0.0012537306, -0.0006707823, + 0.0006027075, 0.0001819581, 0.0004258606, 0.0019575038, -0.0009296736, + -0.0002668230, -0.0008459522, -0.0005612832, 0.0041857115, -0.0000301105, + -0.0028012781, 0.0036631553, 0.0005823225, 0.0018858360, -0.0003648400, + -0.0018585157, 0.0013506503, 0.0012700143, 0.0011751852, 0.0017254918, + 0.0013983133, -0.0017588446, 0.0003399416, 0.0018449482, -0.0005857861, + 0.2214017063, 0.0033359923, -0.0005823727, 0.0017899233, -0.0003095553, + -0.0005476708, 0.0021599773, 0.0020728733, 0.0004898924, -0.0017277300, + -0.0008655692, 0.0011693146, 0.0003699476, 0.0010602942, -0.0031260969, + -0.0026542484, 0.0013903724, 0.0003045811, -0.0024688845, -0.0003016139, + 0.0020575095, 0.0002393478, 0.0027358173, 0.0014185058, 0.0011201764, + -0.0003723893, 0.0000081772, 0.0017524259, 0.0005390365, -0.0005600941, + -0.0012894616, 0.0005854457, -0.0012431790, 0.0002951873, -0.0019889357, + -0.0023045135, -0.0010943826, -0.0027982970, 0.0007785605, -0.0002899934, + 0.0008627062, 0.0000417070, -0.0011753666, -0.0011148988, -0.0022786944, + 0.0014350668, 0.0012709107, 0.0008270084, -0.1111635491, -0.0004633269, + 0.0026127514, -0.0014134157, -0.0011112565, -0.0016177145, 0.0007403002, + -0.0008555758, -0.0007970210, 0.0000132880, -0.0031655931, 0.0000823545, + -0.0004711300, 0.0008516107, -0.0007248272, 1.9207859039, 0.0037301516, + -0.0000298270, 0.0015131425, 0.0011436032, 0.0003723977, -0.0002306130, + 0.0016730269, 0.0028874446, 0.0015525268, -0.0004426995, -0.0007478961, + 0.0001135720, -0.0002316551, 0.0019678986, -0.0000777678, -0.0033161258, + -0.0007401351, -0.0003573075, 0.0014097360, -0.0008060760, 0.0006034722, + -0.0007213627, 0.0014462327, -0.0005464908, 0.0024125194, -1.5798840523, + 0.0036397073, 0.0006225696, 0.0020645824, -0.0012865681, 0.0036754308, + 0.0004712011, -0.0000348485, -0.0011109186, 0.0034022138, -0.0001306678, + -0.0018181804, 0.0358120203, 0.0016480298, -0.0007259916, 0.0018747523, + 0.0013387343, 0.0008362452, -0.0027075065, 0.0022440231, -0.0002410184, + 0.0010315236, -0.0029679444, -0.0006557652, -0.0015323584, 0.0001614301, + -0.0014420734, 0.0004908089, -0.0003171825, -0.0002299496, -0.0000622561, + -0.0016093056, 0.0011527473, 0.0006324416, 0.0011023558, 0.0010089809, + 0.0013593524, -0.0008797568, -0.0001587151, -0.0016593877, -0.0005848547, + -0.0001628113, 0.0015929349, -0.0028474717, -0.0018340892, 0.0015821056, + 0.0009731839, 0.0015836013, 0.0007135464, 0.0013002604, 0.0019181413, + -0.0000907423, -0.0024436282, 0.0010608155, 0.0011240977, -0.0006603552, + 0.0014299368, 0.0026016003, -0.0016549344, 0.0014401509, 0.0012607498, + -0.0029896712, 0.0018141135, 0.0006360153, 0.0015139906, 0.0015767367, + -0.0019218270, 0.0013634679, 0.0034780428, -0.0031409534, 0.0009766512, + -0.0000354550, 0.0020936015, -0.0028691040, -0.0005834152, 0.0003324708, + 0.0010127313, -0.0016948723, -0.0017690053, 0.0017745593, 0.0120033529, + -0.0011004661, 0.0007762499, -0.0012391622, -0.0006264960, -0.0014778210, + -0.0005134009, -0.0020116838, 0.0029254970, -0.0016534235, 0.0016246596, + 0.0019662115, -0.0001633838, 0.0005425980, 0.0019686371, 0.0013656383, + -0.0013289009, -0.0007133861, -0.0027071685, 0.0030526593, 0.0010329797, + -0.0003891259, -0.0002421734, 0.0010427027, -0.0011055388, 0.0007650862, + 0.0036410969, -0.0013448596, -0.0006091412, 0.0007142927, -1.1428781748, + -0.0007360075, -0.0018989358, 0.0040449724, -0.0002999909, -0.0015663775, + -0.0020897435, -0.0015693947, 0.0039623510, 0.0025164853, 0.0006079159, + -0.0008674157, 0.6395570040, 0.0016586822, -0.0013573193, 0.0012701834, + -0.0112511637, 0.0016514296, -0.0005652974, -0.0004584598, 0.0006740658, + 0.0009801988, 0.0029764241, -0.0005625691, -0.0014618342, 0.0028536478, + 0.0004643693, -0.0000591725, -0.0015190217, 0.0031145494, -0.0021166098, + 0.0028289577, 0.0019288687, -2.1345417500, 0.0002100626, 0.0008325538, + 0.0030497853, -0.0008890843, -0.0008644336, 0.0034640227, -0.0035001813, + -0.0022304649, 0.0021251137, -0.0024849405, 0.0019089491, -0.0004909872, + -0.0002449039, -0.0001677374, 0.0006049206, -0.0003438219, -0.0020936867, + -0.0024082821, -0.0009346716, -0.0015414222, 0.0013719222, 0.0006321089, + -0.0000194509, 0.0019520523, 0.0022057486, -0.0016457774, -0.0006099609, + 0.0009416761, -0.0010100985, 0.0005484558, 0.0007909429, 0.0004252293, + 0.0002998123, -0.0011892458, 0.0010100217, -0.0002633394, 0.0002231356, + -1.6420599222, -0.0005129157, 0.0019564694, -0.0006268835, 0.0001768889, + -0.0010031800, -0.0022363891, 0.0041186903, -0.0022261008, -0.0018456271, + -0.0007675411, -0.0001511687, 0.0019409815, 0.0018124888, 0.0018943051, + 0.0003301194, 0.0007475470, 0.0006056209, -0.0018005585, 0.0024150754, + -0.0044679181, -0.0005519264, -0.0004465873, 0.0041253413, -0.0005710614, + 0.0019311318, -0.0009326340, 0.0033632792, -0.0017046309, 0.0015187950, + -0.0016784039, -0.0022476071, 0.0021811198, 0.0008827130, -0.0001313367, + -0.0021723562, 0.0017821230, -0.0012396574, 0.0022047381, -0.0004053987, + 0.0004135118, -0.0007880856, 0.0017450778, 0.0000427915, 0.0021096035, + 0.0003471681, 0.0010307011, 0.0020085690, 0.0031800927, 0.0012834896, + 0.0014543794, 0.0003789845, -0.0034309737, 0.0009536620, 0.0009356777, + -0.0006295368, 0.0011995394, -0.0006042949, -0.0008412275, 0.0022047304, + 0.0006795521, 0.0034165056, 0.0009010392, 0.0006666142, 0.0001300471, + 0.0002113213, 0.0014978200, 0.0013998761, 0.0015745922, -0.0001371640, + 0.0005536107, -0.0030653761, 0.0021385509, -0.0008774465, 0.0005205213, + -0.0011389526, 0.0012881095, -0.0000598079, 0.0007242938, -0.0002119998, + 0.0004303653, -0.0020431133, -0.0016281930, 0.0005082593, -0.0016517350, + -0.0008157464, -0.0022332554, 0.0019028903, 0.0000533285, -0.0013361168, + -0.0027164123, 0.0009862327, 0.0015339942, 0.0005396102, -0.0004349677, + 0.0002464649, 0.0007783975, 0.0005550052, -0.0011964105, -0.0000829492, + 0.0017446809, -0.0005576955, 0.0025959497, -0.0003136401, 0.0035119732, + -0.0021423420, -0.0022421279, -0.0008384530, 0.0014919981, -0.0005473089, + 0.0024675541, -0.0002533901, -0.0007098635, -0.0010133045, -0.0005164896, + 0.0006969273, 0.0004709592, -0.0019349647, -0.0025099886, -0.0010290615, + -0.0018882186, -0.0016343675, -0.0001807117, -0.0002685599, 0.0003833007, + -0.0010617925, 0.0009853725, 0.0006011520, 0.0017553847, 0.0025781333, + 0.0015866954, -0.0005195383, -0.0019791760, -0.0010618080, -0.0029761698, + -0.0012150872, 0.0006530737, 0.0029671967, 0.0045817364, -0.0023910822, + 0.0006703376, 0.0027996469, 0.0010999145, -0.0022692697, -0.0031139455, + 0.0026921118, -0.0002448480, -0.0026295655, 0.0010691031, -0.0006785896, + 0.0008971847, 0.0008349854, -0.0018382615, 0.0020759802, -0.0001722863, + -0.0015429934, -0.0006759837, 0.0030977488, -0.0038745461, -0.0006170292, + 0.0007624067, -0.0129747940, 0.0005325024, 0.0013948502, -0.0000874242, + 0.0004426111, 0.0015160218, 0.0006803135, 0.0021303857, -0.0018390887, + 0.0010232227, 0.0010169684, -0.0023496454, 0.0028485544, -0.0035446878, + 0.0004821578, -0.0041520568, -0.0004709256, -0.0001487345, 0.0001847271, + -0.0030691903, -0.0009795697, -0.0015954002, -0.0020172889, 0.0001098984, + 2.4015460014, -0.0042432011, 0.0010558479, -0.0008884751, -0.0015384767, + 0.0013598539, 0.0018714294, 0.0007458562, -0.0013700798, -0.0006089043, + -0.0023889313, -0.0006578878, 0.0015851307, 0.0004765070, 0.0015484197, + 0.0023631481, 0.0003452434, -0.0002675978, -0.0022161491, -0.0006235435, + 0.0017402950, 0.0010632239, 0.0036743144, 0.0012479466, -2.4006395340, + 0.0007700832, -0.0032633890, -0.0020917184, -0.0010455591, -0.0009170067, + -0.0019683181, -0.0008221794, -0.0022128634, -0.0001490135, -0.0012213355, + -0.0016752463, -0.0025921008, -0.0008525494, 0.0000387093, 0.0008547031, + 0.0012295595, -0.0016061421, 0.0014673565, -0.0017065690, -0.0004212493, + -0.0010955329, 0.0007360474, 0.0001451999, 0.0049924492, 0.0019660029, + 0.0035094260, 0.0622355677, -0.0006973292, 0.0031410912, 0.0001679067, + -0.0026643262, 0.0000949332, -0.0010479339, -0.0011573238, 0.0002731636, + 0.0003838520, -0.0020309947, -0.0014894927, 0.0906296074, 0.0013715706, + -0.0007035689, 0.0000300519, -0.0001619529, 0.0000061961, 0.0009683277, + -0.0001565723, -0.0029134476, 0.0032221978, 0.0030710085, -0.0010994732, + -0.0020898962, 0.0002869130, 0.0010793820, 0.0015500325, 0.0017189933, + -0.0016639116, -0.0025936347, -0.0013950933, 0.0006037681, -0.0009026972, + 0.0002984703, -0.0022455817, 0.0025159481, 0.0002812941, 2.2661964893, + -0.0006233724, -0.0002014383, 0.0004759423, 0.0013099948, 0.0010274982, + 0.0020725930, -0.0011645444, 0.0017187679, -0.0000729703, 0.0007869676, + 0.0014839291, -0.0005936655, 0.0018964414, 0.0006683902, 0.0012665744, + -0.0019938932, 0.0010929352, 0.0410460085, -0.0005837609, -0.0003254747, + -0.0007515624, 0.0030478430, 0.0004582343, 0.0004482148, -0.0004329870, + 0.0034700092, 0.0021585932, 0.0015173688, -0.0022146101, 0.0060458714, + -0.0068015996, -0.0000364212, 0.0008717766, 0.0008630250, -0.0004933407, + 0.0014387763, 0.0021113153, -0.0000132807, -0.0006342659, 0.0011555008, + -0.0018644426, 0.0005947505, 0.0041143741, 0.0004203904, -0.0003170857, + -0.0016937428, 0.0024373201, 0.0004983437, 0.0030414641, -0.0021191086, + -0.0007382086, -0.0000329395, -0.0012211553, -0.0005789058, -0.0000935649, + 0.0164472461, -0.0019428703, -0.0012476742, 0.0021721125, -0.0001069794, + 0.0031730460, 0.0018661339, -0.0037098480, 0.0005514484, -0.0007025051, + 0.0018969774, -0.0000406671, 0.0014627317, 0.0003364470, -0.0007642037, + 0.0014716696, -0.0008249388, 0.0004449774, -0.0002154461, 0.0020008460, + -0.0010442934, -0.0000000075, -0.0004604375, 0.0002407227, -0.0007892586, + 0.0000456828, -0.0010818252, -0.0005866407, 0.0002075620, 0.0047862846, + -0.0000334445, -0.0032227230, 0.0021841507, -0.0032719120, -0.0010811980, + -0.0010827167, 0.0004443116, 0.0002808857, 0.0011362801, -0.0001637500, + 0.0006037131, -0.0031254757, 0.0013459092, -0.0036025746, 0.0010124953, + -0.0018673157, -0.0009494140, 0.0017274804, 0.0011901978, 0.0002801194, + 0.0012633065, -0.0005246086, -0.0004991964, -0.0030827438, 1.4358909130, + 0.0033087011, 0.0002261857, -0.0005721264, -0.0005393547, 0.0003847517, + -0.0021104664, -0.0000293419, 0.0010356270, 0.0016464205, -0.0017950363, + -0.0023215837, 0.0002167788, -0.0000271928, 0.0005820021, 0.0001684274, + 0.0016556487, 0.0004601517, -0.0012741499, -0.0014896295, -0.0031006054, + -0.0010997066, -0.0009348751, 0.0003087369, -0.0017154531, -0.0013540541, + -0.0008342490, -0.0014375787, 0.0007003858, -0.0051834527, 0.0009466717, + 0.0032985040, 0.0018612696, -0.0027575484, -0.0024845251, -0.0005135080, + 0.0008382092, 0.0004041152, -0.0007963093, -0.0011023469, 0.0015621893, + -0.0004811715, -0.0010350121, -0.0011252309, 0.0001233601, 0.0006192999, + -0.0001381107, -0.0003656158, -0.0011899886, 0.0002685725, 0.0011420310, + 0.0005657672, -0.0019891490, -0.0001390423, -0.0025697416, 0.0012971940, + 1.8822691441, 0.0003717472, -0.0002348367, 0.0032116331, 0.0005058222, + 0.0024080728, 0.0005630264, 0.0007536188, 0.0005369363, 0.0019251972, + 0.0016624958, 0.0000980515, 0.0015542279, 0.0006109760, 0.0023861038, + 0.0005376311, 0.0021201526, -0.0010214085, -0.0017893014, -0.0012693792, + -0.0022344128, 0.0005631911, -0.0025537983, 0.0019157585, -0.0007484276, + -0.0003366652, -0.0009106118, -0.0023705040, -0.0006975520, 0.0013534348, + 0.0002383138, 0.0009406630, -0.0032743970, 0.0007690091, -0.0014856919, + -0.0000097833, -0.0007459699, 0.0002561877, -0.0003456729, 0.0009752493, + 0.0020573211, 0.0018670876, -0.0010523852, -0.0010719798, 0.0002628944, + 0.0004945728, -0.0006413613, 0.0002658557, 0.0007497881, -0.0013351063, + 0.0008378262, -0.0037462946, 0.0003620810, -1.6954530478, -0.0008534656, + 0.0097770635, -0.0026022240, -0.0012275237, 0.0024696637, -2.3209295273, + 0.0009794957, -0.0017541777, 0.0007654130, -0.0004818393, -0.0002798147, + -0.0006307615, 0.0004024003, 0.0020834194, -1.4802647829, 0.0001585218, + 0.0012964450, -0.0006970938, 0.0022255466, -0.0016968488, -0.0008869460, + -0.0019574561, 0.0016383585, -0.0015083617, 0.0016181599, -0.0007790658, + 0.0013550287, 0.0004599183, 0.0015313271, -0.0021309997, -0.0006860062, + 0.0003948524, -0.0023839872, -0.0010129097, -0.0038242261, 0.0025952328, + 0.0018461044, -0.0000341993, 0.0018396191, -0.0005760822, 0.0016200959, + -0.0004100997, 0.0011914248, 0.0020598881, 0.0033072317, -0.0002753157, + 0.0007331108, 0.0002455795, -0.0013224166, 0.0000334103, -0.0031690691, + 0.0008550119, -0.0004995209, 0.0008005661, -0.0004911267, -0.0012944844, + 0.0029699327, -0.0034619682, 0.0024385271, 0.0007353364, -0.0006145255, + -0.0013303601, 0.0006980720, -0.0006995667, 0.0007649576, -0.0002659516, + 0.0017922781, -0.0014207121, 0.0002968486, -0.0017713709, -0.0006439830, + 0.0004345579, 0.0007632913, -0.0007801488, -0.0008991356, 0.0016121119, + -0.0009459420, -0.0011094968, 0.0009541395, 0.0008958308, -0.0009424933, + 0.0017497931, -0.0012550124, 0.0008550400, -0.0005117436, 0.0014067353, + -0.0006526848, 0.0004728492, -0.0005999161, -0.0009830948, 0.0011399379, + 0.0014047858, 0.0004258091, -0.0003525474, -0.0002751304, -0.0008442965, + 0.0024011356, -0.0022633737, -0.0041409386, 0.0014954756, 0.0002332474, + -0.0021666232, 0.0020687948, 0.0026696748, -0.0021614085, -0.0000613721, + -0.0011304724, -0.0007843241, 0.0010638321, -0.0000165541, -0.0000944439, + 0.0002227970, -0.0000816477, -0.0003574908, -0.0016064392, 0.0009733218, + -0.0011812116, 0.0001069928, 0.0021790978, -0.0010641757, -0.0033823135, + 0.0006986745, 0.0014521810, -0.0025366324, -0.0003399608, -0.0014947541, + 0.0004362492, -0.0003206967, 0.0017534595, -0.0004878384, 0.0002967454, + -0.5766999722, -0.0014839489, 0.0006207331, -0.0001677178, 0.0016745131, + -0.0001606964, -0.0005449748, -0.0031242559, 0.0013106177, 0.0017433646, + 0.0000525280, -0.0004580842, -0.0003637252, 0.0008291120, 0.0016983249, + -0.0008086560, 0.0009957487, 0.0011592014, -0.0000728639, -0.0015900019, + 0.0008160551, 0.3917968869, 0.0020217465, -0.0021570101, -0.0006825582, + -0.0007997430, 0.0015728225, 0.0002821069, -0.0012921505, 0.0013524471, + 0.0015491098, 0.0008273907, -0.0009110165, 0.0009590224, 0.0025606107, + 0.0003504823, -0.0007778057, 0.0018767719, 0.0004804069, 0.0008169618, + -0.0015869278, -0.0023448709, -0.0013796063, -0.0000967388, 0.0018377705, + -0.0013809085, -0.0022224677, 0.0033163968, -0.0001993096, 0.0022667069, + -0.0010011793, -0.0002461700, 0.0008892980, -0.0000893081, -0.0024623685, + 0.0008517733, -1.4898587465, 0.0019646976, -0.0016062777, 0.0011376480, + -0.0004856910, -0.0004982601, -0.0008387554, -0.0014526804, 0.0008080357, + -0.0025769132, 0.0003588708, 0.0001699621, 0.0012878417, 0.0016233921, + -0.0001184084, 0.0004211577, -0.0017410074, -0.0001977463, -0.0017250599, + -0.0024030916, 0.0021358142, 0.0020091697, -0.0021179761, -0.0014639371, + 0.0016613891, 0.0005573048, 0.0004726802, -0.0026586363, 0.0002498161, + 0.0004469859, -0.0003704219, -0.0010355511, -0.0011712228, -0.0012635984, + 0.0019138926, 0.0008332259, -0.0026692678, 0.0001381332, -0.0005561912, + -0.0006044586, 0.0015936699, -0.0003357703, 0.0014140811, 0.0007219855, + 0.0013491632, -0.0001604799, -0.0307675432, -0.0023926694, 0.0012761211}; + +float unet_input_time_embedding_50_21[] = { + 0.0007075663, -0.0032147258, 0.0013843123, 0.0017958423, 0.0009284748, + 0.0022933208, 0.0006670565, 0.0000391384, -0.0010847053, 0.0030064627, + -0.0014741144, -0.0018238719, -0.0002765856, 0.0024107988, 0.0010671914, + -0.0015141610, -0.0005505495, 0.0016123725, 0.0006334364, -0.0007076203, + -0.0014448706, 0.0015715910, -0.0003869616, 0.0094022900, -0.0018914111, + -0.0012505034, 0.0003590742, 0.0020217458, 0.0007369901, -0.0005598264, + -0.0024608399, 0.0020725948, 0.0001655845, -0.0007316461, -0.0002985871, + -0.0015259408, 0.0005239611, 0.0006161314, 0.0031616315, 0.0007709344, + 0.0038638171, 0.0025033448, -0.0003798301, 0.0024697287, 0.0005823472, + -0.0022804202, -0.0011969164, -0.0014110608, 0.0016034720, 0.0013415681, + 0.0005454156, -0.0003723401, 0.0221806522, 0.0035243584, -0.0001085830, + -0.0011815600, 0.0019596436, -0.0013437252, -0.0006800699, -0.0014150243, + -0.0014232418, 0.0008158750, -0.0011287318, 0.0013229856, 0.0010582749, + 0.0020633573, 0.0005314937, 0.0008880090, 0.0007753316, -0.0010109858, + -0.0009500482, -0.0005466903, 0.0030129843, -0.0007388648, 0.0008900445, + -0.0007845378, 0.0022732532, -0.0021497319, 0.0011664841, -0.0007281655, + -0.0003175671, 0.0001688168, -0.0019736611, -0.0000848752, -0.0024781756, + -0.0015978266, 0.0023668366, -0.0032883361, 0.0010928418, 0.0003008093, + 0.0011826797, 0.0015164302, 0.0003018435, -0.0011502440, 0.0047909929, + 0.0004142914, -0.0000698231, -0.0014226530, 0.0001036564, 0.0024679396, + 0.0023545241, 0.0035729636, 0.0008748001, 0.3192170858, 0.0002176429, + 0.0003584893, -0.0003100159, -0.0004874226, 0.0010708217, -0.0009847251, + 0.0007460108, -0.0023379168, 0.3848619163, 0.0013617137, -0.0008323099, + -0.0001569833, 0.0013672258, -0.0017775910, 0.0007743826, -0.0004774670, + -0.0019955314, -0.0008743650, -1.8943632841, 0.0025223410, 0.0008588526, + -0.0015354909, -0.0016967286, -0.0003280318, 0.0011677579, 0.0027686688, + -0.0000393512, -0.0016676970, 0.0027529125, -0.0018597748, 0.0000852528, + -0.0010334037, 0.0000332003, -0.0001996076, 0.0002555382, -0.0007152488, + 0.0013514266, -0.0008506537, 0.0001716909, -0.0007937672, 0.0034195611, + -0.0016702875, 0.0016359822, -0.0026304587, -0.0014559915, -0.0004710937, + 0.0028256781, -0.0005677034, -0.0015574493, 0.0019880375, -0.0003034757, + -0.0024958276, 0.0006616795, -0.0015956899, -0.0009623747, -0.0035751094, + 0.0022036084, -0.0012945972, -0.0023922157, -0.0030842638, 0.0000328645, + -0.0030081014, 0.0005364530, -0.0027217013, -0.1609425694, -0.0005677741, + 0.0012885524, 0.0025712759, 0.0021361751, 0.0025236546, 0.0022725645, + -0.0028617438, -0.0024961089, 0.0006968714, -0.0028720330, -0.0018696943, + 0.0006748042, -0.0062480532, -0.0023047314, 0.0002808454, -0.0002113250, + 0.0005895090, -0.0030004866, -0.0001659547, 0.0013159537, 0.0027077426, + 0.0032446042, 0.0004568887, -0.0004406016, 0.0008896349, 0.0007021045, + -0.0004258943, -0.0004554511, 0.0010663290, 0.0014456585, 0.0017608744, + 0.0024196235, -0.0014909054, -0.0006421730, -0.0002575445, 0.0019690641, + 0.0024260636, -0.0003853829, -0.0026220572, -0.0041479021, -0.0013415169, + 0.0010338831, 0.0027571034, 0.0021696414, 0.0007153584, -0.0009760951, + 0.0021197759, 0.0006322460, 0.0020347792, 0.0003904334, 0.0021954640, + 0.0003501354, -0.0004841037, 0.0002371890, 0.0056860698, -0.0003015839, + -0.0000344594, -0.0014618095, 0.0042603877, -0.0031558352, 0.0011964631, + 0.0038623447, -0.0008001300, -0.0000506341, -0.0013045897, -0.0005822182, + -0.0005602660, 0.0032558166, -0.0021411814, -0.0002894197, 0.0016348972, + -0.0012671214, -0.0011124383, 0.0037226195, -0.0006587263, -1.5213050842, + -0.0009446386, 0.0012246566, 0.0022149426, -0.0010718605, 0.0005927843, + 0.0010072701, 0.0010892204, 0.0008520782, -0.0008529723, -0.0020263065, + 0.0001807574, -0.0016677012, -0.0016256481, 0.0010332796, -0.0016688997, + -0.0004909551, -0.0006365797, -0.0017545994, 0.0005289962, -0.0005742594, + -0.0034907456, 0.0049720411, 0.0000635087, 0.0009660674, 0.0016814813, + -0.0016674735, 0.0027078118, -0.0008547781, 0.0016022800, 0.0028394389, + 0.0036562651, 0.0003619054, 0.0023583686, 0.0009843912, -0.0008560675, + 0.2155903578, 0.0023761811, 0.0011570846, 0.0005420386, -0.0001040972, + 0.0005463678, 0.0030036271, 0.0004311359, -0.0004130052, -0.0020075506, + 0.0020269193, 0.0002872196, 0.0021963420, 0.0018715544, 0.0016140714, + -0.0030729529, 0.0008667293, 0.0002836180, -0.0005808049, 0.0004099482, + 0.0012886524, -0.0000286817, 0.0008361122, 0.0011837478, 0.0019227958, + 0.0012716390, -0.0023782337, 0.0010096338, 0.0008211546, -0.0000309353, + -0.0003188850, 0.0010590474, 0.0000761084, -0.0010808618, 0.0009166598, + -0.0022082212, 0.0018175213, -0.0011638389, 0.0020447914, -0.0013941457, + 0.0004061500, 0.0033509671, 0.0010946239, -0.0017055124, -0.0024094232, + -0.0013758200, 0.0031895991, -0.0008539984, -0.0789607242, 0.0011163377, + 0.0012347659, 0.0014012842, -0.0004570193, 0.0004675114, 0.0025521545, + -0.0035067685, 0.0000489058, 0.0022687307, -0.0026070969, 0.0018319613, + -0.0000742837, 0.0013341310, -0.0011939171, 1.8495048285, 0.0021820583, + -0.0005046376, 0.0006104590, 0.0002470989, -0.0011336214, 0.0001762915, + -0.0014186723, 0.0024476964, 0.0007493291, 0.0016574902, 0.0004983126, + -0.0006601922, 0.0009179937, -0.0001999595, -0.0021834769, 0.0023843576, + -0.0009467029, -0.0001851912, 0.0034887521, 0.0026006536, -0.0017990662, + -0.0002301666, 0.0014178907, 0.0022397181, 0.0002592020, -1.5564579964, + 0.0002230788, 0.0011116327, 0.0011031979, -0.0007203873, 0.0026384776, + 0.0005506036, 0.0005086038, -0.0009348087, 0.0023297041, -0.0024556066, + 0.0008951604, 0.2271041274, 0.0014631033, -0.0002036369, 0.0003969888, + 0.0012183581, 0.0006744736, -0.0018644342, 0.0012290240, -0.0002077245, + -0.0004889201, 0.0002773997, -0.0006163972, -0.0017304241, -0.0001368478, + -0.0005932008, -0.0023702141, -0.0011746761, -0.0006560800, -0.0028067417, + -0.0002761662, 0.0012753755, -0.0004516856, -0.0006139055, -0.0009271400, + 0.0035528061, 0.0000009219, -0.0030426383, -0.0011523787, 0.0012334101, + 0.0000776988, 0.0021117043, -0.0007646696, -0.0028554574, 0.0004186668, + -0.0009290136, 0.0025333595, 0.0014671792, 0.0014628880, 0.0009823265, + 0.0009866231, -0.0004878871, 0.0015888116, 0.0017076230, 0.0014629466, + 0.0040199268, -0.0014311252, -0.0022590996, -0.0009484030, 0.0003576088, + -0.0024815728, 0.0003880863, 0.0003663234, 0.0002204664, 0.0011959552, + -0.0015526181, 0.0021602409, 0.0041171024, -0.0024120272, 0.0015300608, + 0.0007133102, -0.0000801780, -0.0010116888, -0.0004319183, 0.0004332487, + -0.0008855890, -0.0008991905, -0.0027066069, 0.0008440008, 0.0045858035, + -0.0005131220, 0.0001829192, 0.0000532318, 0.0022191843, 0.0003228744, + 0.0008198516, -0.0009912038, 0.0025224593, -0.0028628255, -0.0016292435, + -0.0004842472, -0.0017806692, -0.0002319382, 0.0013432183, 0.0025025979, + 0.0020712987, 0.0016786223, -0.0024656374, 0.0025430750, 0.0011832747, + 0.0015131149, 0.0020420013, -0.0019761017, 0.0000013027, -0.0020533553, + -0.0083255619, 0.0004591774, -0.0010752276, 0.0014435314, -1.0811171532, + -0.0035772235, -0.0009429292, 0.0034635654, 0.0005286655, -0.0002538219, + -0.0019218550, 0.0007321539, 0.0012483755, 0.0017217756, 0.0002721522, + -0.0003306903, 0.5670624375, 0.0004232661, 0.0012476277, 0.0023989580, + -0.0032549582, 0.0011946140, 0.0015288577, -0.0018039499, 0.0001206165, + -0.0013709930, 0.0015693987, -0.0030338876, -0.0002508285, -0.0008973274, + -0.0000554568, 0.0019296040, -0.0015492196, 0.0032428233, -0.0020866548, + 0.0029879443, -0.0008600187, -2.1760585308, 0.0018377034, 0.0006103775, + 0.0020067990, -0.0001981552, 0.0020660767, 0.0029823966, -0.0030803643, + -0.0005668551, -0.0005963808, 0.0009377315, 0.0000326550, 0.0017686123, + 0.0022727977, 0.0018584242, 0.0020778547, 0.0022514975, -0.0009802002, + -0.0007347607, 0.0009958940, 0.0000615045, -0.0022515727, 0.0010387518, + -0.0006639494, -0.0016485781, -0.0012805471, -0.0004951600, -0.0008426988, + 0.0009337971, -0.0025790138, 0.0007142424, 0.0008488945, 0.0006403266, + 0.0007884568, -0.0002742158, -0.0000157380, 0.0011772150, 0.0011498863, + -1.6338816881, 0.0005773134, 0.0033824951, -0.0052511934, 0.0005083648, + 0.0014397582, -0.0007152427, 0.0017118310, 0.0001977850, -0.0018100897, + 0.0013571940, 0.0008364193, 0.0024720109, -0.0004179506, 0.0007772420, + 0.0003390098, 0.0002350775, 0.0024031494, -0.0027188561, 0.0018866225, + -0.0043988805, 0.0007103570, -0.0013547782, 0.0017539191, 0.0011205550, + -0.0001402115, -0.0022515042, 0.0036024046, 0.0014660996, 0.0011392201, + -0.0012249597, -0.0022947679, 0.0042775157, 0.0022596763, 0.0013134079, + -0.0025961462, 0.0008949526, -0.0019173594, 0.0013180738, -0.0002273177, + 0.0004482352, -0.0034396355, -0.0004391950, 0.0001133680, 0.0003781038, + 0.0014474542, 0.0008172878, 0.0003450476, 0.0019329521, 0.0004419964, + -0.0000668061, 0.0003808513, 0.0015892880, 0.0023989049, 0.0002259084, + -0.0004097803, -0.0020159362, 0.0008938324, 0.0022328692, 0.0036376179, + 0.0002571661, 0.0023957242, -0.0002367874, -0.0035114060, 0.0007128646, + 0.0020656162, 0.0006732414, 0.0000383980, -0.0006127185, 0.0014452494, + 0.0004016650, 0.0006570845, 0.0019519916, -0.0018452033, -0.0011905711, + 0.0015767561, -0.0007785556, -0.0026940966, -0.0006193598, 0.0014632060, + 0.0027503418, 0.0002615647, -0.0000700093, 0.0005835562, -0.0024520527, + 0.0018639816, -0.0023494184, 0.0012023490, 0.0009394162, 0.0015487589, + -0.0007740356, 0.0014285597, 0.0005996248, 0.0002913030, -0.0018184944, + 0.0017303351, 0.0006160010, 0.0009111769, 0.0005481874, 0.0026726089, + -0.0004824709, 0.0003443900, 0.0005207777, -0.0004988424, 0.0014021657, + 0.0001904422, -0.0025629411, 0.0011565518, -0.0004283006, -0.0010546008, + 0.0022122199, -0.0004430790, -0.0015358945, -0.0019632340, -0.0024173488, + 0.0006917976, 0.0031616818, -0.0003070380, -0.0035367922, 0.0004151004, + -0.0007040279, 0.0024841551, 0.0014141246, 0.0014544388, 0.0021617301, + 0.0006418880, 0.0009591562, 0.0005797260, 0.0005624155, 0.0010515419, + -0.0010186067, -0.0006983434, -0.0003740904, -0.0007104516, -0.0013380256, + 0.0010025972, 0.0012783268, -0.0012338855, 0.0035967967, -0.0022584472, + -0.0003530635, 0.0020546140, 0.0023342620, 0.0011896815, -0.0019959682, + 0.0002614623, -0.0023668460, -0.0008268263, -0.0013688630, -0.0000334615, + 0.0013553970, -0.0007780548, -0.0031009859, -0.0005756889, 0.0005354653, + -0.0016451520, -0.0009668139, 0.0028159940, -0.0017001883, 0.0012436393, + 0.0018728636, -0.0109720649, 0.0000693994, -0.0003847061, 0.0019523283, + -0.0016008406, 0.0008647032, -0.0011511925, 0.0027767268, -0.0009803576, + -0.0008114427, 0.0003943220, 0.0011373826, -0.0005564886, -0.0019212451, + 0.0003224979, -0.0027538370, 0.0000831550, -0.0026288873, -0.0001623821, + 0.0008030189, -0.0002911389, 0.0002103457, 0.0016106977, 0.0019766674, + 2.2865056992, -0.0007330324, 0.0013131790, 0.0018217764, -0.0019654874, + 0.0010509030, -0.0011345688, 0.0009605372, -0.0017795740, 0.0010833582, + -0.0041647297, -0.0004823705, 0.0024436815, -0.0030227308, 0.0014254460, + 0.0005611600, 0.0019058210, 0.0000081002, -0.0022949097, 0.0004631204, + 0.0025077439, 0.0017904900, 0.0027945074, -0.0001255625, -2.4290747643, + 0.0008360287, -0.0013200336, 0.0005366523, -0.0005985079, -0.0001059682, + -0.0017813602, -0.0015389839, -0.0007910373, -0.0015074075, -0.0008718506, + -0.0005259670, 0.0002507707, -0.0008867765, -0.0003268567, 0.0014138180, + 0.0003246942, 0.0005671326, 0.0009798445, -0.0018815231, 0.0012354497, + -0.0009407750, -0.0012694489, -0.0012644550, 0.0061575961, 0.0024130815, + 0.0020270576, 0.0867026597, -0.0015593981, 0.0022387132, -0.0022019823, + -0.0034643584, -0.0004070157, -0.0006744867, -0.0043031219, -0.0005825188, + 0.0004323958, 0.0021390580, -0.0023159923, 0.0816713721, 0.0030296240, + -0.0023976383, 0.0016083547, 0.0020308127, -0.0000000773, -0.0003367951, + -0.0015697563, -0.0016088407, 0.0007058317, 0.0026573280, -0.0012226439, + -0.0037068264, -0.0011019555, 0.0017928259, 0.0013306113, 0.0017343452, + -0.0002332688, 0.0011811461, -0.0002271938, 0.0007435801, 0.0002030560, + 0.0046092113, -0.0006347854, 0.0004019901, 0.0010894306, 2.2524659634, + -0.0008708276, 0.0015979961, 0.0020468696, 0.0004702827, 0.0046626646, + 0.0000943867, 0.0010197787, 0.0011145403, -0.0019212610, -0.0002292409, + -0.0010135497, -0.0004606573, 0.0014394491, -0.0000988906, 0.0023566927, + 0.0006858353, -0.0014038612, 0.0167050343, -0.0015028478, 0.0005417116, + 0.0015655980, 0.0021804017, -0.0004968632, -0.0010409243, -0.0020224180, + 0.0015823813, 0.0003489864, -0.0013406702, -0.0007931204, 0.0046050688, + -0.0129604246, 0.0027575931, 0.0003402778, 0.0004603274, -0.0017373799, + 0.0015425766, 0.0011646315, -0.0004498521, 0.0004763032, 0.0027377729, + -0.0013906183, -0.0007292650, -0.0004613167, -0.0003566847, 0.0000810054, + -0.0007229941, -0.0002053031, -0.0011787866, 0.0006043399, -0.0009110007, + 0.0009823935, 0.0003229901, -0.0025186487, 0.0004841125, -0.0008236102, + 0.0022384590, 0.0017234798, 0.0044628726, 0.0011819169, -0.0006893512, + 0.0019587267, 0.0012779036, -0.0010145288, 0.0009390477, -0.0009658603, + 0.0018241995, 0.0017466117, 0.0002095099, -0.0028308290, 0.0012489185, + -0.0010972649, -0.0016524822, 0.0005738029, 0.0000939113, 0.0015862817, + 0.0004711254, 0.0019616242, -0.0023429454, 0.0003069183, 0.0018359656, + 0.0008228403, -0.0004989542, -0.0014180277, -0.0007972294, 0.0033209105, + -0.0002807621, -0.0016252090, 0.0015930962, -0.0042599086, 0.0004285611, + -0.0005188615, 0.0012790682, -0.0017083852, -0.0012938748, -0.0018892591, + -0.0019171196, -0.0024893708, 0.0015438236, 0.0005942904, 0.0033075996, + -0.0009583123, 0.0019483087, 0.0004747398, 0.0014048007, 0.0017300419, + 0.0040277056, -0.0018947885, 0.0014667240, -0.0034137759, 1.3882766962, + 0.0027424602, -0.0000439575, 0.0032308502, -0.0021347275, 0.0001053475, + 0.0017435336, -0.0011223530, 0.0012167832, 0.0003495221, -0.0004527937, + 0.0016498206, 0.0015884307, 0.0020345207, 0.0012161706, 0.0021128268, + 0.0000322680, 0.0000793372, 0.0007992014, -0.0026060161, -0.0005185618, + -0.0005501900, -0.0009764312, 0.0001460041, -0.0004293253, 0.0006602631, + 0.0004165471, 0.0015793401, 0.0027613929, -0.0032128710, -0.0016399045, + -0.0000042098, 0.0012989426, -0.0010378929, -0.0011216155, 0.0004635025, + 0.0000412553, 0.0029627751, -0.0000937075, -0.0003444022, 0.0004509855, + -0.0014049341, 0.0010169504, 0.0009917193, 0.0011407832, 0.0001146416, + 0.0002127879, 0.0008256724, 0.0005340101, -0.0008169706, 0.0017633364, + -0.0002890272, -0.0002276602, -0.0018705181, 0.0004084082, -0.0010660123, + 1.7530876398, 0.0002050831, 0.0034063496, 0.0010679096, -0.0011977928, + 0.0012351184, -0.0002555270, -0.0001605958, -0.0007325774, -0.0004189418, + -0.0010993343, -0.0029004747, 0.0030002529, 0.0021302558, 0.0003027214, + 0.0006280309, 0.0028820327, -0.0018873150, -0.0021136678, 0.0018584034, + -0.0003478825, -0.0005592782, 0.0005229367, 0.0007143747, 0.0006234846, + -0.0011247545, 0.0020571896, -0.0022814481, 0.0006880299, 0.0012412802, + -0.0015672580, -0.0008756460, 0.0003364120, -0.0001209576, -0.0026499825, + -0.0001097668, 0.0010627642, 0.0007112594, -0.0007744685, 0.0021259896, + -0.0005846510, -0.0006166152, -0.0010959124, -0.0014900197, 0.0009430123, + 0.0026750485, -0.0006431658, 0.0010149156, 0.0011447613, -0.0008520889, + -0.0005853577, 0.0012946031, -0.0012831250, -1.6972804070, 0.0012061142, + -0.0138204042, -0.0001161333, -0.0000079283, 0.0022314123, -2.3137786388, + 0.0006859913, -0.0006866064, 0.0001695771, 0.0026131305, 0.0001728388, + -0.0035957056, 0.0004571669, 0.0025101202, -1.3785250187, 0.0018114215, + 0.0014740496, 0.0011867092, 0.0015857205, 0.0025743828, -0.0002414528, + -0.0005890927, 0.0022233827, 0.0013652712, 0.0012093484, -0.0006455719, + 0.0022364100, 0.0031698151, 0.0008142947, -0.0006366072, -0.0002782042, + 0.0004223345, -0.0030142027, -0.0005784384, -0.0024878816, 0.0024740752, + -0.0002539959, -0.0038902217, 0.0012510614, 0.0005146456, -0.0003426983, + -0.0019494270, -0.0002512154, 0.0023025055, 0.0024618623, 0.0024097897, + 0.0045190360, 0.0000124462, -0.0012442358, -0.0006728042, -0.0020992365, + 0.0002352335, -0.0017674896, -0.0004381763, 0.0006356684, 0.0019836845, + -0.0011534188, -0.0031914427, 0.0018837401, 0.0002798843, 0.0026180178, + 0.0003451330, 0.0013019912, -0.0015678266, 0.0029133260, 0.0012801994, + 0.0022061935, -0.0002448037, -0.0010974589, 0.0011813799, -0.0020656958, + -0.0013504438, -0.0004708196, -0.0016110032, -0.0028009783, 0.0021017636, + 0.0005879323, 0.0003245909, 0.0007737367, 0.0000292277, -0.0000327143, + 0.0019240305, 0.0004723850, 0.0016294501, 0.0024013203, 0.0020214017, + -0.0016906224, 0.0013384689, 0.0005248245, 0.0030744150, -0.0005936064, + -0.0004117717, 0.0001997445, -0.0010249576, 0.0001102965, 0.0000569532, + 0.0014578863, -0.0003570067, 0.0007734770, 0.0001362641, 0.0014245617, + -0.0013887039, 0.0015006231, 0.0033885245, 0.0018379702, 0.0012083391, + -0.0011332133, 0.0026976475, 0.0007859720, 0.0011462171, -0.0019381068, + 0.0009535630, 0.0006939000, -0.0010564488, 0.0016996162, 0.0007957505, + -0.0005329230, -0.0007305247, 0.0038276743, -0.0028100815, -0.0008882023, + 0.0004499550, 0.0012067477, 0.0001727077, 0.0021800124, 0.0015733391, + 0.0004349351, -0.0003885946, -0.0006345164, 0.0017769132, 0.0006031236, + -0.4579432905, 0.0014572348, -0.0018126153, 0.0015069138, -0.0007894535, + 0.0004671945, -0.0013686556, -0.0002675132, -0.0010003019, 0.0008393931, + -0.0004383512, 0.0007600141, -0.0030265669, 0.0019648448, 0.0022542272, + 0.0003536702, 0.0016333992, 0.0020643193, -0.0041644042, -0.0006133090, + 0.0039345887, 0.4116156101, 0.0030037526, -0.0009282185, -0.0003856239, + -0.0004225983, 0.0010748971, -0.0006261637, 0.0004979167, 0.0008692499, + 0.0017558616, 0.0014902484, -0.0006173351, 0.0005486486, -0.0005580017, + -0.0004134832, 0.0015105512, 0.0017663366, 0.0011068601, -0.0011154138, + -0.0007294670, -0.0012924946, -0.0001114830, -0.0005706563, 0.0017809384, + -0.0007846954, -0.0022455105, 0.0030616405, -0.0038383324, -0.0003975816, + -0.0000663219, -0.0019112555, -0.0012690090, 0.0007362143, -0.0006673355, + -0.0001164576, -1.5011588335, -0.0015807268, -0.0011053006, 0.0005269435, + 0.0005116086, -0.0010612255, 0.0005711992, -0.0004950396, 0.0000185929, + -0.0003147312, -0.0013705752, -0.0015385608, 0.0026590500, -0.0009028297, + -0.0019696266, 0.0009266172, 0.0005055577, 0.0006864406, -0.0006340640, + -0.0013723364, 0.0009817248, 0.0009699143, 0.0013555114, -0.0008813525, + 0.0016870727, 0.0012365901, 0.0008876389, -0.0025176313, 0.0026093868, + 0.0010812016, 0.0011378550, -0.0008095051, -0.0030987635, -0.0008742032, + -0.0000772872, 0.0008716243, -0.0006369995, -0.0011584676, -0.0011512146, + -0.0010339096, 0.0000068336, -0.0003210669, 0.0000397791, -0.0001784777, + -0.0003092056, -0.0004630648, -0.0203816611, 0.0014052743, 0.0004132223}; + +float unet_input_time_embedding_50_22[] = { + 0.0009249151, -0.0011700403, -0.0007703900, 0.0002409440, -0.0014818509, + -0.0010237610, 0.0023486577, -0.0028878744, 0.0001426658, 0.0010584604, + 0.0000012710, -0.0004110713, -0.0005037263, -0.0015937993, 0.0019263458, + 0.0004559141, 0.0004300759, -0.0005214030, -0.0008127816, 0.0021506697, + 0.0035350281, -0.0015559932, 0.0022675386, 0.0094338357, 0.0003275678, + 0.0000077703, 0.0009237500, 0.0008205082, -0.0020070430, 0.0000406345, + -0.0003149172, -0.0011460967, -0.0015325248, -0.0013024486, -0.0006719111, + -0.0005995990, 0.0000674492, -0.0014962389, 0.0001752675, -0.0006950828, + -0.0005099983, 0.0005238960, -0.0012684860, 0.0003415076, 0.0010255266, + -0.0004712124, -0.0013251401, -0.0024202187, -0.0015019276, -0.0021524322, + 0.0003664233, -0.0014595374, 0.0627365932, 0.0012938152, 0.0015354689, + -0.0029387635, -0.0005220151, 0.0020396844, 0.0000574668, -0.0008289462, + 0.0003691700, 0.0016005688, 0.0027431049, -0.0022614752, 0.0000370573, + 0.0016478822, -0.0003550891, 0.0007366812, -0.0023411391, 0.0003653399, + -0.0010325308, -0.0006994409, 0.0004571739, -0.0002487879, -0.0028037154, + 0.0000475831, 0.0003389649, -0.0010621464, 0.0022927891, 0.0009602301, + 0.0009920030, 0.0013182597, -0.0006155137, 0.0009242939, -0.0039230241, + -0.0021334079, 0.0018843566, -0.0012845455, 0.0021075243, 0.0024442142, + 0.0003413279, 0.0004746425, -0.0014496041, -0.0025070165, 0.0049216510, + -0.0007988177, 0.0001592971, 0.0012015491, -0.0006336328, -0.0017029159, + -0.0012576091, -0.0009771348, -0.0015533766, 0.2580742538, -0.0008512833, + 0.0012996821, -0.0013283473, -0.0004181135, -0.0065744198, -0.0015422944, + 0.0006975811, -0.0004044175, 0.3815984428, 0.0021127583, 0.0001283959, + -0.0027778400, 0.0002365792, 0.0021608227, 0.0030028387, -0.0031055587, + -0.0005204794, 0.0010330502, -1.8068988323, 0.0001658569, 0.0006988179, + -0.0017910863, 0.0010997439, 0.0027607656, -0.0017288169, 0.0009736293, + -0.0000036494, -0.0040606810, 0.0011611066, 0.0004104329, 0.0019723151, + 0.0013694775, -0.0016688772, -0.0033071646, 0.0009945966, -0.0022344673, + -0.0014566055, 0.0036645811, -0.0001846559, -0.0002978104, 0.0003140259, + -0.0023987731, 0.0025531305, -0.0016087769, -0.0019617812, -0.0013416577, + 0.0021933317, 0.0011021883, 0.0000929916, 0.0005661165, -0.0008798437, + -0.0004904792, 0.0010802802, 0.0028670309, -0.0003351932, 0.0000634906, + 0.0007681064, -0.0006402727, 0.0007064063, -0.0017767092, 0.0016665007, + -0.0019705857, 0.0003855739, -0.0012004892, -0.1054593846, -0.0008001325, + -0.0000972444, -0.0001133028, -0.0013783174, 0.0000286220, -0.0027328655, + -0.0019957703, 0.0009692908, -0.0026337467, -0.0035709855, 0.0008676965, + -0.0000618878, -0.0053850655, -0.0066267671, 0.0027032390, -0.0015265772, + -0.0016293353, -0.0001721391, -0.0017693217, 0.0003164569, -0.0021181065, + 0.0037360806, 0.0009367261, 0.0022421028, -0.0000786998, -0.0006765788, + -0.0007388801, 0.0000234697, -0.0006563310, 0.0005210675, 0.0023713862, + -0.0006604111, -0.0002577021, 0.0014355052, -0.0009698861, -0.0023361226, + -0.0041804640, -0.0017778336, 0.0009704512, -0.0022178320, -0.0004073279, + 0.0014721309, -0.0001724660, -0.0002647415, 0.0021195847, -0.0018167810, + 0.0027097482, 0.0003127595, 0.0014947294, 0.0012988300, -0.0018101489, + -0.0023661898, -0.0013670395, -0.0005803241, -0.0057698535, 0.0016768449, + 0.0008248468, 0.0018432681, 0.0045369393, 0.0037784136, 0.0014387737, + 0.0010905387, 0.0005602031, 0.0003976580, 0.0023208377, 0.0006569307, + 0.0010211994, -0.0010218439, -0.0011926983, 0.0014896579, -0.0036596656, + -0.0037944017, -0.0004013933, -0.0013463574, -0.0019888654, -1.5072616339, + -0.0000252044, 0.0005067629, 0.0007663051, 0.0004698983, 0.0009772622, + 0.0009119902, -0.0046386146, 0.0013552126, -0.0053072670, -0.0004945768, + -0.0016364318, 0.0003060452, 0.0013460523, -0.0004344133, -0.0017254058, + 0.0012526149, 0.0026525867, -0.0007995076, 0.0058054649, -0.0003724511, + 0.0009517353, 0.0021654568, -0.0023693037, -0.0030413987, -0.0008580117, + -0.0010600071, -0.0009815629, 0.0016931940, -0.0013609859, 0.0013635517, + 0.0014579613, 0.0013809726, 0.0022704434, -0.0036510145, 0.0007873708, + 0.2262383252, -0.0010484457, -0.0013889767, -0.0014491249, -0.0021544634, + -0.0007550661, -0.0018641141, 0.0012476502, -0.0018690384, 0.0003276314, + -0.0016292258, 0.0000254046, -0.0015268947, -0.0025248288, 0.0005156482, + -0.0002318509, -0.0016135625, -0.0008299449, -0.0021835496, 0.0002714037, + -0.0003482811, -0.0013503775, -0.0000719834, -0.0020208550, 0.0013972421, + 0.0007714205, 0.0011867001, -0.0018741693, -0.0003161025, -0.0013714819, + 0.0014052344, -0.0015632752, 0.0013330774, -0.0000119484, 0.0015387009, + 0.0010970696, -0.0005812844, 0.0026021954, -0.0017102761, -0.0000287448, + -0.0024459960, 0.0038131266, 0.0022194041, -0.0020862236, 0.0029720473, + 0.0012775110, -0.0035246527, -0.0034508915, -0.0438963175, -0.0038170838, + -0.0001223076, 0.0030947276, 0.0017438963, 0.0020986213, 0.0013456848, + 0.0013406100, -0.0039065275, 0.0032067373, -0.0013107150, -0.0001516086, + 0.0026114723, -0.0002081506, -0.0029554092, 1.7684803009, 0.0010042721, + -0.0006533093, 0.0011262487, 0.0000769923, -0.0019231385, -0.0004098123, + 0.0023817336, 0.0003392249, -0.0006914116, 0.0027787848, 0.0001982752, + 0.0009132707, 0.0015317418, -0.0015128249, 0.0003930763, 0.0042796428, + 0.0018115519, 0.0003499300, 0.0002634721, -0.0020228080, -0.0016190462, + -0.0002863770, 0.0008947183, -0.0000233883, 0.0010547861, -1.5267360210, + 0.0004795445, -0.0010283673, 0.0006136196, -0.0007652678, 0.0015183359, + -0.0000552176, 0.0018753797, -0.0008266855, -0.0008295360, -0.0015578093, + -0.0000117392, 0.4019210935, -0.0000674101, 0.0006237901, -0.0022518076, + -0.0000555238, 0.0014868635, 0.0006768098, -0.0009289091, 0.0013578893, + -0.0005133315, 0.0019976315, 0.0018528118, 0.0019691910, -0.0001755613, + 0.0011371071, -0.0009258743, -0.0004312486, 0.0007152655, -0.0016652215, + 0.0026823513, -0.0019403491, 0.0013809262, -0.0012962329, 0.0003743619, + -0.0003660819, 0.0025974596, -0.0029513789, -0.0008055584, 0.0011551017, + -0.0015123398, -0.0004401749, 0.0002139867, -0.0017879286, 0.0019983454, + 0.0006120226, 0.0004323060, 0.0020574077, 0.0045293160, 0.0023010159, + -0.0036997800, -0.0011319851, 0.0008909102, -0.0000618875, -0.0002501989, + 0.0007553571, -0.0021806322, -0.0025251366, 0.0031103084, -0.0001798320, + 0.0017173062, 0.0010573026, 0.0008356527, 0.0000370757, 0.0002085353, + -0.0003893637, -0.0010528108, 0.0009327612, -0.0019018650, -0.0004578547, + 0.0013673222, -0.0038949605, 0.0033592614, 0.0004929563, -0.0012545513, + 0.0036035362, -0.0001830030, -0.0008465517, 0.0006873887, 0.0082850149, + -0.0026571355, 0.0015106648, 0.0013390423, 0.0040943325, -0.0009733780, + 0.0006135586, 0.0006161164, 0.0009493297, -0.0001005335, 0.0028416701, + 0.0001544282, -0.0037763352, -0.0008005881, -0.0015644950, -0.0001154095, + 0.0013817186, 0.0023097843, -0.0000550938, -0.0035321154, 0.0009078286, + 0.0005574913, 0.0024048553, -0.0001522410, 0.0000961560, -0.0015270687, + 0.0019861795, -0.0004054671, -0.0027394104, 0.0007655397, -1.0229142904, + 0.0014527626, -0.0016541660, 0.0015048822, -0.0006855463, 0.0012497948, + 0.0021609589, 0.0031868450, 0.0008216510, -0.0010785675, 0.0017516438, + 0.0027619614, 0.5012820363, -0.0006993671, -0.0016294909, 0.0020282175, + -0.0001090846, 0.0015247557, 0.0030317204, 0.0008374732, -0.0011907059, + 0.0004956867, -0.0025392873, -0.0002501854, -0.0020951866, 0.0024531437, + -0.0021275745, 0.0013596331, 0.0002852919, 0.0011688787, -0.0034288908, + 0.0011764087, 0.0012352187, -2.2058970928, -0.0029079150, -0.0016551838, + -0.0021515423, 0.0013856096, 0.0010901587, 0.0020706768, -0.0010833954, + -0.0004513459, -0.0018305895, 0.0040733963, -0.0018298584, 0.0016782386, + 0.0003519740, -0.0011609665, 0.0006818674, -0.0007599574, 0.0004295008, + -0.0020708221, 0.0012512398, -0.0012708241, -0.0023970886, 0.0034572205, + -0.0007761333, -0.0006446680, 0.0020434011, -0.0009861579, -0.0007736899, + 0.0018587648, 0.0007231818, 0.0000568707, 0.0002521798, -0.0002524233, + -0.0021267864, 0.0001324941, 0.0006226450, -0.0005864725, 0.0008593900, + -1.6330231428, 0.0039197849, 0.0001904154, 0.0022881920, -0.0001631277, + 0.0013430148, 0.0021211577, -0.0009662136, 0.0020321468, -0.0006203635, + -0.0011549625, 0.0016472660, -0.0024265000, -0.0022848819, -0.0017683497, + -0.0010263780, -0.0040027928, -0.0010653944, -0.0025214325, 0.0011189701, + -0.0021146354, 0.0016550869, -0.0001607349, -0.0046482822, 0.0007781214, + 0.0007630289, -0.0008730416, 0.0015660217, -0.0000330429, 0.0001631512, + -0.0003678582, -0.0010866401, 0.0043781488, -0.0026675686, 0.0007457726, + -0.0009749013, -0.0004541799, 0.0026733242, -0.0018544220, -0.0008073393, + -0.0020244657, 0.0002032402, -0.0014040396, -0.0006420799, -0.0010252080, + -0.0002215535, -0.0013142942, -0.0000784090, -0.0043524210, -0.0008497373, + 0.0003751535, 0.0027536647, -0.0062229829, -0.0011871835, 0.0015968217, + 0.0037383286, -0.0009478248, -0.0009139066, 0.0014850114, -0.0017005296, + -0.0017066137, -0.0009585768, 0.0006635846, -0.0019097696, 0.0005321051, + -0.0003532209, -0.0007689910, -0.0025166357, -0.0023377971, 0.0000220351, + 0.0008305288, 0.0018406698, 0.0025951932, -0.0020872718, 0.0006515286, + -0.0000378699, -0.0022239133, -0.0010934717, 0.0011315378, -0.0024050230, + 0.0008666385, -0.0001035307, 0.0018725652, 0.0022386496, 0.0014697469, + -0.0017206641, -0.0015958494, 0.0018663580, -0.0004158309, -0.0013510343, + -0.0013322401, 0.0013518191, 0.0006776105, 0.0012292799, -0.0019704956, + -0.0012887792, -0.0014088508, 0.0000020990, 0.0043301629, 0.0024897694, + -0.0016979260, 0.0000387728, 0.0004182805, -0.0014899643, -0.0016939987, + 0.0014213133, -0.0012939130, -0.0008388688, -0.0018089248, -0.0022724359, + -0.0010467498, -0.0014698952, -0.0015759234, -0.0011883568, 0.0029009576, + -0.0026257220, 0.0019919774, -0.0012350106, -0.0003457197, -0.0004707299, + 0.0017645054, -0.0001454619, 0.0021854059, -0.0004338898, 0.0006648153, + 0.0013065170, -0.0021414575, -0.0031768549, 0.0025623064, -0.0015159582, + -0.0008602256, -0.0013470724, -0.0014471868, 0.0022605322, 0.0001782747, + -0.0017020791, 0.0001640501, -0.0000192078, -0.0000550235, -0.0020928201, + 0.0005111783, -0.0005959570, -0.0014669127, 0.0011038177, -0.0008707619, + -0.0000652377, -0.0021575796, 0.0000267597, 0.0020358299, -0.0010568453, + -0.0026135528, -0.0003956128, 0.0019262477, -0.0030205189, -0.0007379865, + 0.0004375274, -0.0002766205, 0.0005086455, -0.0034744192, 0.0002685370, + -0.0010020072, -0.0132868933, -0.0005391003, 0.0008322811, 0.0018619425, + 0.0021580190, -0.0004042052, -0.0008449549, -0.0015634364, 0.0020197742, + 0.0006778268, 0.0007615262, 0.0008233601, -0.0010602418, -0.0019137945, + -0.0010145949, -0.0006008735, 0.0001251108, -0.0026079847, -0.0007498744, + -0.0034082183, -0.0052410886, 0.0008862454, -0.0014124024, 0.0002373906, + 2.1826262474, 0.0004630960, -0.0002726777, 0.0030986792, -0.0003298279, + 0.0026082504, 0.0023853965, -0.0018941781, 0.0003230779, -0.0031287940, + 0.0015055672, -0.0048157149, 0.0019273144, -0.0020748735, -0.0011644261, + 0.0005278869, -0.0003861201, -0.0010506609, -0.0005409936, -0.0019147045, + -0.0011412422, -0.0002287901, 0.0017858214, 0.0012421273, -2.4390137196, + -0.0041285432, -0.0017944050, -0.0007996962, -0.0032166163, 0.0020698062, + -0.0025286647, -0.0003920089, 0.0014162201, 0.0014546374, -0.0009614262, + -0.0018149805, 0.0015718834, -0.0009215446, 0.0005824526, 0.0003402163, + 0.0006684239, 0.0007416084, -0.0023780372, -0.0015553497, -0.0004879534, + -0.0008759052, 0.0027645128, -0.0022470832, 0.0017083944, -0.0001316858, + -0.0022706357, 0.1204734668, -0.0016530687, -0.0021068067, 0.0006053462, + -0.0006775684, -0.0025158173, 0.0039976253, 0.0008651451, -0.0012747876, + 0.0002965471, 0.0016104453, 0.0008321780, 0.0532188863, -0.0005079042, + -0.0047253426, -0.0004703098, -0.0007420183, -0.0017907862, -0.0018583068, + 0.0008269143, -0.0024545416, -0.0025338989, 0.0019008194, 0.0013802341, + 0.0003957007, 0.0015497613, -0.0026262938, 0.0002675592, -0.0007706652, + 0.0006706933, 0.0010340828, 0.0018383022, -0.0020548475, -0.0010271792, + 0.0044302437, 0.0002758218, -0.0009179259, -0.0018544563, 2.2199263573, + 0.0009389785, 0.0016771255, 0.0002876999, 0.0013199246, -0.0005787220, + -0.0036479249, -0.0007724892, -0.0020190524, 0.0001653398, -0.0025491910, + 0.0009365457, -0.0017400119, -0.0002169292, 0.0011487261, -0.0022164187, + -0.0006225766, -0.0000769298, 0.0003804774, -0.0015576822, 0.0010689627, + 0.0003974726, -0.0004089656, -0.0004813573, -0.0015067817, 0.0000619995, + -0.0005661827, 0.0007477126, -0.0030516351, -0.0028015058, -0.0008781310, + -0.0152749419, -0.0018311152, -0.0000488157, 0.0004337542, -0.0008366671, + 0.0010018158, -0.0020728689, -0.0014553904, 0.0015860648, 0.0034783189, + 0.0017708214, -0.0000661919, -0.0050321594, -0.0001875323, 0.0027155732, + 0.0013713292, 0.0021588705, -0.0006077304, 0.0035075385, -0.0009692651, + -0.0004582729, -0.0005337349, 0.0015925579, 0.0010918995, -0.0018688026, + 0.0015818356, 0.0005795070, 0.0045975083, -0.0033563669, -0.0005839088, + 0.0009947303, -0.0011956235, -0.0003478052, -0.0012097822, 0.0027641817, + 0.0005213893, 0.0038725361, 0.0003589925, -0.0008866445, -0.0007448574, + 0.0017048616, -0.0029504385, 0.0004819513, -0.0037041064, -0.0017589331, + 0.0007099444, -0.0008231392, 0.0034314664, 0.0003650067, 0.0004356853, + -0.0035407045, 0.0000852952, 0.0003342627, -0.0010378179, 0.0014329902, + 0.0016333216, 0.0013949779, -0.0030498379, -0.0009670346, -0.0011351695, + -0.0021988947, 0.0001216894, 0.0000895381, 0.0001209653, -0.0013383862, + -0.0009096302, -0.0003955974, -0.0021681692, -0.0019725640, -0.0032377203, + -0.0008565998, 0.0026658725, -0.0001928310, 0.0048574572, -0.0013316815, + -0.0008868063, 0.0009662661, 0.0013438448, -0.0008653305, 1.3375971317, + -0.0029465917, -0.0025728839, 0.0009799507, -0.0016233677, -0.0010194778, + -0.0009846566, -0.0021647941, 0.0003118962, -0.0000469298, -0.0012008687, + 0.0004334705, -0.0006416845, -0.0045428257, -0.0015900198, -0.0006988868, + 0.0006148280, 0.0029508930, 0.0030595763, -0.0022426876, 0.0008928238, + -0.0015206831, 0.0005011433, 0.0007821249, 0.0022646808, 0.0006586339, + -0.0019376059, 0.0003547885, 0.0005781786, -0.0005893046, -0.0035620527, + -0.0049263528, 0.0002939729, -0.0010089313, -0.0014796644, 0.0024388442, + 0.0000863415, 0.0026626135, -0.0005840851, 0.0010178089, -0.0013321359, + 0.0005316287, 0.0007112655, -0.0004142975, 0.0020739846, -0.0021313052, + -0.0004331979, -0.0006559929, 0.0002410458, 0.0012734924, -0.0005733483, + 0.0005133533, 0.0015173061, 0.0004654122, -0.0028181328, -0.0017664330, + 1.6323570013, -0.0020353855, 0.0028664954, -0.0023445296, 0.0009084139, + 0.0013849989, -0.0011846442, -0.0006260070, -0.0017482098, -0.0022182248, + -0.0021516371, -0.0034992592, 0.0003306987, -0.0020920550, -0.0004217654, + -0.0032252753, 0.0021917168, -0.0018361104, -0.0016371869, 0.0009170747, + 0.0003048982, -0.0022457638, 0.0003170632, -0.0016057338, 0.0012671207, + -0.0016710549, 0.0023013181, 0.0017410147, 0.0012172766, 0.0009767404, + 0.0025319816, -0.0006155439, 0.0019905951, 0.0016953095, 0.0001868010, + -0.0010395456, -0.0018282690, -0.0006474806, 0.0003175295, -0.0010134801, + -0.0009359613, 0.0001807348, -0.0022184225, -0.0008855159, -0.0001769753, + 0.0022601630, -0.0009680353, -0.0003225381, 0.0004282134, 0.0002834992, + 0.0003174217, 0.0036980119, 0.0002791728, -1.6886535883, 0.0013185909, + -0.0371740609, 0.0002126347, -0.0018304377, 0.0010496359, -2.2779715061, + -0.0000678259, -0.0007769600, -0.0014185747, 0.0018103444, 0.0017340633, + 0.0024300748, -0.0009417774, -0.0018419474, -1.3060673475, 0.0009868066, + -0.0000762406, 0.0021179405, -0.0032282337, 0.0014011771, 0.0000055712, + 0.0038260780, -0.0001511876, -0.0012667878, 0.0001677091, 0.0023881621, + 0.0009617889, 0.0023346338, 0.0022338391, -0.0037930459, 0.0006006747, + -0.0003369872, 0.0007332356, 0.0016000095, 0.0003819992, 0.0039483733, + 0.0019444567, 0.0015598426, -0.0008246088, -0.0000711964, -0.0020766393, + -0.0037175950, -0.0037355684, -0.0016649794, 0.0008467776, -0.0008058986, + 0.0020512745, -0.0014478946, 0.0011658994, -0.0025446895, 0.0009453073, + -0.0012588911, -0.0018509468, 0.0017404377, -0.0002911391, 0.0009990060, + 0.0008961158, -0.0026562153, 0.0008761911, 0.0009395424, -0.0025615392, + 0.0033614764, 0.0023360453, 0.0005722633, -0.0001742258, -0.0002197338, + 0.0008432178, -0.0003555245, 0.0018488914, 0.0024157818, 0.0002327077, + -0.0009379163, 0.0008468570, -0.0075159115, -0.0007379823, -0.0002547447, + 0.0013216296, 0.0011593584, -0.0002960088, -0.0008776868, 0.0001136228, + -0.0007261410, 0.0002475253, 0.0027703862, 0.0012596301, 0.0005834769, + -0.0008750344, 0.0009792838, 0.0002475530, 0.0001652371, -0.0020060153, + -0.0010318700, 0.0008041505, -0.0012892679, -0.0007693672, -0.0012497418, + -0.0011841934, 0.0009012902, 0.0013833396, -0.0012795101, 0.0004897956, + -0.0026429873, 0.0008573967, 0.0000438662, -0.0018878786, 0.0015035786, + -0.0003510723, -0.0018760501, -0.0004925672, 0.0005444654, -0.0014716546, + -0.0007752050, -0.0009843302, -0.0017191991, 0.0006396235, 0.0008062213, + -0.0017205894, -0.0018108789, 0.0003349711, -0.0014383383, 0.0017361413, + 0.0056459624, -0.0014742081, 0.0000890433, 0.0018078815, 0.0004379218, + 0.0021505016, -0.0009627522, -0.0005780768, -0.0015376802, -0.0026614736, + -0.3407727182, 0.0004183056, -0.0033795247, -0.0009310074, -0.0015045512, + 0.0007861634, 0.0028224650, 0.0016815985, 0.0020480608, -0.0009094509, + -0.0017433316, -0.0018606392, 0.0013538164, -0.0002183774, -0.0006264313, + -0.0006707281, 0.0012454963, 0.0010672659, -0.0026388187, -0.0068620476, + -0.0019870368, 0.4368198216, -0.0003433863, 0.0017788755, 0.0012496614, + -0.0003016202, 0.0000352573, 0.0014113062, -0.0018674759, -0.0002428326, + -0.0002889291, 0.0029083346, -0.0002151835, -0.0012799338, 0.0009096949, + 0.0003944188, -0.0020500650, -0.0005106856, 0.0021627301, -0.0012041032, + -0.0023430760, -0.0008198889, 0.0022857336, 0.0011403807, -0.0033891704, + -0.0014894584, -0.0005742082, -0.0018596752, -0.0000724923, -0.0042472063, + 0.0027765641, -0.0002393285, -0.0028087357, 0.0003974402, -0.0002093627, + -0.0002472991, -1.5031994581, -0.0010507484, -0.0012183948, 0.0002715001, + -0.0005026564, -0.0020580783, 0.0005134621, -0.0024334344, 0.0007826097, + 0.0009073014, -0.0008167945, -0.0002959265, 0.0015667798, 0.0009113178, + -0.0002493435, 0.0009865287, -0.0003633359, -0.0016539004, 0.0004922175, + -0.0004842472, -0.0001370339, -0.0010764832, -0.0025838278, 0.0004880950, + -0.0000674278, -0.0006171167, 0.0002068421, 0.0009431867, 0.0011146246, + -0.0010498228, 0.0001102709, -0.0020335242, 0.0017599399, -0.0001072111, + 0.0031107576, -0.0021661450, 0.0001492603, 0.0003759012, -0.0032037210, + -0.0014724061, -0.0048473403, -0.0004396108, 0.0001502791, 0.0005308334, + -0.0009165145, -0.0003492646, -0.0035797455, -0.0001580672, 0.0002088419}; + +float unet_input_time_embedding_50_23[] = { + -0.0021870546, -0.0008307379, -0.0005850857, -0.0002157200, 0.0003585408, + 0.0001544589, -0.0003373274, 0.0004408719, 0.0014580600, -0.0022090927, + -0.0006931287, -0.0000528470, -0.0029435512, 0.0009689392, -0.0002396749, + 0.0020641228, 0.0014758520, -0.0007753179, 0.0019259021, -0.0011575010, + 0.0032334938, 0.0043569477, 0.0020916890, 0.0153278634, 0.0001730619, + 0.0014820835, -0.0014009569, 0.0012671072, -0.0039224639, 0.0011090189, + 0.0008532397, 0.0029721013, -0.0006981604, -0.0005667163, -0.0026728883, + 0.0021097283, -0.0003238092, -0.0020577335, -0.0007422017, -0.0015259269, + -0.0000835638, -0.0002217595, -0.0000487636, 0.0042540114, 0.0002449378, + -0.0009537209, -0.0004481234, -0.0020079082, -0.0017784806, 0.0005860305, + 0.0006360142, -0.0028695313, 0.0921225101, 0.0005295444, 0.0004549985, + -0.0014432656, 0.0004233267, 0.0015484104, -0.0035148088, 0.0005383883, + 0.0039769532, 0.0005814551, 0.0020449120, -0.0012777168, -0.0025147675, + -0.0000866903, -0.0001343801, 0.0000490433, 0.0026412923, -0.0019444444, + 0.0000449298, -0.0022930941, 0.0003231296, -0.0015101493, 0.0030132043, + -0.0003212299, -0.0019547944, -0.0001560701, 0.0019398069, 0.0001554440, + 0.0014784721, 0.0026274826, 0.0011350780, 0.0002139471, -0.0008358059, + -0.0031743927, 0.0004245433, 0.0012037661, 0.0017205449, 0.0006593899, + 0.0014489783, -0.0015762756, 0.0013336986, -0.0009267844, 0.0000120071, + -0.0004550861, 0.0002014488, -0.0015678122, 0.0030295837, -0.0014294088, + -0.0016211593, 0.0006937324, -0.0017825222, 0.2000092864, -0.0014682272, + 0.0002122801, 0.0001256592, -0.0000942713, -0.0013373196, -0.0023652231, + -0.0031231265, -0.0021036640, 0.3757039309, 0.0022041760, 0.0031274538, + -0.0018169135, 0.0026257560, -0.0043471297, -0.0005139932, -0.0002865794, + 0.0008593732, -0.0005412169, -1.6807361841, 0.0006610756, -0.0033842390, + -0.0021413867, -0.0027591574, 0.0016823532, -0.0020153071, 0.0016777138, + -0.0020799087, -0.0010477826, -0.0037238335, -0.0017667292, 0.0018009783, + 0.0044019758, 0.0000177682, 0.0014775163, -0.0025493614, -0.0046946835, + -0.0000879562, 0.0023076925, 0.0002377704, 0.0007775382, -0.0016144884, + -0.0005599194, 0.0007789263, -0.0013643163, -0.0008414052, -0.0006019585, + -0.0021551056, 0.0007589351, -0.0003602915, -0.0002478301, -0.0015197841, + 0.0028421243, 0.0020087785, 0.0013070256, 0.0006971094, 0.0006855000, + 0.0008146290, 0.0001621906, -0.0017641587, -0.0017320404, -0.0001841229, + 0.0013234515, 0.0001544973, -0.0012197900, -0.0677409917, -0.0041997414, + -0.0004225307, -0.0032459712, 0.0004352122, 0.0002845050, -0.0021702754, + 0.0018895392, 0.0025322931, -0.0014571445, -0.0028292211, -0.0011706902, + -0.0004802276, -0.0021063900, -0.0053050835, 0.0009111329, 0.0015822481, + 0.0002125357, -0.0015259851, -0.0019713871, -0.0019551381, -0.0017736824, + -0.0013064267, 0.0021832134, 0.0025400980, 0.0012278219, -0.0006062258, + 0.0038620201, -0.0020068125, 0.0004857280, 0.0001454400, -0.0043262192, + 0.0005558208, 0.0003849515, -0.0004677847, 0.0007119989, 0.0009865607, + -0.0031807357, -0.0016577805, -0.0014180187, -0.0014387188, 0.0009339144, + 0.0016956190, 0.0001642792, -0.0041912380, 0.0016603447, 0.0022576635, + 0.0012168391, 0.0019157345, -0.0013840531, -0.0008212180, 0.0002463005, + -0.0014971066, 0.0001363354, -0.0027369910, -0.0169139206, -0.0000296214, + 0.0019197406, -0.0003625741, -0.0038736435, 0.0014927962, 0.0011932123, + -0.0002840562, -0.0034742001, -0.0001419038, 0.0008160085, -0.0032132911, + 0.0015708897, -0.0021305713, -0.0011178423, -0.0005953489, -0.0007468974, + -0.0029640754, 0.0014616181, -0.0012401112, 0.0013230564, -1.5014163256, + -0.0016683766, 0.0002488298, -0.0005802436, -0.0011101814, 0.0007316410, + 0.0016779900, -0.0032204590, 0.0025670798, -0.0018921262, 0.0005349382, + 0.0022458571, -0.0003841808, -0.0002454607, 0.0020291186, -0.0010403710, + 0.0011036322, 0.0044682091, -0.0003023117, 0.0026608775, -0.0000047017, + -0.0008017570, -0.0010158797, -0.0006736303, 0.0016972567, -0.0031351116, + 0.0001240992, -0.0037581602, -0.0013571260, 0.0004955898, 0.0001842759, + 0.0031977703, 0.0000151778, 0.0047292477, -0.0007573450, -0.0001038825, + 0.2294376791, -0.0011171689, -0.0017018787, -0.0006359322, -0.0032405402, + 0.0012313407, -0.0009918944, -0.0014696999, 0.0000547008, -0.0002515251, + -0.0007170195, 0.0013408537, -0.0018980892, -0.0001219048, -0.0043126354, + -0.0002659205, 0.0006237528, 0.0006531463, 0.0006533470, -0.0008408818, + 0.0022173719, 0.0008010811, -0.0008298008, 0.0006633697, 0.0017858960, + -0.0014931466, -0.0005128125, 0.0033607846, -0.0051889070, 0.0028858089, + -0.0003773900, -0.0007795987, 0.0029399067, -0.0017045438, 0.0049238293, + 0.0002063285, 0.0009745049, 0.0017375532, -0.0015152907, -0.0012448714, + -0.0012178652, -0.0004808512, 0.0006023238, -0.0007387158, 0.0006241630, + 0.0001910888, -0.0006641950, 0.0019229646, -0.0159163922, -0.0006516203, + -0.0019895383, -0.0000018943, -0.0009292316, -0.0006885193, -0.0010126829, + -0.0033525664, 0.0016512361, 0.0000542573, -0.0008273837, -0.0007102177, + 0.0009116260, -0.0015896107, -0.0015525145, 1.6891692877, -0.0003859834, + -0.0022847815, 0.0016324144, 0.0014526196, -0.0016067931, 0.0001939857, + 0.0004261723, -0.0003312724, -0.0005794452, 0.0006422554, 0.0016520343, + 0.0015779575, 0.0013605386, 0.0005107113, 0.0026539969, 0.0043421481, + -0.0003319737, -0.0024735727, -0.0053485078, 0.0010369655, 0.0004701320, + -0.0002758591, 0.0012791217, -0.0001613470, -0.0036134720, -1.4944450855, + -0.0005325489, -0.0006176927, 0.0007687509, 0.0010449188, -0.0003964838, + 0.0016855753, 0.0031412456, -0.0029735977, -0.0011494292, -0.0003857976, + -0.0024114843, 0.5719324946, 0.0003076114, 0.0032495908, -0.0013621608, + -0.0003979790, -0.0013317298, -0.0014830716, 0.0011626105, 0.0008562221, + -0.0016766628, -0.0016739987, 0.0010752301, -0.0012686213, -0.0003318796, + -0.0007388699, -0.0009739539, 0.0005817845, -0.0015841792, 0.0016427329, + 0.0024663217, 0.0013719006, -0.0009529472, -0.0004967740, -0.0002909647, + -0.0034002815, 0.0023800791, -0.0059841154, 0.0016553518, -0.0019458882, + -0.0045416206, 0.0009184500, -0.0008268966, -0.0030029411, 0.0010037655, + 0.0020528764, -0.0010856288, 0.0003691460, 0.0005408982, 0.0035019433, + -0.0008450988, -0.0012448856, -0.0015559406, -0.0013388300, 0.0001280629, + -0.0004665786, -0.0020114360, -0.0004863653, 0.0037529527, -0.0002484494, + -0.0016407496, -0.0025149691, -0.0033739128, 0.0000380082, 0.0012711819, + 0.0001505399, -0.0017187456, -0.0011427046, 0.0009795194, -0.0009560185, + -0.0027421806, -0.0019745396, -0.0005390315, 0.0022353695, 0.0044789081, + 0.0013042912, -0.0014595604, 0.0001607924, -0.0006719488, 0.0083435494, + -0.0004950254, -0.0010119183, 0.0009975981, 0.0010561675, -0.0006310649, + -0.0025625844, 0.0027783522, -0.0018357362, -0.0017337319, 0.0005390514, + 0.0002770112, -0.0008679088, 0.0010447351, -0.0010328701, -0.0002556792, + 0.0017340365, 0.0031643501, 0.0022466416, -0.0028345790, 0.0006585130, + 0.0004390422, 0.0026450208, 0.0006957371, -0.0012918834, -0.0035004094, + -0.0127372500, 0.0012319991, -0.0007502908, -0.0009653457, -0.9450176954, + -0.0029380540, 0.0010349324, -0.0008315779, -0.0013565815, -0.0016724004, + 0.0035993988, 0.0002667110, 0.0030240435, 0.0017684079, 0.0029319606, + -0.0002229651, 0.4391472042, 0.0001574690, -0.0016014543, -0.0022740394, + 0.0007050665, -0.0007126890, 0.0000125403, 0.0016502319, -0.0022405996, + -0.0005662418, 0.0015086988, 0.0002575810, -0.0041441037, 0.0000244979, + 0.0001834964, -0.0013067732, -0.0005039769, -0.0018550772, -0.0009919195, + -0.0050179837, 0.0018627513, -2.2465069294, 0.0027092816, -0.0050935037, + -0.0018752574, -0.0000737151, -0.0021532173, 0.0010353515, 0.0020918846, + 0.0002009911, 0.0020453378, -0.0001564935, -0.0019891015, 0.0005598278, + -0.0029123598, -0.0017253819, 0.0023391778, -0.0054043396, 0.0023851320, + -0.0004037910, -0.0012850701, -0.0025947285, -0.0044314023, 0.0038782388, + -0.0033718164, 0.0006554851, 0.0001775231, 0.0040824655, -0.0041214144, + 0.0019852221, -0.0004486246, -0.0029315809, -0.0007466590, 0.0010848925, + -0.0022721123, -0.0012419971, -0.0000835224, -0.0028270963, -0.0039961664, + -1.6213514805, 0.0011935113, -0.0025325441, -0.0012022909, 0.0021438953, + -0.0014567612, 0.0031516966, 0.0002306337, 0.0005825656, -0.0009812564, + -0.0004454451, 0.0005486597, -0.0016198293, 0.0008260468, -0.0025962312, + -0.0046588220, -0.0019589877, 0.0002169507, 0.0016968716, 0.0022691786, + 0.0025516320, -0.0026004799, -0.0007730154, -0.0006695341, -0.0003510737, + -0.0004128972, -0.0011079533, 0.0008310792, 0.0066975639, 0.0003512877, + 0.0006529770, -0.0009152829, 0.0012055375, -0.0011756792, 0.0025267028, + -0.0004737009, -0.0002306332, 0.0039490848, -0.0018182090, 0.0009671687, + 0.0022020382, 0.0069936779, -0.0065745637, 0.0000330918, -0.0040462213, + -0.0010257922, -0.0011402118, -0.0031685252, 0.0024495251, -0.0009148126, + -0.0008026799, -0.0030775147, -0.0025867438, 0.0038011796, -0.0007381120, + 0.0006783714, 0.0017076501, 0.0048922952, -0.0008312679, -0.0023652918, + -0.0024012057, -0.0015215650, 0.0011526418, -0.0000620224, -0.0026682839, + 0.0007816791, 0.0007848194, -0.0012577763, -0.0015637730, -0.0002968207, + 0.0014094762, 0.0001232700, 0.0018672976, -0.0010959674, -0.0008661039, + 0.0005792836, -0.0002171458, -0.0008659458, 0.0013439893, 0.0002127662, + -0.0027345298, -0.0001761580, 0.0046059866, 0.0006300111, 0.0016933372, + -0.0011071274, -0.0032903908, 0.0060648476, -0.0028596832, 0.0008587071, + 0.0008697385, 0.0021585475, 0.0004977679, -0.0018028152, -0.0006427336, + -0.0007957019, 0.0001755934, 0.0005535700, -0.0045118355, 0.0007182891, + 0.0025841305, -0.0017833710, -0.0003687288, 0.0023418781, -0.0019712220, + -0.0000472311, 0.0020174407, 0.0001779068, -0.0006672406, -0.0040407670, + -0.0015800078, -0.0017478182, -0.0020669103, 0.0005887734, -0.0009028651, + -0.0022801904, -0.0027494165, 0.0001134527, -0.0009143900, -0.0000002616, + 0.0045736451, 0.0013093734, -0.0040222388, -0.0016220617, 0.0049640201, + -0.0004105922, 0.0006691046, 0.0028237063, 0.0025635934, 0.0000273348, + -0.0014420899, 0.0017639077, -0.0018079053, 0.0005517741, -0.0029640757, + 0.0009314967, 0.0018730983, 0.0003732401, -0.0018799650, 0.0002765153, + -0.0012970874, 0.0009102314, -0.0002195335, -0.0020594245, -0.0015766858, + 0.0010006852, -0.0020121429, -0.0023614713, 0.0017217079, 0.0049647894, + -0.0010276069, -0.0032170075, 0.0020239439, -0.0057736384, -0.0018394925, + 0.0002149362, 0.0009166515, 0.0013847225, 0.0007956957, -0.0006617373, + 0.0021399837, -0.0128155453, -0.0022043968, 0.0019081356, 0.0021405076, + -0.0009159679, -0.0027085054, -0.0016030390, 0.0000264759, -0.0002812771, + 0.0001207478, -0.0019360329, 0.0001066972, -0.0047244127, -0.0025139379, + 0.0018636729, -0.0037455736, -0.0027234226, 0.0007145735, -0.0032713250, + -0.0007019890, -0.0033059567, 0.0018639101, 0.0019183825, -0.0029344559, + 2.0647778511, -0.0019928887, -0.0010155351, -0.0003526458, 0.0012627984, + -0.0012030941, 0.0013391385, -0.0010314225, 0.0010470101, -0.0013448186, + 0.0042557297, -0.0011397646, 0.0000001100, 0.0015674471, -0.0011504856, + -0.0026054794, 0.0001128314, -0.0009207428, -0.0026517473, -0.0037472101, + 0.0002066246, 0.0016210414, -0.0014485975, -0.0009987406, -2.4642806053, + -0.0022570048, -0.0035223702, -0.0008047416, -0.0006417618, 0.0012811120, + -0.0031470424, 0.0063163619, -0.0008567549, -0.0012751142, -0.0018595951, + -0.0016288599, 0.0012722672, -0.0004213545, -0.0009386090, -0.0019746253, + 0.0019711656, 0.0010020058, -0.0017089704, 0.0005413834, -0.0008176109, + -0.0003847601, 0.0026455885, 0.0007164238, 0.0002238275, -0.0002098712, + -0.0041931672, 0.1257631630, -0.0015866384, -0.0029558418, -0.0008203140, + 0.0018615295, -0.0017509884, 0.0012669584, 0.0027164062, -0.0010768671, + 0.0001197895, 0.0005856305, 0.0000719459, 0.0418364145, -0.0010664423, + -0.0005119134, 0.0023679354, -0.0008889182, -0.0037254817, -0.0008450900, + 0.0025672442, -0.0001128532, 0.0004406141, 0.0025324647, 0.0001403812, + 0.0006724870, -0.0004317309, -0.0014013507, -0.0011333656, -0.0016809925, + 0.0007537999, 0.0026634741, 0.0015871916, -0.0016967081, 0.0010615441, + 0.0027938373, 0.0001482744, -0.0010183230, -0.0002760652, 2.1839194298, + -0.0017114950, -0.0005403936, -0.0017597453, 0.0016820461, 0.0009140649, + -0.0007847105, -0.0000601690, 0.0016176570, 0.0034369312, -0.0005471199, + 0.0022847180, 0.0002790950, -0.0019938326, -0.0043415297, 0.0021248264, + -0.0002278825, 0.0012312187, -0.0111030359, -0.0041337344, 0.0016343801, + 0.0020417059, -0.0012681796, -0.0002953582, -0.0014169211, 0.0015570694, + -0.0000696778, 0.0006091597, 0.0013278930, -0.0024396945, -0.0022186479, + -0.0146494061, -0.0007366068, -0.0015765594, -0.0011697016, 0.0022637639, + 0.0036589289, -0.0016000168, -0.0022882749, -0.0016067525, -0.0011159144, + -0.0001604883, -0.0006196687, 0.0004826812, 0.0018254088, -0.0006990681, + -0.0005231053, 0.0009510885, -0.0024623973, 0.0005804191, 0.0008471413, + -0.0004713143, -0.0016657249, 0.0011017076, -0.0000520820, 0.0009042551, + 0.0011312952, -0.0009328484, 0.0013096826, -0.0031032548, -0.0022881192, + 0.0023075065, -0.0032596439, 0.0014994489, 0.0031324702, -0.0005751108, + 0.0008248936, 0.0013522259, -0.0003187312, -0.0011168336, -0.0003769244, + 0.0002315813, -0.0024849519, 0.0021041990, -0.0007986513, -0.0015002023, + 0.0014103795, 0.0017833770, -0.0011213776, -0.0026528714, 0.0007290454, + 0.0033215899, -0.0012118625, 0.0008042137, -0.0000794521, 0.0004834537, + 0.0024422326, 0.0004013533, -0.0001731077, 0.0019237439, 0.0005252911, + -0.0004449764, -0.0001972816, -0.0004749040, 0.0003651478, 0.0005384344, + 0.0005722633, -0.0005857926, -0.0009923754, 0.0008015973, -0.0007852258, + -0.0005594678, 0.0022174439, -0.0001355105, 0.0015646485, -0.0019763028, + -0.0015462996, 0.0004522030, 0.0014892331, -0.0006706240, 1.2903076410, + -0.0005744891, 0.0007166630, 0.0008477671, 0.0002482899, 0.0000926871, + 0.0000475626, -0.0008784042, 0.0026800497, 0.0033130595, -0.0007174048, + 0.0002890060, 0.0033703656, -0.0042337403, -0.0000552742, -0.0013382877, + 0.0016863511, 0.0019142578, 0.0019217264, -0.0017066663, -0.0011948571, + 0.0016882932, -0.0022169740, -0.0009102428, -0.0001496258, 0.0034785708, + -0.0004570298, 0.0001179522, -0.0043157102, -0.0005511828, 0.0009176061, + -0.0013965319, -0.0018194783, 0.0022843257, -0.0023815506, -0.0014105756, + 0.0035540306, 0.0020600134, -0.0018117313, -0.0009963068, 0.0014758632, + -0.0004721922, 0.0005919293, -0.0033353255, -0.0032982896, -0.0014135423, + 0.0007735228, -0.0024764659, 0.0005585300, -0.0013383911, -0.0014233897, + -0.0008172455, 0.0008527590, -0.0022012708, 0.0002799388, -0.0007898803, + 1.5045105219, 0.0003252013, 0.0006715534, 0.0016946632, -0.0011501363, + -0.0006884184, 0.0018542493, 0.0018785084, -0.0011759233, -0.0014373274, + 0.0006116533, 0.0006844252, -0.0009510075, -0.0002320101, 0.0008155492, + -0.0011251951, 0.0004250268, -0.0038308455, 0.0002526485, -0.0031935247, + 0.0051604542, 0.0007513153, 0.0009703562, -0.0014520516, 0.0034708665, + -0.0004524370, 0.0009929077, 0.0007176294, 0.0019155697, 0.0013528438, + 0.0015573120, -0.0001716514, 0.0030459869, -0.0024597959, 0.0014362372, + -0.0024686714, 0.0006223334, 0.0006090603, -0.0046163909, -0.0038240016, + -0.0010142664, 0.0006035236, -0.0005991589, 0.0009062090, 0.0013287875, + 0.0023104404, 0.0011399477, -0.0063928273, -0.0021989057, 0.0015705014, + -0.0010365280, 0.0001113378, -0.0020725171, -1.6874728203, 0.0018203037, + -0.0395943113, 0.0009130312, -0.0006922674, -0.0032889138, -2.2664599419, + -0.0012321207, 0.0001153019, -0.0001282003, -0.0004496779, -0.0041168439, + 0.0014215608, -0.0011361865, 0.0006253934, -1.2047978640, 0.0005865055, + -0.0005212803, 0.0007417488, -0.0019387404, -0.0040560304, 0.0019880040, + -0.0020842901, -0.0012383782, 0.0022397314, 0.0026060638, 0.0013600341, + 0.0016529988, -0.0007738019, 0.0016800100, -0.0011873820, -0.0002681781, + -0.0023822591, 0.0040125232, -0.0009613670, 0.0035175027, 0.0009250952, + 0.0013234909, 0.0021933943, -0.0002389513, -0.0026899264, 0.0004842205, + 0.0008258229, 0.0001765148, -0.0009192871, 0.0004695859, -0.0012033535, + 0.0020708397, 0.0005509946, 0.0030813594, -0.0007384904, -0.0004221490, + 0.0002802592, -0.0011288701, -0.0008758755, -0.0019761359, -0.0017352849, + -0.0031366395, 0.0021168920, 0.0024169723, 0.0001471071, -0.0017145711, + 0.0008848116, 0.0007713387, -0.0003751274, -0.0029569701, 0.0006714034, + 0.0015261918, 0.0027126372, 0.0009244522, 0.0028550518, -0.0023198421, + 0.0030026073, 0.0021833277, -0.0078336820, 0.0005186256, -0.0013119024, + 0.0009894916, 0.0034712367, -0.0026262710, -0.0002890993, 0.0001695182, + 0.0018101744, 0.0005258271, 0.0020305617, 0.0004060064, -0.0003754734, + 0.0003035362, -0.0015952885, 0.0010750326, -0.0053027333, -0.0001860852, + 0.0006438973, 0.0000215466, 0.0007499076, -0.0032251508, -0.0020413632, + -0.0021326886, 0.0015947963, 0.0024736519, -0.0019497862, -0.0009865519, + -0.0012968499, -0.0006831157, -0.0019106551, -0.0013674761, 0.0020007335, + 0.0015278291, -0.0011928082, 0.0004911888, -0.0008320727, 0.0028397208, + -0.0035975417, -0.0034162388, -0.0025769051, 0.0020440435, -0.0040950705, + -0.0028947417, -0.0019510662, -0.0030858223, 0.0003499258, 0.0025279610, + 0.0011291620, -0.0002935557, -0.0023589141, -0.0003085878, 0.0008003386, + 0.0006186347, -0.0009652087, -0.0001444092, -0.0021787724, -0.0014505228, + -0.2334765345, 0.0001882876, -0.0019946303, -0.0026602212, -0.0009158605, + 0.0000407466, -0.0019723184, 0.0017710088, 0.0010308055, -0.0007115360, + -0.0011163969, -0.0001214658, -0.0002048565, -0.0007323232, -0.0004847441, + -0.0015476993, 0.0007517496, -0.0013771625, -0.0025317697, -0.0009971312, + -0.0013934537, 0.4479349852, 0.0008919050, -0.0020954139, 0.0001127797, + -0.0001271260, -0.0014590746, -0.0013382601, -0.0000401533, -0.0008691675, + -0.0041354862, -0.0011949800, -0.0016769185, 0.0003916328, 0.0018747591, + -0.0019528209, -0.0030513271, -0.0015137584, -0.0008735270, 0.0020423839, + -0.0007134640, -0.0013924111, 0.0018460276, -0.0018948945, -0.0002221172, + -0.0009366919, 0.0001517403, -0.0026694525, 0.0021327464, -0.0023454614, + 0.0006397361, -0.0001352089, -0.0016346574, 0.0020810962, -0.0001697824, + 0.0016767761, -1.5128396749, -0.0006860136, 0.0037672082, 0.0000592100, + 0.0043405155, -0.0002777481, -0.0000683202, -0.0005211113, -0.0012987235, + -0.0010148641, 0.0003286555, 0.0010171098, 0.0011409745, -0.0017528548, + -0.0021902039, -0.0021145074, -0.0043102871, -0.0008552470, 0.0031282920, + 0.0021098454, 0.0010365583, -0.0032568171, -0.0015781430, 0.0015238607, + 0.0013525258, -0.0015807939, 0.0007747253, -0.0011052070, 0.0027245302, + 0.0020107524, 0.0044053490, -0.0013864045, 0.0029729130, -0.0019485848, + -0.0008005626, -0.0004772283, -0.0001842347, -0.0020957445, -0.0019199920, + 0.0011748448, 0.0023800139, 0.0011082317, -0.0002100901, -0.0013623652, + 0.0034415461, -0.0018159421, 0.0046535893, 0.0028088361, -0.0005590657}; + +float unet_input_time_embedding_50_24[] = { + -0.0017196834, 0.0019446923, 0.0021301433, 0.0006951568, 0.0009569130, + -0.0015424490, 0.0006697611, -0.0016215313, 0.0017251787, -0.0005218086, + 0.0031401839, -0.0005418039, -0.0020452198, -0.0025571906, -0.0002032099, + 0.0021042880, -0.0018595401, -0.0030400681, 0.0029774664, 0.0004728199, + 0.0014193188, 0.0046752044, 0.0014985689, 0.0214176588, -0.0006373527, + 0.0001326569, -0.0027372418, -0.0001858305, -0.0003163893, -0.0040216725, + 0.0027910068, 0.0017497439, -0.0005802903, -0.0002234615, -0.0010600965, + -0.0004360550, -0.0026229694, -0.0023207313, -0.0013355203, -0.0027420698, + -0.0047112070, -0.0011777463, 0.0008364995, 0.0002497053, -0.0009508904, + 0.0000125458, -0.0000825049, -0.0009653419, -0.0003796378, -0.0004828468, + 0.0005191485, -0.0014440006, 0.1129153073, -0.0018404191, 0.0011494424, + -0.0021716661, -0.0005199380, 0.0006482746, -0.0026619683, -0.0007701390, + 0.0013034625, -0.0008323629, 0.0005518380, -0.0016256738, -0.0015140956, + 0.0001412379, -0.0006451784, 0.0006049661, 0.0000506602, -0.0003793684, + 0.0010309920, -0.0013565202, -0.0007194206, 0.0001368904, -0.0024916274, + -0.0025615608, 0.0003797696, -0.0026706122, 0.0008120655, 0.0000541254, + -0.0005672618, 0.0028518257, -0.0014037956, -0.0040030992, -0.0002625880, + -0.0011300771, -0.0016506757, 0.0020761695, -0.0019131545, 0.0028306879, + -0.0034529220, -0.0006996160, 0.0017097360, 0.0003514596, 0.0012403545, + -0.0024878290, -0.0006352798, 0.0002524313, 0.0007421125, -0.0024692109, + -0.0031586550, -0.0015948331, -0.0027916851, 0.1600296944, -0.0004935297, + 0.0029364824, -0.0006028633, 0.0022046166, -0.0017267424, 0.0004442898, + -0.0024360404, 0.0004390622, 0.3573604822, 0.0006205253, 0.0001570322, + 0.0002823644, 0.0008286047, 0.0008033856, -0.0014690505, -0.0001613304, + 0.0002671960, -0.0009909023, -1.5136681795, -0.0029824087, -0.0011130115, + 0.0021371939, -0.0008414295, 0.0022554575, -0.0023398753, 0.0005535218, + -0.0020098886, -0.0020971205, -0.0041191308, 0.0002444563, 0.0024665259, + 0.0010600511, 0.0008919849, 0.0000294996, -0.0022077933, 0.0008077724, + 0.0009194633, -0.0016018220, -0.0009020199, 0.0007476863, -0.0041948231, + -0.0000236572, 0.0015868237, 0.0015901709, -0.0017194375, -0.0009641442, + -0.0024821572, 0.0009517876, 0.0001398218, -0.0011656714, 0.0000673668, + 0.0004083589, 0.0005274322, 0.0020563686, -0.0006920449, 0.0012426390, + -0.0004813110, -0.0001089402, 0.0001858557, -0.0021627941, 0.0034465720, + 0.0018563883, 0.0015416611, 0.0007309057, -0.0318715088, 0.0001744351, + -0.0016476688, -0.0011111405, 0.0012481548, -0.0006121601, -0.0019019376, + 0.0003089737, 0.0001020982, -0.0009296676, 0.0020061317, 0.0013120528, + 0.0003109244, 0.0009737266, -0.0010896563, 0.0011325008, 0.0013786620, + -0.0018807440, -0.0011050911, -0.0003922079, -0.0012898571, -0.0001187511, + -0.0026554447, -0.0004837248, 0.0017296617, -0.0011904275, 0.0005362970, + 0.0009892634, -0.0008265524, 0.0005745813, -0.0009608780, -0.0038148439, + -0.0015685121, 0.0029793496, -0.0008219965, 0.0030641919, 0.0004130509, + -0.0046358639, -0.0036834169, 0.0001367861, -0.0003367970, -0.0016321749, + -0.0007327260, 0.0001334026, 0.0000191575, -0.0006586290, -0.0012282993, + -0.0012314147, -0.0009004930, 0.0004022061, 0.0007507269, 0.0025595874, + 0.0006891089, -0.0002125154, -0.0016981401, -0.0096795345, -0.0000142718, + 0.0007976140, 0.0038690222, -0.0024034402, 0.0015287313, -0.0007660943, + -0.0087391706, -0.0020279745, 0.0001714528, 0.0007446683, 0.0001182109, + -0.0007384038, -0.0000696653, -0.0021822657, 0.0008171815, 0.0000384497, + -0.0043343222, 0.0006850593, -0.0005106495, 0.0001553698, -1.4855185747, + -0.0003647320, -0.0001119529, -0.0004917252, 0.0002948493, -0.0007770043, + 0.0019283770, -0.0024879831, 0.0013922146, -0.0014447700, 0.0009086886, + 0.0010451714, 0.0014236672, 0.0024842187, 0.0002419790, -0.0002678848, + 0.0005501453, 0.0009949731, -0.0007635250, 0.0067802728, 0.0002784167, + 0.0014813324, -0.0007126639, 0.0014502739, -0.0001280941, -0.0008076495, + 0.0012315325, -0.0032852073, 0.0006940949, 0.0003673639, -0.0029163540, + 0.0011938710, -0.0003020340, 0.0009556059, -0.0004757838, -0.0001265779, + 0.2213063538, -0.0004599281, 0.0000091378, -0.0025460338, 0.0004941695, + -0.0004762551, -0.0009181299, 0.0008249764, 0.0013553086, 0.0012562377, + -0.0010482835, 0.0025397807, -0.0014145856, -0.0008936038, 0.0001529157, + 0.0029248381, -0.0030092434, -0.0001670029, -0.0022836798, -0.0006344565, + 0.0036741639, -0.0014971748, 0.0001549489, -0.0024022812, -0.0000915246, + -0.0011250484, -0.0019348222, 0.0007400448, -0.0008946015, 0.0008038334, + -0.0010386573, -0.0004205471, 0.0022473962, -0.0005152966, -0.0018264893, + 0.0020916625, -0.0004205791, -0.0005467716, 0.0015744315, -0.0007530823, + -0.0003649422, -0.0009741266, -0.0001317598, 0.0027376898, -0.0006916687, + 0.0010305564, -0.0015196223, -0.0003125179, 0.0031644218, -0.0027864883, + -0.0018556877, -0.0024638525, -0.0015569996, -0.0017170245, -0.0023956238, + -0.0024986495, -0.0003890011, -0.0025276067, 0.0010855687, 0.0006130235, + 0.0036654426, 0.0003552178, -0.0024881966, 1.6058797836, 0.0003543950, + 0.0018377800, 0.0012791051, 0.0012859275, 0.0014767358, 0.0017254887, + 0.0002967631, -0.0006251680, -0.0019135834, -0.0001379810, 0.0031736488, + 0.0011274498, -0.0004294978, -0.0000962865, 0.0008410942, 0.0026005465, + 0.0000755163, -0.0016195383, -0.0025901312, -0.0001839153, 0.0008609699, + 0.0002018798, -0.0005794712, -0.0016127764, 0.0011341590, -1.4310185909, + 0.0012433529, 0.0001752689, 0.0010360307, 0.0032129679, -0.0030309220, + 0.0019350532, 0.0032387206, -0.0029551678, -0.0011584561, 0.0017470131, + -0.0008389441, 0.7509869337, -0.0007268384, -0.0007369551, 0.0001439620, + 0.0002476342, 0.0007814127, 0.0006008814, -0.0012684586, -0.0012983722, + -0.0000604936, -0.0019670450, 0.0002392251, 0.0011605432, 0.0001518615, + -0.0016600345, -0.0001309761, 0.0013049947, -0.0005592736, -0.0003603622, + -0.0015688932, -0.0012830421, 0.0014665055, 0.0019513634, -0.0000327202, + -0.0029034656, 0.0018396716, -0.0042997105, -0.0001356741, -0.0014452823, + -0.0020115036, -0.0019287779, 0.0005555828, -0.0023198228, -0.0008070529, + 0.0006127327, -0.0027839104, 0.0002381126, 0.0016880827, 0.0002608881, + -0.0012825979, 0.0006596546, -0.0023735911, -0.0016914040, 0.0000368701, + -0.0023269602, 0.0008967407, 0.0013016739, -0.0007455822, 0.0003297121, + 0.0040341741, 0.0019477694, -0.0018998950, -0.0005399701, -0.0001576961, + -0.0005458221, -0.0011856789, -0.0001902140, -0.0001418982, 0.0002444962, + 0.0013481318, 0.0000194736, -0.0003678246, 0.0030193871, 0.0000657323, + 0.0010746098, 0.0018278668, -0.0024155034, -0.0013786750, -0.0005687540, + 0.0020395392, 0.0007602545, 0.0019484896, 0.0001882091, -0.0027724532, + -0.0023286454, -0.0000401260, 0.0013102409, 0.0004481459, 0.0008594489, + -0.0008643009, 0.0003521033, 0.0010102957, -0.0003464477, -0.0031101787, + 0.0002494697, -0.0016805753, 0.0017410768, -0.0023743156, -0.0002805395, + 0.0006401911, 0.0017399363, 0.0028674970, -0.0020200622, 0.0002367641, + -0.0151033178, -0.0021250788, -0.0016744070, -0.0014854725, -0.8366752863, + 0.0014655893, 0.0018257874, -0.0029049697, -0.0010809626, -0.0017704302, + 0.0027276054, 0.0011486283, 0.0028508184, 0.0011069472, 0.0019206430, + -0.0019701356, 0.3965424597, -0.0008483795, -0.0006612618, -0.0017992950, + -0.0089047858, 0.0039358279, 0.0006775344, 0.0041412730, 0.0007590943, + 0.0014171065, -0.0014863848, 0.0005494216, -0.0003963900, 0.0015379805, + -0.0014899119, 0.0001788342, 0.0005683702, -0.0012137364, 0.0002302700, + -0.0032532879, -0.0005258610, -2.2855494022, -0.0002809130, -0.0019324430, + 0.0002768086, -0.0014671851, 0.0005948162, -0.0016959114, 0.0032932593, + -0.0011468637, 0.0020386931, -0.0012854942, -0.0013923612, -0.0013242476, + -0.0008324041, 0.0002203256, -0.0001965822, -0.0045467927, 0.0025085416, + 0.0007069742, -0.0022457847, -0.0027487171, -0.0009695876, 0.0010812928, + -0.0030164809, -0.0013160288, 0.0005567819, 0.0024527246, -0.0005203583, + 0.0016007395, 0.0019798940, 0.0000677313, -0.0005982704, 0.0003717109, + -0.0021228236, 0.0001173373, 0.0010188650, -0.0020843814, -0.0018542437, + -1.6196510792, 0.0006078444, -0.0014901774, 0.0001191550, 0.0022230442, + 0.0005334105, 0.0029875690, 0.0004508547, 0.0000902326, 0.0010656212, + -0.0016673678, 0.0002845227, -0.0015554391, 0.0001535658, 0.0004139552, + -0.0021153269, -0.0024192622, 0.0018827068, 0.0005242145, 0.0006555561, + 0.0003424025, 0.0002496792, -0.0004300368, -0.0012535423, 0.0025586220, + 0.0001973175, -0.0011128350, 0.0017776075, 0.0014120103, -0.0018744676, + -0.0007523475, -0.0003997562, 0.0025970810, -0.0011331687, -0.0001207639, + -0.0028302285, 0.0007380554, -0.0002839402, -0.0013956642, 0.0032615392, + 0.0018590171, 0.0025517778, -0.0027193464, 0.0013694549, -0.0004019160, + 0.0001151522, -0.0005712026, -0.0008052168, 0.0014538248, -0.0007341718, + -0.0001480137, -0.0020148056, -0.0002666814, -0.0012608721, 0.0007042761, + -0.0018104822, 0.0017882505, 0.0029000717, -0.0000563642, -0.0027121415, + -0.0008985964, -0.0007165368, -0.0017887689, -0.0000061821, -0.0028855149, + -0.0012339670, 0.0021703457, -0.0008680189, -0.0013371590, -0.0014763535, + 0.0024552308, -0.0014027801, 0.0023463313, 0.0027578510, -0.0009072674, + 0.0031810440, -0.0017239873, -0.0012702954, -0.0012274371, 0.0015400047, + 0.0005360763, 0.0009169861, 0.0006119796, 0.0004638981, 0.0054166182, + -0.0007281303, -0.0018246330, 0.0033753035, 0.0004859241, -0.0014113346, + -0.0010441107, 0.0009064374, 0.0000137577, -0.0003025951, 0.0026693936, + -0.0005333863, 0.0000715945, -0.0006928418, -0.0038484992, 0.0015987284, + 0.0007492023, -0.0026853238, -0.0008633479, 0.0012899558, -0.0024148191, + -0.0003792387, 0.0001413641, 0.0004052864, 0.0006829868, -0.0009014178, + -0.0043456382, -0.0008867723, 0.0023982199, 0.0005096683, -0.0006022537, + -0.0027714502, -0.0009211343, -0.0001813660, 0.0007950587, -0.0003346422, + 0.0001373070, 0.0010500217, -0.0025060580, -0.0006984554, 0.0010995213, + 0.0003081663, -0.0002121738, 0.0002791630, 0.0008514691, 0.0007154872, + -0.0037275210, 0.0010230946, -0.0025670570, -0.0002295962, -0.0012383163, + -0.0028075888, -0.0011670843, -0.0010824937, -0.0017074156, 0.0015106075, + 0.0030635828, -0.0032959916, 0.0004293004, -0.0031244836, -0.0003101272, + -0.0019719349, 0.0004995209, -0.0009865034, 0.0017162708, 0.0050918330, + -0.0015274324, -0.0027006902, 0.0032872355, -0.0043378659, -0.0000147191, + 0.0012406865, 0.0007428844, 0.0020805490, -0.0007875392, -0.0009722619, + 0.0012315270, -0.0080161160, -0.0018982724, 0.0003503170, -0.0012265351, + -0.0008119741, -0.0007279720, -0.0032365518, -0.0014945331, -0.0012286939, + 0.0020049000, 0.0001619468, -0.0028191698, -0.0033188947, 0.0015101146, + 0.0006895941, -0.0002266951, -0.0017675669, 0.0008227974, -0.0020121108, + -0.0009691147, -0.0001158891, 0.0005333312, -0.0002027801, -0.0003268232, + 1.9573392868, 0.0008027172, -0.0033577904, -0.0014230616, -0.0011490372, + -0.0012087242, 0.0020705676, 0.0004330035, -0.0010382445, -0.0046132803, + 0.0024891663, -0.0014008578, 0.0005228567, 0.0011422839, -0.0008668262, + -0.0009212235, -0.0001046008, -0.0026133405, -0.0006755674, -0.0021656298, + -0.0001997198, 0.0007460080, -0.0037005944, -0.0000004633, -2.4890267849, + -0.0037933821, -0.0017347608, 0.0007579196, 0.0014954037, -0.0001040190, + -0.0016788994, 0.0004246772, 0.0001235952, 0.0030668336, 0.0005994118, + 0.0018544882, 0.0002561435, -0.0003664605, 0.0034314094, -0.0009243558, + -0.0001190729, -0.0008316273, -0.0004517441, 0.0001662513, -0.0027288171, + 0.0015513995, 0.0014352362, -0.0022114257, -0.0007719290, 0.0002873177, + -0.0024001580, 0.1095514745, -0.0025774590, -0.0039114472, -0.0017895238, + 0.0022705467, 0.0010777588, 0.0017654374, 0.0004488332, -0.0017586194, + -0.0006758082, -0.0026323157, 0.0013090441, 0.0187624507, -0.0032353320, + 0.0008688100, -0.0002608192, -0.0015765011, -0.0015660916, 0.0004971577, + -0.0009664535, -0.0021449192, -0.0010548064, -0.0005791455, 0.0009505624, + 0.0018938141, 0.0006090093, -0.0047710654, -0.0026768316, -0.0018335204, + -0.0004911739, 0.0011294452, 0.0023838291, -0.0006230893, -0.0004979305, + 0.0019968078, 0.0000396710, -0.0021260695, -0.0028040649, 2.1339991093, + 0.0009422677, 0.0028133558, -0.0001952265, -0.0027291591, -0.0008006857, + 0.0001938301, -0.0003345110, -0.0014325073, 0.0026133454, -0.0000860458, + 0.0006249419, -0.0003483314, -0.0011127582, -0.0002880124, -0.0008037329, + -0.0011759107, -0.0020787339, -0.0267719273, -0.0011458849, 0.0011926703, + -0.0018818378, -0.0020681140, -0.0004041572, 0.0004246109, 0.0017315382, + -0.0009000869, -0.0004660774, -0.0008326193, -0.0009027943, -0.0031713899, + -0.0165944658, -0.0002807593, -0.0011395935, -0.0016487702, 0.0017313585, + 0.0004854081, -0.0002574585, -0.0002808450, -0.0005213682, -0.0015840009, + -0.0011113528, -0.0007366723, 0.0040594563, 0.0002207269, -0.0019654902, + -0.0000588731, -0.0087673143, -0.0007390329, -0.0002867121, -0.0009762696, + -0.0015741787, -0.0000917232, 0.0042983657, 0.0005588556, 0.0011879671, + -0.0096128853, -0.0030042822, -0.0001457157, 0.0001231646, -0.0038010750, + -0.0002194243, -0.0006757639, 0.0012869593, 0.0032775707, 0.0034673973, + -0.0024289980, 0.0011339881, -0.0008612657, 0.0007661083, -0.0009651748, + 0.0016828284, -0.0017275542, -0.0010824689, -0.0003032582, 0.0008818712, + -0.0000288812, -0.0032783854, 0.0007838011, -0.0004171785, -0.0014137062, + 0.0010761153, 0.0001993505, -0.0000232226, 0.0014197575, 0.0006109732, + 0.0025923334, 0.0018151744, 0.0005555591, 0.0017456212, 0.0000284389, + -0.0006440666, 0.0003232860, -0.0008624109, -0.0004865541, -0.0018921150, + -0.0008967933, 0.0009797427, -0.0010649031, 0.0021103113, -0.0027224941, + -0.0005414318, -0.0013373685, 0.0004593567, 0.0008741336, -0.0014827099, + -0.0032875482, 0.0001774480, -0.0017542356, 0.0001374539, 1.2289747000, + -0.0001881681, 0.0003276924, 0.0012888722, -0.0018803005, 0.0003430657, + -0.0010886677, 0.0006479301, -0.0005531358, 0.0005615763, 0.0003257059, + -0.0018349109, -0.0005887635, -0.0033650156, -0.0008677721, -0.0028839349, + 0.0030030524, -0.0005975537, 0.0027651843, -0.0017684405, -0.0001320606, + 0.0015778495, -0.0007950072, 0.0016930008, 0.0001077019, 0.0019788069, + 0.0023408541, 0.0013742382, -0.0008360171, 0.0020737024, 0.0038179271, + -0.0009505923, -0.0012304187, -0.0014414266, -0.0010757600, -0.0015879292, + 0.0019838007, 0.0009410753, -0.0014452749, -0.0000779815, 0.0012745275, + 0.0000188365, 0.0003004111, 0.0009163464, -0.0012792327, 0.0003057211, + -0.0008296545, -0.0009036744, 0.0010796501, -0.0003935848, -0.0006339592, + 0.0001719532, -0.0000358713, -0.0006213454, -0.0010263463, -0.0000718501, + 1.4056860209, 0.0000959486, -0.0022022342, -0.0006204240, -0.0014840190, + -0.0014609736, 0.0013537216, 0.0004841192, -0.0021463102, -0.0028155036, + 0.0013437162, -0.0023345249, -0.0011806809, -0.0012230000, 0.0001841299, + -0.0032074219, -0.0003026878, -0.0019519425, -0.0008476160, -0.0019744704, + 0.0002263798, -0.0006038094, 0.0000463687, -0.0007221578, 0.0012227944, + 0.0018026945, 0.0001716628, 0.0018343336, -0.0000091374, 0.0020569526, + 0.0014299126, -0.0007552027, 0.0019547716, 0.0012196267, 0.0033240626, + 0.0010246551, -0.0011205095, -0.0016965326, -0.0032314872, -0.0036788194, + -0.0013571491, -0.0005687261, -0.0005420614, 0.0009576366, -0.0004685079, + 0.0031539691, 0.0001350748, 0.0005650985, -0.0008767870, 0.0029728464, + -0.0004664334, 0.0011350792, -0.0007019215, -1.6716470718, -0.0007770674, + -0.0583455563, 0.0004225851, -0.0019146553, 0.0001845744, -2.2213425636, + -0.0027467292, 0.0004285970, -0.0038033864, -0.0001965496, -0.0004759713, + 0.0019229860, 0.0021085455, -0.0040448401, -1.0413146019, -0.0001928764, + -0.0035355764, 0.0023946681, -0.0017132746, 0.0024314062, -0.0004701093, + -0.0015229555, -0.0013581407, -0.0014307764, -0.0006402174, 0.0015834165, + -0.0000540805, 0.0001712693, -0.0001923442, -0.0004237187, -0.0031895633, + -0.0010693641, 0.0036081693, 0.0001572571, 0.0015557935, 0.0026469398, + 0.0020467141, 0.0000183901, -0.0009017363, -0.0005757543, 0.0030746262, + 0.0000018858, -0.0024646665, 0.0018122066, 0.0003207417, -0.0029830616, + -0.0011410012, -0.0010516020, -0.0002231365, -0.0016626408, 0.0018529291, + -0.0006573200, -0.0003953110, -0.0001574878, -0.0028401806, 0.0017138682, + 0.0026682653, 0.0012373780, 0.0013667825, -0.0001176582, -0.0034289672, + -0.0006460074, 0.0022694650, -0.0002020625, -0.0027854606, 0.0014508226, + -0.0013931626, 0.0012979396, -0.0013369382, -0.0008951030, -0.0006552332, + -0.0022069309, 0.0002319001, -0.0095883813, 0.0015338613, -0.0022172225, + -0.0015973677, -0.0001044093, -0.0024336348, 0.0002351422, 0.0007325772, + 0.0016532792, -0.0005936120, 0.0000661891, 0.0002340651, 0.0001225756, + 0.0004232558, -0.0015948825, 0.0009622457, -0.0026170944, -0.0002903952, + -0.0027490263, -0.0012674553, 0.0010330688, -0.0004609912, -0.0017411541, + 0.0005078493, 0.0007225517, 0.0031986441, -0.0045002387, -0.0006723977, + -0.0006039990, 0.0009310285, -0.0002813204, -0.0007388827, -0.0012199439, + 0.0012761690, -0.0011052780, -0.0014499985, 0.0033747500, 0.0017539890, + -0.0012072418, -0.0025053490, 0.0014022193, 0.0010573328, -0.0017499924, + -0.0027749941, -0.0022936848, -0.0033953846, -0.0009510452, 0.0042684167, + 0.0023570121, -0.0011344962, -0.0006133192, -0.0018227721, 0.0005584895, + -0.0003551319, -0.0015315351, 0.0008926240, -0.0019328925, -0.0012134002, + -0.1247058362, -0.0016491425, 0.0018123674, -0.0021189048, 0.0007142034, + -0.0034977512, -0.0009628071, 0.0027164088, -0.0022611094, -0.0003331485, + -0.0023873439, 0.0013184760, 0.0023007519, -0.0005538475, -0.0000863709, + -0.0006065050, 0.0020665866, -0.0027762298, -0.0041076858, -0.0027779411, + -0.0029970049, 0.4504399002, 0.0021200764, -0.0002406449, 0.0011450705, + 0.0003619827, -0.0005090662, -0.0000410539, 0.0006573312, 0.0014259173, + 0.0004018545, -0.0008951677, -0.0027888273, -0.0014882293, 0.0026344564, + -0.0022126199, -0.0024972032, -0.0010750983, -0.0017716098, -0.0002827027, + -0.0015905306, -0.0000518253, 0.0019701913, -0.0005808980, -0.0032934472, + 0.0036978975, -0.0003870994, 0.0002443262, 0.0039854841, -0.0035731872, + 0.0012491002, 0.0010231002, 0.0002963906, -0.0010935747, 0.0003096850, + 0.0021055914, -1.5151815414, 0.0006297361, 0.0027749238, -0.0021532774, + -0.0018051250, 0.0014584351, -0.0021156296, 0.0003658363, 0.0011352868, + -0.0000592801, 0.0008663085, 0.0029520951, -0.0007214649, 0.0002798350, + 0.0004427461, -0.0005894880, -0.0010382752, -0.0021385872, 0.0011213925, + -0.0001596818, -0.0004712283, 0.0008050185, 0.0002975900, 0.0012693154, + -0.0006972239, -0.0036388289, 0.0019536680, 0.0007457347, -0.0009841470, + -0.0015190119, 0.0005449662, 0.0010162739, -0.0002589262, 0.0001705494, + -0.0012618727, -0.0009101066, 0.0019905153, 0.0002698897, -0.0006102009, + -0.0010974486, 0.0009059315, -0.0005489414, 0.0003532935, 0.0008178224, + 0.0002543572, -0.0002510184, 0.0216463562, -0.0007835043, -0.0011251183}; + +float unet_input_time_embedding_50_25[] = { + 0.0009614043, -0.0000898065, 0.0013158936, -0.0032785649, 0.0012130318, + 0.0009036576, -0.0008777143, -0.0017790538, 0.0012831271, -0.0004001719, + 0.0010462538, 0.0004342920, -0.0017930875, -0.0002287431, 0.0003723660, + 0.0011944440, 0.0001892713, -0.0019122867, 0.0012096012, 0.0002463101, + 0.0020789723, 0.0024688453, -0.0028084572, 0.0354457274, -0.0002546802, + 0.0012414483, -0.0010760315, 0.0006404174, -0.0019155088, -0.0008501280, + 0.0030405400, -0.0003224290, -0.0023430092, -0.0022342261, -0.0023534303, + 0.0009693056, -0.0012632739, -0.0026855113, -0.0027862336, -0.0017689401, + -0.0029632663, -0.0018405579, 0.0015890156, -0.0018587345, 0.0011990911, + -0.0005999738, 0.0009818245, -0.0009810049, 0.0003789887, -0.0005563654, + 0.0003483309, 0.0004202921, 0.1220565736, -0.0009118244, 0.0026057519, + -0.0001139221, 0.0013784607, -0.0002007233, 0.0003226823, 0.0017658898, + 0.0021868108, -0.0019098817, 0.0004145880, 0.0004754979, 0.0006984104, + -0.0024829344, 0.0001536729, 0.0004203640, 0.0023480388, -0.0005698053, + -0.0000755615, 0.0002136831, -0.0005414935, 0.0015598224, -0.0001838421, + -0.0000590002, 0.0026793387, 0.0002980987, -0.0008521113, 0.0014868320, + 0.0014984173, 0.0010065591, 0.0003770252, 0.0004301330, 0.0011217666, + -0.0022965544, -0.0013184589, 0.0024899063, -0.0012863046, 0.0022729437, + -0.0013582214, -0.0004683761, -0.0002565980, -0.0011481136, -0.0014491309, + 0.0008428423, -0.0005048551, -0.0018771915, 0.0005480817, -0.0031966809, + -0.0005834685, -0.0007407838, -0.0003075108, 0.1288376004, -0.0001724004, + -0.0019262638, 0.0004953733, 0.0008930312, 0.0016224987, -0.0012655510, + -0.0020420495, 0.0007056715, 0.3499953747, -0.0013020486, 0.0018732138, + -0.0026478074, -0.0009182352, -0.0005140209, -0.0005634301, -0.0003465277, + 0.0003764024, 0.0004184369, -1.3123955727, -0.0036180923, -0.0009510601, + 0.0018293415, -0.0005570995, 0.0008036206, -0.0020212582, 0.0012359745, + -0.0011508926, -0.0015149694, -0.0001690036, 0.0028846217, 0.0008297777, + 0.0011934966, 0.0011461524, -0.0007061940, -0.0005645044, 0.0003178818, + -0.0010371634, 0.0025684019, 0.0001842384, 0.0023886291, -0.0013112978, + 0.0004294713, 0.0018344577, -0.0005987263, 0.0007481028, -0.0012884336, + -0.0023471746, -0.0015508119, -0.0016576373, -0.0000026108, -0.0008290177, + -0.0007771146, -0.0000528698, 0.0014129477, 0.0008707661, 0.0009668553, + 0.0002026134, 0.0032244385, 0.0016458686, 0.0002584076, 0.0011143121, + -0.0012151317, 0.0015360846, -0.0005900552, -0.0082895560, 0.0005863940, + 0.0004241803, -0.0007979157, 0.0018263957, 0.0002723397, -0.0035582064, + 0.0011186134, -0.0002906118, 0.0002960004, 0.0008207595, 0.0002541719, + -0.0011813818, 0.0015904126, -0.0016605370, -0.0011146534, 0.0001060478, + -0.0000943653, 0.0005230946, 0.0000267494, -0.0009148461, -0.0002088861, + -0.0002654397, -0.0019648853, 0.0007711333, 0.0008197257, -0.0008104797, + 0.0013585235, 0.0022319639, -0.0003046463, 0.0011010559, -0.0009416002, + 0.0006530834, 0.0023649405, -0.0002637422, 0.0003136729, -0.0007163086, + 0.0007573189, -0.0033603068, 0.0019827262, 0.0009137038, -0.0002740112, + -0.0026361104, 0.0004305593, 0.0002869898, 0.0012085852, 0.0009386727, + -0.0002091071, 0.0002491246, -0.0008509364, -0.0006249727, 0.0013902971, + 0.0007470455, -0.0005464997, -0.0003094692, -0.0080562690, 0.0007660429, + 0.0001091124, -0.0004094085, -0.0010833708, 0.0000010172, -0.0009793597, + -0.0009768037, -0.0020343298, 0.0002540695, 0.0007000207, -0.0000702217, + -0.0008541835, -0.0002355012, 0.0001474964, 0.0009451117, -0.0004542586, + -0.0026324245, 0.0009816575, -0.0012649307, -0.0012920080, -1.4543480873, + -0.0000691584, -0.0009698737, -0.0011746270, -0.0008514109, -0.0011915364, + 0.0008305600, -0.0009374828, 0.0013452531, 0.0004637679, -0.0007127996, + -0.0006635489, -0.0007343530, -0.0001265990, 0.0001372425, 0.0004359427, + 0.0006011929, -0.0001556484, -0.0019813839, 0.0091115115, -0.0021256981, + 0.0004660632, 0.0004064424, 0.0008323309, -0.0007946016, 0.0028891312, + -0.0004747706, -0.0004650222, -0.0004601317, 0.0009185504, -0.0019370585, + 0.0000562591, 0.0011947001, -0.0007812404, -0.0009202352, 0.0011819240, + 0.2167880535, 0.0005450267, 0.0009700923, -0.0012742835, 0.0008924752, + 0.0006380826, 0.0004671905, -0.0011548304, 0.0003669709, 0.0008322233, + -0.0002293208, 0.0019021807, -0.0026579711, 0.0011721372, 0.0010938980, + -0.0002138228, -0.0013728999, 0.0013172892, -0.0003036927, -0.0008417126, + 0.0041516349, 0.0015316573, 0.0002507671, 0.0005277351, 0.0002799148, + -0.0005021035, -0.0001639067, -0.0000243981, 0.0002920302, -0.0005059275, + 0.0007067756, -0.0008847776, 0.0015090446, -0.0001053670, -0.0004777703, + 0.0034946878, -0.0009727272, 0.0012745545, 0.0022937283, 0.0013759038, + -0.0002793132, -0.0025528497, 0.0006092303, -0.0012522908, 0.0010980967, + -0.0010210038, -0.0026648026, 0.0004377533, 0.0178612061, -0.0000000694, + 0.0004128129, -0.0009621661, -0.0001700731, -0.0004162986, -0.0002700104, + -0.0002378840, 0.0018705197, -0.0002510307, 0.0000478053, 0.0000564437, + 0.0009321151, -0.0007008512, 0.0014024810, 1.5236196518, 0.0005379629, + 0.0004738409, 0.0014837711, -0.0009378468, -0.0000096522, -0.0000162660, + -0.0004455233, 0.0023043714, 0.0004426567, 0.0000367351, 0.0024435292, + 0.0023692464, 0.0010637289, -0.0013176625, 0.0011513052, 0.0016091396, + 0.0008109370, -0.0006936602, -0.0016131853, 0.0013536173, -0.0010536645, + -0.0008896713, -0.0010009785, -0.0009583319, -0.0026213219, -1.3451907635, + 0.0018306812, -0.0000585080, 0.0009432328, 0.0025554569, -0.0014418291, + -0.0006512984, -0.0003479741, -0.0000560472, -0.0007418694, 0.0023328103, + -0.0006173238, 0.9059943557, -0.0011367258, 0.0024260231, 0.0003073458, + 0.0010312342, 0.0002858532, 0.0017264187, -0.0014812858, 0.0000085132, + 0.0011016699, -0.0007818427, 0.0002616099, -0.0007871678, -0.0000252039, + -0.0004491671, 0.0006849591, 0.0006334322, -0.0016957284, -0.0014457572, + -0.0012759781, -0.0000502430, 0.0018416087, 0.0005040839, 0.0003814166, + -0.0015705642, -0.0005900146, -0.0031025391, 0.0009162501, -0.0005902089, + -0.0014387271, -0.0008547227, 0.0007216632, -0.0004421172, -0.0007639471, + 0.0009054593, 0.0001873644, -0.0012735436, -0.0013776198, 0.0004391898, + -0.0022159831, 0.0000832493, -0.0009617409, -0.0016498177, -0.0017859610, + 0.0005196035, 0.0004548365, -0.0009361830, -0.0008110993, -0.0004501138, + 0.0005346881, 0.0010784022, -0.0013157895, 0.0004918263, -0.0000903656, + 0.0001442525, -0.0001478745, -0.0014403462, 0.0002126750, -0.0007194860, + 0.0005544894, 0.0004452575, -0.0000616388, 0.0018305790, 0.0015561299, + 0.0021782289, 0.0005831574, 0.0012361053, 0.0000107093, -0.0022524940, + 0.0003409567, -0.0002440605, 0.0013950632, 0.0004309891, -0.0022549694, + -0.0023338702, 0.0007870672, -0.0001202580, -0.0006553242, -0.0010669404, + -0.0008966532, -0.0011993032, 0.0002705802, -0.0009648389, -0.0019225487, + 0.0010147346, 0.0002025641, 0.0008829613, -0.0022491668, -0.0003772122, + -0.0000375869, 0.0015353919, -0.0005484940, -0.0019835245, -0.0011826348, + -0.0245856494, -0.0003238916, -0.0014801626, -0.0002578599, -0.7123687267, + 0.0004928494, 0.0002914241, -0.0021243994, -0.0002734314, 0.0007203932, + 0.0006607495, 0.0008947293, 0.0003709868, -0.0012373175, 0.0009366411, + -0.0010720911, 0.3670994937, -0.0001932560, -0.0007676757, 0.0003970612, + -0.0101447338, -0.0004356373, 0.0002224809, 0.0018668238, 0.0005992407, + 0.0018475680, -0.0004582568, 0.0011508851, -0.0011067544, 0.0008401247, + 0.0012567220, -0.0003893187, 0.0018403566, -0.0012392532, -0.0002293489, + -0.0037826418, -0.0013439939, -2.2846090794, 0.0037002061, -0.0007611775, + 0.0004739370, -0.0002398752, 0.0006450983, -0.0005574943, 0.0013388353, + 0.0003800709, 0.0018647551, 0.0006270277, -0.0004771063, -0.0020861076, + -0.0028123758, 0.0008399177, 0.0009417930, -0.0023484984, 0.0009499974, + 0.0002245835, 0.0000703549, -0.0004801541, -0.0002911875, 0.0018006589, + -0.0024555803, -0.0004423074, 0.0014494804, 0.0004162453, -0.0009651564, + 0.0016075894, -0.0009808689, -0.0005403711, -0.0027377829, -0.0001098388, + -0.0001809532, 0.0007905574, 0.0008855872, -0.0019429117, -0.0017248001, + -1.6035399437, 0.0004973700, -0.0016822298, -0.0003154818, 0.0002203598, + -0.0001723248, -0.0000322368, -0.0011796011, 0.0014107106, 0.0010667485, + 0.0011470625, 0.0004422012, -0.0004436248, 0.0020640483, -0.0003798534, + -0.0011149757, -0.0007079449, -0.0003778753, -0.0012874091, -0.0006604912, + -0.0008028276, -0.0007696832, 0.0007450902, -0.0005373654, 0.0012917183, + -0.0005822405, -0.0007437838, -0.0012470637, -0.0000978974, -0.0009791141, + -0.0009099587, 0.0018228726, 0.0006280537, -0.0013853231, -0.0011279492, + -0.0011902743, -0.0004053200, 0.0006047320, -0.0007903799, 0.0009178328, + 0.0000645545, -0.0001105960, -0.0031151902, 0.0026025390, -0.0045019481, + -0.0005635130, 0.0000046544, -0.0000662082, 0.0019071337, -0.0018246723, + 0.0012242808, -0.0015353169, -0.0020855311, -0.0008262534, -0.0005161390, + -0.0013489986, 0.0013756723, -0.0001045640, 0.0012148757, -0.0011673283, + 0.0010020141, -0.0007024021, -0.0011223310, 0.0007949718, -0.0015842188, + 0.0000931211, 0.0021237521, 0.0007869616, -0.0025258930, -0.0019445961, + 0.0015053242, 0.0010033952, 0.0008734565, 0.0006461544, -0.0010842048, + 0.0016679545, -0.0015644098, 0.0022345749, -0.0013000634, -0.0012680530, + -0.0002392107, -0.0007950466, 0.0004658849, -0.0002770990, 0.0007231836, + -0.0006211521, -0.0005410917, 0.0013124895, 0.0005052034, 0.0002419620, + -0.0003507327, 0.0001139443, -0.0010922824, -0.0019855555, 0.0012593265, + -0.0005165715, -0.0006870460, 0.0010776047, -0.0016385848, 0.0016972609, + 0.0005889226, -0.0006557442, -0.0025290039, 0.0016975370, -0.0019333088, + -0.0000191587, 0.0007203021, 0.0000598356, 0.0012719315, -0.0008975393, + 0.0002064700, 0.0012170370, -0.0001942551, -0.0017801764, -0.0010727006, + -0.0008913795, -0.0012671463, 0.0007442519, 0.0018142418, 0.0002212516, + -0.0005157089, 0.0020961964, -0.0026845571, -0.0003593515, -0.0008074678, + -0.0008275416, 0.0004758282, 0.0007161088, 0.0012301346, -0.0011356063, + -0.0033464245, 0.0005257856, -0.0013509835, -0.0020270920, -0.0006444743, + -0.0000572451, -0.0019202123, -0.0007481512, -0.0021146364, 0.0013194024, + -0.0006885380, -0.0011257492, -0.0021262786, -0.0021649937, -0.0009781416, + 0.0003325583, 0.0012006810, 0.0010514045, 0.0007202541, 0.0008119922, + -0.0001648124, -0.0010095513, -0.0003336156, -0.0043501016, -0.0007767347, + 0.0022682599, -0.0007710415, 0.0003930447, 0.0002950903, -0.0000179868, + -0.0000572037, -0.0001847586, -0.0005362409, 0.0008462798, -0.0006898949, + -0.0019818405, -0.0006797686, -0.0028451961, -0.0005410500, -0.0005589379, + 0.0006904257, -0.0017344239, 0.0001591943, -0.0017905878, 0.0003557948, + 0.0012686425, 0.0002920590, -0.0019423841, 0.0005033365, 0.0007445880, + 0.0004832624, -0.0010559405, 0.0004547560, -0.0007207058, -0.0031900892, + 1.8349784613, 0.0008826964, -0.0014902805, 0.0005578956, 0.0017743036, + -0.0002283435, -0.0003113719, 0.0010483339, 0.0005445341, -0.0025503272, + 0.0017050789, 0.0015006711, 0.0000514077, 0.0009074500, -0.0009901798, + 0.0009403971, -0.0008596631, -0.0003075907, 0.0019093794, -0.0030001805, + -0.0004267185, -0.0003137481, -0.0026914491, -0.0005405087, -2.4682264328, + 0.0009996123, 0.0006196110, -0.0004308764, 0.0005397978, 0.0010509188, + -0.0019578002, -0.0016545960, -0.0011530814, 0.0019206107, 0.0001146854, + 0.0013558092, 0.0015979782, -0.0012528729, 0.0017762135, -0.0012065680, + 0.0020874897, -0.0005375538, -0.0001702509, -0.0001517963, -0.0007972969, + -0.0009493278, -0.0006262941, -0.0006911827, -0.0032880879, 0.0003091828, + -0.0003355886, 0.0785805136, -0.0006787851, -0.0011698799, 0.0010173158, + 0.0021529170, -0.0002780345, 0.0008104683, -0.0014588581, -0.0003119482, + -0.0022416511, -0.0000230712, -0.0006655842, 0.0144496011, -0.0010815521, + 0.0003905987, -0.0024626830, -0.0008960167, 0.0008058064, -0.0012169816, + -0.0006371918, 0.0014034333, -0.0021183689, 0.0002518271, 0.0011398370, + 0.0024620020, 0.0016695163, -0.0013022017, -0.0011007637, -0.0014840327, + 0.0008776281, 0.0032764389, 0.0023379899, -0.0006615321, -0.0000049439, + 0.0031651631, 0.0007388402, -0.0009174039, -0.0014869610, 2.0704224110, + 0.0002249291, -0.0030250621, 0.0008916176, -0.0000258249, -0.0008288522, + -0.0000821545, 0.0006761216, -0.0026277127, 0.0007832372, -0.0026392965, + 0.0001873618, 0.0012383866, -0.0011408986, 0.0005718190, -0.0011432195, + -0.0005987906, -0.0018720441, -0.0290817525, 0.0006400254, 0.0016014415, + -0.0023069065, -0.0004296647, -0.0006023115, 0.0007818229, 0.0022047102, + 0.0001302622, -0.0007842390, -0.0011213103, 0.0015931004, -0.0021824511, + -0.0237499420, -0.0003510849, -0.0027874338, 0.0017433204, 0.0000883499, + 0.0007202330, -0.0015360168, -0.0001870869, 0.0009013304, 0.0002198424, + 0.0001151823, -0.0030225804, 0.0008880692, 0.0011319506, -0.0001257010, + 0.0000454700, 0.0008724970, -0.0002473961, -0.0003756674, -0.0009018625, + -0.0001545185, 0.0001706313, 0.0026796795, -0.0003138488, -0.0002394293, + -0.0123807462, 0.0028174520, 0.0013240324, -0.0015651896, 0.0015820807, + -0.0005110733, -0.0030524675, -0.0001720125, 0.0030716558, -0.0006856335, + -0.0005151345, 0.0001626075, 0.0012906762, 0.0011286070, -0.0004135701, + -0.0011911083, -0.0010690910, 0.0022537913, -0.0000235692, -0.0004773019, + -0.0025057318, -0.0017174021, 0.0011303779, -0.0002641100, -0.0006245261, + -0.0003495272, 0.0009160331, 0.0003465869, 0.0013746694, -0.0023150225, + 0.0008768050, -0.0005599597, 0.0004019691, 0.0024573726, -0.0019020014, + 0.0002542960, 0.0006738303, 0.0005817020, 0.0012966413, 0.0004923923, + 0.0010019215, 0.0007832854, 0.0008236933, 0.0014224122, -0.0016484237, + 0.0005432721, 0.0014976121, -0.0012981081, 0.0006366504, -0.0019137718, + 0.0015794616, -0.0013049446, 0.0007782582, 0.0021251887, 1.1715474129, + -0.0023390909, 0.0007341942, 0.0008040695, -0.0012159639, 0.0004411098, + -0.0010369271, 0.0002676294, -0.0008384152, 0.0000913693, 0.0007277834, + -0.0007872573, -0.0002408386, -0.0026875399, 0.0006983867, -0.0001060786, + 0.0000334843, -0.0005654468, 0.0036640074, -0.0005322727, 0.0018893280, + 0.0005538194, -0.0013689678, -0.0005523290, -0.0003025341, 0.0002658871, + 0.0027787951, -0.0016099236, -0.0006776764, 0.0023802742, 0.0002757078, + -0.0000016305, -0.0011488302, 0.0007495452, -0.0008765818, 0.0005892068, + -0.0006298155, 0.0012638191, -0.0008292572, 0.0021831770, 0.0001083571, + -0.0013110870, 0.0002811414, 0.0016160044, -0.0016852448, -0.0012082011, + 0.0002199262, -0.0010838909, 0.0012021088, 0.0000992338, -0.0021006265, + 0.0006169731, 0.0003577177, 0.0005895658, 0.0002275198, 0.0026674042, + 1.3066205978, 0.0009489197, 0.0000759410, -0.0001091992, -0.0009110293, + -0.0005489880, 0.0007062051, 0.0005964907, 0.0008089794, -0.0009895670, + -0.0002345045, -0.0022967486, -0.0010354207, 0.0008094609, -0.0014816275, + 0.0016049100, 0.0004967377, -0.0003706897, -0.0007163386, 0.0012761201, + 0.0000430488, -0.0006857099, 0.0003159540, -0.0004558358, 0.0016348511, + 0.0017040032, 0.0008263183, 0.0000443920, -0.0001244443, -0.0012157392, + -0.0008470928, 0.0002836327, 0.0000545619, -0.0009458533, 0.0035157399, + -0.0007204013, -0.0000872651, -0.0004470977, -0.0013351871, -0.0005607323, + -0.0013238403, 0.0025902269, -0.0010474119, 0.0001333500, -0.0017718971, + 0.0019179941, 0.0002351045, 0.0001794760, 0.0006945293, 0.0028822664, + 0.0004852773, 0.0026597884, -0.0005445760, -1.6467275620, 0.0012261856, + -0.0580161922, 0.0019084585, -0.0017967406, -0.0015975873, -2.1344916821, + -0.0021394514, -0.0003348757, 0.0006504552, -0.0011449563, -0.0004399633, + 0.0020088390, -0.0015125242, -0.0037301006, -0.8515177369, -0.0002021939, + -0.0021365054, -0.0002997119, 0.0011134626, 0.0063810018, 0.0008099843, + -0.0005102488, -0.0008197199, -0.0003181538, 0.0019310571, 0.0016827150, + -0.0006215381, -0.0003131526, -0.0009272530, -0.0001756703, -0.0021242201, + 0.0008308603, 0.0009937410, -0.0003800639, 0.0011510300, 0.0012898096, + -0.0000471873, 0.0004256198, -0.0000572121, 0.0015272968, 0.0017280111, + -0.0004642913, 0.0005724500, -0.0006212695, -0.0009338686, -0.0008897269, + 0.0005808617, 0.0002587764, 0.0000662468, -0.0022075302, 0.0011543189, + -0.0009324364, -0.0021395069, 0.0018243836, 0.0005337831, 0.0010114303, + 0.0008127019, 0.0010891934, 0.0001225933, -0.0031425683, -0.0002732754, + -0.0017544355, 0.0014677119, 0.0003705770, -0.0003312319, -0.0001092387, + -0.0010376005, 0.0013956549, -0.0001030033, -0.0003464008, -0.0000522519, + -0.0060129464, 0.0001668970, -0.0158057977, -0.0005596415, -0.0019609663, + -0.0015623053, 0.0013466434, -0.0007003900, 0.0009543924, -0.0006948917, + -0.0007703118, 0.0020604930, 0.0004733629, 0.0026418688, -0.0019318392, + 0.0011837110, -0.0020918623, -0.0000474299, -0.0002876353, -0.0000316133, + -0.0016978548, -0.0000697360, 0.0010226640, -0.0010834257, 0.0005619209, + -0.0012126705, 0.0001079040, 0.0010579849, -0.0019221115, 0.0011882130, + 0.0008076569, 0.0009291484, -0.0002532220, -0.0007545829, -0.0009349792, + 0.0004531341, -0.0018628578, 0.0002982151, 0.0012216588, 0.0009376126, + -0.0020099110, 0.0005497579, 0.0019221045, -0.0008462560, -0.0008613662, + -0.0008717880, -0.0000822827, -0.0000253650, -0.0010861792, 0.0026637227, + 0.0035005615, -0.0003987276, 0.0022327271, -0.0015582974, 0.0003832835, + 0.0020085212, -0.0010387476, 0.0000242590, 0.0005245986, -0.0004395093, + -0.0401877984, 0.0004148930, 0.0017920375, -0.0028747080, -0.0008578713, + 0.0001327254, 0.0014064470, 0.0002726530, 0.0008277963, 0.0009042476, + -0.0017578118, -0.0011687101, 0.0020318343, -0.0006725728, -0.0008748360, + -0.0008923547, 0.0009629373, -0.0016580317, -0.0011706036, 0.0012208470, + -0.0001321952, 0.4517194629, -0.0005734444, -0.0001163380, 0.0021335601, + 0.0003202502, -0.0015844556, 0.0012199411, 0.0001231544, -0.0008308189, + -0.0007669732, -0.0001919605, -0.0014914819, -0.0004230267, 0.0002180242, + -0.0005776342, -0.0000078715, -0.0006169798, -0.0014939145, 0.0001760621, + -0.0005604897, 0.0013148296, 0.0011200134, -0.0021979380, 0.0003534015, + 0.0023711638, 0.0012062620, -0.0013535079, 0.0018112250, -0.0002400829, + -0.0002646194, 0.0004598554, 0.0019621239, 0.0009701439, -0.0004717195, + 0.0000430603, -1.4940202236, 0.0013384502, 0.0018262137, -0.0006613403, + -0.0002064451, 0.0005433897, -0.0010834136, 0.0011839245, 0.0000028337, + 0.0001359703, -0.0000945391, 0.0017724024, 0.0003214716, -0.0008465634, + -0.0017493325, -0.0012190997, 0.0008558598, 0.0009149718, 0.0024823281, + -0.0000183163, 0.0008051461, -0.0003768406, 0.0006293695, 0.0031392407, + -0.0020736251, 0.0002307366, 0.0017667776, 0.0011211978, -0.0001930087, + -0.0003970178, -0.0000991453, -0.0006033070, 0.0007561465, -0.0010808846, + -0.0026227902, -0.0012292219, 0.0012438828, 0.0005235103, 0.0000569902, + -0.0007827738, -0.0020615039, 0.0015118418, 0.0001706900, 0.0006958736, + 0.0007946589, 0.0011266228, 0.0215538498, -0.0011793945, -0.0008884554}; + +float unet_input_time_embedding_50_26[] = { + -0.0001654183, -0.0010013012, 0.0032022605, 0.0001325138, 0.0012807180, + -0.0004733782, 0.0014959066, -0.0004975227, 0.0004812486, 0.0003848283, + -0.0046106763, -0.0006974754, -0.0003377376, -0.0013562641, -0.0031007372, + 0.0020395704, 0.0030997419, 0.0013747739, -0.0027717352, -0.0018118853, + 0.0036018710, -0.0024352651, 0.0010037530, 0.0351445824, 0.0001360921, + -0.0015598712, 0.0005374998, -0.0016721338, -0.0033215955, 0.0027696714, + 0.0009681494, -0.0007119635, -0.0009826967, 0.0004627933, -0.0004191110, + 0.0004011593, -0.0013381718, -0.0004152039, -0.0031419219, 0.0033134548, + 0.0019465890, -0.0009456645, -0.0012548519, 0.0030212784, -0.0024149045, + -0.0008771339, 0.0017774533, -0.0004235106, 0.0013116831, 0.0022725267, + 0.0001998357, -0.0011196141, 0.1257608235, 0.0004688888, -0.0008173900, + 0.0003924799, -0.0002172680, 0.0017485372, 0.0003938801, 0.0004995738, + -0.0000446106, 0.0001573806, 0.0020463853, -0.0014557228, 0.0007290500, + 0.0008769399, -0.0002363031, -0.0005130452, 0.0011400227, 0.0004014953, + -0.0015014787, 0.0005718998, -0.0009618055, 0.0004316848, 0.0007591536, + 0.0015076101, -0.0008278098, 0.0032657459, -0.0002151819, 0.0004604810, + -0.0008060485, -0.0026760041, 0.0007349813, 0.0011010489, 0.0033870188, + -0.0022054084, 0.0014484974, 0.0042383270, 0.0016950825, 0.0017188771, + 0.0020130656, -0.0026039528, 0.0004191166, -0.0001816262, 0.0006878725, + 0.0048951525, -0.0002381150, -0.0002057943, 0.0021856946, -0.0005801860, + 0.0013006963, -0.0012734686, 0.0007738271, 0.0948206931, 0.0006554695, + -0.0051230136, 0.0016076183, -0.0000149030, 0.0016259342, -0.0016972627, + 0.0010502329, -0.0026973886, 0.3425486088, 0.0005826820, -0.0004865676, + -0.0012201285, 0.0007364713, -0.0013407879, -0.0005931363, 0.0004874074, + -0.0013211616, -0.0003650424, -1.1191083193, 0.0021301925, 0.0004614983, + -0.0015826179, 0.0021287114, 0.0002408321, -0.0014824490, 0.0008959477, + 0.0000957572, 0.0018613152, -0.0006746731, -0.0004265532, -0.0009989338, + -0.0004956361, 0.0002556578, 0.0008581467, 0.0024208054, -0.0023222268, + 0.0001082425, 0.0020877402, -0.0020772009, -0.0021522362, 0.0000733160, + 0.0013329168, 0.0001681568, 0.0015819585, 0.0000878675, -0.0003340198, + 0.0015853993, 0.0002900992, -0.0026759622, -0.0006592068, -0.0012397184, + 0.0028639236, -0.0018383993, 0.0024073571, 0.0023149997, 0.0029097148, + 0.0011290624, 0.0004988526, 0.0006193127, -0.0017309031, -0.0005056378, + 0.0011741812, -0.0003068247, -0.0061960742, 0.0263100900, -0.0001973992, + -0.0002152546, -0.0033442266, 0.0010665776, -0.0011943388, 0.0013597365, + 0.0009548450, -0.0013250044, -0.0006416375, -0.0003072559, -0.0019380050, + -0.0022047192, 0.0001568710, -0.0034664115, -0.0019020177, 0.0012636078, + -0.0022302927, 0.0020483853, 0.0024178349, -0.0015467624, 0.0003851568, + -0.0014915271, -0.0010781721, -0.0006056587, -0.0007810818, -0.0009576231, + 0.0045891791, 0.0003369023, 0.0022892570, 0.0014537788, -0.0002989531, + -0.0007393514, 0.0006804941, 0.0002021529, -0.0015317537, -0.0015669521, + 0.0003049551, 0.0006882322, 0.0004685465, 0.0003041397, 0.0026233390, + -0.0023121624, -0.0020880811, 0.0001286275, -0.0016689801, 0.0032155837, + -0.0000189096, -0.0007172776, -0.0013170424, -0.0004363687, -0.0005252307, + 0.0015275832, -0.0018881932, 0.0004120090, -0.0130754774, -0.0029176774, + 0.0027846082, -0.0009438666, -0.0002045643, 0.0019683980, 0.0022496553, + -0.0023234906, 0.0033271322, -0.0017188857, 0.0056867478, 0.0024125390, + -0.0006557060, -0.0010925331, -0.0008710404, -0.0004441636, -0.0001613916, + -0.0031381135, 0.0003160116, -0.0026276994, 0.0009589391, -1.4494616985, + -0.0006113315, 0.0003874630, -0.0024201591, -0.0020957878, -0.0025405833, + -0.0010271594, -0.0007517980, -0.0002671205, 0.0016590348, -0.0021607922, + -0.0004198311, -0.0002936157, -0.0003526119, 0.0003368070, -0.0010389326, + 0.0016137250, -0.0033697884, 0.0020189898, 0.0033841296, 0.0004501740, + 0.0020941282, -0.0042411368, 0.0027731438, 0.0014418755, 0.0001167022, + -0.0003152378, 0.0021015627, -0.0010034791, 0.0008213921, -0.0009791383, + -0.0016776372, -0.0013192371, -0.0028538513, -0.0011229292, -0.0018529894, + 0.2162455916, -0.0010312367, -0.0012278132, 0.0021913019, -0.0016530636, + -0.0010843556, 0.0006252732, -0.0022539992, -0.0003727684, -0.0018396676, + 0.0005515452, -0.0015007013, -0.0005763012, 0.0008206605, 0.0002899580, + -0.0035205157, 0.0009727911, 0.0030956536, -0.0004145070, -0.0015385244, + 0.0018649255, -0.0007095148, 0.0028633052, -0.0006804601, 0.0018684522, + 0.0003977753, 0.0006236704, 0.0013027040, -0.0010168939, 0.0038184493, + 0.0031159781, 0.0020009764, -0.0011482547, 0.0015918128, 0.0020253337, + -0.0019890671, 0.0018051668, -0.0014897594, -0.0028992249, 0.0015332303, + 0.0004566095, -0.0019602994, 0.0000904186, -0.0021912362, 0.0011393734, + 0.0014439949, -0.0017078239, 0.0016381145, 0.0254427530, 0.0004795324, + 0.0009811004, 0.0024176405, 0.0009249187, 0.0020318027, 0.0010346184, + -0.0011646487, 0.0003986668, -0.0004454957, 0.0021101856, 0.0024084612, + -0.0020628180, 0.0003387053, 0.0001624359, 1.4289829731, -0.0014393230, + -0.0000157943, 0.0007990790, -0.0022933409, 0.0015343218, 0.0000503669, + 0.0003367886, -0.0020182850, -0.0005605617, -0.0001195725, 0.0002580042, + 0.0024300059, -0.0005419601, -0.0033775084, 0.0032504057, 0.0039129099, + -0.0005328963, 0.0003082054, 0.0007737260, 0.0007767659, 0.0012341723, + -0.0027120151, -0.0028709630, -0.0012129173, 0.0002215672, -1.2620058060, + -0.0009386153, -0.0046642581, -0.0022886042, -0.0021879701, 0.0013288709, + -0.0013924525, 0.0000265518, -0.0014070089, -0.0024674169, -0.0025868248, + 0.0002572356, 1.0486652851, -0.0003343944, -0.0006120321, 0.0009121355, + -0.0010409071, -0.0013660523, 0.0013885507, 0.0008316194, 0.0023036697, + 0.0020034546, 0.0031027915, -0.0013776496, -0.0001335696, 0.0000484465, + 0.0004271590, -0.0012676129, -0.0002759948, 0.0018228530, 0.0023109657, + 0.0011734462, 0.0007922677, 0.0019933211, 0.0000108760, 0.0006482573, + 0.0006102677, 0.0002143251, 0.0013437767, 0.0003839536, -0.0014402797, + -0.0006948733, 0.0005249755, -0.0000027069, -0.0002161108, -0.0023904657, + -0.0003989567, -0.0038175657, 0.0002766703, -0.0021773744, -0.0014876872, + -0.0009310306, -0.0023432865, 0.0024607852, -0.0021962735, -0.0009334153, + 0.0010558446, 0.0004846668, -0.0006640305, 0.0007235894, 0.0000112085, + 0.0013928297, -0.0010430752, 0.0024336458, -0.0010940527, 0.0031351382, + 0.0006688209, -0.0003928235, -0.0036927059, 0.0031632585, 0.0009479073, + -0.0021811379, 0.0012621515, 0.0005979527, -0.0007036508, 0.0021547910, + 0.0000355300, -0.0005315712, 0.0026692976, -0.0016350299, -0.0069644060, + 0.0000373502, 0.0021434398, -0.0004021593, -0.0023763531, -0.0028696253, + -0.0022163596, -0.0021373248, -0.0029230013, 0.0007365113, -0.0002335291, + -0.0003043739, -0.0052527040, -0.0011380522, -0.0010767166, 0.0012601451, + 0.0004395093, 0.0007981793, -0.0001984369, -0.0019076552, -0.0000593769, + -0.0015134930, -0.0002329533, 0.0007345341, 0.0014605445, -0.0002869125, + -0.0334292799, 0.0016302951, 0.0018003437, -0.0015941113, -0.5815193653, + -0.0034065321, 0.0015400767, -0.0004062292, 0.0013755753, -0.0016442856, + 0.0001953478, 0.0002927014, -0.0031584566, -0.0007480346, -0.0009101175, + 0.0000984864, 0.3413241804, 0.0005283221, -0.0012717755, -0.0004455484, + -0.0035373091, -0.0010945499, -0.0009040423, -0.0008524903, -0.0035854951, + -0.0030519250, 0.0027890103, 0.0014745332, 0.0014191363, -0.0006935196, + -0.0014224618, -0.0032309876, -0.0013341146, -0.0027672714, 0.0028517977, + 0.0005627682, -0.0008256603, -2.2695775032, 0.0027823457, -0.0022544293, + -0.0004418008, -0.0023698257, -0.0039048819, -0.0004979535, -0.0013569454, + 0.0005328408, -0.0014218641, 0.0000981087, 0.0014646701, 0.0001402861, + -0.0016952439, -0.0024086100, -0.0007345066, 0.0000201100, -0.0033966238, + -0.0004794470, -0.0020487225, 0.0004237038, 0.0024555249, 0.0002959582, + -0.0020590869, -0.0003212823, -0.0003404741, 0.0065261815, 0.0000441822, + -0.0003468487, 0.0000766604, 0.0013421117, -0.0032898020, -0.0047621280, + -0.0016517951, -0.0010939580, 0.0004417282, -0.0012043957, -0.0010072729, + -1.5873794556, 0.0011424199, -0.0018692010, -0.0005660634, -0.0005023892, + 0.0007153136, 0.0000025355, -0.0022715218, 0.0016075014, -0.0016263169, + 0.0020762039, 0.0020461283, -0.0013718600, -0.0000821147, 0.0004633511, + -0.0002426635, 0.0008520833, -0.0003952989, 0.0013916930, -0.0016147969, + 0.0011730404, -0.0010774164, 0.0017755860, -0.0004148523, -0.0009119390, + 0.0010492606, -0.0017881414, -0.0009292588, 0.0008278689, 0.0021081879, + 0.0004198058, 0.0025738603, -0.0022782129, -0.0016192502, 0.0020848864, + 0.0040401900, -0.0014321981, 0.0003109514, 0.0014822450, -0.0003667441, + -0.0026901858, -0.0036561801, 0.0023330497, 0.0002579466, -0.0013942376, + 0.0007056015, 0.0007314252, -0.0000499743, 0.0002001990, -0.0038965777, + 0.0026300978, -0.0006101597, -0.0006963285, -0.0009726448, -0.0017391813, + 0.0010075166, -0.0010740651, 0.0002063198, 0.0007891328, -0.0004259034, + 0.0017982197, -0.0014028028, 0.0007583578, 0.0027737576, 0.0013399823, + -0.0012187939, -0.0005517041, -0.0003280769, -0.0021182275, 0.0015190893, + -0.0026826174, -0.0011225279, -0.0024110661, -0.0002988083, -0.0017863032, + 0.0003802604, -0.0024836559, -0.0002341315, 0.0020781863, -0.0000247792, + -0.0023913267, 0.0009985305, -0.0021242695, 0.0015267917, -0.0005822708, + 0.0002297694, 0.0013121797, -0.0028721010, -0.0022333958, 0.0011902247, + -0.0021232953, -0.0009541956, 0.0004118627, 0.0020450337, -0.0028071082, + -0.0000112773, 0.0000549685, 0.0004356990, 0.0005011293, 0.0000335462, + -0.0009164327, -0.0053505804, -0.0025708477, -0.0011018161, -0.0002187500, + -0.0037474094, 0.0021045613, -0.0002117339, -0.0018251995, -0.0003466713, + 0.0001680646, -0.0002717925, -0.0011187111, -0.0010661326, -0.0008552470, + -0.0026174451, 0.0012141305, -0.0015945619, 0.0010592132, 0.0006502793, + -0.0008365258, -0.0013718917, -0.0001108258, 0.0018556176, 0.0007474776, + -0.0016204454, 0.0020886431, -0.0014309678, 0.0005042045, -0.0023586315, + 0.0008933037, -0.0002381173, 0.0006933259, -0.0002033824, 0.0027785599, + 0.0000382964, -0.0007795260, 0.0020886520, -0.0021696002, -0.0015243907, + -0.0008773087, 0.0023917835, 0.0012517639, -0.0010264895, -0.0008712043, + -0.0021483814, 0.0003964917, 0.0023529204, -0.0001657165, 0.0002148813, + -0.0002085161, 0.0022161661, -0.0026009211, -0.0016048604, 0.0000177552, + -0.0016852408, -0.0022534858, -0.0012325160, 0.0020326071, 0.0022730683, + -0.0021095686, 0.0077561140, 0.0001842330, 0.0003440431, 0.0016033980, + -0.0016120363, 0.0009099115, 0.0013158165, 0.0011895343, -0.0007265303, + -0.0023763180, 0.0001553823, 0.0012636689, -0.0009629289, 0.0017093553, + -0.0004991479, 0.0024538683, 0.0000003793, -0.0015543532, -0.0009452500, + 0.0010153549, -0.0000173133, 0.0006388184, -0.0000953279, -0.0001406537, + 1.7137132883, 0.0012436039, -0.0029271445, -0.0003168678, 0.0008079554, + -0.0016299726, -0.0028438410, -0.0027301521, 0.0026371288, 0.0015631923, + 0.0035051061, -0.0016153717, 0.0005548202, -0.0009910208, -0.0022633388, + -0.0015812994, 0.0012407701, 0.0029003960, 0.0003668847, 0.0001859150, + 0.0010668929, -0.0034409841, -0.0000377783, 0.0011813801, -2.4298012257, + 0.0025048417, 0.0030096655, -0.0033108015, -0.0012623309, 0.0007741125, + -0.0003004037, -0.0005814395, 0.0008344191, -0.0011801352, -0.0003766874, + 0.0002550445, -0.0002496354, 0.0012720237, -0.0008207664, 0.0022891094, + -0.0006849524, -0.0006301738, 0.0004401575, 0.0018776567, -0.0007675686, + -0.0004665419, -0.0002442127, -0.0001989708, -0.0011561872, -0.0017405674, + -0.0025053886, 0.0658077225, 0.0011316575, 0.0003667343, 0.0032380088, + -0.0003411288, -0.0004011376, -0.0012903593, 0.0021869517, 0.0012584475, + -0.0018193321, -0.0003085048, -0.0023083680, 0.0182300359, 0.0007874125, + -0.0012020717, 0.0029350829, 0.0004458468, 0.0050141560, -0.0022738921, + 0.0035836967, 0.0028472631, 0.0009088076, -0.0001643828, -0.0008938004, + -0.0021390305, -0.0002259025, -0.0007927858, 0.0017270092, -0.0015334846, + 0.0008746698, 0.0008890703, 0.0007639769, -0.0025985257, 0.0001788547, + -0.0015937812, 0.0009526949, -0.0010124960, -0.0018792667, 2.0057919025, + -0.0006335774, -0.0035739799, -0.0025889794, 0.0019545050, 0.0008191499, + 0.0012701890, -0.0018609790, -0.0008324008, -0.0000467959, -0.0003202921, + 0.0003220967, -0.0021570814, 0.0008272292, -0.0022695586, -0.0017255686, + 0.0000794269, -0.0004780069, -0.0276058074, -0.0032200678, 0.0010782150, + 0.0011302289, -0.0000264561, -0.0017879452, 0.0008451953, 0.0007097940, + -0.0047937408, 0.0010835121, 0.0003308329, 0.0025327611, -0.0023976741, + -0.0192741547, -0.0013250606, -0.0032468832, 0.0023624054, 0.0000403384, + -0.0016579921, -0.0013304767, -0.0012920611, -0.0013024301, -0.0012159348, + 0.0004853113, -0.0007164432, 0.0022668280, 0.0002121597, -0.0023697042, + 0.0002037920, -0.0031588594, 0.0014766566, 0.0032183297, -0.0002436931, + -0.0000597239, -0.0019335630, 0.0004551378, -0.0018559535, -0.0021609496, + -0.0162263289, 0.0003003551, -0.0002702111, 0.0007660696, -0.0001620757, + -0.0023183029, -0.0005362653, -0.0007444955, -0.0011325746, -0.0028557281, + -0.0006135684, -0.0025394375, -0.0001746037, -0.0019332629, -0.0007660058, + -0.0029783174, -0.0009201097, 0.0003602260, 0.0038315356, -0.0012274529, + -0.0009174366, 0.0010224641, 0.0009598248, -0.0005959463, 0.0018085903, + 0.0006166613, -0.0016799024, -0.0010938543, 0.0020420174, -0.0022719572, + -0.0004153338, -0.0012498162, -0.0006147204, -0.0003709609, 0.0005101738, + 0.0000803841, 0.0010956740, -0.0001198382, -0.0002222075, 0.0020935636, + 0.0009711208, -0.0017112279, 0.0018500900, -0.0006504059, 0.0008539800, + -0.0002347091, -0.0001372767, 0.0003149654, -0.0032958812, 0.0014812142, + 0.0007797144, 0.0027971992, 0.0030885204, 0.0042747920, 1.1113317013, + -0.0025000593, 0.0006621415, -0.0014986349, 0.0011787619, -0.0042883381, + -0.0009972639, 0.0008668966, -0.0003954475, -0.0019811001, 0.0023700071, + 0.0024723960, 0.0045622461, -0.0006715655, -0.0014255526, -0.0003910731, + -0.0025104121, -0.0019261412, 0.0009479485, 0.0026315372, -0.0002784517, + 0.0019655814, -0.0001480230, -0.0012394090, -0.0005767993, 0.0005881405, + -0.0002817898, -0.0019181701, -0.0020240736, 0.0004107021, -0.0032046158, + -0.0028934197, -0.0022716997, 0.0010875072, -0.0001312816, 0.0014546593, + -0.0009259486, -0.0025445549, -0.0006761110, 0.0011825990, -0.0029008775, + 0.0007054503, 0.0001161858, 0.0001522130, -0.0000201495, -0.0021707318, + 0.0032333832, -0.0003659148, -0.0007612538, -0.0022983882, -0.0011552675, + -0.0005803966, -0.0020721594, 0.0007162555, -0.0000873674, 0.0018684147, + 1.2025068998, 0.0027609402, 0.0006687585, -0.0004014163, 0.0014495859, + 0.0002308010, -0.0001400742, 0.0002189675, -0.0029415498, 0.0011338692, + -0.0022463605, 0.0010359995, -0.0014691004, -0.0007624072, -0.0025754902, + 0.0029095067, -0.0000990769, 0.0021918658, 0.0011519347, -0.0017226040, + -0.0015099875, -0.0012040691, 0.0025869841, 0.0012249164, 0.0001907935, + 0.0001629703, -0.0008093216, 0.0014408056, 0.0017359320, -0.0019180276, + 0.0013446896, -0.0016582401, -0.0005558544, 0.0008644436, -0.0013699089, + 0.0022222283, -0.0014431834, 0.0006821691, -0.0003745777, -0.0031118323, + -0.0001444502, 0.0011883182, -0.0006033219, 0.0021838178, -0.0009975298, + -0.0012344588, 0.0039128773, -0.0048241178, -0.0031232717, -0.0010022940, + -0.0010347702, 0.0013784701, -0.0010283929, -1.5994105339, -0.0030043561, + -0.0497064069, -0.0004487831, 0.0005127601, 0.0028973657, -2.0590064526, + 0.0022477000, -0.0004592855, 0.0025837487, 0.0024026609, 0.0004780949, + -0.0020151236, -0.0008930629, 0.0018884116, -0.6586268544, 0.0028426254, + -0.0012950229, 0.0010932835, 0.0002272403, 0.0021353220, -0.0004193764, + 0.0020801239, -0.0023027612, 0.0033303353, -0.0017068128, 0.0002280688, + -0.0025808332, 0.0032390160, -0.0011921696, -0.0001725908, 0.0011067898, + 0.0000895874, 0.0004621348, -0.0031889556, 0.0001879544, -0.0033898032, + -0.0021177158, -0.0028722805, 0.0027371235, -0.0002285964, -0.0005472503, + -0.0004763364, 0.0014309784, 0.0001209285, -0.0000109563, 0.0026312135, + -0.0006993965, 0.0018853778, 0.0009463513, -0.0000628219, 0.0012196666, + 0.0007401388, -0.0021095565, -0.0009697638, -0.0006363720, 0.0004857527, + -0.0006807297, 0.0024118954, -0.0008168882, -0.0026289993, -0.0003734336, + -0.0004391060, -0.0026552179, -0.0025743721, 0.0019110041, -0.0007409240, + -0.0029997546, 0.0031501940, 0.0002135169, 0.0019692620, -0.0012024883, + -0.0002218690, -0.0004815091, -0.0240676664, -0.0004808237, 0.0023324564, + -0.0016724034, 0.0011738756, 0.0013833870, -0.0004387777, -0.0001463213, + -0.0001818687, 0.0002801917, -0.0021461290, 0.0024703988, 0.0005414221, + -0.0029768292, 0.0007347018, 0.0018264032, 0.0002763681, 0.0029282817, + 0.0004813692, -0.0006269109, -0.0028734831, 0.0006841593, 0.0016717985, + -0.0026997947, -0.0002581766, -0.0006631258, 0.0027436789, 0.0012024511, + -0.0014447602, 0.0023084383, 0.0008073025, 0.0034340406, -0.0031414691, + -0.0025842497, 0.0013314232, 0.0003909916, 0.0009697998, 0.0021453549, + -0.0014613930, 0.0007163784, 0.0012204857, -0.0018967367, 0.0004888363, + 0.0006252972, -0.0015586218, -0.0009770845, 0.0004579118, 0.0006255349, + -0.0019968627, 0.0010520816, 0.0013997678, 0.0005256160, 0.0019648080, + 0.0019797322, -0.0003452094, -0.0022559147, 0.0013145688, -0.0010449705, + 0.0308321565, -0.0016392465, -0.0002021416, 0.0039629070, -0.0006165853, + 0.0000342235, 0.0000758118, -0.0007806572, 0.0007618694, -0.0029121963, + 0.0015537492, -0.0008217938, 0.0002348134, -0.0034654033, -0.0026124245, + 0.0011212046, 0.0009100796, -0.0026120683, 0.0023930790, -0.0007949038, + 0.0000461000, 0.4459160268, -0.0032673713, -0.0010299007, -0.0000031602, + -0.0002616595, -0.0018128550, 0.0003882078, -0.0012642895, -0.0024640225, + -0.0034834296, -0.0021904293, 0.0000000871, 0.0019560433, -0.0005383494, + 0.0005037875, 0.0016371720, -0.0018021055, 0.0008288422, 0.0025853426, + 0.0007019749, -0.0019319071, 0.0003568859, 0.0034329775, 0.0017970074, + 0.0000443298, -0.0000109478, -0.0019597586, -0.0003914796, 0.0006345576, + 0.0003774235, -0.0010342533, -0.0001482433, -0.0017878952, 0.0027518072, + -0.0003806319, -1.4932296276, 0.0015561436, 0.0019063083, 0.0014468876, + 0.0021729511, 0.0009699480, -0.0011052708, 0.0002496250, 0.0005873297, + 0.0019493089, 0.0014856156, -0.0012592688, -0.0001790258, 0.0006647795, + -0.0004533920, -0.0019003985, -0.0010445900, 0.0012035826, 0.0018351423, + 0.0002871440, -0.0026215897, -0.0028849898, -0.0038390593, 0.0008268515, + -0.0014451956, 0.0011048694, 0.0012288173, -0.0011737235, 0.0006072272, + -0.0034592696, 0.0003668987, 0.0024651410, -0.0013819187, 0.0000194730, + 0.0000225967, -0.0012764256, -0.0036214737, -0.0004130519, -0.0008562319, + 0.0014332174, 0.0037128753, 0.0013057843, -0.0004959553, 0.0001571873, + 0.0003860025, -0.0012885835, 0.0366557166, 0.0021151833, -0.0015350719}; + +float unet_input_time_embedding_50_27[] = { + -0.0003220276, -0.0013669133, 0.0022346005, -0.0008713294, 0.0005818640, + -0.0004523993, 0.0013657545, -0.0001022079, 0.0016141110, 0.0009596685, + -0.0044350121, 0.0016285349, -0.0021378892, 0.0001115464, -0.0029501878, + 0.0012010643, 0.0022996771, 0.0011660818, 0.0000197220, -0.0014379937, + 0.0016280124, -0.0014440827, -0.0022272356, 0.0429228321, 0.0011907069, + -0.0015028757, -0.0000293357, -0.0001793541, -0.0015292045, 0.0042070094, + 0.0012547756, -0.0022752148, 0.0004936857, -0.0002271924, 0.0008461229, + 0.0016100141, -0.0005388325, 0.0016213433, -0.0022389949, 0.0018391125, + 0.0007562321, -0.0000709898, 0.0020794724, 0.0027515711, -0.0026562628, + -0.0016585358, 0.0005277749, -0.0025307331, -0.0002214592, 0.0009802126, + 0.0001403242, -0.0009130889, 0.1251122206, -0.0013256837, 0.0000368094, + 0.0009800688, 0.0004956371, -0.0002826774, 0.0040100268, 0.0005332956, + -0.0010677886, -0.0006436792, 0.0010175589, 0.0009592748, 0.0003407793, + -0.0000964366, 0.0017737495, -0.0000534802, 0.0030840700, -0.0006607978, + -0.0007573697, -0.0019516628, -0.0008939074, 0.0003314102, 0.0019169869, + -0.0000479249, 0.0004204283, 0.0022108546, -0.0005573701, -0.0001630068, + 0.0000552607, -0.0019474103, 0.0024831505, 0.0020675142, 0.0029022025, + -0.0016108442, 0.0034808121, 0.0012000380, 0.0033619320, -0.0001301470, + 0.0009669963, -0.0002809372, -0.0003945017, 0.0002540461, 0.0025917995, + 0.0056908601, -0.0011803573, -0.0015667682, 0.0019253111, -0.0000778250, + 0.0027219923, -0.0015364750, 0.0030642101, 0.0749988481, -0.0017157281, + -0.0048376606, 0.0012881558, 0.0003298596, 0.0021586264, 0.0006846064, + 0.0006602132, -0.0020198561, 0.3351604640, -0.0009771185, -0.0011289660, + -0.0016948259, 0.0008538403, -0.0022871403, 0.0006220532, 0.0005108237, + -0.0034125564, 0.0014438105, -0.8954243064, 0.0032225980, -0.0001918171, + 0.0024706312, 0.0002128570, -0.0005672690, -0.0007908987, 0.0037828572, + 0.0000185925, 0.0018413030, 0.0012477769, -0.0006521419, -0.0026567983, + -0.0006017305, 0.0030989929, 0.0015475322, 0.0011368431, -0.0010480378, + 0.0002934553, 0.0006100768, -0.0014855978, 0.0001279507, 0.0015124369, + 0.0029448122, -0.0006856769, 0.0011143871, 0.0006072384, 0.0003249212, + 0.0006049327, -0.0025520884, -0.0043235174, 0.0001672066, -0.0009017126, + 0.0016792398, 0.0019166600, 0.0009038849, 0.0024941012, -0.0002232832, + 0.0001908904, 0.0009202425, -0.0011454886, -0.0009262101, -0.0047202422, + 0.0004555339, -0.0004699547, -0.0035271728, 0.0356884524, 0.0003040868, + 0.0025133896, -0.0021658698, -0.0006485330, -0.0002023248, -0.0009904550, + 0.0008485075, -0.0007511261, 0.0035224147, -0.0009611500, -0.0024891421, + -0.0010213573, 0.0010578660, 0.0051501882, -0.0022975262, 0.0013069408, + 0.0000931108, 0.0020343428, 0.0053898464, -0.0023318375, 0.0007251017, + -0.0005226941, -0.0017453576, -0.0024391785, 0.0001764584, 0.0025774660, + 0.0000390522, -0.0000611990, 0.0003202292, 0.0009566309, -0.0009104144, + 0.0011233743, 0.0023419783, 0.0003623581, -0.0023433976, -0.0024773432, + 0.0043851612, 0.0020043054, 0.0000314815, 0.0003136997, 0.0039041268, + -0.0032309345, 0.0003360137, 0.0008368667, 0.0002285212, 0.0017949947, + -0.0014508571, -0.0011450727, 0.0005260105, -0.0011348441, -0.0013736811, + 0.0026675723, -0.0000650298, 0.0023660164, -0.0086365258, -0.0015638799, + 0.0029620680, -0.0042943647, -0.0014445072, -0.0007488132, -0.0001871765, + 0.0044062519, 0.0038961871, -0.0011524432, 0.0039884085, 0.0035018884, + 0.0000933032, -0.0033112457, -0.0002075178, -0.0001138523, -0.0005041980, + -0.0016108777, -0.0022793629, 0.0007132180, 0.0008810833, -1.4041029215, + -0.0005842452, 0.0017083511, -0.0018101373, 0.0004413882, -0.0037081847, + -0.0017432813, 0.0017784303, -0.0003545345, 0.0021741251, -0.0029723495, + -0.0006992796, -0.0027652332, -0.0025559701, -0.0014391935, -0.0017640039, + 0.0017874837, -0.0037179484, 0.0018890232, 0.0048281713, 0.0008176203, + 0.0017302907, 0.0005244603, 0.0028154803, 0.0002162429, 0.0022590421, + -0.0019595260, 0.0015642780, -0.0003232257, -0.0002302006, 0.0007688222, + -0.0031960781, 0.0000848402, -0.0022321311, 0.0008533029, -0.0028812848, + 0.2090266645, -0.0006849552, -0.0009906719, 0.0025670016, -0.0007895231, + -0.0027649878, -0.0007336698, -0.0043781572, -0.0001325766, 0.0006915024, + 0.0025848718, 0.0010467130, 0.0001618029, 0.0017545919, 0.0018000901, + -0.0030617123, -0.0003166995, 0.0026554917, 0.0020506429, -0.0018440969, + -0.0007822206, -0.0013686770, 0.0023286417, 0.0000549909, 0.0006303655, + 0.0019749664, -0.0016252233, -0.0016337275, 0.0013048984, -0.0003266949, + 0.0023099035, 0.0023053507, -0.0031106716, -0.0017781034, 0.0003106385, + 0.0012196521, 0.0011929526, -0.0023306892, -0.0011066059, 0.0006679464, + 0.0012726719, -0.0011338922, 0.0001338134, -0.0015407274, 0.0002200344, + 0.0015873010, 0.0014000721, 0.0008612028, 0.0334049985, 0.0024827602, + 0.0022171480, 0.0018093991, 0.0009960592, 0.0020272406, -0.0010267510, + -0.0012787087, 0.0026289041, 0.0024764845, 0.0027101613, 0.0017670863, + -0.0016491665, 0.0006959771, 0.0037594892, 1.3454711437, -0.0020127469, + -0.0010687103, 0.0010096241, -0.0000556062, -0.0008230070, -0.0009400042, + -0.0011375481, 0.0009828582, 0.0025092233, 0.0010611042, -0.0005211717, + 0.0017848080, 0.0016643654, -0.0050100265, 0.0021103811, 0.0003194022, + 0.0007266756, 0.0021720857, 0.0027970159, 0.0029491396, 0.0012343827, + -0.0023845022, -0.0017061010, 0.0013603028, 0.0006581163, -1.1354343891, + 0.0002048975, -0.0009858008, -0.0014199633, -0.0005832473, 0.0016981976, + -0.0018179487, -0.0006573602, -0.0002957096, -0.0005435788, -0.0031351559, + 0.0006116141, 1.1736631393, 0.0012225660, 0.0020662220, -0.0014429865, + 0.0011471133, -0.0017384202, 0.0033843056, -0.0007392322, 0.0010616132, + 0.0007606195, -0.0001036833, -0.0015685861, 0.0016505725, 0.0003257445, + 0.0000874964, 0.0007530907, 0.0004976910, -0.0004558419, 0.0010343753, + 0.0004119095, 0.0019276426, 0.0011417356, -0.0013741860, -0.0026321905, + 0.0032762415, -0.0008471200, -0.0003470671, 0.0018809461, -0.0017239810, + 0.0005188747, -0.0001211842, 0.0002253414, 0.0002815074, -0.0033047926, + 0.0002501602, -0.0020685541, 0.0008088480, -0.0053181360, -0.0035032295, + 0.0005062290, 0.0017887673, 0.0028047073, 0.0003943916, -0.0010011168, + 0.0028581177, 0.0008550454, 0.0009684360, 0.0010462581, 0.0011012887, + 0.0021670801, -0.0009717818, 0.0027491285, 0.0010162657, -0.0002590906, + -0.0001684074, 0.0004410427, -0.0008329435, 0.0010813018, 0.0005091496, + 0.0009397776, 0.0021915114, -0.0005781715, 0.0002550490, -0.0006383753, + -0.0012723547, -0.0017625899, 0.0020256280, 0.0031032688, -0.0024826052, + 0.0000197035, 0.0003145654, 0.0003829331, -0.0003512796, -0.0014995660, + -0.0000394937, -0.0006532818, -0.0022734879, 0.0026798202, -0.0012848706, + -0.0020842301, -0.0046809781, 0.0002306558, 0.0012588148, 0.0028870152, + 0.0023895241, 0.0017753853, -0.0010030344, -0.0008276646, -0.0009972439, + -0.0003953227, -0.0017408093, -0.0024466894, 0.0038098108, -0.0018360550, + -0.0301747546, 0.0009393562, 0.0025749537, -0.0013548536, -0.4404907525, + -0.0019506151, 0.0013334836, 0.0011386268, 0.0012926923, 0.0005817398, + -0.0015302176, -0.0000725340, -0.0043951580, -0.0022077421, -0.0036322593, + -0.0019312734, 0.3176182508, 0.0020040330, -0.0002331301, -0.0022121505, + -0.0110123539, -0.0021969611, -0.0007198527, -0.0047633424, 0.0002992752, + -0.0007596994, 0.0000104355, 0.0013380474, 0.0015937458, 0.0008736437, + -0.0000633067, -0.0030645696, -0.0008069269, -0.0022402820, 0.0026604659, + 0.0014627150, -0.0002686554, -2.2458691597, 0.0030177794, -0.0009706891, + 0.0002601901, 0.0007335260, -0.0032824483, 0.0009496482, -0.0020234007, + 0.0001607151, -0.0029910351, -0.0006765547, 0.0012640548, 0.0012062429, + -0.0011402015, -0.0001394057, -0.0005752626, 0.0028940653, -0.0030448167, + 0.0015165608, -0.0016902592, 0.0021394063, 0.0007474709, -0.0014470841, + -0.0027838012, -0.0016963562, -0.0014081041, 0.0033489754, 0.0004428038, + -0.0007063905, -0.0024545612, 0.0017553121, -0.0025096491, -0.0046931896, + 0.0001490880, 0.0010014079, 0.0012307591, 0.0024379953, -0.0018194122, + -1.5564949512, 0.0027527083, -0.0002331652, -0.0016008890, -0.0012525294, + -0.0015085497, -0.0009710602, -0.0005973559, 0.0023911479, 0.0002786806, + 0.0024553072, 0.0004577934, -0.0007541832, 0.0018439810, -0.0003099628, + 0.0003911648, 0.0024159322, -0.0010202751, -0.0011759917, -0.0011580931, + 0.0001203562, -0.0002210347, 0.0007180185, -0.0000483613, 0.0004600030, + 0.0012767436, -0.0012623111, -0.0005919682, 0.0010503712, 0.0015255504, + -0.0001979449, 0.0030269525, 0.0019325498, 0.0001878049, -0.0013179441, + 0.0051575853, -0.0008768109, -0.0003392370, -0.0010980451, 0.0004699216, + -0.0011309787, -0.0011806046, -0.0002025366, 0.0008057002, -0.0024446496, + 0.0026633125, 0.0030021754, -0.0002268013, 0.0022720783, -0.0023050399, + 0.0037955330, -0.0019802740, -0.0023303088, -0.0022196888, -0.0029187200, + 0.0008835418, -0.0017618112, -0.0017478915, 0.0012587894, 0.0001773043, + -0.0014136811, -0.0009093368, -0.0019702758, 0.0012934702, -0.0001766915, + -0.0012697992, 0.0013186638, -0.0008800302, 0.0007708017, 0.0005201686, + -0.0006812755, 0.0011203092, -0.0012760612, -0.0025314912, -0.0007312004, + 0.0013011768, -0.0032435914, 0.0004889264, 0.0012230284, -0.0015658094, + -0.0008041500, -0.0000315688, -0.0020558638, 0.0024695008, -0.0003183840, + 0.0026610158, 0.0017505425, -0.0043931850, -0.0003506714, 0.0039805388, + -0.0011793020, 0.0002889989, -0.0008122928, 0.0003179393, -0.0011279318, + 0.0015394256, -0.0002670456, -0.0006370901, 0.0018138783, -0.0004105363, + -0.0024334241, -0.0013535810, -0.0041179988, -0.0008540023, -0.0013368111, + 0.0001370911, 0.0011780071, -0.0001903391, -0.0012655610, -0.0012721387, + 0.0018746750, 0.0005978653, -0.0010493268, -0.0008540944, -0.0008462081, + -0.0005850508, 0.0017674800, 0.0005541623, 0.0013644823, 0.0025454098, + -0.0008759846, 0.0026182260, 0.0008315470, 0.0010522150, -0.0012152102, + 0.0001597609, 0.0022555464, 0.0013709106, -0.0023707147, -0.0047086785, + 0.0016469255, 0.0000116616, 0.0027213097, 0.0003613834, 0.0023393808, + 0.0012374031, 0.0011333448, -0.0013061494, 0.0015819171, -0.0008914378, + 0.0004187315, 0.0013302504, 0.0001281940, 0.0004168977, 0.0005163052, + -0.0007496213, 0.0004405496, 0.0011078622, -0.0010313517, 0.0001182295, + 0.0009055214, 0.0015381286, -0.0038914306, -0.0016934170, -0.0019302317, + 0.0011002957, -0.0017828890, 0.0000122613, 0.0017820287, 0.0031173613, + -0.0027444605, 0.0118473629, 0.0012615572, -0.0004701330, -0.0020758191, + -0.0031849532, 0.0004351009, 0.0027803197, 0.0027711790, -0.0010324446, + -0.0031574648, 0.0009445297, 0.0012822497, -0.0015840819, 0.0005940364, + 0.0026329467, 0.0020383364, -0.0009418228, -0.0012695403, -0.0006118142, + 0.0029276209, -0.0002144650, 0.0012393279, 0.0006435695, -0.0018613508, + 1.5998800993, -0.0008102292, -0.0019806717, -0.0002155553, 0.0017591859, + -0.0022797934, -0.0033026235, 0.0004914440, 0.0015802020, 0.0011475161, + 0.0016172053, 0.0012361029, 0.0010320862, -0.0005619875, -0.0026037674, + -0.0000113330, 0.0030371689, 0.0028829244, -0.0014639809, -0.0008916717, + 0.0013502580, -0.0028096894, -0.0000489175, -0.0001329633, -2.3670485020, + 0.0046685869, 0.0045073777, -0.0001794985, -0.0012663337, -0.0003877743, + -0.0013707071, -0.0012656188, 0.0003103050, -0.0037344396, -0.0003257729, + 0.0020479942, 0.0005634446, 0.0010462375, -0.0019770281, -0.0006434643, + -0.0004928862, 0.0011360440, 0.0015280098, 0.0028663413, 0.0007218830, + -0.0006133872, 0.0016779407, -0.0004206079, -0.0025644186, -0.0002146969, + -0.0007994357, 0.0495591611, -0.0006238455, 0.0011851955, 0.0002238653, + 0.0011249542, -0.0007003697, -0.0016260203, -0.0005432698, 0.0027702844, + -0.0022410748, 0.0029904279, -0.0023852068, 0.0129012847, 0.0022936938, + -0.0001367045, 0.0013935801, 0.0020062448, 0.0032893093, -0.0018588221, + 0.0005186270, 0.0040118713, -0.0008661433, 0.0010030067, -0.0014833928, + -0.0040937574, -0.0014305766, 0.0046509313, -0.0017072046, -0.0016940641, + 0.0003349567, 0.0023265961, 0.0003592367, -0.0002588068, -0.0005046481, + -0.0023884834, 0.0023341146, -0.0014343704, 0.0004398071, 1.9282978773, + 0.0026851888, -0.0024857919, 0.0008079839, 0.0026942343, 0.0002103042, + 0.0024409865, -0.0011699041, -0.0008094534, 0.0010020717, -0.0001529376, + -0.0001575707, -0.0013442016, 0.0010570139, -0.0013735630, 0.0007063182, + 0.0003306572, -0.0005528363, -0.0270812381, -0.0004235231, -0.0016942034, + 0.0013740724, 0.0002963790, -0.0020443136, 0.0002332055, -0.0006383492, + -0.0029182257, 0.0013985494, -0.0012096181, 0.0019272282, -0.0009240219, + -0.0197942406, -0.0009087613, -0.0013133707, 0.0029720636, -0.0008153133, + 0.0012027039, 0.0006955466, -0.0039556725, -0.0014246783, 0.0001367582, + 0.0007178979, -0.0017357655, 0.0031764610, 0.0013826501, -0.0038407119, + 0.0021655029, -0.0019243979, 0.0015081083, 0.0014365020, 0.0003030230, + 0.0004692967, 0.0000001038, 0.0016940129, -0.0020614052, -0.0012670262, + -0.0142807448, 0.0015122214, 0.0008241301, 0.0015577087, 0.0012312187, + -0.0010639443, -0.0001727669, -0.0019187611, -0.0011045809, -0.0023393226, + -0.0016397208, -0.0015597735, -0.0010773165, 0.0000795792, 0.0009428193, + -0.0050655585, -0.0006351962, -0.0000519712, 0.0011639292, 0.0006763600, + -0.0010930584, 0.0017202813, -0.0001769848, -0.0012796894, 0.0015238347, + -0.0001288597, -0.0014511915, 0.0002655013, 0.0030167382, -0.0035152426, + -0.0033611781, -0.0029204283, 0.0022998927, 0.0000203887, 0.0009806771, + 0.0005999610, 0.0005038613, 0.0004250102, -0.0009280061, 0.0000030682, + 0.0001359330, 0.0007585860, -0.0015010415, 0.0003988002, 0.0009846832, + 0.0003716294, 0.0011699300, 0.0006065529, -0.0007477837, 0.0039855763, + 0.0030190186, 0.0001777951, 0.0036173137, 0.0064612026, 1.0572855473, + -0.0032098400, -0.0000914549, -0.0003497335, 0.0006231586, -0.0024894234, + -0.0007386636, 0.0001505851, -0.0010689450, -0.0012675156, 0.0012255209, + 0.0028002458, 0.0017591571, -0.0028659981, -0.0001129188, 0.0017881901, + -0.0047145295, -0.0004790219, -0.0008016983, 0.0015452928, 0.0006586298, + 0.0004999414, -0.0021094675, -0.0000723128, -0.0017717038, -0.0011135759, + 0.0007032342, -0.0016448774, -0.0013636202, 0.0016914094, -0.0032797502, + 0.0016271344, -0.0009269128, 0.0007271352, -0.0010839994, 0.0007547443, + -0.0022480690, -0.0008856339, -0.0002963749, 0.0017352672, -0.0044244491, + 0.0007202453, 0.0006671499, 0.0023223809, 0.0003084365, 0.0006921240, + 0.0034544321, 0.0002618590, -0.0017207913, 0.0005777529, -0.0005645142, + 0.0005428122, -0.0022692857, -0.0035346453, -0.0005411492, 0.0015649139, + 1.1065809727, 0.0012049167, 0.0010965839, 0.0013924984, -0.0002390915, + -0.0006150745, 0.0000377279, 0.0008717627, -0.0014184490, -0.0000342022, + -0.0019565078, 0.0007876698, -0.0016084374, 0.0026369970, -0.0048811100, + 0.0022379356, 0.0000542440, 0.0012052548, 0.0011708622, 0.0017874441, + -0.0011640056, -0.0017314748, 0.0007490125, 0.0025778068, -0.0009705736, + 0.0014072969, 0.0019629770, -0.0011401747, 0.0014163770, -0.0011875820, + -0.0029442511, -0.0004999631, -0.0017159892, 0.0005573931, 0.0012190226, + 0.0028210378, 0.0013655951, -0.0008460148, -0.0014670903, -0.0029756720, + -0.0002194822, 0.0007227489, -0.0008426839, 0.0000654911, -0.0001698735, + -0.0007601664, 0.0022675968, -0.0006020927, -0.0006679089, -0.0021071238, + -0.0022564945, 0.0014343271, -0.0011102064, -1.5380194187, -0.0006088556, + -0.0431891829, 0.0031351971, -0.0001162975, 0.0024294499, -1.9494837523, + 0.0022700983, -0.0014736974, 0.0033771079, -0.0001920513, -0.0003195970, + -0.0022153351, -0.0011790129, 0.0014120033, -0.4563175440, 0.0022871760, + 0.0006649003, 0.0023146446, 0.0024352851, 0.0060022851, 0.0009709932, + 0.0003869543, -0.0016162158, 0.0029152897, -0.0017566995, 0.0000481685, + 0.0002242597, 0.0029592868, -0.0019330552, -0.0005543935, 0.0027806698, + -0.0006308041, -0.0013741304, -0.0023196209, 0.0021638894, -0.0006191433, + -0.0021209191, -0.0045116395, 0.0003849696, 0.0011656401, -0.0014063555, + -0.0006514474, 0.0013521070, -0.0016646925, -0.0012270841, 0.0048161382, + -0.0000740723, -0.0008390788, 0.0003565010, -0.0015872754, 0.0003298912, + -0.0005659442, -0.0016585384, -0.0008195626, 0.0038278496, 0.0026653549, + -0.0021778597, 0.0017552907, -0.0004532996, -0.0031556590, 0.0000571453, + 0.0008451664, -0.0020549353, -0.0029147835, 0.0047254069, -0.0011696370, + -0.0033507226, 0.0017389413, -0.0004812498, 0.0008036441, 0.0011124988, + -0.0062054172, -0.0028493477, -0.0127911260, -0.0043295431, 0.0016323752, + -0.0031923200, 0.0005224579, 0.0006085443, 0.0009343233, -0.0003899164, + -0.0011281455, 0.0013283947, -0.0002007931, -0.0001710844, 0.0022150273, + -0.0019103158, 0.0004433114, 0.0025542513, -0.0001900482, 0.0032811300, + 0.0001985163, 0.0011616377, -0.0019307182, 0.0025845547, 0.0016131178, + -0.0036690319, 0.0019637002, -0.0000048481, 0.0034322797, 0.0015913430, + -0.0010954379, 0.0025831664, 0.0002381890, 0.0029224958, -0.0022526004, + -0.0030513280, -0.0009572529, 0.0010376070, 0.0014295666, 0.0012784660, + 0.0002336204, 0.0030397838, -0.0003564394, -0.0045990357, 0.0012844687, + 0.0016920974, -0.0010825697, 0.0008069337, 0.0005056588, -0.0014078240, + -0.0019294405, 0.0026134583, 0.0035422200, -0.0018685368, 0.0004059798, + 0.0040678787, 0.0013079129, -0.0018566723, 0.0005265637, -0.0004377323, + 0.0843115747, -0.0005897195, 0.0003008900, 0.0036027362, -0.0006860371, + 0.0015260279, 0.0034249576, -0.0009849335, 0.0007704101, 0.0001493976, + 0.0019766642, -0.0023595127, 0.0000442169, -0.0018112506, -0.0017105252, + 0.0010479435, -0.0015638149, 0.0002408959, 0.0016932739, 0.0002351184, + 0.0028745090, 0.4485037625, -0.0017093981, -0.0026983269, 0.0013506021, + 0.0002591056, 0.0003479003, 0.0005525439, 0.0006231028, -0.0018512490, + -0.0002745155, -0.0004983400, 0.0024707729, 0.0023338185, -0.0002186254, + -0.0021896847, 0.0018641897, 0.0016511390, 0.0014965427, 0.0009532813, + 0.0015751410, 0.0015936780, -0.0019093899, -0.0006105662, 0.0025628651, + 0.0012997733, -0.0000607139, -0.0030881376, -0.0021478068, 0.0021922207, + 0.0011257572, -0.0005282355, -0.0003114883, 0.0017387663, 0.0016690078, + -0.0010839425, -1.4538880587, 0.0028853477, 0.0001095915, 0.0001434805, + 0.0003495251, -0.0003120217, 0.0004364213, -0.0004633681, -0.0027727999, + -0.0000787284, -0.0005048354, -0.0024951566, -0.0021109921, 0.0012612860, + -0.0014426443, 0.0008061841, 0.0003485042, 0.0023208600, 0.0014495226, + -0.0014376063, -0.0010204446, -0.0001470065, -0.0001391285, 0.0017484725, + -0.0027273691, 0.0028046309, 0.0023020878, -0.0008653579, 0.0007577264, + -0.0027363612, 0.0008903355, 0.0039243777, -0.0004573258, -0.0003376538, + -0.0022819047, 0.0004550349, -0.0020627722, 0.0005300486, -0.0014641318, + 0.0016700057, 0.0004850538, 0.0013879219, -0.0024728198, 0.0002326826, + 0.0002510385, 0.0011169347, 0.0427809693, -0.0005259638, 0.0002131353}; + +float unet_input_time_embedding_50_28[] = { + -0.0012692409, -0.0000643237, -0.0003925320, 0.0003028419, -0.0001019912, + -0.0012098071, -0.0010323892, 0.0020722926, 0.0003215184, -0.0023640643, + 0.0000671502, -0.0000433982, -0.0004664194, 0.0011243718, -0.0029111826, + 0.0003080359, -0.0009268885, -0.0011088748, -0.0004016589, -0.0025648871, + 0.0004109940, -0.0018818863, -0.0010833967, 0.0319890231, 0.0011154308, + -0.0009156773, -0.0006501023, 0.0008847108, -0.0002579180, 0.0006718598, + 0.0042637857, -0.0011846116, -0.0005537528, -0.0006108396, -0.0003765551, + 0.0000863927, -0.0002027741, 0.0020399529, -0.0004846440, 0.0000411365, + 0.0001450563, -0.0012423759, 0.0006745416, -0.0005000094, -0.0008880501, + -0.0009544323, -0.0000774120, 0.0011069383, -0.0008091638, -0.0006553627, + -0.0019436544, 0.0007267077, 0.1227543503, -0.0003361399, -0.0004482451, + 0.0011489383, 0.0000787005, 0.0009151436, -0.0001073396, 0.0009305466, + 0.0019606662, -0.0021158080, -0.0001242538, -0.0011114667, -0.0000334205, + 0.0001975689, -0.0004447636, -0.0015862681, 0.0002650358, -0.0002403215, + 0.0003547079, 0.0000898433, -0.0011024664, -0.0004709279, 0.0007077171, + -0.0004476756, 0.0007642729, 0.0014119670, -0.0031328294, -0.0007497568, + 0.0022523669, -0.0005462778, -0.0004146527, 0.0015568328, -0.0001251607, + 0.0024797202, -0.0010992538, 0.0000796583, 0.0005607773, -0.0009977999, + -0.0001332099, 0.0009348094, 0.0000794930, 0.0015287813, 0.0012537525, + 0.0008507594, -0.0000675539, -0.0018353621, 0.0006444834, -0.0000015879, + 0.0005587225, -0.0017534154, -0.0007094773, 0.0562281162, 0.0003980349, + -0.0044143661, 0.0028430279, 0.0022065165, 0.0028904364, 0.0021514341, + -0.0024730223, -0.0024161404, 0.3336148560, -0.0004072525, -0.0000113705, + 0.0003016689, -0.0002796277, -0.0009576243, -0.0009712158, 0.0006149753, + -0.0021101735, 0.0009726903, -0.6851035953, -0.0006742729, -0.0035690982, + 0.0011324435, -0.0012345214, 0.0008580838, -0.0000249138, -0.0021674796, + 0.0008633030, 0.0016496759, 0.0004955337, -0.0012399405, -0.0020796806, + -0.0017474855, 0.0003694315, -0.0006833542, -0.0008103419, 0.0025300775, + 0.0012341721, -0.0008358276, 0.0007966305, -0.0015210505, -0.0006660286, + 0.0008709140, 0.0003852681, -0.0009407806, 0.0018267238, 0.0026061290, + -0.0030961838, -0.0018467403, -0.0017726836, -0.0017126729, -0.0006381166, + 0.0023276620, 0.0005718665, 0.0003182692, -0.0013335878, -0.0013713441, + -0.0012511616, 0.0020852331, 0.0018541450, 0.0020511118, -0.0040328116, + 0.0022093679, -0.0006733907, 0.0028883582, 0.0409271568, 0.0017831486, + 0.0008561724, -0.0008946112, -0.0029290877, -0.0017465844, -0.0018183012, + -0.0011393079, 0.0024045706, 0.0009197388, 0.0002510601, -0.0012333654, + -0.0029454031, 0.0032135807, -0.0023594904, -0.0007734750, -0.0020269181, + 0.0006124759, 0.0003671274, 0.0007668431, -0.0003240914, -0.0006670612, + -0.0010732566, 0.0003352249, -0.0001959162, -0.0008477329, -0.0025670789, + 0.0003766036, 0.0013521939, 0.0009091166, -0.0002404935, 0.0011602608, + 0.0031948034, 0.0020028176, 0.0005803960, -0.0009548631, -0.0027663587, + 0.0013770536, 0.0032813107, -0.0004102886, 0.0010494054, 0.0019738497, + -0.0017443257, 0.0003524865, -0.0011874414, -0.0020055429, 0.0009586350, + -0.0017809952, 0.0012949160, 0.0004799939, -0.0019283741, -0.0010249793, + -0.0007070722, 0.0014138499, 0.0001083303, -0.0155695444, -0.0015376175, + -0.0004796516, 0.0000247741, -0.0020614604, -0.0012234636, -0.0012394721, + 0.0040966878, 0.0019874908, -0.0014186820, -0.0002864418, 0.0011505075, + 0.0020146645, -0.0025981059, 0.0021057781, -0.0016941428, -0.0014958323, + -0.0007876747, -0.0000374551, -0.0018418781, 0.0002395371, -1.3494451046, + 0.0015931323, 0.0002971878, 0.0021383131, 0.0010618372, -0.0002061096, + -0.0025243051, 0.0005815211, -0.0009617847, 0.0027386518, -0.0010101495, + -0.0002125364, -0.0007935343, 0.0001539752, 0.0008184528, 0.0010525818, + 0.0001558182, -0.0011115179, 0.0014191894, 0.0036987704, 0.0014946341, + 0.0009314059, -0.0004552137, 0.0007871888, -0.0003242576, 0.0020509723, + 0.0004704497, -0.0001009672, -0.0013809559, -0.0015557655, -0.0013229961, + -0.0006317117, 0.0008166512, 0.0002469448, -0.0013724072, -0.0025895648, + 0.2122839540, 0.0006487267, -0.0017171226, 0.0010179472, 0.0012401068, + -0.0004221704, -0.0010537459, -0.0021382731, -0.0009478056, 0.0014493475, + -0.0022336603, -0.0003042072, 0.0005130828, 0.0014199531, -0.0018799426, + 0.0004474670, -0.0012765503, -0.0003984468, 0.0000291043, -0.0014185295, + -0.0036145914, -0.0018034258, 0.0014021302, -0.0001142507, -0.0000079458, + -0.0015283609, -0.0009843321, -0.0021288556, -0.0009134170, 0.0000596861, + -0.0001090786, -0.0027199725, -0.0018361192, -0.0011622235, -0.0001916038, + 0.0003213640, 0.0010777452, -0.0008068508, 0.0000907253, 0.0008934573, + -0.0000471317, -0.0004485003, -0.0008645474, -0.0014309958, 0.0015078642, + -0.0003075600, -0.0016837362, 0.0009580723, 0.0383625813, 0.0000191233, + 0.0002127932, -0.0010206164, 0.0006446157, 0.0003059544, -0.0002577254, + 0.0015548673, 0.0001680863, -0.0026539699, 0.0005195374, -0.0022037686, + -0.0026196903, 0.0000452169, 0.0006414705, 1.2475031614, -0.0012587074, + -0.0010950956, -0.0008296346, 0.0003242347, -0.0000647767, 0.0009849737, + -0.0022137691, 0.0007653153, 0.0002671992, -0.0004968885, -0.0013719461, + -0.0020025503, -0.0006734633, 0.0004397357, -0.0006596963, -0.0032033036, + 0.0000477042, 0.0005605468, -0.0017750177, -0.0002167406, 0.0009882919, + -0.0006418745, -0.0021335338, -0.0018938966, -0.0007536784, -0.9764571190, + 0.0007016985, 0.0012544827, 0.0006059958, 0.0002990374, -0.0003537845, + 0.0006580607, -0.0016888737, -0.0000170397, -0.0010982223, -0.0001906035, + 0.0010898752, 1.2650891542, 0.0010953586, 0.0014365693, -0.0006454401, + 0.0008850391, -0.0021272865, 0.0020773737, 0.0012254026, -0.0014388454, + 0.0017536376, -0.0018247474, -0.0013497588, 0.0012107983, -0.0010347315, + -0.0022425167, 0.0013728694, 0.0005150206, -0.0005088327, -0.0006843815, + -0.0032640123, -0.0003482057, 0.0008978795, -0.0017796960, -0.0015022028, + -0.0003128540, 0.0000038818, -0.0007253252, -0.0005187029, -0.0006859107, + 0.0003765270, -0.0005321759, -0.0034541895, 0.0002394638, 0.0018146047, + 0.0006283254, -0.0006065946, -0.0017931852, -0.0018838989, -0.0001555113, + 0.0001421159, 0.0015088273, -0.0002190710, 0.0005867928, 0.0003051409, + -0.0000533778, 0.0009531165, 0.0006352106, 0.0007465931, -0.0001484578, + -0.0018110932, 0.0000247583, 0.0009297761, 0.0010089590, -0.0011474005, + 0.0023123976, -0.0001748521, -0.0022336291, 0.0005988954, -0.0023494598, + 0.0000284775, 0.0017497946, -0.0013417705, -0.0006273261, -0.0010548255, + 0.0002855840, -0.0006087113, 0.0025435199, -0.0001921807, -0.0013389224, + -0.0010247012, -0.0015854444, -0.0013259992, 0.0001083522, -0.0010451048, + -0.0000219592, 0.0006164508, -0.0009094791, -0.0013826499, -0.0003569336, + 0.0006793635, -0.0006850790, -0.0005611407, -0.0004893820, -0.0010527456, + -0.0009857551, -0.0007522982, 0.0005958332, 0.0011573375, -0.0010147183, + 0.0005206312, -0.0023542091, -0.0016733129, 0.0004641286, -0.0010550153, + -0.0257350598, -0.0009723678, 0.0008536776, -0.0000830907, -0.2908636332, + -0.0008366725, -0.0009717892, 0.0008272193, -0.0004011623, -0.0002148437, + 0.0002470654, 0.0000853215, 0.0006811069, -0.0031530103, -0.0001235520, + 0.0000756555, 0.2905690372, 0.0007452155, -0.0014138105, -0.0003810073, + -0.0016577548, -0.0016939165, -0.0006182278, 0.0001479690, 0.0004928864, + -0.0017423392, -0.0010642074, -0.0009751525, -0.0004439992, 0.0019286843, + -0.0011440858, -0.0004531408, 0.0007411976, -0.0009142109, 0.0011192025, + -0.0015127689, 0.0010525354, -2.1661882401, -0.0000146842, 0.0004898020, + 0.0017166268, 0.0004413836, -0.0019519497, -0.0000948221, 0.0004622820, + -0.0016527972, 0.0000737594, -0.0009398680, -0.0005308217, 0.0010874402, + 0.0012020492, 0.0004913917, -0.0030782840, 0.0001790980, -0.0010859310, + 0.0011295441, -0.0037671328, 0.0008873190, 0.0002253300, -0.0015562095, + -0.0003613622, 0.0008598391, -0.0006360158, 0.0002230592, -0.0000293558, + -0.0002637054, 0.0018840828, -0.0004441669, -0.0015719798, -0.0001295879, + -0.0009349184, 0.0007719360, -0.0013686735, -0.0005526114, -0.0028056512, + -1.4767243862, -0.0014833179, -0.0006197970, 0.0006507258, 0.0001524980, + -0.0004271407, -0.0016286694, -0.0003547552, 0.0009036339, 0.0001767389, + 0.0008234996, 0.0009566684, -0.0023889402, 0.0011336682, 0.0013930798, + -0.0015890663, -0.0009049615, -0.0010252141, 0.0013728654, -0.0026424034, + 0.0012848959, 0.0001718712, 0.0012871749, 0.0007622398, -0.0033619353, + -0.0002622111, 0.0017666211, -0.0009339987, -0.0010581822, 0.0003655626, + 0.0011079088, 0.0002943592, -0.0034723575, 0.0002880298, -0.0016537104, + 0.0011128286, 0.0010225452, 0.0013845484, 0.0015738821, -0.0001881807, + 0.0007244208, -0.0004403279, 0.0005056122, 0.0000487808, 0.0005628145, + -0.0010066847, 0.0003894994, -0.0009829486, 0.0008093487, -0.0003174110, + -0.0015655286, -0.0011986243, -0.0015149480, 0.0011405882, -0.0030349100, + -0.0004652902, -0.0019364944, -0.0001670157, -0.0030918308, -0.0008006818, + 0.0001116861, 0.0013988148, 0.0002851505, 0.0028407178, -0.0011460064, + -0.0006941031, -0.0000469282, -0.0002144045, 0.0027971820, -0.0001015149, + 0.0003911308, -0.0019780109, -0.0004349006, -0.0000563129, 0.0017926809, + -0.0036384752, -0.0008825411, -0.0003970962, -0.0002513877, -0.0016654194, + -0.0017275885, -0.0029765654, -0.0017890133, 0.0007130927, 0.0009056185, + -0.0022775466, -0.0006552567, -0.0009534216, -0.0006778478, 0.0010384363, + 0.0003001570, -0.0006261196, 0.0004562025, -0.0017177009, 0.0012787138, + 0.0019838838, -0.0008236608, 0.0010238474, 0.0014962428, -0.0026601106, + 0.0005976966, -0.0001347340, -0.0008013379, 0.0009839912, -0.0014731709, + -0.0008443252, 0.0002797716, 0.0014814008, 0.0003438673, -0.0016094209, + 0.0004037395, 0.0003390098, -0.0006772935, -0.0020480594, -0.0009474596, + -0.0010818446, -0.0013457453, 0.0022462362, 0.0006601433, 0.0002534236, + 0.0001029337, -0.0009415841, -0.0019372872, -0.0014573829, 0.0027483599, + 0.0013374584, 0.0009659663, -0.0000723433, -0.0000767475, 0.0009831195, + 0.0009031722, 0.0024738419, 0.0004722085, -0.0012323160, 0.0004711021, + -0.0013557673, -0.0015199487, 0.0022114785, 0.0013650763, 0.0000343621, + -0.0012225197, -0.0018872311, -0.0004660722, -0.0002693296, 0.0004570079, + 0.0004050143, 0.0022340806, -0.0012770789, -0.0003423505, -0.0009597270, + 0.0024912467, 0.0005376036, -0.0006832827, 0.0020628409, -0.0013840310, + -0.0011068746, 0.0002210606, -0.0033005993, 0.0003474613, -0.0007896943, + -0.0024827030, -0.0023834351, 0.0002424447, 0.0001526144, -0.0008714236, + 0.0005312189, 0.0004276587, 0.0009271287, -0.0002272064, -0.0021154294, + -0.0006965594, -0.0007411744, -0.0014618224, 0.0010016710, -0.0002492999, + 0.0029753358, -0.0008478891, -0.0024150526, 0.0027471888, -0.0003934060, + -0.0003253901, -0.0020117816, -0.0009976765, -0.0013614777, -0.0023277323, + 1.4806859493, -0.0031140610, -0.0016381894, -0.0021664884, -0.0013984190, + -0.0026816279, -0.0015757224, 0.0009343671, -0.0032329620, 0.0008887709, + 0.0016724202, 0.0020185094, -0.0008775209, 0.0033201901, -0.0003973190, + 0.0004734446, 0.0020027303, -0.0011608391, -0.0004365710, 0.0006260581, + 0.0011316189, -0.0000753971, 0.0014362371, -0.0005065501, -2.1973736286, + 0.0029666936, 0.0009055983, -0.0005043179, 0.0011360133, -0.0007991432, + -0.0004072059, -0.0017065502, -0.0011134960, -0.0008973465, -0.0000722990, + 0.0005073855, -0.0017195949, 0.0004775925, -0.0021715513, -0.0019199573, + -0.0009035605, 0.0003108960, 0.0030491473, 0.0013896404, 0.0001959405, + -0.0001168302, 0.0000647098, 0.0011206281, -0.0016196282, 0.0002380135, + 0.0019755750, 0.0365141705, 0.0003927173, -0.0009955633, -0.0006654034, + 0.0010695677, -0.0016671286, -0.0023440493, 0.0009073089, 0.0019260594, + 0.0008171429, -0.0004570028, 0.0001850131, 0.0136486618, -0.0023745531, + 0.0027316632, -0.0001702609, -0.0012491002, -0.0001116609, 0.0017291885, + 0.0012705117, 0.0003053879, -0.0017798750, -0.0004670198, 0.0006791722, + 0.0002983928, 0.0004150907, 0.0015212285, 0.0010539661, 0.0014866120, + -0.0003516716, -0.0000811964, -0.0004629027, 0.0001514743, 0.0006825582, + -0.0045154672, 0.0001330891, -0.0016950849, 0.0007362852, 1.8411509991, + 0.0021420745, -0.0009589747, -0.0020727245, 0.0016495604, -0.0030171028, + -0.0020521015, -0.0020049177, -0.0007026237, -0.0009340735, -0.0003920440, + -0.0004993177, 0.0028288611, -0.0015922296, 0.0016834750, 0.0000979522, + -0.0015721223, -0.0005857807, -0.0172018316, 0.0018478287, 0.0008413989, + -0.0020217262, 0.0017405879, 0.0016681209, -0.0007826244, 0.0014321004, + 0.0016431250, -0.0014559592, 0.0007345042, 0.0001583155, -0.0005044611, + -0.0120568350, -0.0027888154, 0.0001284983, -0.0020893151, 0.0009463523, + 0.0006661322, 0.0018742238, -0.0006649038, -0.0002623693, -0.0013074395, + 0.0005047051, -0.0000591020, 0.0013475725, -0.0028245531, -0.0001929431, + 0.0002120640, 0.0064262464, 0.0015079011, -0.0025756368, -0.0010958822, + -0.0017975483, 0.0012921342, -0.0004820349, 0.0005093199, -0.0007107514, + -0.0061296718, -0.0007193343, -0.0027096802, 0.0000549313, 0.0001407387, + 0.0025529426, -0.0023787813, -0.0010874989, -0.0008626746, 0.0002716076, + -0.0004519105, -0.0009582599, 0.0005383755, 0.0009726684, -0.0001957095, + 0.0008612827, 0.0027306082, 0.0007958912, 0.0005831998, 0.0009401608, + -0.0002436712, -0.0004037027, 0.0014022142, -0.0012366716, -0.0032379057, + 0.0003671772, 0.0015574489, -0.0009330810, 0.0029301606, -0.0016964446, + -0.0008407452, 0.0007295620, 0.0008889474, 0.0002959449, 0.0006100032, + 0.0014953951, -0.0016589710, 0.0001938425, -0.0020748242, 0.0000179079, + 0.0014619706, 0.0011089635, -0.0025460888, -0.0038540191, -0.0002091778, + -0.0002153572, -0.0008499089, 0.0007139621, -0.0014872354, 0.0004725405, + 0.0013611922, -0.0002716991, -0.0016958240, 0.0020674143, 1.0015088320, + -0.0003642000, 0.0011114981, -0.0006875983, 0.0005305328, -0.0001501171, + -0.0018731821, -0.0004275084, 0.0008899365, -0.0014926461, -0.0001555770, + -0.0009341078, 0.0007487475, -0.0007748548, -0.0000866744, 0.0024261433, + -0.0009956183, -0.0001326672, 0.0002865000, 0.0023456956, -0.0006455723, + 0.0003528027, -0.0013932488, -0.0019109214, -0.0000724159, 0.0003859224, + 0.0002890918, -0.0015906862, -0.0023082397, 0.0019409866, -0.0000191005, + 0.0007373088, 0.0012932336, -0.0002749204, -0.0002105287, -0.0015601180, + -0.0013508096, -0.0016391986, -0.0010892475, -0.0010181896, -0.0008652839, + 0.0020173783, -0.0017704228, -0.0004874743, -0.0025619739, 0.0011200143, + -0.0001490326, -0.0022102287, 0.0006678007, -0.0006687851, -0.0001645265, + 0.0008556348, 0.0001365552, 0.0007092836, 0.0008075861, 0.0005469862, + 1.0076239109, -0.0011874866, -0.0013515977, 0.0002457802, 0.0021407208, + -0.0001748516, -0.0000540433, 0.0004637233, 0.0036166930, -0.0002052936, + -0.0003509840, 0.0028136251, -0.0001291884, 0.0005466784, 0.0003840438, + 0.0002984833, -0.0014193156, -0.0009196112, -0.0003444890, -0.0007646962, + -0.0028282804, -0.0009030964, -0.0018590614, 0.0024105934, -0.0001786449, + 0.0020318679, -0.0029857242, -0.0027864038, -0.0013669636, -0.0013158240, + -0.0012677093, 0.0009938681, 0.0006508682, -0.0013304551, 0.0018269396, + 0.0004958300, 0.0017667889, -0.0005504652, 0.0012117838, -0.0030985291, + 0.0014067541, -0.0016652718, 0.0013606530, 0.0018278635, -0.0004826018, + -0.0007440210, 0.0013430531, 0.0006513920, -0.0000365024, -0.0014336146, + 0.0004849625, -0.0004679793, 0.0010654326, -1.4209797382, -0.0005150640, + -0.0397903770, 0.0001120728, -0.0012416271, 0.0005153269, -1.8056414127, + 0.0006770580, -0.0018268339, 0.0005491069, -0.0011430387, -0.0011749633, + 0.0038336669, -0.0019812649, 0.0004545404, -0.2233877629, -0.0008800644, + 0.0008998525, -0.0014384694, 0.0006803212, 0.0066548218, 0.0004708674, + 0.0008146390, 0.0009805895, -0.0002463511, 0.0006358379, 0.0011201925, + 0.0004316499, -0.0029242160, -0.0007751597, -0.0004539392, 0.0028796520, + -0.0007938975, 0.0004269492, 0.0017060427, 0.0004829229, 0.0013300516, + -0.0014825198, -0.0016408025, -0.0006112028, -0.0002008174, 0.0001154460, + -0.0003614387, 0.0004547078, -0.0016198792, -0.0037019900, -0.0001218356, + -0.0025763160, 0.0002037389, 0.0030642105, 0.0022330415, 0.0019360790, + 0.0012450973, -0.0020482596, 0.0004706168, 0.0025205340, -0.0016335631, + -0.0000131465, 0.0013247337, -0.0006954700, -0.0008089365, -0.0012543288, + 0.0002987587, 0.0001081735, 0.0015894771, -0.0003421044, -0.0001118205, + -0.0002122088, -0.0003652954, 0.0000354638, -0.0016230955, 0.0013173902, + -0.0017346423, -0.0014330798, -0.0074981870, 0.0012542829, 0.0002011205, + -0.0022451631, -0.0010044520, 0.0000139005, 0.0002893759, 0.0015624911, + 0.0004446097, -0.0001806053, -0.0021369010, -0.0021025068, -0.0017047138, + 0.0014811680, 0.0000072252, 0.0016325316, -0.0017899247, 0.0009920290, + 0.0009798645, -0.0006553838, 0.0018084525, -0.0001235697, 0.0021119071, + -0.0016782694, 0.0014872542, -0.0014232843, 0.0013092649, -0.0008125380, + -0.0002359156, -0.0011280861, -0.0005798829, 0.0002559493, -0.0006484885, + -0.0013840832, -0.0019489687, 0.0002140254, -0.0002656968, -0.0000346106, + -0.0011578307, 0.0008237329, -0.0012043299, -0.0002268408, -0.0025384773, + 0.0014554344, 0.0019094941, -0.0014006281, 0.0008484656, -0.0020620534, + 0.0001735371, 0.0007887133, 0.0017600120, -0.0005144452, -0.0004187380, + -0.0026940806, 0.0023315253, 0.0003301417, -0.0006021005, 0.0012732823, + 0.1054499447, -0.0004540271, -0.0012063364, -0.0011782836, 0.0021319385, + 0.0011897464, -0.0008594042, -0.0015460101, 0.0012711156, -0.0001015328, + 0.0010753940, 0.0006049076, 0.0016288513, 0.0008402900, -0.0005754386, + -0.0005458471, 0.0008990653, 0.0012839278, 0.0056427377, 0.0016987179, + -0.0003859322, 0.4577619433, -0.0013239023, 0.0006101569, 0.0005192762, + 0.0007368163, -0.0004017287, -0.0012465687, -0.0006787598, -0.0005312162, + -0.0003795200, -0.0001648772, 0.0003850055, -0.0003424739, -0.0004427067, + 0.0008411782, 0.0012117554, 0.0010929671, 0.0007806732, 0.0012986651, + 0.0003903031, 0.0006613443, -0.0028614146, -0.0013337056, 0.0004493943, + 0.0004248749, -0.0000908613, -0.0020207015, 0.0008187471, 0.0013654130, + -0.0010154381, 0.0014007925, 0.0014267291, 0.0020311512, 0.0000073784, + -0.0005609080, -1.3902496099, 0.0017136987, -0.0016309828, 0.0005254622, + -0.0003994999, -0.0002369664, -0.0024057250, -0.0019028136, 0.0003676206, + -0.0019260272, 0.0003529602, -0.0001398578, -0.0005118204, 0.0000452646, + 0.0013030209, -0.0000383103, -0.0003659306, 0.0001660315, -0.0005448670, + -0.0005619675, -0.0008600075, 0.0000312915, -0.0005626696, 0.0002607377, + -0.0020368372, 0.0014231228, -0.0001368083, 0.0010809652, 0.0007741835, + -0.0017326345, 0.0009188801, -0.0015115545, 0.0015911591, 0.0011400529, + -0.0019742553, -0.0005655023, 0.0019032275, 0.0006782640, -0.0012822691, + 0.0004609930, 0.0002124403, 0.0016801658, 0.0013221707, -0.0013503039, + 0.0012391126, 0.0005246424, 0.0509531237, -0.0025688347, 0.0008851027}; + +float unet_input_time_embedding_50_29[] = { + 0.0008459203, 0.0027908501, -0.0007964214, -0.0001879528, 0.0029617541, + -0.0031144628, 0.0016133450, -0.0004058447, 0.0013638518, 0.0003843101, + -0.0002061429, -0.0006521610, -0.0040172581, 0.0033395551, 0.0011092266, + -0.0037512816, -0.0009532208, 0.0014136063, -0.0006168165, 0.0008467468, + -0.0025580502, -0.0005834941, -0.0017763044, 0.0348251536, 0.0008471257, + 0.0033316191, -0.0000438280, 0.0003249422, 0.0014061142, -0.0003538160, + 0.0000284292, 0.0008146935, -0.0006670505, 0.0010363068, -0.0019246405, + -0.0015236079, 0.0013253007, 0.0015953148, 0.0013478855, -0.0018867319, + 0.0017123399, -0.0015620932, -0.0013408423, -0.0032015797, 0.0034076218, + -0.0006313983, 0.0000147675, 0.0000912789, 0.0012941780, -0.0008271586, + -0.0012371186, 0.0012941740, 0.1219646037, 0.0024403855, -0.0021673867, + 0.0004439820, -0.0023598720, 0.0018020100, -0.0020207423, 0.0011242249, + 0.0006640989, 0.0004737325, 0.0017861607, -0.0002172310, 0.0005017035, + 0.0012375247, -0.0008045943, -0.0035731490, 0.0002328437, -0.0007283364, + 0.0025364470, 0.0002443895, -0.0009918197, -0.0008799229, 0.0003776979, + 0.0017079152, -0.0001512014, 0.0021334281, 0.0010312859, -0.0011350790, + 0.0012900096, 0.0017812724, -0.0030856198, -0.0036874078, -0.0011618854, + -0.0011597653, -0.0006610928, 0.0000142064, 0.0000654622, -0.0018208879, + 0.0019297870, 0.0017644768, 0.0011810372, -0.0002860978, -0.0034575840, + -0.0024711783, -0.0009467527, -0.0012404355, -0.0035745350, 0.0028942497, + -0.0004084497, 0.0021304707, -0.0000194528, 0.0406868570, 0.0016265418, + -0.0022269175, -0.0006170385, -0.0001415322, 0.0022191186, 0.0015805918, + -0.0002827188, -0.0013135606, 0.3342871964, -0.0000652461, 0.0018096194, + -0.0007132501, -0.0030414914, 0.0041127866, 0.0013272520, -0.0012321810, + 0.0019803792, 0.0012909065, -0.4882694185, -0.0031999350, -0.0006073005, + -0.0014158185, -0.0000242982, -0.0023164866, 0.0009165704, -0.0006636861, + 0.0006755716, 0.0000631223, 0.0036479414, 0.0012475597, -0.0010042251, + -0.0021748634, -0.0028618576, 0.0019980818, -0.0032894323, 0.0009553512, + -0.0010745882, -0.0017218903, 0.0013010639, 0.0019440367, 0.0028710233, + -0.0027459743, -0.0014285529, -0.0006380277, 0.0028318581, -0.0000841739, + -0.0013613640, -0.0002021753, 0.0018184292, -0.0008225449, 0.0020558895, + -0.0013564914, -0.0016406074, -0.0011493051, 0.0023954338, -0.0018257783, + -0.0018833154, -0.0012621834, 0.0012853295, 0.0014746417, -0.0026398930, + -0.0005326141, -0.0034769753, 0.0027291225, 0.0503630899, 0.0013998321, + 0.0006386967, 0.0029905639, 0.0007266845, -0.0005803521, -0.0004056050, + -0.0024570152, 0.0020078481, -0.0028899848, 0.0001478191, 0.0009253118, + -0.0023857465, 0.0017976845, -0.0020960965, -0.0009527691, -0.0027032387, + 0.0006207805, -0.0008125156, -0.0031674858, 0.0004736027, -0.0005370220, + 0.0015155165, 0.0003904193, -0.0027419189, 0.0005199059, -0.0005492228, + -0.0005029868, 0.0015687371, -0.0001521069, 0.0012648078, 0.0037776208, + 0.0015814211, -0.0016241013, 0.0002782885, -0.0007389190, 0.0019499650, + 0.0039789909, 0.0007320745, -0.0008891700, 0.0003550439, -0.0029722438, + 0.0030539893, 0.0018871587, -0.0027195155, -0.0008825583, -0.0012755268, + -0.0024582855, 0.0021036251, -0.0005963235, 0.0006431133, -0.0019752928, + 0.0020590415, 0.0017238078, 0.0011693079, -0.0170388073, -0.0015914079, + -0.0005532238, -0.0017049713, 0.0011656992, 0.0006771598, 0.0006321725, + 0.0030141119, 0.0003727335, 0.0001143506, -0.0008050394, -0.0004879618, + -0.0001380597, -0.0013528340, -0.0016246531, 0.0003074892, 0.0017009554, + 0.0029954507, -0.0011302666, -0.0007640112, -0.0006506499, -1.2952713966, + -0.0010560744, -0.0025382126, 0.0022650631, 0.0018872502, 0.0007985551, + -0.0004597548, 0.0009346455, -0.0016803970, 0.0022416702, -0.0002096114, + -0.0006117590, -0.0004549110, -0.0017307732, 0.0007005162, 0.0034694709, + 0.0031618946, -0.0011922100, 0.0004767866, -0.0056508877, 0.0009300994, + -0.0019267728, -0.0010663185, -0.0004614326, -0.0007693879, -0.0004104702, + -0.0008428534, 0.0013774547, -0.0015899867, -0.0015143305, 0.0011844526, + 0.0005866990, -0.0002698442, 0.0020310567, -0.0001984695, 0.0001110481, + 0.2198392004, -0.0014143959, -0.0009151677, -0.0009322949, 0.0017949129, + -0.0001965454, 0.0029822020, -0.0017396852, 0.0018240050, -0.0012184815, + 0.0013800616, -0.0031382150, 0.0019334166, 0.0011652939, -0.0002079238, + 0.0003559091, 0.0005413494, -0.0010546041, 0.0008672052, 0.0014431467, + -0.0066014472, -0.0003355532, -0.0004082975, 0.0001962429, -0.0031927095, + -0.0009238836, 0.0002409716, -0.0018588641, -0.0019332087, -0.0002946355, + -0.0011396036, -0.0026770181, 0.0004314752, -0.0002982952, -0.0018693139, + 0.0006539784, 0.0000072267, 0.0001605428, 0.0022571101, -0.0016365177, + -0.0035465886, 0.0004048022, 0.0005225486, 0.0008944049, 0.0015417727, + -0.0007825517, -0.0021518525, 0.0000745535, 0.0403056070, 0.0019923844, + 0.0011085755, 0.0004983414, -0.0005807631, 0.0007153070, 0.0011468902, + 0.0005218778, -0.0018687972, 0.0019907970, -0.0044016792, -0.0022938070, + -0.0019780537, -0.0000346571, 0.0005293300, 1.1576702595, -0.0000796064, + -0.0003586025, -0.0026080948, -0.0009852342, -0.0022833319, -0.0013410074, + 0.0011665355, -0.0008736514, 0.0005230033, 0.0008168807, -0.0009378336, + -0.0019915132, 0.0020103448, 0.0007619547, -0.0033961502, -0.0018589352, + 0.0001465250, 0.0005108151, -0.0012934194, -0.0017002956, -0.0007548068, + -0.0007306067, 0.0012294748, 0.0041661598, -0.0006721914, -0.8236036301, + -0.0001693955, 0.0014349800, 0.0007377015, -0.0018205056, 0.0024467891, + 0.0010804296, -0.0032212727, 0.0003867536, 0.0029639646, -0.0005396926, + 0.0048935600, 1.3312666416, 0.0005971207, 0.0002756366, -0.0026054867, + 0.0009208815, 0.0011188597, -0.0027265539, 0.0008725259, -0.0015218868, + -0.0035365764, 0.0008606099, -0.0026659570, -0.0029102340, 0.0013254732, + 0.0033076587, 0.0006430682, 0.0018512373, 0.0020667906, 0.0001000939, + -0.0044975816, -0.0048885625, -0.0004373116, -0.0007831254, 0.0001883861, + 0.0007411102, 0.0002632783, 0.0015506193, 0.0027748970, 0.0008678967, + 0.0030930610, -0.0001271497, -0.0026558200, 0.0012255919, 0.0029711751, + -0.0005931251, 0.0004939931, -0.0007244514, -0.0042158235, 0.0000070790, + 0.0031131853, 0.0021101092, -0.0013832022, 0.0018989516, 0.0032252427, + 0.0000741133, -0.0011416180, 0.0018327145, -0.0005691706, -0.0011706126, + 0.0004110602, -0.0026504644, -0.0001395903, 0.0007337625, 0.0004874669, + 0.0003903712, -0.0011632489, -0.0012986879, 0.0002597217, -0.0002428950, + -0.0016148263, 0.0015259309, 0.0003454412, -0.0002375187, 0.0000319460, + -0.0020238389, -0.0023654357, 0.0013262029, 0.0002243086, -0.0032114582, + -0.0007200367, -0.0000034533, 0.0002486061, -0.0012428560, 0.0024906914, + -0.0003748592, 0.0014243349, 0.0026876405, -0.0026976853, -0.0015918452, + 0.0004853783, 0.0013608020, -0.0005624804, -0.0000766324, -0.0004249262, + -0.0006771949, 0.0017457702, -0.0009319726, 0.0013618333, 0.0003959555, + 0.0009340516, -0.0020855374, -0.0029470914, 0.0020871803, -0.0022134660, + -0.0194368511, -0.0017157337, 0.0012333299, 0.0010948889, -0.1643083394, + 0.0015244423, -0.0012109132, 0.0004483867, 0.0004425419, 0.0034295975, + -0.0021288088, -0.0034103666, -0.0010967255, -0.0019843546, 0.0032596074, + 0.0017713192, 0.2667971253, -0.0019875101, 0.0006763316, -0.0000366017, + -0.0002827613, -0.0017634025, 0.0009996546, -0.0002579046, 0.0021780606, + 0.0013603196, -0.0001752069, -0.0033399658, 0.0019537159, -0.0022179983, + -0.0007363786, 0.0014231377, 0.0028070603, -0.0000181720, 0.0013124091, + 0.0016981561, 0.0019679470, -2.0977792740, -0.0032947315, 0.0013965311, + 0.0004002233, -0.0002559088, -0.0003718697, -0.0022318661, 0.0003192630, + 0.0004222449, -0.0006471574, 0.0017908554, -0.0008594343, -0.0009991108, + 0.0015979891, -0.0005870757, 0.0017129406, 0.0015563462, 0.0025533666, + 0.0016186021, -0.0012896552, 0.0023424397, 0.0003769349, -0.0014104054, + -0.0009784515, 0.0050506992, -0.0007295127, -0.0032608490, -0.0003765242, + -0.0010910213, -0.0016040052, -0.0009689164, 0.0029582852, 0.0021499950, + 0.0011368468, 0.0000376757, -0.0004932187, -0.0003850930, 0.0003273645, + -1.4156033993, -0.0027607232, 0.0018393982, -0.0011122697, -0.0006900574, + 0.0003137618, -0.0019412166, -0.0015617437, -0.0041198796, -0.0011634459, + 0.0022767773, -0.0011620728, 0.0009669904, -0.0007393584, -0.0027221404, + 0.0005798368, 0.0002455115, 0.0030159769, 0.0009035571, -0.0014574118, + -0.0015072427, -0.0025202655, 0.0002098652, -0.0004061628, -0.0005836529, + -0.0005063973, -0.0009722239, -0.0011593872, 0.0016792486, 0.0014374165, + 0.0020077676, -0.0014963918, -0.0080066323, 0.0009144851, -0.0032522713, + 0.0016768854, 0.0010448378, 0.0004237336, 0.0034932173, 0.0001992225, + 0.0025758408, 0.0022975304, 0.0052233515, 0.0003277510, -0.0003311695, + 0.0019975174, 0.0027649230, -0.0002775416, 0.0000313916, 0.0007160422, + -0.0009835125, -0.0004797052, -0.0023079142, -0.0006735896, -0.0001020711, + -0.0001501348, -0.0001959103, 0.0023560820, -0.0009639730, 0.0053382060, + 0.0005712574, -0.0001758656, -0.0003972151, 0.0011178660, 0.0008464274, + 0.0028174468, -0.0016687855, 0.0025989164, -0.0010179505, 0.0001274142, + -0.0031954651, 0.0027067112, -0.0007349348, 0.0023322203, -0.0019135294, + -0.0018255943, -0.0001264724, 0.0018369232, 0.0002162377, 0.0005520824, + -0.0007047351, -0.0031419930, 0.0012993851, -0.0017504713, 0.0000824858, + -0.0030431971, -0.0002237039, -0.0017316103, -0.0013788370, -0.0001242461, + -0.0006772386, 0.0009223914, -0.0008015409, -0.0016109336, -0.0015667747, + 0.0003362264, -0.0009918371, -0.0003320735, 0.0026386296, -0.0048327111, + 0.0019547071, 0.0002535516, 0.0011563951, 0.0004730481, -0.0005552717, + 0.0015030492, -0.0003930966, -0.0011081407, 0.0007869506, 0.0035453024, + 0.0014094524, -0.0002476326, -0.0005192206, 0.0010863297, -0.0011873855, + 0.0002222802, 0.0002841208, 0.0012924259, -0.0013761229, -0.0000984099, + -0.0016405105, -0.0012584638, -0.0015618110, -0.0025229778, -0.0022888370, + -0.0045421221, -0.0005376179, -0.0009740880, -0.0005112286, 0.0008582897, + 0.0009012762, 0.0001402004, 0.0023908140, 0.0005343373, 0.0013091108, + 0.0009207306, -0.0014425097, 0.0010649124, 0.0004322720, -0.0012155962, + -0.0003052009, 0.0005427008, -0.0024173644, 0.0000899937, -0.0000532228, + 0.0027506198, 0.0016265837, 0.0002179900, -0.0000730637, 0.0005584043, + 0.0025326400, 0.0007493121, 0.0007541731, 0.0024422004, 0.0029855329, + -0.0000349302, -0.0003520390, -0.0008164006, -0.0000455894, 0.0006533272, + 0.0002708388, -0.0020084148, 0.0004900620, -0.0004352941, -0.0003287285, + -0.0003056992, 0.0018148692, -0.0009685566, -0.0013888511, -0.0003821352, + -0.0006517423, -0.0017827363, 0.0004278020, 0.0032830890, 0.0017280502, + -0.0003334288, -0.0018223245, 0.0004755370, 0.0026552356, 0.0000581774, + -0.0001233900, 0.0029398780, -0.0001644187, -0.0011720532, -0.0011352919, + 1.3581830263, -0.0001954082, -0.0008464521, -0.0026488989, 0.0002218815, + -0.0017762680, 0.0000571152, 0.0010935003, -0.0018813130, -0.0000831038, + -0.0030863560, 0.0019806414, -0.0003284056, -0.0016605565, -0.0011991896, + 0.0003863096, -0.0007138019, 0.0010920949, 0.0029547843, 0.0003904828, + -0.0018272712, -0.0008433936, 0.0006473017, -0.0002285051, -2.0547254086, + 0.0022749044, 0.0003418075, 0.0013193139, 0.0024423283, -0.0017831479, + 0.0007429195, -0.0021955180, -0.0014230153, -0.0018971181, -0.0001129354, + 0.0000689225, -0.0007104333, -0.0003528045, 0.0002330763, 0.0003200495, + -0.0031412835, 0.0025206152, -0.0000954550, -0.0012972751, 0.0009213416, + -0.0006906088, 0.0025917259, 0.0018504767, 0.0009523756, 0.0005308161, + 0.0012090155, 0.0392930396, -0.0038208496, -0.0012499783, -0.0004084460, + 0.0005117423, 0.0020526887, -0.0018095095, -0.0000040489, 0.0014005008, + 0.0004396732, -0.0000088550, -0.0020346998, 0.0113485167, -0.0001823069, + 0.0016125069, 0.0019014969, 0.0024180282, -0.0014318088, -0.0001872266, + -0.0011295476, 0.0003510118, -0.0021364896, -0.0032248676, 0.0015856508, + -0.0015386493, 0.0014699579, -0.0019682059, 0.0027568280, 0.0020437655, + -0.0015056627, -0.0000556330, 0.0020703776, 0.0045475201, 0.0023373167, + 0.0009884066, -0.0001054200, 0.0004112647, 0.0022345015, 1.7502859831, + -0.0023435836, 0.0000437836, -0.0017293753, 0.0029374072, -0.0012101941, + 0.0002503261, -0.0006174999, -0.0001357435, -0.0024542843, 0.0002254942, + -0.0001401533, 0.0012166612, -0.0002432687, -0.0013673371, 0.0016767982, + 0.0007382215, 0.0001515727, -0.0008260473, 0.0025458373, -0.0005479793, + -0.0002087969, -0.0015795408, 0.0031696756, 0.0000202362, -0.0017266057, + 0.0029543210, -0.0024236136, -0.0031750337, 0.0019581020, 0.0019665090, + -0.0071080532, -0.0034622271, 0.0027942313, -0.0004485943, -0.0014429423, + -0.0005147089, -0.0015798658, 0.0004080425, 0.0023506209, 0.0005058600, + -0.0006922353, 0.0003925252, -0.0028809616, -0.0025576230, 0.0025581741, + -0.0015986320, 0.0011917693, 0.0006461428, -0.0017341378, -0.0015763887, + -0.0019883895, 0.0002498499, -0.0023974562, 0.0011300651, 0.0011967898, + 0.0080076074, 0.0006940839, -0.0010303496, -0.0035091303, 0.0001481376, + 0.0001934168, 0.0001914189, -0.0020200228, -0.0006619028, -0.0002878183, + 0.0005426707, -0.0005841707, 0.0002275514, 0.0002666682, 0.0018216795, + 0.0009965338, 0.0014585883, 0.0006994255, -0.0006157821, -0.0003673285, + -0.0007858528, 0.0028324246, -0.0003687330, -0.0007038219, -0.0005818559, + -0.0000762986, 0.0005400591, -0.0032152757, -0.0013545281, 0.0020271963, + -0.0006376060, -0.0002551730, 0.0021970347, 0.0024220787, -0.0025607944, + 0.0035447187, -0.0000228500, -0.0011966304, -0.0018645073, 0.0010468464, + -0.0007000663, -0.0004142793, 0.0012251148, -0.0002440235, 0.0000379616, + -0.0005455650, -0.0022801333, -0.0001311814, 0.0007277912, 0.0004532232, + 0.0015813829, -0.0017998639, -0.0015519889, -0.0031980565, 0.9503985643, + 0.0026533029, 0.0021023247, -0.0004206290, 0.0001265749, 0.0003588032, + 0.0015163557, -0.0003988364, 0.0017116154, -0.0006940607, -0.0013143690, + -0.0004133609, -0.0029387553, -0.0061909314, 0.0004707412, 0.0007171337, + -0.0024266844, 0.0006180956, -0.0004306808, 0.0017506885, 0.0006553950, + -0.0000439594, 0.0018842747, -0.0026948436, 0.0012772367, 0.0006710278, + 0.0002382793, 0.0006519635, 0.0012261197, 0.0010201056, -0.0014944049, + -0.0007092743, 0.0004144497, -0.0002565347, 0.0003561354, -0.0003375039, + -0.0000676969, -0.0025672922, -0.0002935264, -0.0015583099, -0.0001200070, + -0.0004177936, -0.0001211429, 0.0000613211, 0.0012380750, 0.0000410639, + -0.0023682620, -0.0006863568, -0.0000104331, -0.0000165324, -0.0002075220, + -0.0009233347, -0.0018015055, -0.0001119380, -0.0002888655, -0.0002716160, + 0.9132462740, -0.0023014366, 0.0016168123, -0.0018451730, 0.0008814833, + 0.0000739051, 0.0005685226, -0.0014154403, 0.0021102913, -0.0004470919, + -0.0017976516, 0.0019694520, 0.0011241715, 0.0006589713, -0.0017989426, + -0.0017548753, -0.0001575067, 0.0016388493, 0.0007282973, -0.0023038150, + -0.0017684489, -0.0015674647, -0.0008126386, 0.0027515963, 0.0004576091, + -0.0009352220, -0.0012519520, 0.0003631853, -0.0017806645, -0.0029157992, + -0.0002013738, 0.0002870422, -0.0010502747, -0.0034408176, -0.0002267594, + -0.0001249319, 0.0013141328, -0.0035792026, 0.0023762786, 0.0004722425, + 0.0003024691, -0.0028311790, 0.0009481413, 0.0022005844, 0.0014468222, + -0.0026543038, -0.0018910277, 0.0004254634, -0.0003018581, -0.0004807655, + 0.0000316561, -0.0003721337, 0.0015539727, -1.3171710968, 0.0002812196, + -0.0252879728, 0.0004881686, 0.0009936476, -0.0018415914, -1.6565661430, + 0.0005869349, -0.0014731176, 0.0002001664, -0.0006213854, 0.0022294321, + -0.0001428048, -0.0002874485, 0.0000498071, -0.0381156951, 0.0005085561, + -0.0004453666, -0.0004685584, 0.0035375315, 0.0105488580, -0.0013978807, + -0.0005129566, 0.0023478307, -0.0000143996, 0.0009142375, 0.0002250969, + 0.0012381338, -0.0006990805, -0.0001842496, -0.0008645507, 0.0009970316, + -0.0022553795, -0.0011933439, 0.0004742099, -0.0012576371, 0.0013520159, + -0.0021323902, 0.0004028704, -0.0029453787, 0.0036535044, 0.0012791527, + 0.0009485402, -0.0013765721, 0.0010424359, -0.0001174761, 0.0001280326, + -0.0003561785, 0.0021266043, 0.0008573169, 0.0007380727, -0.0000264384, + 0.0001759194, -0.0003231075, -0.0037249995, -0.0004521052, -0.0004455904, + 0.0009435453, -0.0014547380, 0.0000537693, 0.0031579779, -0.0018855107, + -0.0026228214, 0.0008352661, -0.0022187307, 0.0013590362, 0.0013351493, + 0.0013783004, -0.0022005853, -0.0001602555, 0.0002180641, 0.0006224485, + -0.0008221949, -0.0019614489, 0.0096669756, 0.0005823188, 0.0023823460, + 0.0010453346, 0.0008791679, 0.0022789654, -0.0008360124, 0.0017235088, + 0.0008128658, -0.0015508772, 0.0021026239, 0.0006971625, 0.0004414967, + 0.0032757409, -0.0036360277, 0.0000116476, 0.0025502751, 0.0008625356, + 0.0000983016, -0.0014724834, 0.0004623384, 0.0007155219, -0.0027466845, + 0.0008141259, 0.0006245533, -0.0018956369, 0.0002226518, 0.0001226873, + 0.0007786104, -0.0020000951, -0.0004123528, 0.0019560298, 0.0026400900, + 0.0017421199, 0.0007555196, 0.0006571421, -0.0007359665, -0.0010577861, + -0.0020467583, -0.0005203071, 0.0000730453, 0.0014384971, -0.0018091728, + 0.0047041792, 0.0021423947, 0.0019423822, 0.0039767670, -0.0008642501, + 0.0004297886, -0.0031448700, -0.0003129407, 0.0029193237, 0.0003536367, + -0.0000127740, 0.0000420974, 0.0003596335, 0.0006457577, 0.0020151865, + 0.1299081147, 0.0026361980, -0.0005470904, 0.0032733257, 0.0004032191, + 0.0017630500, -0.0018576037, -0.0029222288, 0.0004051058, -0.0012765778, + 0.0010959890, -0.0014468931, -0.0003199996, 0.0034046695, 0.0024255933, + -0.0008974339, -0.0009906197, 0.0028230073, 0.0009170165, 0.0005553984, + -0.0013741651, 0.4639780521, -0.0006415967, 0.0046521593, -0.0001588457, + 0.0013193134, -0.0006798155, -0.0011131406, -0.0000717286, -0.0014630090, + 0.0015295027, -0.0006800937, 0.0026972885, -0.0011870638, -0.0012308613, + 0.0012158027, 0.0023525334, 0.0009918208, 0.0027103270, -0.0011433773, + -0.0004677476, -0.0016200030, 0.0000269968, -0.0022396748, 0.0004094755, + -0.0012934760, 0.0013276502, -0.0002552082, -0.0015824139, 0.0009269053, + -0.0003805476, -0.0009097075, 0.0058316654, -0.0007331547, -0.0023487960, + -0.0000675482, -1.3284312487, 0.0002181004, -0.0008418141, 0.0021291364, + 0.0019019202, 0.0023855658, 0.0028107769, 0.0006191644, -0.0002752242, + -0.0004531834, -0.0015803865, 0.0029001879, 0.0015086518, -0.0009730784, + 0.0022974075, -0.0027567674, 0.0009607589, 0.0007887650, -0.0026569907, + -0.0011757831, 0.0003764038, -0.0020368416, 0.0011863444, -0.0006508818, + 0.0004036487, 0.0015361034, -0.0036091278, 0.0006083716, 0.0009798303, + 0.0030561504, 0.0000663628, -0.0001394362, 0.0001056503, -0.0001720022, + -0.0033724736, -0.0016092570, 0.0029375507, 0.0005466914, -0.0017345317, + -0.0019474225, 0.0011836174, 0.0004719684, -0.0004806668, 0.0002667499, + -0.0012903148, 0.0002727192, 0.0567424148, -0.0003582885, 0.0036426974}; + +float unet_input_time_embedding_50_30[] = { + -0.0019839909, -0.0000359018, -0.0008313837, -0.0010388654, 0.0013247749, + -0.0017511831, 0.0017189492, 0.0001556958, 0.0009500971, -0.0012503428, + 0.0005337161, -0.0017721341, -0.0033090208, 0.0002661920, 0.0010077190, + 0.0007821154, -0.0016379524, 0.0002308853, 0.0005399707, 0.0008884966, + -0.0007959111, -0.0052022552, -0.0000022746, 0.0248142146, -0.0002890418, + 0.0008325151, 0.0009295866, 0.0005820608, 0.0011954840, 0.0011029849, + -0.0006589422, -0.0004681810, -0.0011770115, 0.0005453220, 0.0008147904, + 0.0004952126, 0.0018225685, 0.0015905735, -0.0019457012, -0.0015756125, + 0.0002433192, 0.0003022398, -0.0013653846, -0.0008986434, 0.0016967338, + -0.0014568737, -0.0006454648, -0.0017426158, -0.0018983465, -0.0006411705, + 0.0000436390, 0.0002134421, 0.1214337423, 0.0002916902, -0.0007108536, + 0.0002874060, -0.0015862413, -0.0004768874, -0.0008362839, -0.0003832143, + 0.0002294949, 0.0015428740, 0.0018936596, -0.0001767306, 0.0008199224, + -0.0014614221, -0.0004694751, -0.0013087731, -0.0008937409, 0.0017293750, + 0.0021104016, -0.0001179557, -0.0009428014, 0.0004403424, 0.0018693144, + 0.0001698993, 0.0006493619, -0.0008564387, 0.0007990753, -0.0007001760, + 0.0017086559, -0.0001217838, 0.0002614094, -0.0003814448, -0.0013843866, + -0.0010122659, 0.0002947631, -0.0013953694, 0.0015163952, 0.0000514174, + -0.0005717973, -0.0009111892, 0.0012633642, -0.0015327336, -0.0044306503, + -0.0011395100, -0.0025498474, 0.0011142585, -0.0009665941, 0.0008822237, + -0.0009304821, -0.0002432461, -0.0006371529, 0.0224606786, -0.0027422891, + 0.0016787881, -0.0000952254, 0.0005393922, 0.0001524584, 0.0030011469, + -0.0019666608, 0.0002462016, 0.3278816938, -0.0010779565, 0.0000455817, + -0.0003348594, -0.0019787285, 0.0013212911, -0.0012974606, -0.0008262920, + 0.0000569290, 0.0014725274, -0.3499638736, -0.0001444863, -0.0005013980, + 0.0001157760, -0.0010143965, 0.0015248063, 0.0010427395, -0.0007259217, + -0.0019379691, -0.0006938512, 0.0002104363, 0.0008641491, -0.0009054649, + -0.0017411311, -0.0009627875, 0.0000793869, -0.0010395655, 0.0000502951, + 0.0014839128, -0.0011721523, 0.0010510401, 0.0016987342, -0.0014616656, + -0.0000063661, -0.0010809181, -0.0002332130, 0.0010528781, -0.0003648940, + 0.0004590813, 0.0016678696, 0.0000211173, 0.0010214662, 0.0012487131, + 0.0004415023, 0.0018348088, -0.0010141013, -0.0004235469, -0.0010700743, + 0.0000706543, -0.0014154512, -0.0013195677, 0.0010915357, -0.0011602216, + 0.0006884597, -0.0020020518, 0.0006392868, 0.0371084027, 0.0005157548, + 0.0000839341, -0.0012621358, -0.0025658961, 0.0020446540, -0.0014949008, + -0.0011235718, 0.0007424668, 0.0016632974, -0.0013963376, 0.0015929816, + -0.0006109695, -0.0003048936, -0.0022895290, 0.0018858269, -0.0007009762, + -0.0001977929, 0.0004194779, 0.0005668057, 0.0001230589, -0.0015771298, + -0.0011109477, 0.0033582845, -0.0030270508, 0.0000735770, -0.0020055640, + -0.0047220071, 0.0000901691, -0.0014806353, 0.0009635061, 0.0001573851, + 0.0010827035, -0.0016487818, -0.0012053782, -0.0011855203, -0.0000562146, + 0.0001071887, -0.0005070087, 0.0013365028, -0.0001706202, -0.0003454925, + -0.0016512293, 0.0019407133, -0.0042661298, 0.0005810566, -0.0008398644, + 0.0008007605, 0.0004340345, 0.0005179816, -0.0002439324, -0.0014724348, + -0.0006932169, 0.0000458439, -0.0009880352, -0.0184286311, -0.0005764116, + 0.0001491592, -0.0024387976, -0.0002939873, 0.0014734475, 0.0000110716, + 0.0017504264, 0.0011395821, 0.0008758083, -0.0021590316, 0.0012656357, + -0.0001054429, -0.0028384654, 0.0015138732, -0.0010726564, -0.0012351479, + 0.0010832332, -0.0034899379, -0.0018919036, 0.0012915293, -1.2277530432, + -0.0020882564, -0.0018199650, 0.0002153394, 0.0009521041, 0.0017786372, + -0.0005946690, 0.0017769285, -0.0011094729, -0.0008305786, -0.0022135733, + -0.0003257764, -0.0010322710, 0.0013019237, 0.0000712336, 0.0007789404, + 0.0001278613, 0.0029612498, -0.0008380918, -0.0007553051, -0.0002650031, + -0.0010266877, -0.0013426151, 0.0011028899, 0.0004389910, 0.0000890731, + -0.0008882480, 0.0001958746, 0.0010211996, -0.0005638981, 0.0015485652, + -0.0012497676, 0.0016077841, 0.0004809815, 0.0003306288, -0.0021282928, + 0.2180872858, -0.0018464904, 0.0005554255, -0.0018683160, -0.0026831320, + -0.0011435142, -0.0006412971, -0.0006220218, 0.0006686384, -0.0005060849, + -0.0005510171, 0.0018546784, 0.0012448090, 0.0000461813, -0.0016165632, + 0.0003488641, -0.0017760671, -0.0018524113, -0.0004511699, 0.0031223395, + -0.0054072486, -0.0017981662, 0.0006795273, 0.0000310342, -0.0007513848, + 0.0008499050, 0.0016257246, -0.0005227227, 0.0016086772, -0.0029225689, + 0.0001293817, -0.0019659540, 0.0000891776, -0.0003205468, -0.0001991629, + 0.0002086293, 0.0006064853, -0.0007404634, 0.0001397766, 0.0001781322, + -0.0000991782, 0.0004702997, -0.0012254233, 0.0014674254, 0.0035455693, + 0.0001437059, -0.0038270634, -0.0002893058, 0.0533861034, 0.0000111391, + -0.0004504793, 0.0026583145, 0.0008874488, -0.0003180290, -0.0001313309, + 0.0006372905, 0.0014483181, 0.0002884512, 0.0005856534, -0.0041261492, + 0.0004608445, -0.0011850458, 0.0009087871, 1.0684039593, -0.0012045756, + -0.0017291000, -0.0020751404, 0.0006957158, -0.0017712777, -0.0008761195, + 0.0018800553, -0.0016349489, 0.0005658898, -0.0013278145, 0.0001842930, + 0.0000528251, -0.0009136002, -0.0009500569, -0.0011305404, -0.0016113608, + 0.0025236877, 0.0006837645, -0.0002930765, -0.0009386367, -0.0001484399, + 0.0001711946, 0.0004007625, 0.0026971614, -0.0001883116, -0.6695592403, + 0.0002455167, -0.0006275126, 0.0004866470, 0.0003908826, 0.0010186408, + 0.0006022030, -0.0000121939, 0.0004091787, 0.0007738795, 0.0001963712, + -0.0008241817, 1.3987438679, 0.0005847438, 0.0009072856, 0.0004554437, + -0.0001015109, 0.0003485275, -0.0004748637, -0.0002544941, -0.0027306494, + -0.0012102453, -0.0016889292, 0.0002182997, 0.0005299132, -0.0000615844, + -0.0004935577, 0.0003125705, 0.0014759918, -0.0014693812, -0.0011664750, + -0.0012303477, -0.0022501983, -0.0003950351, 0.0013673608, -0.0022125402, + 0.0013022765, 0.0015417698, -0.0014576600, 0.0010612789, -0.0002480419, + 0.0004129193, 0.0003942447, 0.0000614454, 0.0008790417, 0.0020788545, + 0.0004281697, -0.0005370965, -0.0006685425, -0.0001579598, 0.0017490257, + -0.0006237922, 0.0004583884, -0.0004776046, 0.0002037997, 0.0003640591, + -0.0007834176, 0.0007853461, 0.0000830746, 0.0005857940, 0.0010950679, + -0.0001121387, -0.0015424881, -0.0001306671, -0.0005447536, 0.0002965803, + -0.0021785693, -0.0013457285, -0.0002313310, -0.0020115655, 0.0005126710, + 0.0023399731, -0.0015129803, -0.0000996819, 0.0003801284, -0.0010249040, + -0.0006091804, -0.0005185218, 0.0011312403, 0.0014825943, -0.0013179835, + -0.0009654914, -0.0002605096, 0.0000587401, 0.0008260342, 0.0002583335, + 0.0000924999, 0.0020623179, 0.0004096250, -0.0008393610, 0.0014745612, + -0.0000734611, -0.0022156369, 0.0001140007, -0.0011503863, -0.0025355546, + -0.0019264459, 0.0022940356, -0.0008596797, 0.0013354825, 0.0004404914, + -0.0004710748, -0.0006478170, 0.0003419383, -0.0000796046, -0.0023396332, + -0.0017244536, -0.0011095833, 0.0025963341, 0.0015606619, -0.0584813021, + 0.0019397864, -0.0015153616, 0.0010123462, 0.0005487807, 0.0008881379, + -0.0000501762, -0.0002166575, 0.0024794918, -0.0011364315, -0.0004892424, + -0.0020511267, 0.2423097044, 0.0006443230, -0.0017366302, -0.0012619367, + -0.0095053678, -0.0030629802, -0.0002950476, 0.0004342212, 0.0008880786, + -0.0011307346, -0.0011916985, -0.0003922894, -0.0003232197, -0.0004061470, + 0.0019624569, 0.0018154497, 0.0006634976, 0.0009848070, -0.0009855353, + 0.0001943177, 0.0005929954, -1.9763970375, -0.0008037919, -0.0005949909, + 0.0004034252, 0.0017536404, -0.0016265865, -0.0000339001, -0.0024014143, + 0.0001555476, 0.0010774839, -0.0003213180, -0.0004683160, 0.0012717540, + 0.0013847684, -0.0017647601, 0.0000708145, -0.0015710248, 0.0020492433, + 0.0009461145, -0.0025981930, -0.0001769485, -0.0011295902, -0.0025755696, + -0.0019080497, 0.0013011650, 0.0015656513, -0.0021939632, -0.0020221733, + -0.0000965344, 0.0015158653, -0.0003298084, 0.0014347318, -0.0005014153, + -0.0004700003, -0.0005194466, 0.0014938861, 0.0001979060, -0.0005706763, + -1.3170924187, 0.0003896258, 0.0021861084, 0.0008218049, -0.0002597407, + -0.0009567154, -0.0018387195, -0.0001643864, -0.0000648354, 0.0008423105, + 0.0004936056, -0.0010025772, 0.0007136599, -0.0008008434, -0.0009840718, + -0.0005506752, -0.0013056942, 0.0002774312, 0.0008353805, -0.0001309677, + 0.0000422116, 0.0011664480, 0.0007647867, 0.0004477347, -0.0020578695, + 0.0002996884, -0.0006526469, 0.0009301184, 0.0000863359, 0.0015868349, + 0.0014520092, -0.0004111528, -0.0057039303, -0.0008893322, 0.0004058795, + 0.0013196646, 0.0006805663, 0.0021856525, -0.0025415663, 0.0013111909, + 0.0022050142, 0.0024308679, -0.0001481529, 0.0006931750, -0.0018566004, + 0.0010177247, 0.0002765839, 0.0003527347, -0.0005014744, 0.0004037828, + -0.0003482318, -0.0012702020, -0.0022701332, -0.0017376409, 0.0023501341, + -0.0016394560, 0.0026498591, -0.0010904905, -0.0029944144, -0.0001678094, + -0.0014122110, -0.0013853004, -0.0003915241, 0.0007564463, -0.0016017482, + 0.0003550649, -0.0011235378, 0.0009573277, 0.0014032824, -0.0011231143, + -0.0006592094, 0.0013007511, 0.0018774094, 0.0010655578, -0.0026647304, + -0.0011033332, -0.0000831399, -0.0003482425, 0.0010387548, -0.0002664179, + 0.0001165431, -0.0007074066, -0.0001494227, -0.0000869620, -0.0001061484, + -0.0005132826, -0.0015418970, -0.0023338012, 0.0011344803, -0.0013431632, + -0.0007043557, 0.0016310809, 0.0000674513, 0.0012788347, 0.0007914286, + -0.0020374032, 0.0000044564, -0.0012541937, -0.0013027135, -0.0018625255, + 0.0002808514, 0.0013053659, 0.0025711197, 0.0012805783, -0.0008843499, + 0.0004786272, 0.0002756098, -0.0003563841, -0.0012554831, -0.0012874468, + 0.0011988971, 0.0001341738, -0.0001654894, 0.0009041125, 0.0002452661, + 0.0006429194, 0.0000885452, 0.0007128319, -0.0016577893, -0.0016645364, + 0.0002640618, -0.0014046477, 0.0005918515, -0.0011851992, -0.0020754896, + 0.0009711767, 0.0002236422, 0.0023726188, -0.0013081364, 0.0014249757, + 0.0017524676, 0.0005679224, 0.0012684008, 0.0014277551, -0.0015843147, + -0.0017205360, -0.0017356470, 0.0013135502, 0.0016203257, 0.0000735926, + 0.0004377705, -0.0020075478, -0.0013468612, 0.0010979061, -0.0001305770, + 0.0013827742, 0.0017635771, 0.0009482857, 0.0008022857, -0.0017224830, + -0.0011975798, -0.0026387321, -0.0000357877, -0.0005151471, -0.0004980187, + -0.0010182974, -0.0001342632, 0.0003690640, -0.0029917343, -0.0002880494, + 0.0007367861, -0.0056323158, 0.0012021482, 0.0018732937, -0.0000417908, + 0.0000612494, 0.0001902599, 0.0005213996, 0.0000750294, -0.0002817926, + -0.0003267480, -0.0022670324, -0.0003260678, 0.0024872022, -0.0012116309, + 0.0025815475, -0.0005462756, 0.0002535703, 0.0018213992, -0.0002555228, + -0.0010872618, -0.0005784491, -0.0009005989, -0.0031485190, -0.0024022614, + 1.2429070473, -0.0007544304, 0.0000790097, 0.0006481460, 0.0004316643, + -0.0001794097, 0.0010182997, 0.0013564061, 0.0004747557, 0.0004914885, + 0.0021230243, -0.0004696926, 0.0002245664, 0.0007160832, -0.0019115712, + 0.0013339829, -0.0012736304, -0.0001548750, -0.0002947967, -0.0026779310, + -0.0015152558, 0.0004612198, 0.0015649161, 0.0016501562, -1.8543995619, + 0.0011661015, -0.0013220741, 0.0004943912, -0.0000564400, 0.0005527074, + -0.0011457205, -0.0013105160, -0.0012024487, 0.0026223110, -0.0000705756, + -0.0011708061, -0.0009228373, 0.0003571846, 0.0003504285, -0.0003856379, + -0.0002774454, -0.0003892872, 0.0006393613, -0.0003269422, 0.0007299669, + -0.0016898476, 0.0002295902, 0.0007400934, -0.0001569134, 0.0009953738, + -0.0002859407, 0.0189428125, -0.0015372504, -0.0004087426, -0.0006710081, + 0.0000130638, -0.0002107553, -0.0011306477, -0.0016597286, 0.0004422729, + 0.0007985462, 0.0001018031, 0.0005762718, -0.0013430463, -0.0010723888, + 0.0012889508, -0.0009529896, -0.0000780501, -0.0012693657, 0.0008593621, + -0.0025355413, -0.0013124018, -0.0013482643, 0.0016393259, 0.0003027177, + 0.0007279495, 0.0012160132, -0.0000438286, -0.0000190712, -0.0006484385, + -0.0007326007, 0.0006517312, 0.0003500152, 0.0034467063, -0.0002453902, + -0.0011364836, 0.0016531906, -0.0022869124, 0.0016602010, 1.6454699039, + -0.0005747664, 0.0002315955, -0.0008460992, 0.0024962006, -0.0019855895, + 0.0008208933, 0.0014590761, -0.0012463001, 0.0011531876, 0.0001075692, + 0.0018775261, 0.0014111036, -0.0012899588, -0.0034820782, -0.0006322936, + -0.0010906348, 0.0012501938, -0.0031888909, -0.0009915945, -0.0022457012, + -0.0004319381, 0.0011073747, -0.0011706427, -0.0016397284, 0.0000774574, + 0.0017848406, -0.0017561291, -0.0011865295, -0.0016410663, 0.0011627777, + -0.0044648983, -0.0018207235, 0.0016908525, -0.0001161695, -0.0002324693, + 0.0018477542, -0.0003075623, -0.0001621433, 0.0013771228, -0.0007521650, + 0.0007056138, 0.0007132533, -0.0010954114, 0.0010745504, 0.0010309216, + 0.0004600715, 0.0037272437, 0.0012789527, 0.0006070333, -0.0036421572, + -0.0020631424, 0.0007581031, -0.0001403810, 0.0007516661, -0.0008862312, + 0.0132757267, -0.0007802026, -0.0000379691, -0.0015815413, -0.0005617000, + 0.0015637951, -0.0002016770, -0.0008055400, -0.0001470640, 0.0008724499, + 0.0007522136, 0.0022817454, -0.0013980973, -0.0010339122, -0.0007524765, + 0.0003773987, 0.0003539061, -0.0005447586, -0.0016548124, 0.0003482196, + -0.0010365252, 0.0009047318, 0.0019006077, -0.0006955117, 0.0004335232, + -0.0019219522, -0.0007597143, 0.0001387101, -0.0010513249, -0.0000933143, + -0.0002729290, 0.0009984785, 0.0010345466, -0.0017377192, -0.0002810452, + 0.0016663268, -0.0010553929, 0.0003532760, 0.0003962899, -0.0001798985, + 0.0000708476, 0.0014812278, -0.0017495258, -0.0009314138, -0.0024040001, + -0.0000867713, 0.0013545024, -0.0003330102, 0.0017158630, 0.0002346447, + -0.0017697983, 0.0005409383, -0.0005196152, -0.0001395531, 0.8966620564, + -0.0010525656, -0.0007301131, -0.0003671022, 0.0005408693, 0.0010977876, + 0.0004917402, 0.0005347772, 0.0000908948, -0.0005001547, -0.0009983005, + 0.0003942557, -0.0011344585, -0.0039196350, -0.0014113465, -0.0012942809, + -0.0028289170, 0.0009028382, -0.0010949797, 0.0002059308, -0.0003788467, + 0.0003496082, -0.0014036349, 0.0000847916, 0.0009702020, -0.0013186350, + -0.0011476164, 0.0000919909, -0.0018701064, -0.0020618504, -0.0014840607, + -0.0000257383, 0.0025571836, -0.0008957358, -0.0006906535, -0.0005488507, + 0.0000816372, -0.0002782826, 0.0004207663, 0.0016184924, -0.0007029048, + -0.0017051590, -0.0002012001, -0.0013847579, -0.0009221368, 0.0003133358, + 0.0001979894, -0.0003291983, 0.0000964259, 0.0019315039, -0.0012224950, + 0.0014419396, 0.0004728716, 0.0002289140, -0.0007476322, -0.0009563952, + 0.8310549259, -0.0020605098, 0.0009898376, -0.0007577047, -0.0004451368, + 0.0002369811, -0.0020428523, 0.0007525255, 0.0014234995, 0.0002465343, + 0.0011393430, -0.0004832991, 0.0014373674, -0.0003639101, 0.0002822283, + -0.0014734296, 0.0007155640, 0.0002292516, 0.0005080227, 0.0000748001, + -0.0011723777, -0.0002224440, -0.0031667296, 0.0007355623, -0.0010670624, + -0.0002594423, 0.0004114052, -0.0007683618, -0.0016791080, -0.0005554948, + -0.0004626624, -0.0009555940, 0.0000827087, -0.0010666570, 0.0024201744, + 0.0007185120, 0.0018230724, -0.0017037555, 0.0011740900, 0.0003760927, + 0.0012379142, 0.0009714379, -0.0003656074, -0.0002429206, -0.0018477470, + 0.0009398297, 0.0011232819, 0.0001688347, 0.0014038262, -0.0003678519, + -0.0001275768, 0.0009872997, -0.0015500956, -1.1681423187, -0.0001221846, + -0.0146120619, 0.0005614373, -0.0001068665, -0.0006457225, -1.4879640341, + 0.0009649950, -0.0002691108, 0.0005986700, -0.0019728597, 0.0000928070, + 0.0030814512, 0.0016298504, -0.0008926606, 0.1473575979, -0.0009127306, + 0.0010170456, 0.0016864853, -0.0015843605, 0.0082562827, -0.0019569807, + -0.0006365930, 0.0009598676, -0.0016617640, -0.0014883971, 0.0020205844, + 0.0026370147, 0.0001167478, 0.0004261306, -0.0021961709, 0.0002311170, + 0.0001549243, 0.0008784756, 0.0020767888, -0.0005505071, 0.0018506362, + 0.0005008061, 0.0008652161, -0.0005463925, 0.0020767325, 0.0014328815, + 0.0008903064, -0.0003113248, -0.0022090804, -0.0007735356, -0.0007735305, + 0.0004821091, 0.0004007444, 0.0001765373, 0.0016509513, -0.0012054900, + -0.0002953652, 0.0004822938, -0.0006410520, -0.0007123740, 0.0021059988, + 0.0007476676, -0.0005389065, -0.0012963384, 0.0028844639, -0.0030338408, + 0.0002306083, 0.0007311375, -0.0011008428, -0.0009744756, -0.0014096057, + 0.0002828832, 0.0004818346, 0.0002119411, 0.0000795028, -0.0002282285, + -0.0017853109, -0.0034293875, -0.0013166601, -0.0006417413, 0.0006428515, + -0.0011809557, -0.0013664981, 0.0032047760, -0.0006638323, 0.0020494007, + -0.0010169353, -0.0004261972, 0.0016822862, 0.0005681277, -0.0015104916, + 0.0021996624, -0.0006338581, 0.0002076221, -0.0005864962, -0.0011695167, + 0.0011977633, 0.0022855615, 0.0005409174, 0.0008606536, 0.0017411336, + -0.0010294965, 0.0018624002, -0.0008889221, -0.0018445840, 0.0004940424, + 0.0005029184, -0.0014407553, -0.0011977451, -0.0014959318, -0.0031508652, + -0.0000844966, -0.0012066602, -0.0004966520, -0.0015478979, 0.0015416249, + -0.0000976510, 0.0006204308, -0.0006856881, 0.0001076809, -0.0005129956, + 0.0022808488, 0.0010398111, 0.0002485854, 0.0001449492, 0.0001923139, + 0.0003136247, -0.0010640151, 0.0025945259, -0.0005799717, -0.0002316921, + -0.0020263512, 0.0005715012, 0.0018365108, -0.0023590410, 0.0006450280, + 0.1496019512, 0.0001566587, -0.0009183603, -0.0008208443, 0.0008985018, + 0.0006540898, 0.0002494685, -0.0016157103, 0.0010647597, -0.0001661945, + -0.0003819806, -0.0005047576, -0.0005846680, 0.0019647246, -0.0003606216, + 0.0014681802, -0.0014751186, 0.0020244615, 0.0006673355, 0.0003147149, + -0.0004144353, 0.4682790339, -0.0006287296, 0.0003751800, -0.0006472545, + 0.0005639843, 0.0007346140, -0.0001128737, -0.0017559957, -0.0010687746, + -0.0011300328, -0.0002198517, 0.0022664354, -0.0009549605, 0.0000972566, + 0.0003507161, -0.0001924932, 0.0012649870, 0.0001229313, -0.0029857676, + 0.0001205260, 0.0027208675, -0.0023026359, -0.0010907738, -0.0006076433, + -0.0006448647, 0.0006034758, -0.0029476134, -0.0008074241, -0.0020310576, + 0.0005068976, 0.0017406372, -0.0002848699, 0.0018193034, -0.0015802365, + -0.0014570890, -1.2647298574, 0.0015861089, 0.0003496858, 0.0014347506, + 0.0012678737, -0.0004954755, 0.0005970409, -0.0004221068, 0.0004171210, + -0.0001928490, -0.0003920743, 0.0000111469, -0.0006485931, -0.0006419104, + 0.0008307681, -0.0013290226, 0.0003933343, -0.0000472199, 0.0015604733, + -0.0000331164, -0.0007141023, 0.0012652772, -0.0002372374, -0.0008462844, + 0.0009181392, -0.0005632914, -0.0001561712, 0.0008345218, -0.0005729941, + 0.0009768460, 0.0014226795, -0.0024226110, 0.0018166333, -0.0012499266, + -0.0011725836, -0.0013357182, 0.0017830324, -0.0000552399, -0.0015299262, + 0.0014936160, 0.0012017624, -0.0008056504, 0.0008296631, -0.0014474660, + 0.0001926953, 0.0014170366, 0.0529083647, 0.0002840382, 0.0026041772}; + +float unet_input_time_embedding_50_31[] = { + -0.0037874561, -0.0029508839, 0.0007632338, 0.0019557653, 0.0033056531, + 0.0007879855, 0.0005334256, 0.0010421160, 0.0001559621, -0.0016448551, + -0.0009849018, 0.0005387696, -0.0012015291, 0.0008587544, 0.0008991743, + -0.0013198098, -0.0007172376, 0.0019258421, 0.0011673362, 0.0001926813, + -0.0008959933, -0.0024965983, -0.0009272672, 0.0186859053, -0.0024463281, + -0.0016616723, 0.0001398316, -0.0000942349, -0.0006158458, 0.0008856533, + -0.0016341235, 0.0013619270, 0.0001506004, 0.0007676678, -0.0008472875, + 0.0003132694, -0.0007724718, 0.0003127843, 0.0000265734, 0.0022419523, + 0.0028175134, 0.0022853930, -0.0019835201, 0.0007092282, -0.0002867680, + -0.0000438343, 0.0010077744, 0.0022104378, 0.0004584128, 0.0019654436, + 0.0011188821, -0.0001345628, 0.1250833571, 0.0028172890, 0.0011551841, + 0.0023736374, -0.0006673226, 0.0001394725, -0.0030763606, 0.0001612522, + -0.0006159984, 0.0005888689, -0.0027911048, 0.0003165465, 0.0000039320, + -0.0006156806, -0.0015749540, -0.0010096399, 0.0020119427, -0.0008302990, + -0.0003088522, 0.0040730960, 0.0000644166, 0.0008760113, 0.0009799227, + -0.0003696783, -0.0002911775, -0.0018546628, -0.0011782285, -0.0016176605, + 0.0010819888, -0.0007660178, 0.0001717983, -0.0013571765, 0.0004151047, + -0.0014791826, 0.0024512678, -0.0010449230, -0.0004425542, -0.0003794483, + 0.0043464443, -0.0005663959, 0.0027742088, 0.0008546774, -0.0041930391, + 0.0015005546, -0.0024844608, -0.0000567660, 0.0021224876, 0.0022512623, + 0.0013595009, -0.0008607074, 0.0020012534, 0.0108214729, -0.0010827957, + 0.0015177857, -0.0003872938, 0.0003366359, -0.0021708347, 0.0022843282, + 0.0018752022, -0.0001081266, 0.3228028715, 0.0020740200, -0.0006237468, + 0.0030455394, 0.0011397954, -0.0020959210, -0.0025771600, 0.0020219868, + 0.0004347428, -0.0005906632, -0.2292875797, 0.0004778365, 0.0016286746, + -0.0003887359, 0.0005563744, 0.0012545357, 0.0031423224, 0.0000400748, + -0.0009090770, 0.0005930560, -0.0005249537, -0.0009993520, 0.0013913682, + -0.0023942594, -0.0008284847, -0.0005835360, 0.0005398281, -0.0036065006, + 0.0011951292, -0.0002492687, -0.0007295134, 0.0009203716, 0.0011389607, + 0.0014877627, -0.0002266839, -0.0015148744, -0.0006269598, -0.0004163305, + 0.0000533420, 0.0000845430, -0.0016886685, -0.0000414436, 0.0005705333, + 0.0013348791, 0.0008969828, -0.0036418261, -0.0006889869, -0.0004286291, + 0.0013907193, 0.0016481889, -0.0033685071, -0.0012983042, 0.0010941760, + -0.0001688695, 0.0011192237, 0.0006054128, 0.0384364501, 0.0000797294, + 0.0016134091, -0.0033419542, 0.0001200242, 0.0031648977, 0.0001819148, + -0.0007021981, 0.0005033902, 0.0012133820, -0.0004884996, 0.0011108862, + 0.0017553642, 0.0001876326, -0.0015446544, 0.0004466556, -0.0006955122, + 0.0004351404, 0.0012251399, -0.0004150611, 0.0010190676, -0.0009866264, + -0.0029876656, 0.0012588738, -0.0006013714, 0.0010104354, -0.0017854953, + 0.0006479626, -0.0000902734, 0.0012534475, 0.0004840860, 0.0000897129, + 0.0002733413, -0.0001160102, -0.0013347352, -0.0000381677, 0.0014712997, + 0.0018859897, 0.0034405023, -0.0005841311, -0.0000613024, 0.0011633497, + -0.0000756206, -0.0016220030, -0.0021002390, -0.0016068958, 0.0007036244, + 0.0021620663, 0.0005454111, -0.0009407667, -0.0005586263, 0.0018732789, + -0.0002961792, 0.0007498798, -0.0012609831, -0.0217177160, 0.0014452182, + -0.0013416694, -0.0032248534, -0.0011537441, -0.0010334582, -0.0002454100, + 0.0003966000, 0.0003730184, -0.0006815316, -0.0009990134, 0.0003885347, + -0.0009952639, -0.0005232226, 0.0006876998, -0.0002932083, -0.0004255967, + 0.0014820744, -0.0032087190, 0.0015735282, 0.0024715196, -1.1765254736, + -0.0013486852, 0.0005397811, -0.0002432143, -0.0003572628, 0.0005691415, + 0.0029341769, 0.0015722970, 0.0005155751, 0.0015020408, 0.0000873213, + 0.0014942114, -0.0000796784, 0.0012116857, 0.0027996248, -0.0036932104, + 0.0013688328, 0.0003684054, -0.0019395130, -0.0068240385, -0.0022862777, + 0.0007458855, -0.0024088554, -0.0024787067, 0.0038433997, -0.0007738876, + 0.0014935727, 0.0000061283, -0.0005628699, -0.0006363010, -0.0013285100, + -0.0006353420, 0.0012383235, 0.0019482737, 0.0013888711, 0.0000635646, + 0.2198509127, -0.0012756353, 0.0009970522, -0.0004382599, -0.0028902332, + 0.0022362024, 0.0005690507, -0.0016252173, -0.0010178066, -0.0000866032, + 0.0025520478, -0.0011276908, 0.0035209756, -0.0013940835, -0.0008768775, + 0.0019644466, -0.0011759778, 0.0004841415, 0.0005632299, -0.0001675319, + -0.0014022607, -0.0004628978, 0.0030836915, 0.0009817160, -0.0008758339, + -0.0013682921, 0.0007489729, 0.0005600676, -0.0002313782, 0.0039338884, + -0.0015268428, 0.0015749705, 0.0011322005, -0.0009937184, 0.0029976373, + -0.0046489127, 0.0032264404, -0.0000168872, 0.0024574385, -0.0021562469, + 0.0006944968, 0.0004227641, -0.0008439443, -0.0014289981, -0.0013646592, + -0.0009981231, 0.0005871281, -0.0017192839, 0.0547610708, 0.0021412922, + -0.0012770095, 0.0018631606, 0.0013849320, -0.0001893276, 0.0023894024, + -0.0009440398, -0.0008047496, -0.0024741772, 0.0027080844, -0.0032108841, + 0.0003228495, 0.0005818475, -0.0008520333, 0.9740007520, -0.0032418191, + 0.0000085700, -0.0011656653, -0.0015618034, -0.0004929844, 0.0012138130, + -0.0009625326, 0.0011278503, -0.0022392501, 0.0005003866, 0.0039165849, + 0.0009525558, -0.0000951456, 0.0005588456, -0.0012132921, 0.0019052424, + -0.0003522797, -0.0014636978, 0.0009927442, -0.0001081633, 0.0009790607, + -0.0008383987, 0.0013400097, -0.0008840477, -0.0028822720, -0.5173248053, + -0.0004261634, 0.0004108436, 0.0003120061, 0.0015112450, -0.0018242144, + -0.0024306849, 0.0011829390, 0.0007999609, 0.0003714159, 0.0010066200, + -0.0005230185, 1.4403226376, 0.0027905540, 0.0017148051, 0.0019551953, + -0.0001580361, 0.0000834884, 0.0002568075, 0.0036111651, -0.0030182512, + 0.0010733726, 0.0017647209, -0.0008866815, -0.0023123652, -0.0010623056, + -0.0018424266, 0.0000655723, -0.0005944971, -0.0034105326, -0.0022947770, + 0.0012026562, 0.0020870566, -0.0030074492, 0.0019124565, -0.0029702755, + -0.0009928076, 0.0017852419, -0.0009049182, -0.0011362992, -0.0008452646, + 0.0015832239, 0.0013535509, -0.0007572679, -0.0000521994, -0.0018592500, + -0.0006735243, 0.0003713183, -0.0012073580, -0.0008330932, 0.0004682308, + 0.0030438623, -0.0007046673, -0.0015269793, -0.0016087869, 0.0029636752, + 0.0014986056, 0.0006203689, -0.0005699064, -0.0025733465, 0.0018106708, + -0.0032278192, -0.0016325493, -0.0013528275, -0.0008520966, 0.0003732174, + -0.0031214925, 0.0015778211, 0.0006213533, 0.0008236105, 0.0007118920, + -0.0009833216, -0.0029254747, 0.0003822705, -0.0004460637, 0.0018886856, + -0.0023111431, 0.0010170462, -0.0009849286, 0.0010478408, -0.0104309684, + -0.0010182005, 0.0006788820, -0.0002121518, 0.0004689675, -0.0010098441, + 0.0004772646, 0.0013085343, -0.0005049650, -0.0015192772, -0.0006960907, + -0.0014754543, -0.0019384325, 0.0005796168, -0.0007243272, -0.0006934246, + 0.0003997702, 0.0012179222, -0.0006044991, 0.0019802623, -0.0014492213, + 0.0001922378, 0.0014837451, -0.0000004889, -0.0016162337, 0.0003540460, + -0.0036206879, 0.0000307355, 0.0018693644, 0.0010719318, 0.0367947258, + -0.0034612836, 0.0005614716, 0.0004112129, 0.0001594767, -0.0008426716, + 0.0000321862, -0.0002362111, 0.0007341187, 0.0032274243, -0.0014003783, + -0.0015354389, 0.2173187733, 0.0009424500, -0.0008186107, 0.0030396539, + 0.0042054276, -0.0026181089, -0.0012750579, 0.0000423482, 0.0003169429, + -0.0025085737, 0.0000195773, 0.0004236088, 0.0001264308, 0.0009960523, + 0.0018505510, 0.0031822443, 0.0008468217, -0.0001340727, 0.0020884764, + -0.0013097224, -0.0013642744, -1.8330403566, -0.0032026693, -0.0018131059, + 0.0025097271, 0.0001796754, -0.0020563453, -0.0001349375, -0.0012147138, + -0.0013103778, -0.0013647978, 0.0005539953, 0.0012494354, -0.0013806606, + 0.0014073348, 0.0013507244, -0.0009209504, -0.0004837569, -0.0004032576, + 0.0010997362, -0.0004843851, -0.0011577583, -0.0016415620, -0.0001977377, + 0.0004676220, -0.0013241069, -0.0019796069, 0.0011815643, -0.0018741298, + -0.0010057925, 0.0004084134, -0.0010560900, 0.0032032873, 0.0016912771, + -0.0001096912, -0.0018922177, -0.0000691186, 0.0016270815, 0.0014575412, + -1.2151222229, -0.0018369062, 0.0024290369, -0.0036332337, 0.0028144652, + 0.0009927932, 0.0007993416, -0.0009239845, 0.0011699698, -0.0007539629, + 0.0001867590, -0.0014104951, 0.0008610063, -0.0005071650, 0.0019491678, + -0.0009190030, 0.0009033489, 0.0047323573, 0.0014396226, 0.0004626582, + 0.0007500790, 0.0009147432, -0.0017537558, 0.0031742945, 0.0002776007, + -0.0001382073, -0.0005337615, 0.0010645888, 0.0035306173, -0.0002955466, + 0.0034457315, -0.0009318753, -0.0023528305, 0.0023489972, 0.0008559790, + 0.0015899873, 0.0024826913, 0.0010894854, 0.0002527125, 0.0006176406, + 0.0014982474, 0.0003562490, -0.0008288659, 0.0006032884, -0.0022394084, + -0.0003125896, 0.0030119405, -0.0010246374, 0.0007015900, 0.0013836203, + 0.0007926589, -0.0017475234, -0.0001021950, 0.0014447116, 0.0010729774, + -0.0026460141, -0.0019209222, 0.0044183433, 0.0015113958, 0.0014645641, + 0.0016225392, -0.0013982295, 0.0010821419, -0.0013815393, 0.0000281343, + 0.0018406245, 0.0024204622, -0.0000810101, 0.0023032543, 0.0022261653, + -0.0015377011, 0.0000068293, 0.0013311137, 0.0004106034, -0.0044669216, + -0.0015419424, -0.0014356219, -0.0011722317, 0.0017611391, 0.0002403082, + -0.0012703510, 0.0019938613, -0.0012196716, -0.0017917815, -0.0021983981, + 0.0029504318, -0.0007881594, -0.0017006156, 0.0013901023, 0.0007862374, + -0.0002524062, 0.0002370642, -0.0015427766, 0.0021947313, 0.0007589869, + -0.0020255432, 0.0003448492, 0.0009373247, 0.0016780356, -0.0003058407, + -0.0000145465, 0.0028503332, -0.0000567033, 0.0006884919, 0.0011233673, + -0.0008148414, 0.0001484514, 0.0002602134, -0.0010467176, -0.0005045305, + 0.0006735753, 0.0007067579, -0.0006308727, -0.0002252773, -0.0016617305, + -0.0021607035, -0.0002800364, 0.0008082480, -0.0010610933, -0.0019287133, + 0.0023913572, 0.0036219025, 0.0011439202, 0.0029486564, 0.0012659989, + 0.0019585909, 0.0018640249, 0.0045521171, -0.0013121271, 0.0036953776, + -0.0006242122, 0.0025019185, 0.0020541102, 0.0000484081, -0.0029259026, + -0.0001365617, 0.0005599991, -0.0007947644, 0.0002509239, -0.0021293126, + -0.0004679691, 0.0013882825, 0.0032282497, 0.0018511133, 0.0001986022, + -0.0003419002, 0.0015099181, 0.0027390355, -0.0027292918, 0.0031816280, + 0.0020765974, -0.0023834296, -0.0007754413, -0.0001496088, -0.0017897033, + 0.0002338099, 0.0011967495, 0.0001940713, -0.0003087039, -0.0006434672, + 0.0018396159, -0.0046245018, -0.0015915872, 0.0006951597, -0.0008448795, + -0.0025021825, -0.0016895700, 0.0027981168, 0.0006330132, 0.0005860310, + -0.0003079632, -0.0028961268, 0.0006854198, 0.0004644226, -0.0010864937, + 0.0001418751, 0.0007901732, -0.0009993918, -0.0010301443, -0.0000167550, + 0.0019429312, 0.0033222549, -0.0016452171, 0.0026158239, -0.0026533995, + 1.1236494780, 0.0010832809, -0.0004374241, 0.0024605882, 0.0001956131, + -0.0021110787, -0.0011972655, -0.0001342674, 0.0020660700, 0.0052820519, + 0.0015127426, 0.0008412333, -0.0011653233, 0.0015452020, -0.0014829095, + -0.0011017786, -0.0001464423, -0.0018478837, -0.0004227534, -0.0005947754, + -0.0021905447, 0.0011702906, 0.0000933356, -0.0019829283, -1.6170048714, + -0.0000417703, -0.0004855350, -0.0002163313, 0.0008897437, 0.0010646866, + 0.0000010319, 0.0006806793, 0.0002012797, -0.0013057604, 0.0002065632, + -0.0013004960, -0.0014208825, 0.0013425117, -0.0005507881, 0.0029006307, + -0.0007260812, -0.0029227994, 0.0024728486, -0.0010713097, 0.0012905067, + 0.0023638532, -0.0017233127, 0.0029189384, 0.0034550889, 0.0013488885, + -0.0007982547, 0.0094812904, -0.0003514290, 0.0003601741, -0.0023677829, + -0.0002280137, 0.0011109957, 0.0001467207, -0.0010598241, 0.0011724029, + 0.0011156863, 0.0026951493, -0.0017750316, 0.0071099726, 0.0013521058, + 0.0020184470, 0.0017113790, -0.0006584456, 0.0019019451, 0.0005514333, + 0.0002838159, 0.0012153690, -0.0004258228, 0.0002218064, -0.0007470310, + -0.0011794592, -0.0021269792, 0.0003410577, -0.0002465937, -0.0001876978, + 0.0004963041, 0.0007735919, -0.0017378591, 0.0013441239, -0.0004445014, + 0.0011366028, 0.0000447087, -0.0006432076, 0.0003927576, 1.5428625345, + -0.0010845840, 0.0005594457, -0.0021761586, 0.0026011846, 0.0021665087, + 0.0019144162, -0.0001867600, 0.0029753880, 0.0029785552, -0.0005648248, + -0.0002915335, 0.0010000058, -0.0008541860, -0.0021797544, 0.0012028733, + 0.0015847846, -0.0019238517, 0.0043891282, -0.0009406139, -0.0015391456, + 0.0005199378, -0.0004974692, 0.0015272368, 0.0008481871, 0.0001433108, + 0.0025981609, -0.0013917584, 0.0002601220, 0.0008488046, 0.0021941708, + -0.0044739582, 0.0013893787, 0.0006854488, -0.0009091669, 0.0018694689, + -0.0005694716, 0.0015371065, 0.0007175985, 0.0018271430, -0.0007773577, + -0.0021588961, -0.0008029724, 0.0020194296, 0.0003868423, 0.0009277271, + -0.0008762123, -0.0015453878, 0.0013723914, 0.0002190713, -0.0018753824, + 0.0004947323, 0.0004596170, -0.0021811891, 0.0000914746, -0.0034258505, + 0.0227888748, 0.0020447518, 0.0007800320, 0.0002080817, -0.0024063194, + -0.0010400284, -0.0015650648, -0.0014284858, 0.0040813293, 0.0005712308, + 0.0026554361, 0.0006258423, -0.0002035291, -0.0029982184, 0.0012609367, + 0.0001122188, 0.0012243448, 0.0002021046, 0.0009681284, 0.0008832682, + -0.0000091391, 0.0020124263, -0.0020565577, -0.0031027189, 0.0001853078, + 0.0047331927, 0.0015942445, -0.0004024255, -0.0001398870, -0.0003774059, + -0.0002569787, 0.0001711923, 0.0008264929, -0.0029926759, -0.0004409654, + 0.0011167282, -0.0031346870, 0.0011070042, 0.0002355385, -0.0001618771, + -0.0006845915, 0.0025769633, 0.0021331776, 0.0020487742, -0.0007632966, + 0.0022852682, 0.0006142887, 0.0008330503, -0.0015222222, 0.0009021596, + 0.0013936213, -0.0022189124, 0.0009529608, -0.0019361903, 0.8452080488, + 0.0021087679, -0.0007265070, 0.0049797334, 0.0013202883, 0.0024115792, + 0.0031914040, -0.0003996302, 0.0026571441, 0.0002409196, 0.0009483574, + 0.0016782082, -0.0007065334, -0.0001419242, 0.0000967529, 0.0043047075, + -0.0013478729, -0.0002156038, 0.0003651208, 0.0006319340, 0.0013221069, + 0.0017870385, 0.0021543182, -0.0007598691, -0.0005084774, -0.0014175577, + -0.0014871391, 0.0000299571, -0.0022327541, -0.0023234654, 0.0007638019, + 0.0016229434, 0.0002610153, 0.0009076018, -0.0014662393, 0.0003552828, + -0.0004378182, 0.0033669113, -0.0002618680, 0.0014918894, -0.0004468684, + -0.0016341046, -0.0007495335, -0.0008932082, -0.0028745802, 0.0021670682, + 0.0014534653, -0.0003434187, 0.0023629456, -0.0027950038, 0.0008930173, + 0.0000285361, 0.0019648578, 0.0005092924, 0.0017278931, -0.0017595345, + 0.7488358021, -0.0009330834, 0.0006040838, -0.0001880697, -0.0013061920, + 0.0003326603, 0.0001812093, 0.0009848215, 0.0010370072, 0.0005282494, + 0.0007715691, -0.0007918002, 0.0019843695, -0.0003184448, 0.0018894986, + -0.0006620968, 0.0011718394, -0.0031917635, 0.0011077465, 0.0006359178, + -0.0000059861, -0.0000850320, 0.0003273357, -0.0015903520, 0.0013853847, + -0.0010113451, 0.0012132325, -0.0017966771, 0.0003153323, 0.0022592475, + -0.0012857863, -0.0006348270, -0.0000855391, 0.0000163151, 0.0000375966, + -0.0001527482, 0.0002709346, -0.0004672841, -0.0008237015, -0.0005572867, + -0.0006728044, -0.0015527860, -0.0009476170, -0.0000184006, -0.0007787088, + 0.0005333452, 0.0011995302, -0.0016689125, -0.0011643333, 0.0014957949, + 0.0002374589, -0.0013420554, -0.0013253537, -0.9948413372, -0.0002107651, + -0.0019439290, -0.0000585240, 0.0021370924, -0.0016332364, -1.2926381826, + 0.0003199182, 0.0013984563, 0.0020460477, 0.0001566983, -0.0011216730, + -0.0016062576, -0.0006886895, 0.0025706724, 0.3012613952, 0.0023689135, + 0.0006531617, 0.0020517262, -0.0025823340, 0.0042038993, 0.0027088784, + -0.0034409447, 0.0004608636, -0.0001054471, 0.0009669985, 0.0003363285, + 0.0051612481, 0.0002244492, -0.0009976237, -0.0002019466, 0.0005082621, + -0.0005665396, -0.0004752059, 0.0013785705, -0.0009385198, -0.0029495144, + 0.0002611768, 0.0010775765, -0.0006622188, -0.0020162882, -0.0006792953, + 0.0021386484, -0.0016734360, 0.0002633748, 0.0000713924, 0.0029581347, + 0.0008219758, 0.0031428449, -0.0001276303, -0.0013232529, -0.0028180368, + -0.0005503632, -0.0024973312, -0.0020976523, -0.0005255998, 0.0010027969, + -0.0016304916, 0.0006238776, 0.0005015919, 0.0013071136, 0.0027323433, + -0.0002131548, -0.0025260649, 0.0010346305, 0.0009927270, 0.0018481653, + 0.0004218167, 0.0012683971, 0.0003958037, -0.0011869720, -0.0017556930, + 0.0014242996, 0.0009525971, 0.0020046216, -0.0011334843, 0.0012324788, + -0.0007317229, -0.0008626782, 0.0021798913, 0.0015820479, 0.0018937348, + 0.0001076302, -0.0001516698, 0.0016255148, -0.0000277911, -0.0001329971, + -0.0003816441, 0.0027672350, 0.0012140614, 0.0009578168, -0.0020146628, + -0.0008719522, 0.0008197292, 0.0010667742, -0.0016906701, 0.0033798302, + -0.0015260554, -0.0007731337, 0.0032750112, 0.0019924035, 0.0005727671, + -0.0007598228, -0.0030280573, 0.0016131573, 0.0002619699, -0.0032931676, + -0.0017327978, 0.0004809170, 0.0009646527, 0.0008289930, 0.0019718986, + 0.0010105546, -0.0006674821, 0.0003730403, 0.0039967219, -0.0012601677, + 0.0003118028, 0.0006294145, -0.0007418278, -0.0006652446, 0.0009387308, + -0.0000689356, 0.0025055236, 0.0001660723, -0.0019557457, 0.0012872135, + -0.0018512812, 0.0022125442, 0.0016081608, 0.0002155136, 0.0017341864, + 0.1664796919, 0.0006712268, -0.0017282235, 0.0011217800, -0.0001614537, + 0.0030731566, -0.0026155880, 0.0023975901, 0.0000876398, 0.0003338687, + 0.0006809854, 0.0018268368, -0.0024810536, 0.0005814373, -0.0005095429, + 0.0016923542, -0.0005372637, 0.0008169562, 0.0010183277, 0.0042145350, + 0.0008609765, 0.4643879533, 0.0015640564, -0.0031288215, -0.0003930747, + 0.0016628676, -0.0006262567, -0.0003383821, 0.0007117945, 0.0019603288, + -0.0021460312, 0.0018430543, -0.0002455879, 0.0007062834, 0.0012475091, + 0.0016937086, 0.0018694475, 0.0034502200, -0.0015264759, -0.0004128588, + 0.0009312626, 0.0004771231, -0.0022593928, 0.0000701742, 0.0014981986, + -0.0029819054, 0.0004755740, -0.0003648747, -0.0012637759, -0.0019726139, + -0.0006825546, 0.0003955341, -0.0011687144, 0.0024861991, 0.0003050729, + 0.0012761425, -1.1959125996, 0.0021809386, 0.0017943550, -0.0012110027, + 0.0012539234, 0.0008652357, 0.0012514794, 0.0023682138, -0.0006377262, + 0.0001756935, 0.0010307572, 0.0008260797, 0.0014683241, -0.0022621029, + -0.0001796666, -0.0008349762, 0.0008975449, 0.0008208463, 0.0012715315, + 0.0013557738, -0.0002337014, -0.0002146959, 0.0018900387, -0.0032356377, + -0.0012114625, 0.0006844741, 0.0012329100, -0.0000837250, 0.0014127253, + 0.0009030317, -0.0001186379, -0.0001482642, -0.0012558101, -0.0013458198, + 0.0000115749, -0.0004191804, 0.0018542586, -0.0029094326, 0.0003273077, + 0.0014388589, 0.0048053502, -0.0015502108, 0.0014135968, 0.0004604350, + -0.0004864596, -0.0029547233, 0.0425883234, 0.0027462726, 0.0003463007}; + +float unet_input_time_embedding_50_32[] = { + -0.0002825223, -0.0005815770, -0.0011918936, -0.0003829857, -0.0007793622, + 0.0021776590, -0.0014655737, 0.0010789540, 0.0004623034, -0.0010554916, + 0.0012961535, -0.0005867709, -0.0001050932, -0.0004646149, -0.0001034159, + 0.0017867195, 0.0000815643, 0.0008660832, -0.0020938567, 0.0025301869, + -0.0002047075, -0.0026077544, 0.0017801552, 0.0195559282, -0.0004176300, + -0.0024152282, 0.0008534696, 0.0003331117, -0.0008441260, 0.0007270621, + 0.0008946283, 0.0004409889, -0.0022513922, -0.0014235456, 0.0004332331, + 0.0006969888, 0.0012571786, 0.0001216920, -0.0012971386, -0.0007606912, + 0.0027038488, 0.0007577979, -0.0002270681, 0.0009664698, -0.0005079655, + -0.0004418418, 0.0001473543, 0.0008667861, -0.0008500521, -0.0002122017, + 0.0000406909, 0.0013813186, 0.1201808080, -0.0002604462, 0.0004734416, + -0.0000955362, -0.0010044920, 0.0024356619, -0.0011844183, -0.0000565650, + -0.0008930184, 0.0015434196, 0.0007241373, 0.0007264179, 0.0008606445, + 0.0023162030, -0.0003799002, -0.0015218345, 0.0001147389, -0.0002683671, + 0.0012627710, 0.0026670215, 0.0003326756, -0.0006436938, -0.0005739587, + -0.0002573468, -0.0009095198, -0.0015930310, 0.0004981197, -0.0011528593, + 0.0006537624, -0.0000510238, 0.0009512091, 0.0006763218, -0.0018123288, + -0.0013162084, -0.0010931366, -0.0002163209, -0.0004013577, 0.0005855612, + 0.0024921244, -0.0016930327, 0.0011081863, -0.0007096484, 0.0014704238, + 0.0020847821, 0.0003188732, 0.0016536945, 0.0001689966, 0.0001723021, + -0.0001432481, 0.0014130441, -0.0007233238, 0.0043289387, 0.0007865387, + 0.0027594743, -0.0017539798, -0.0013104985, -0.0008860519, -0.0009497455, + -0.0017432137, 0.0013808338, 0.3123159111, -0.0003021872, -0.0011785096, + 0.0005210484, 0.0004379652, 0.0016409538, -0.0018936503, 0.0000928163, + -0.0007029022, -0.0000525147, -0.1220550910, 0.0015019923, 0.0019230321, + -0.0013613505, 0.0016265954, 0.0011233664, 0.0005684011, -0.0023557465, + 0.0003873804, -0.0012797248, -0.0000869792, 0.0000599846, -0.0007618754, + -0.0018920421, 0.0013145988, 0.0006417492, 0.0015786402, -0.0005575661, + 0.0009253358, 0.0002318616, 0.0002147984, -0.0007309425, -0.0025536090, + 0.0001135604, -0.0018978012, -0.0013893764, -0.0017240783, 0.0005856501, + 0.0019266289, 0.0001595673, -0.0001732861, 0.0003202874, 0.0006421749, + 0.0013771039, -0.0010919385, -0.0008104555, -0.0006954279, 0.0017809584, + -0.0002194410, -0.0015729732, 0.0002032435, -0.0014219792, 0.0031059706, + -0.0006591633, 0.0015529294, 0.0017480254, 0.0207472295, 0.0020762410, + -0.0000946887, -0.0006585019, -0.0015299781, 0.0004901871, 0.0008316692, + 0.0006899345, -0.0013104387, 0.0015854994, -0.0006867745, 0.0010371655, + 0.0008399948, 0.0001313994, -0.0019099191, 0.0005149373, 0.0015133014, + -0.0019443869, 0.0000273320, -0.0003802422, 0.0018267236, -0.0021428827, + -0.0006209081, 0.0041719307, 0.0011380658, 0.0013753676, -0.0003727828, + -0.0007716413, -0.0002581776, 0.0011840556, 0.0003267425, -0.0008738306, + 0.0000064224, -0.0005668546, -0.0003104899, 0.0010880781, -0.0006375592, + -0.0015083551, 0.0001705994, 0.0015472043, -0.0009481027, 0.0010264907, + -0.0024461574, -0.0004647435, -0.0000529874, 0.0021252113, 0.0001073210, + 0.0014119269, 0.0013195700, 0.0001434288, 0.0005684450, 0.0005715134, + -0.0022545420, -0.0003504417, -0.0017177344, -0.0346561223, -0.0003952048, + -0.0019892859, -0.0013153874, 0.0009774137, -0.0003968056, 0.0021472103, + 0.0000388306, -0.0014821133, -0.0017093748, -0.0013134019, -0.0002542753, + 0.0010876493, -0.0001722504, -0.0007574926, 0.0004819855, -0.0015186584, + -0.0009510166, -0.0002249726, -0.0005461462, 0.0016956646, -1.1085073948, + 0.0009325868, -0.0026100441, -0.0019205812, 0.0004638880, 0.0018973416, + 0.0002188226, 0.0002615163, 0.0009751846, -0.0019021286, 0.0011879709, + 0.0010630277, 0.0007401137, -0.0001051364, 0.0006413357, -0.0000577421, + -0.0008521480, 0.0013388963, -0.0027030997, -0.0087299496, 0.0001514015, + 0.0001865053, -0.0017307438, 0.0006063930, -0.0007306458, -0.0011249720, + 0.0004703542, -0.0000086876, 0.0009418032, 0.0003089365, -0.0005027668, + -0.0017834087, -0.0010547191, 0.0007656547, -0.0007379772, 0.0014747460, + 0.2273211181, -0.0003309222, 0.0006086456, -0.0018284535, -0.0025230616, + 0.0011713691, -0.0005500820, 0.0008528812, -0.0006369520, 0.0005583940, + -0.0019853758, -0.0011490525, -0.0001521793, 0.0004748865, -0.0006265147, + 0.0008716362, -0.0004901350, -0.0011950680, 0.0010350072, 0.0021031192, + -0.0000201678, -0.0020641244, -0.0016884530, 0.0018366179, 0.0020086227, + 0.0023068329, 0.0003157472, -0.0010241284, 0.0017274255, 0.0003675860, + -0.0026305267, -0.0001795716, 0.0026466337, 0.0022922894, 0.0000165054, + -0.0018159794, -0.0006816246, -0.0000378280, -0.0013670251, 0.0009398209, + -0.0025292966, -0.0006101695, 0.0002130426, 0.0008257236, 0.0002459103, + 0.0007633311, 0.0020749271, 0.0013371846, 0.0500796847, -0.0002655112, + -0.0019557117, 0.0021589042, 0.0006339991, 0.0004378883, 0.0001513613, + -0.0002482664, -0.0025234295, -0.0016082445, 0.0003417786, -0.0021840520, + -0.0000415519, 0.0005662837, -0.0010820788, 0.8833946586, -0.0008017102, + -0.0007615215, -0.0010057400, -0.0005413623, 0.0009114854, 0.0002790066, + 0.0004849578, -0.0015321011, 0.0000033611, -0.0021249503, 0.0010730027, + -0.0011113533, 0.0005591654, 0.0000930793, -0.0003420208, 0.0040004528, + -0.0002061338, 0.0016008005, 0.0004733070, -0.0006738757, -0.0015285696, + 0.0011722741, 0.0005984860, -0.0013525658, 0.0007619467, -0.3605327308, + -0.0026642354, 0.0007754806, -0.0014876258, -0.0021690009, -0.0011092287, + -0.0006621882, 0.0006383985, 0.0000862305, -0.0011951060, 0.0008192649, + -0.0007609528, 1.4780632257, -0.0006339783, 0.0013946560, 0.0031121066, + 0.0003884409, 0.0013740635, 0.0009630406, 0.0013858252, -0.0004136418, + -0.0002815546, 0.0016770861, 0.0003011948, 0.0003466101, -0.0002717134, + -0.0016757841, -0.0003712890, -0.0011743832, 0.0001468314, -0.0013651848, + 0.0017977383, 0.0010529119, -0.0009861225, 0.0002470310, 0.0008859048, + 0.0003092028, 0.0001841547, -0.0006744843, 0.0005249870, -0.0001628529, + -0.0002482964, 0.0000035716, 0.0008177012, -0.0022490025, 0.0011626878, + -0.0006367855, -0.0000316948, -0.0006310791, 0.0026869122, 0.0034743468, + -0.0003710201, 0.0000329220, 0.0002336836, -0.0026166679, 0.0020256946, + -0.0000681537, 0.0001818398, 0.0011542796, -0.0008320506, -0.0004330150, + 0.0000088704, 0.0003553473, 0.0001285076, -0.0000203014, -0.0004644579, + -0.0018399488, -0.0006255023, -0.0010644270, -0.0002457043, 0.0014549310, + -0.0014062137, -0.0041242451, 0.0004877137, 0.0006900211, 0.0009619219, + -0.0011907415, 0.0000045216, -0.0003748862, -0.0029159428, -0.0062432168, + -0.0014033471, 0.0017935019, -0.0003648594, -0.0007208898, -0.0004268620, + -0.0007536560, -0.0002142498, -0.0006415814, -0.0000316286, -0.0006470513, + -0.0006801484, -0.0001271088, -0.0006352334, -0.0022767549, -0.0001985845, + -0.0010679006, 0.0009471066, -0.0013298467, 0.0003775189, 0.0001240773, + 0.0022816986, 0.0005664851, 0.0007297993, -0.0000716241, 0.0016145976, + 0.0045379587, 0.0007240046, -0.0003119684, 0.0002994463, 0.1153783798, + 0.0012355105, -0.0016617519, 0.0000456912, 0.0001649933, -0.0008706292, + 0.0016556460, 0.0003313909, -0.0007991819, 0.0020806510, 0.0021339699, + -0.0006668256, 0.1942202002, 0.0005884804, -0.0012726453, 0.0029357271, + 0.0018289549, -0.0000494597, -0.0003786576, -0.0010517091, -0.0003713011, + -0.0020654039, 0.0002362467, -0.0001006750, 0.0010337317, 0.0004206580, + -0.0013456156, 0.0002989548, -0.0016030591, 0.0015029279, 0.0004639393, + 0.0012243357, -0.0006066961, -1.6832884550, -0.0027048313, -0.0003949642, + 0.0008004499, -0.0008655470, 0.0001076823, -0.0004158961, -0.0007250239, + -0.0009017899, 0.0001174249, -0.0003749776, 0.0006572530, 0.0010392237, + 0.0021064456, -0.0002572839, 0.0014841533, -0.0014890730, 0.0002764004, + -0.0009321258, -0.0006984258, -0.0007104543, -0.0030230170, 0.0006890520, + 0.0004981307, -0.0003139095, 0.0006854131, 0.0026210723, 0.0001519036, + -0.0016249188, 0.0003222967, -0.0010339799, 0.0032657697, -0.0011594961, + -0.0027382474, -0.0004099626, 0.0006585233, -0.0020554787, 0.0009422516, + -1.1216354370, -0.0005144002, -0.0014575990, 0.0005870885, -0.0002144808, + 0.0012856232, -0.0015387121, -0.0003695874, 0.0023802756, -0.0007670932, + 0.0001899861, 0.0000834608, 0.0012161699, -0.0004806118, 0.0009573717, + -0.0021522148, 0.0006901640, 0.0013317396, 0.0004673284, -0.0001241895, + -0.0013076444, 0.0013174047, 0.0001599351, -0.0014791684, 0.0004032520, + 0.0006093746, 0.0004031798, 0.0004402581, 0.0005045147, 0.0009638334, + 0.0006015915, 0.0018696585, 0.0027434393, -0.0010850452, 0.0018660182, + 0.0003383909, 0.0015323972, 0.0004873597, -0.0001429203, 0.0003030929, + -0.0003130339, -0.0009025964, -0.0023045428, -0.0003603771, 0.0001523020, + -0.0030026184, -0.0024142060, 0.0008989545, -0.0017821728, 0.0001427997, + 0.0005538040, 0.0004928410, -0.0007527946, 0.0013184814, 0.0011690019, + 0.0001563567, -0.0001766885, -0.0009229982, 0.0005289436, -0.0005990199, + -0.0008644146, -0.0005937209, 0.0036291897, -0.0013292856, -0.0000644559, + -0.0007198467, -0.0002122925, 0.0002237512, 0.0004445296, 0.0016391810, + -0.0006020097, -0.0003264585, -0.0000104001, 0.0001990120, -0.0003275257, + -0.0005813055, 0.0017640435, -0.0000207121, -0.0000827578, -0.0002873838, + 0.0011332720, 0.0009473099, -0.0014411894, 0.0002769812, -0.0008276841, + -0.0016706651, 0.0010126492, -0.0002267058, 0.0000705826, -0.0009842343, + 0.0001147309, -0.0014852213, -0.0001954946, 0.0003758871, -0.0000550379, + -0.0004368109, 0.0022500223, 0.0005657563, 0.0007617408, 0.0004898855, + 0.0010340059, -0.0016035181, 0.0005756409, -0.0008862917, 0.0017053117, + -0.0004094713, -0.0002768948, -0.0002423474, -0.0000439506, -0.0022915606, + -0.0003710408, -0.0002443115, 0.0002694946, -0.0012499240, -0.0005759620, + 0.0003319536, 0.0019103633, 0.0014278246, 0.0009623843, -0.0035114200, + 0.0004007679, -0.0017569258, 0.0026346613, 0.0014363753, 0.0003839228, + 0.0017255628, 0.0006914912, -0.0010568257, 0.0015176358, 0.0021840129, + 0.0002362083, -0.0004282580, -0.0018276526, 0.0012138961, -0.0011871103, + -0.0012126849, -0.0013435883, 0.0000591495, 0.0019635479, 0.0014784210, + -0.0015305597, 0.0003295541, 0.0006543568, 0.0019474892, -0.0010339241, + 0.0000350508, -0.0001959153, -0.0010513645, 0.0005435476, -0.0041893059, + -0.0000332715, -0.0022346340, 0.0002401390, -0.0018300824, -0.0000058720, + -0.0022297124, -0.0000741500, 0.0001258408, -0.0013593959, -0.0004119331, + 0.0018181195, -0.0104369568, -0.0006462329, 0.0003365427, 0.0008738260, + 0.0024102218, 0.0001770612, -0.0001340648, -0.0010905906, 0.0008727279, + 0.0001389561, -0.0007740841, 0.0000140989, 0.0003698854, -0.0005956304, + -0.0010075649, 0.0002472755, 0.0000769976, -0.0010182047, -0.0005643126, + -0.0022247131, -0.0001545679, -0.0012410746, -0.0010199794, 0.0003634640, + 1.0056474209, 0.0008986737, 0.0001715194, 0.0020504259, -0.0021386067, + 0.0006633066, -0.0008562319, -0.0008405522, -0.0015156786, 0.0021758997, + 0.0006094426, -0.0008857005, -0.0006464816, -0.0000711326, -0.0002882201, + -0.0011086853, -0.0008581185, -0.0016018343, 0.0010351702, -0.0002527295, + 0.0006178208, -0.0000694785, -0.0008458599, 0.0022466073, -1.3926450014, + -0.0021797484, -0.0001465962, -0.0010037757, -0.0007189563, 0.0001075957, + -0.0008182903, -0.0011588329, 0.0013041645, 0.0020454894, 0.0013376107, + -0.0011576528, -0.0016694842, 0.0002135737, 0.0006527847, -0.0007930137, + 0.0022032191, 0.0004816120, -0.0019593509, -0.0003386536, -0.0022428376, + 0.0001324359, -0.0016424366, 0.0000314566, 0.0015523555, -0.0004013670, + -0.0013810494, 0.0057992139, 0.0012350446, -0.0017565619, 0.0013066228, + 0.0000213961, -0.0009162591, 0.0008571473, -0.0001192880, -0.0011565785, + 0.0014386121, 0.0014101621, 0.0008272064, 0.0006472068, -0.0000882426, + -0.0019817413, 0.0003732024, -0.0000180254, -0.0009905212, -0.0016890981, + -0.0007482434, -0.0006924653, -0.0010315350, -0.0002258031, -0.0017372727, + -0.0015506042, -0.0010065231, 0.0005581289, 0.0020481497, 0.0004797331, + 0.0011982229, -0.0007898733, -0.0004105223, -0.0008224511, -0.0001966699, + 0.0001324220, 0.0006179981, -0.0007189377, -0.0010057467, 1.4252897501, + -0.0012771168, -0.0002538420, -0.0008878276, -0.0004752930, 0.0008977321, + -0.0018697327, -0.0003140261, -0.0001952900, 0.0001584485, 0.0009209453, + -0.0003542888, -0.0001011633, 0.0003346931, -0.0010116706, -0.0017300871, + -0.0000620196, 0.0001235406, 0.0158856269, 0.0004905597, 0.0003503656, + 0.0014280509, 0.0017593121, 0.0009962257, -0.0001021181, 0.0014829910, + -0.0013914015, 0.0002328807, 0.0016805875, -0.0030113054, -0.0020209504, + -0.0003168265, 0.0003700177, 0.0015110495, 0.0010444068, 0.0000116462, + 0.0011515431, 0.0007566377, 0.0001692856, 0.0006001160, 0.0011144551, + -0.0009670435, 0.0007651415, -0.0032582637, -0.0011020724, 0.0012690838, + -0.0000423295, 0.0034887162, -0.0001241635, 0.0009324434, -0.0007249466, + 0.0006975492, 0.0001358953, -0.0003023604, -0.0001602975, -0.0005783751, + 0.0439042486, -0.0002892331, -0.0020076386, 0.0011546795, -0.0001315170, + 0.0010463365, -0.0000259830, 0.0013343925, 0.0009959673, 0.0007142568, + 0.0016198053, 0.0006155372, 0.0001213003, -0.0002415942, 0.0006986107, + 0.0019311563, 0.0001839816, 0.0004611373, -0.0005644765, -0.0003808718, + 0.0017214124, 0.0007074932, -0.0003371751, -0.0005894676, -0.0011579681, + -0.0000098385, -0.0007730443, -0.0007237607, -0.0008090367, 0.0009411979, + 0.0010758287, 0.0020848271, -0.0025070170, -0.0011031523, 0.0002293075, + 0.0001444761, -0.0001211162, 0.0015830824, -0.0011138571, 0.0003242472, + 0.0003166795, -0.0001403624, 0.0017542457, 0.0001498973, 0.0005792277, + -0.0019707913, 0.0029109309, -0.0001019274, 0.0002401959, -0.0005757113, + -0.0009728549, 0.0019482471, 0.0011879936, -0.0016332897, 0.7894327044, + -0.0010890027, -0.0017827530, 0.0009485204, 0.0017848494, 0.0010626758, + 0.0007659718, -0.0014002380, -0.0005348418, -0.0000727628, 0.0010494944, + -0.0009629439, 0.0002072998, -0.0001304261, -0.0007783851, -0.0016475734, + 0.0010507111, -0.0005838716, 0.0000836733, 0.0001458516, 0.0015532526, + -0.0004120227, 0.0011851457, 0.0001136216, 0.0020815250, -0.0003750589, + -0.0005581188, -0.0006245959, -0.0004284624, -0.0007997788, -0.0028392919, + -0.0010398745, 0.0018701749, 0.0004056850, 0.0014474085, -0.0003852015, + 0.0016714714, 0.0019308337, 0.0025254597, 0.0008402681, -0.0001403498, + -0.0003737495, 0.0003145677, 0.0002296898, -0.0000375517, 0.0008320031, + 0.0001751313, -0.0017035482, -0.0012448393, -0.0006019310, -0.0003470713, + -0.0008263082, 0.0022954089, 0.0009200941, 0.0021458347, -0.0004861904, + 0.6761361957, 0.0005235174, -0.0015671114, 0.0002854827, 0.0006920742, + -0.0008196160, 0.0009677755, 0.0019393908, 0.0004617516, 0.0002322685, + 0.0011340522, -0.0016660895, 0.0000356869, -0.0022617085, 0.0001710145, + -0.0035556853, -0.0018195061, -0.0011724862, -0.0002256578, -0.0001741834, + 0.0003797326, -0.0000876588, 0.0011685630, -0.0046340981, -0.0016550911, + 0.0001126206, -0.0024338686, -0.0015104674, -0.0003756816, 0.0017514550, + 0.0008163112, 0.0009913344, 0.0005597390, 0.0009875488, -0.0005628890, + 0.0000727606, -0.0018594576, 0.0001612259, 0.0009993701, 0.0008326326, + -0.0007461163, 0.0005628772, -0.0001465939, 0.0013087238, -0.0024504585, + 0.0001141634, 0.0008841355, -0.0002465911, -0.0000182464, -0.0020777779, + 0.0020651207, -0.0003905594, -0.0017948351, -0.8311659098, -0.0010861184, + 0.0122803356, -0.0000468485, -0.0006861808, 0.0013326933, -1.0995727777, + -0.0008725091, 0.0020428966, 0.0000651209, -0.0006153621, 0.0012369279, + 0.0005073538, -0.0006764191, -0.0003413642, 0.4358515739, -0.0012961312, + 0.0004444567, 0.0010615939, -0.0018318665, 0.0030655586, -0.0001181252, + -0.0007333877, 0.0004404350, -0.0007750075, -0.0012920874, 0.0009540631, + 0.0012579025, 0.0002938909, 0.0001759981, 0.0001084167, 0.0001487273, + -0.0006865624, 0.0001433159, 0.0013617375, -0.0007033548, -0.0002162988, + -0.0018167039, 0.0019588424, 0.0006067976, -0.0009452873, -0.0018201598, + -0.0001595013, -0.0007225603, 0.0002319822, 0.0016596392, -0.0004216405, + -0.0005178170, -0.0015866868, 0.0013866629, 0.0001791469, -0.0004992541, + -0.0002901834, -0.0014105225, 0.0010209873, -0.0023232519, 0.0001612846, + -0.0009825220, -0.0008997247, -0.0000139016, -0.0002283864, -0.0009247593, + 0.0004427584, -0.0002060742, 0.0003895266, -0.0015736418, -0.0002104550, + 0.0011269161, 0.0002420964, 0.0008866033, 0.0022490490, -0.0002285754, + 0.0027215504, 0.0016569921, -0.0025757062, 0.0005287980, -0.0000465917, + 0.0003504944, -0.0010935263, -0.0002813386, -0.0001539588, 0.0001196063, + 0.0006379429, 0.0001424875, 0.0005284725, 0.0002361666, -0.0022232961, + -0.0022298524, 0.0012217574, -0.0002552483, 0.0002604774, 0.0015541152, + 0.0004146271, -0.0000307923, -0.0001291590, 0.0016128039, 0.0003970219, + -0.0003486089, -0.0008972343, 0.0005426566, -0.0001459967, -0.0015532910, + -0.0011041379, -0.0021549428, 0.0010189470, -0.0009203611, 0.0003029185, + -0.0003077229, -0.0015508411, -0.0021747360, 0.0001277088, 0.0003496417, + -0.0001854592, 0.0000216705, -0.0014053973, 0.0019544102, 0.0000638480, + -0.0002432943, -0.0001756245, -0.0013089315, -0.0025751442, 0.0008363826, + 0.0002997862, -0.0003584474, 0.0008443603, -0.0015205446, -0.0011887671, + -0.0003773579, 0.0012619414, 0.0013220520, -0.0008700681, -0.0013499712, + 0.1861960143, -0.0014582581, -0.0021155109, 0.0004040458, 0.0001346465, + 0.0016822286, 0.0004081405, 0.0015398462, 0.0012981519, -0.0005192626, + 0.0001942841, 0.0005266104, -0.0004259613, 0.0018140236, -0.0016889148, + -0.0001581184, 0.0012906096, -0.0009968458, 0.0019873716, 0.0023034648, + 0.0005893954, 0.4708218873, -0.0003588947, -0.0015459829, -0.0014008291, + -0.0002920330, 0.0005972863, 0.0003835368, -0.0011823734, 0.0004096096, + -0.0010663145, 0.0004005348, -0.0016474733, -0.0005475925, 0.0002726933, + -0.0008648308, 0.0008338946, -0.0006056717, 0.0002596527, 0.0000792732, + 0.0010848667, 0.0017191037, 0.0006046682, 0.0019884161, -0.0004350739, + -0.0022014554, -0.0002234453, -0.0008562619, 0.0003290595, 0.0004898114, + -0.0013910573, 0.0017017331, -0.0021587927, -0.0012482515, 0.0001916848, + -0.0011035911, -1.1257835627, -0.0017849752, -0.0004890957, 0.0009287226, + 0.0016049973, -0.0024625089, 0.0008667780, -0.0011044007, 0.0005238741, + 0.0005833921, 0.0003521737, -0.0034747710, -0.0008298508, -0.0019293367, + -0.0010762461, 0.0007228850, -0.0001149289, -0.0012034262, 0.0016424926, + 0.0000309190, -0.0014842311, -0.0002427590, -0.0002018472, -0.0008526975, + -0.0011553464, -0.0004163091, -0.0005882503, 0.0001524370, -0.0000579655, + -0.0006537443, 0.0003702859, -0.0005666818, 0.0006970383, 0.0002770619, + 0.0006750873, 0.0007555424, 0.0009867041, -0.0004583887, 0.0020774363, + 0.0007622303, 0.0013484885, 0.0004821036, -0.0006991364, -0.0016378853, + -0.0007203752, -0.0007131826, 0.0302510988, 0.0025355814, -0.0011163136}; + +float unet_input_time_embedding_50_33[] = { + 0.0008892328, -0.0013767020, -0.0013553193, -0.0024530406, 0.0002835190, + 0.0011497401, -0.0014144005, 0.0003635446, -0.0010375744, -0.0003718637, + 0.0013432868, 0.0015639481, -0.0030535376, 0.0008955253, 0.0002287435, + 0.0011280281, 0.0010652239, 0.0006103232, -0.0004717132, -0.0002230890, + 0.0014483961, 0.0040961867, 0.0016426317, 0.0175226964, -0.0008545464, + -0.0024440794, 0.0008850452, -0.0004608938, -0.0008764268, -0.0017911606, + 0.0012919690, 0.0008144591, -0.0011008191, -0.0005538375, -0.0002698028, + -0.0000118311, 0.0003437381, -0.0016290755, -0.0028183330, -0.0021964675, + 0.0023110211, 0.0012304955, 0.0006442759, 0.0016937600, -0.0020721864, + -0.0019600135, 0.0016666730, -0.0001048343, -0.0006392915, 0.0007406962, + 0.0002016877, 0.0010749956, 0.1215109751, -0.0002650693, -0.0012729667, + -0.0003223582, 0.0006257978, 0.0022351872, -0.0007206020, 0.0015271541, + -0.0001142554, 0.0003778239, -0.0015494409, 0.0019637742, 0.0000381763, + 0.0008742120, 0.0011708848, -0.0011834494, 0.0005094195, -0.0007618978, + -0.0030335956, 0.0018626205, 0.0004602259, -0.0014025462, 0.0015571415, + 0.0013604956, 0.0004932559, 0.0005729189, 0.0010753204, 0.0010684940, + 0.0006889105, 0.0009916249, -0.0008979952, -0.0024553426, -0.0025173400, + -0.0025739153, 0.0019576335, -0.0007472201, -0.0004429086, -0.0013542832, + 0.0016167521, -0.0016571926, -0.0009574243, 0.0002069775, 0.0006662118, + -0.0006848318, 0.0013352893, 0.0012057452, -0.0004863418, -0.0014065495, + 0.0002097990, 0.0029608239, -0.0014717559, 0.0001468840, 0.0034512649, + 0.0013795374, -0.0030178865, 0.0016368041, 0.0018369616, -0.0025312910, + 0.0005199867, 0.0013245586, 0.3036486804, -0.0020185178, -0.0009792345, + -0.0013645729, 0.0023866610, 0.0018402841, -0.0010246187, 0.0027650355, + -0.0000488614, -0.0000493624, -0.0306444801, 0.0010380615, 0.0009672735, + 0.0000088424, 0.0007092231, -0.0011589332, -0.0010306719, 0.0017994349, + 0.0010743742, -0.0007239506, 0.0005555127, 0.0010536928, 0.0000652317, + -0.0013507563, 0.0034249637, 0.0000074320, 0.0020172950, -0.0007402860, + -0.0004118492, 0.0004655635, 0.0003755507, -0.0024277885, 0.0007649681, + 0.0011006983, -0.0025971928, -0.0018622568, -0.0012385617, -0.0012675901, + 0.0005694298, -0.0007486796, -0.0005764312, 0.0011177496, -0.0003852481, + -0.0000846786, -0.0007721111, -0.0017119907, 0.0008507709, 0.0025778124, + -0.0010284176, -0.0007819762, -0.0020984579, -0.0013086509, 0.0030943672, + -0.0023942795, 0.0000697619, 0.0023337537, 0.0024170359, -0.0016348071, + 0.0006088197, -0.0013820864, 0.0011065472, 0.0000879224, 0.0006196285, + -0.0009659301, -0.0014330136, 0.0015830202, 0.0014073569, 0.0005466733, + 0.0019758008, 0.0005694977, 0.0067056590, 0.0006611904, 0.0018849215, + -0.0016169664, -0.0020612236, -0.0009796955, 0.0006719516, -0.0000735908, + 0.0006770068, -0.0007522693, 0.0018862187, 0.0018270134, 0.0006323694, + 0.0012345123, 0.0021096477, 0.0002296809, 0.0000184165, -0.0018155542, + -0.0015810570, 0.0028809221, -0.0020977911, -0.0000686422, 0.0001096441, + -0.0010023080, -0.0020140512, -0.0003661998, -0.0006369990, -0.0011101067, + 0.0012798957, 0.0009286595, 0.0003686904, 0.0030745601, -0.0009562077, + 0.0015415149, 0.0032448138, -0.0007423889, 0.0002018424, 0.0010780896, + 0.0017893696, 0.0026592189, -0.0020228561, -0.0281394534, 0.0007719558, + -0.0016528675, -0.0030210949, -0.0019515199, -0.0021151670, 0.0009641702, + 0.0021949923, -0.0010953001, -0.0004852405, 0.0002866262, -0.0005644681, + 0.0026648752, 0.0004911558, -0.0001108665, 0.0013360577, 0.0000476780, + -0.0018675178, -0.0003324170, 0.0001494279, 0.0009431224, -1.0153439045, + -0.0003904451, -0.0011189133, -0.0006646066, -0.0005538368, -0.0008204142, + -0.0003501391, -0.0017042563, 0.0002925792, -0.0019148597, 0.0018276013, + 0.0009333317, 0.0005079638, -0.0010170169, -0.0020096407, -0.0006080385, + -0.0012184056, -0.0004896678, -0.0017220860, -0.0051142364, 0.0007572152, + -0.0011694678, -0.0007630773, 0.0002658060, -0.0009655459, 0.0013156203, + -0.0020409795, 0.0015384180, -0.0005900650, -0.0000800737, -0.0016794681, + 0.0007888324, -0.0020557549, 0.0010686116, 0.0017025303, 0.0014438117, + 0.2246090323, 0.0010643061, 0.0038722935, -0.0029011797, -0.0010955695, + 0.0011383062, 0.0010049893, 0.0014313550, -0.0014841873, 0.0023677209, + -0.0016736154, 0.0002883484, -0.0012992278, 0.0008220619, 0.0000366853, + 0.0002167425, 0.0025803135, -0.0008657034, 0.0040743677, 0.0005235951, + -0.0019255476, -0.0005795720, -0.0028292565, 0.0022844584, 0.0017693930, + 0.0036358549, -0.0025239899, 0.0006254888, 0.0007315790, -0.0000937511, + -0.0025002384, 0.0023691137, 0.0013194557, -0.0006515067, -0.0008718390, + 0.0004637027, 0.0015115385, -0.0008775755, -0.0003251359, 0.0013569067, + -0.0014339348, -0.0017275414, 0.0005123063, 0.0004299730, -0.0006036964, + -0.0030913646, 0.0003667343, 0.0007436927, 0.0417339541, 0.0013901051, + -0.0009941624, 0.0011214279, -0.0008526213, 0.0011736006, -0.0016194982, + -0.0028197891, 0.0006559028, -0.0011328122, 0.0000533196, 0.0024982295, + -0.0013104435, 0.0016633675, 0.0005440635, 0.7980679274, 0.0014663518, + 0.0011133640, -0.0001219852, 0.0016596598, 0.0001776079, 0.0009793540, + -0.0004662201, 0.0015794532, -0.0011448320, -0.0003451500, 0.0016299073, + -0.0013424726, 0.0017716025, -0.0013031015, -0.0006390638, 0.0034328653, + 0.0001308145, 0.0009838655, -0.0006769421, 0.0002716561, -0.0002991735, + 0.0012463906, 0.0030173832, 0.0006825766, -0.0004898151, -0.2209287435, + 0.0000426546, 0.0015738218, 0.0001546193, -0.0015895218, 0.0005454675, + -0.0001494383, 0.0014830913, -0.0002136156, -0.0001509169, 0.0028382894, + 0.0017258312, 1.4930350780, -0.0018631020, 0.0008452740, 0.0010519857, + 0.0019034899, -0.0000014086, 0.0003804583, 0.0001435075, 0.0014785253, + -0.0016986104, 0.0000913377, 0.0001666248, -0.0013261756, -0.0008108616, + -0.0019099391, -0.0004496640, -0.0000633380, 0.0010553454, 0.0010276590, + 0.0024788773, 0.0017813593, 0.0003580658, -0.0013538958, 0.0007488960, + 0.0003168606, -0.0013528372, 0.0002666209, 0.0014696470, 0.0009827595, + 0.0006848248, 0.0017769691, 0.0007188222, -0.0011699814, 0.0027810452, + 0.0002075606, 0.0013868604, 0.0025942277, -0.0006550103, 0.0019184700, + -0.0000767219, -0.0003208367, -0.0017785209, -0.0000467657, 0.0002157367, + 0.0012727506, 0.0003331406, 0.0011770583, -0.0013935172, -0.0020232394, + 0.0005425974, 0.0021183668, -0.0016472684, 0.0008559427, -0.0027656634, + 0.0000411122, -0.0007912610, 0.0005796668, 0.0003046272, 0.0025068421, + -0.0013168044, 0.0003846661, -0.0012967640, -0.0010279219, 0.0024016730, + 0.0015629143, -0.0002660770, -0.0023914916, -0.0003740550, 0.0014609015, + 0.0001380616, -0.0005081566, -0.0011944484, -0.0004381561, -0.0016253629, + -0.0017415285, 0.0005423715, 0.0018864758, -0.0007152651, -0.0014139054, + 0.0019841120, -0.0003354233, 0.0002954288, 0.0000256147, 0.0014946992, + 0.0003204546, 0.0006883792, -0.0019664504, 0.0014881197, -0.0019165662, + 0.0028912330, -0.0004259476, -0.0016636034, 0.0013482245, -0.0007331045, + 0.0047521237, -0.0004151594, 0.0003783023, 0.0000775307, 0.1701813787, + -0.0003843771, 0.0001086870, -0.0020940341, 0.0008864158, 0.0019020350, + 0.0002016716, -0.0012706134, 0.0005995715, 0.0005841437, 0.0035977790, + 0.0027816787, 0.1725726873, 0.0003876681, 0.0015989696, 0.0005813681, + -0.0005855468, 0.0001246994, -0.0005315472, -0.0011024592, -0.0006644216, + 0.0005366369, 0.0017769858, -0.0025292253, 0.0006374922, -0.0001024711, + 0.0006538390, -0.0004493915, -0.0020778489, 0.0011704355, 0.0009453744, + 0.0013054151, -0.0015873332, -1.5269728899, 0.0020325361, -0.0003580797, + 0.0002040262, -0.0006148252, 0.0031168861, 0.0020289146, 0.0003062477, + 0.0011015171, 0.0004646159, -0.0004405134, -0.0007061772, 0.0007243836, + 0.0019859865, 0.0000769847, -0.0001370017, -0.0000977488, -0.0026855660, + 0.0001236987, -0.0000064075, -0.0010668519, -0.0023069207, 0.0023854193, + -0.0008260671, -0.0006565489, -0.0001820170, 0.0045304503, -0.0002955180, + 0.0000515264, -0.0004863730, -0.0001493795, 0.0012748493, 0.0024892143, + 0.0007120580, 0.0007278621, -0.0012612930, -0.0015997645, -0.0006391993, + -1.0034182072, 0.0003005327, -0.0023092334, -0.0003735302, 0.0012061466, + 0.0013443396, -0.0006015846, -0.0005020485, 0.0005233563, -0.0016054455, + 0.0000252100, 0.0009198867, 0.0029475703, 0.0010540029, 0.0013178280, + -0.0028837109, 0.0026514907, 0.0022724681, -0.0010682102, -0.0015276168, + -0.0013190566, 0.0003334070, 0.0002562676, -0.0040826849, 0.0009899787, + 0.0005702535, 0.0011109861, 0.0009994542, 0.0020339689, -0.0034104304, + -0.0014209216, 0.0044580437, 0.0026245299, 0.0013648123, 0.0007908337, + 0.0000872861, 0.0018548202, -0.0000513471, 0.0019374883, -0.0006427602, + 0.0008550555, -0.0014935951, -0.0014253762, -0.0012455350, -0.0001543274, + -0.0026425119, -0.0015399972, 0.0007653814, -0.0013248678, -0.0024280944, + 0.0009100153, 0.0000822367, -0.0005757930, 0.0009257519, 0.0009136468, + 0.0029200583, 0.0000481118, -0.0005019389, 0.0032110550, 0.0012437203, + -0.0015053019, 0.0009764389, 0.0010450152, -0.0017702822, 0.0005802331, + 0.0003676899, 0.0013444431, -0.0013555912, -0.0004116255, 0.0004333963, + 0.0001135496, -0.0010378697, -0.0011799613, 0.0004965672, 0.0019431282, + 0.0030407258, -0.0001104355, 0.0028488815, 0.0001851423, -0.0021517677, + 0.0013902881, 0.0020403292, -0.0019271256, 0.0004564559, -0.0007960489, + 0.0014987541, 0.0011759517, 0.0019189130, -0.0014686491, 0.0009572541, + 0.0028920136, -0.0003676077, 0.0000456271, 0.0002044919, -0.0008638431, + -0.0003727762, 0.0011725044, 0.0015782525, 0.0008347705, 0.0021068552, + 0.0008542713, 0.0024735052, -0.0003884414, -0.0005863872, 0.0022496884, + -0.0002622881, 0.0007388040, -0.0021559112, -0.0004049651, -0.0015819636, + 0.0007405104, 0.0014661602, -0.0005776199, 0.0001006693, -0.0026753028, + 0.0018466213, 0.0016072115, 0.0020566690, 0.0000839469, 0.0006621383, + -0.0008923642, 0.0015324673, 0.0004198884, 0.0018385171, 0.0001202058, + 0.0032385131, 0.0008096935, -0.0026996415, 0.0020284541, -0.0001010452, + 0.0006930479, 0.0000156569, -0.0006809207, 0.0009442224, 0.0015286114, + -0.0006076898, 0.0001726663, -0.0006173898, 0.0014590179, 0.0026503187, + -0.0003451034, -0.0007141680, 0.0002233216, 0.0008867534, -0.0012415741, + -0.0002391555, 0.0008472092, -0.0009445651, 0.0002682023, -0.0010367567, + 0.0015911004, -0.0004415736, 0.0000713908, -0.0028893573, 0.0015533450, + 0.0001734537, 0.0005091019, 0.0008878899, -0.0007465894, 0.0004843588, + 0.0004311819, -0.0102690486, -0.0006988763, 0.0012837201, -0.0004667542, + 0.0016123168, 0.0008338746, -0.0004326708, -0.0026203159, 0.0003438434, + 0.0003643138, -0.0020847716, 0.0005345453, -0.0006611087, -0.0006593943, + -0.0015615788, 0.0030561155, -0.0005543248, -0.0024852902, 0.0017733392, + 0.0015966920, 0.0016901474, 0.0005330844, 0.0033230847, 0.0000732406, + 0.8938181400, -0.0000277706, 0.0012441750, 0.0004544077, -0.0006567703, + 0.0012642047, -0.0014165333, -0.0004585451, -0.0022644268, 0.0006995769, + -0.0034953118, 0.0042934916, 0.0018744414, -0.0010351520, -0.0012704581, + -0.0001747569, 0.0009310970, -0.0032387185, 0.0001499327, 0.0001823318, + 0.0004269728, 0.0007552090, -0.0005557920, 0.0005408647, -1.1620935202, + -0.0030457019, -0.0008898566, -0.0006233337, -0.0010970938, -0.0005855071, + 0.0005430700, -0.0013078424, -0.0000700891, 0.0005889558, 0.0002484536, + -0.0002667103, 0.0016324776, 0.0015345933, 0.0006085674, 0.0001513120, + 0.0023091477, 0.0009685005, -0.0029965751, -0.0007304200, -0.0013798522, + 0.0009754519, -0.0038070846, -0.0008006785, -0.0011202577, 0.0006745430, + -0.0016426034, 0.0023505096, 0.0015737517, 0.0011995723, 0.0011735684, + -0.0000840760, 0.0032720307, -0.0009380044, 0.0001475736, -0.0003433833, + -0.0012132635, 0.0014533363, -0.0004478554, 0.0027368618, -0.0004493399, + -0.0001718797, 0.0021593173, 0.0026928755, 0.0009746375, -0.0016754803, + -0.0003748079, 0.0027186433, 0.0003193713, -0.0008500421, -0.0043273363, + 0.0018373587, -0.0023981566, -0.0001060726, 0.0016288329, 0.0021826711, + 0.0012356946, 0.0006825826, -0.0027479799, -0.0015579688, 0.0006613110, + 0.0032308977, 0.0000760349, 0.0013668588, -0.0012822438, 1.3134090900, + -0.0000020924, -0.0011408825, 0.0008751684, -0.0031733967, 0.0028917347, + -0.0021877151, -0.0001055687, -0.0002418794, -0.0010344700, 0.0010143351, + -0.0022831641, 0.0003617150, 0.0006723420, 0.0004368983, -0.0006442814, + 0.0014608045, 0.0001579637, 0.0238904450, -0.0018853801, 0.0009606281, + 0.0014404524, 0.0011164648, 0.0009347730, 0.0006348994, -0.0004712259, + -0.0003203619, -0.0008719231, 0.0003054204, -0.0010004933, -0.0008469773, + 0.0041822065, 0.0004453836, -0.0024206778, 0.0016612676, 0.0002535554, + 0.0011884330, 0.0028946153, 0.0007102226, 0.0001460245, -0.0002885778, + 0.0005824408, 0.0004233394, -0.0007395092, 0.0001212580, -0.0000033850, + -0.0015269113, -0.0005635177, -0.0008280692, -0.0013212239, 0.0019337540, + 0.0003361513, 0.0012050988, -0.0023079026, -0.0016939616, 0.0000775764, + 0.0569735467, 0.0010520060, 0.0018010801, -0.0001664758, 0.0011710415, + 0.0016579442, 0.0014111511, -0.0004913080, 0.0032625955, -0.0003721959, + 0.0022637665, 0.0012302450, 0.0000640233, 0.0026645821, 0.0009197006, + -0.0000128478, 0.0011392918, 0.0027544121, -0.0011450807, 0.0005304161, + -0.0004975982, 0.0010882019, -0.0016246904, -0.0020359955, 0.0003161263, + 0.0019114381, -0.0000349637, 0.0015996591, -0.0013048747, 0.0012501418, + 0.0011223017, -0.0008349261, 0.0000636354, 0.0021015026, 0.0011869953, + -0.0014306514, 0.0000782467, 0.0005044949, -0.0003012032, 0.0012276783, + -0.0000554407, -0.0008236198, 0.0034381878, 0.0029725041, 0.0026711430, + -0.0016067238, 0.0018161959, 0.0003829179, -0.0006201322, -0.0004478164, + -0.0002156603, -0.0002388248, 0.0029756846, 0.0002274234, 0.7385426760, + -0.0006834329, 0.0016069803, 0.0013894420, -0.0010876928, -0.0001848973, + 0.0010524807, 0.0011912986, -0.0021648705, -0.0006217244, -0.0010499866, + -0.0012937748, 0.0024608453, -0.0014319699, 0.0001270792, 0.0018686573, + 0.0015322752, 0.0003066088, 0.0017301468, -0.0003608675, 0.0019660664, + 0.0004419805, -0.0002392125, -0.0003906742, -0.0009348872, -0.0002399212, + 0.0017015981, 0.0006157693, 0.0025298132, 0.0011870079, 0.0002508089, + 0.0031179443, 0.0013887845, 0.0009681433, 0.0008083270, 0.0015526060, + 0.0002488018, 0.0007345917, 0.0001241498, -0.0006707720, 0.0007702876, + -0.0007141354, 0.0004633698, 0.0004808339, -0.0016004512, 0.0004714115, + 0.0000224195, -0.0002105506, 0.0006570728, -0.0001496268, 0.0017014351, + -0.0009535762, 0.0025394722, -0.0003519547, 0.0014069595, -0.0015136688, + 0.6004497409, 0.0023085522, -0.0004746597, 0.0014891268, -0.0007342878, + -0.0009498266, 0.0005163969, 0.0014481884, -0.0021970421, 0.0012840882, + 0.0002781877, -0.0006797276, -0.0007449747, 0.0002068554, -0.0003088309, + -0.0002198890, -0.0004540589, -0.0005993382, -0.0033790669, 0.0009440738, + 0.0036402654, -0.0013668461, 0.0022402080, -0.0028282492, 0.0001119864, + -0.0003389823, 0.0003841692, 0.0007376068, -0.0004232402, -0.0012536994, + -0.0023270673, 0.0001909740, 0.0004190238, 0.0002644574, -0.0019404646, + -0.0007578222, -0.0023309563, 0.0014138906, 0.0020634879, 0.0014826697, + -0.0021542276, 0.0002870616, -0.0008217082, 0.0018233475, 0.0011937569, + 0.0021102787, 0.0007826753, 0.0025230404, 0.0007322717, -0.0029574186, + 0.0006066384, -0.0005686735, -0.0000698967, -0.6758710742, 0.0024782738, + 0.0271432400, -0.0003768106, 0.0001922720, 0.0018810777, -0.9047446847, + -0.0039842376, -0.0006446401, -0.0006444277, -0.0005807825, 0.0004035817, + -0.0042181457, -0.0012458141, 0.0011159880, 0.5571333170, -0.0011369921, + -0.0003983916, -0.0000397104, 0.0006144481, 0.0059861257, 0.0006778613, + -0.0009821458, 0.0018094024, 0.0018531866, -0.0008288075, 0.0016386718, + -0.0002072379, 0.0014027487, -0.0029615317, 0.0005438710, 0.0004889052, + -0.0006657611, -0.0013160536, -0.0008519157, 0.0021491011, 0.0002032807, + -0.0019165683, -0.0013476301, 0.0035685478, 0.0018085074, -0.0001885982, + 0.0001744776, 0.0010262609, 0.0014627771, 0.0023123766, -0.0010130489, + 0.0002442969, -0.0025131716, 0.0020439606, 0.0001609330, 0.0015906971, + -0.0000384906, -0.0004795436, 0.0010744699, 0.0018307341, -0.0003489302, + -0.0018999930, -0.0019113501, 0.0008452202, -0.0018012598, 0.0026823713, + -0.0004886501, -0.0010398073, -0.0019332524, 0.0010778443, 0.0013748045, + 0.0026782951, 0.0009161606, 0.0002371732, 0.0014886854, -0.0019835401, + -0.0013256622, 0.0018444981, 0.0172205195, -0.0002283170, -0.0005372036, + 0.0009719082, 0.0007158186, -0.0027730512, 0.0007291446, -0.0014996643, + -0.0007216157, 0.0018099011, -0.0007230279, 0.0013472601, 0.0015110280, + 0.0003072757, -0.0004623868, 0.0016102167, 0.0006490732, 0.0010524755, + 0.0007909508, -0.0005927067, -0.0024805251, -0.0001602727, -0.0030434364, + -0.0017530806, -0.0030688653, 0.0031826729, 0.0011205594, 0.0012754258, + 0.0014593578, -0.0007208346, 0.0013054996, 0.0022471407, 0.0005905197, + -0.0014072289, 0.0005207253, -0.0004863581, 0.0018956240, 0.0008674361, + 0.0007150471, 0.0003370834, -0.0019694057, 0.0025931066, 0.0016236533, + -0.0016035729, 0.0002516784, -0.0010561249, -0.0025305199, 0.0000603017, + -0.0007459149, -0.0023499355, -0.0011482264, -0.0011045072, 0.0002856143, + 0.0033729076, -0.0020514100, -0.0008384341, -0.0000586733, -0.0004391093, + 0.2012967020, 0.0010657697, 0.0005210341, 0.0017322566, 0.0020034423, + 0.0014149493, -0.0010720931, 0.0019228065, 0.0004763706, 0.0025549205, + 0.0011191959, -0.0001794979, 0.0035531807, 0.0025124485, -0.0005995804, + -0.0021927813, 0.0016457690, -0.0039327946, 0.0002001459, 0.0030628243, + 0.0021764147, 0.4683396518, 0.0030820125, -0.0039041548, -0.0010593750, + 0.0023779506, 0.0009257901, -0.0006906680, 0.0024155660, 0.0004313169, + 0.0004470781, -0.0005683154, -0.0017590029, 0.0000858717, -0.0016698774, + -0.0024990076, 0.0010498543, -0.0012019207, -0.0018070582, 0.0009472100, + 0.0008078096, 0.0012710451, 0.0012823874, -0.0018840791, -0.0001473045, + 0.0009966837, 0.0004869033, 0.0011292824, -0.0009235721, 0.0008632876, + -0.0023635910, 0.0002604239, -0.0009744987, 0.0014833846, 0.0007710387, + -0.0016840183, -1.0382057428, -0.0002296402, -0.0010325136, -0.0002791923, + 0.0006262886, -0.0001908431, 0.0010313224, 0.0004143927, -0.0015839811, + 0.0009260401, -0.0013699754, -0.0015782859, -0.0009140451, -0.0001803045, + 0.0006204266, 0.0018032395, -0.0002578939, 0.0000896617, -0.0004934706, + 0.0016124672, -0.0004644268, -0.0034851762, 0.0007031098, -0.0001751753, + -0.0013488187, 0.0021044449, 0.0009991950, -0.0017121029, -0.0001876291, + 0.0015719304, 0.0001731454, 0.0021600164, -0.0019442736, -0.0005361536, + -0.0004705624, 0.0014279718, 0.0009485423, 0.0018978351, 0.0016101492, + 0.0002006004, 0.0029407758, 0.0001143303, -0.0011700485, -0.0025127435, + 0.0003056182, -0.0007055742, 0.0136065520, 0.0004126492, -0.0021034495}; + +float unet_input_time_embedding_50_34[] = { + -0.0008634254, 0.0015217846, -0.0016685985, -0.0015802325, -0.0019744914, + 0.0009202361, -0.0005943335, 0.0014804550, -0.0011920105, 0.0003356200, + 0.0007085323, 0.0013655610, -0.0013569556, -0.0004273849, -0.0019170262, + 0.0015412776, -0.0008644843, -0.0004944403, -0.0014942281, 0.0005797395, + 0.0032270248, 0.0021458194, 0.0017090932, -0.0020032972, -0.0000479717, + -0.0007035774, -0.0001849718, -0.0008919397, -0.0011025426, -0.0019979328, + 0.0001698084, -0.0006567654, -0.0009502033, -0.0011989600, -0.0008257460, + -0.0005115634, -0.0001316555, 0.0011208142, -0.0006540529, -0.0019438528, + -0.0007606298, 0.0013684356, -0.0021198695, 0.0015627081, -0.0024726903, + -0.0005905146, 0.0015343344, 0.0000277339, -0.0017932933, 0.0017581095, + -0.0025527785, -0.0017667850, 0.1393128484, -0.0009143753, -0.0000291538, + -0.0034818759, -0.0003844771, 0.0009759972, -0.0003282339, 0.0012600448, + -0.0008262356, 0.0005977917, 0.0016576587, -0.0020642381, 0.0000150725, + 0.0034489334, 0.0004785713, -0.0002803138, -0.0013337815, -0.0013115847, + -0.0002405900, 0.0001799543, -0.0022058918, -0.0027175655, -0.0003286875, + 0.0013740193, -0.0011266307, 0.0006534467, 0.0012276908, 0.0011098494, + -0.0018835836, -0.0011476319, -0.0000435286, 0.0024086563, -0.0001191960, + -0.0024230320, 0.0014321513, 0.0001699626, 0.0001064837, -0.0001817492, + 0.0009137723, -0.0028744396, -0.0021673348, -0.0003815425, -0.0019523283, + 0.0004912864, 0.0014722459, 0.0006943913, 0.0013944721, -0.0018273527, + -0.0013201237, 0.0003877426, -0.0030025158, -0.0127964839, 0.0027221427, + 0.0020448919, -0.0020510047, 0.0019793212, 0.0003930265, -0.0004357449, + -0.0012566680, -0.0008468004, 0.2866812348, -0.0007606260, -0.0004121456, + -0.0014990661, 0.0012914524, -0.0007947794, 0.0002018036, -0.0019594831, + -0.0004459037, 0.0015371300, 0.0318651386, 0.0017754731, 0.0003008414, + 0.0006039743, 0.0009382656, -0.0006021564, -0.0011474434, 0.0022592419, + 0.0000628461, -0.0003849976, -0.0006695094, 0.0011396203, 0.0013129862, + -0.0012850526, 0.0045654820, -0.0023750849, 0.0014877561, -0.0013750894, + -0.0011029837, -0.0007054557, -0.0001752763, -0.0024600290, -0.0010381283, + -0.0000296629, -0.0020583193, 0.0000205347, -0.0023597907, 0.0004198477, + 0.0010145783, 0.0005354845, 0.0009302050, 0.0010985404, -0.0019589625, + 0.0003720429, 0.0018994790, -0.0004067412, 0.0008701552, 0.0019572549, + 0.0013165115, -0.0029366170, -0.0018790113, -0.0013273195, 0.0026087346, + -0.0005920846, -0.0017133183, 0.0045081945, 0.0039991480, -0.0020240915, + -0.0018867425, -0.0029484266, -0.0020746947, -0.0021930696, 0.0025813421, + 0.0016021952, -0.0009651800, 0.0022438746, -0.0004264999, 0.0003748639, + 0.0004701894, -0.0001500612, 0.0070945141, 0.0014372887, 0.0028901217, + 0.0004740744, -0.0012578703, 0.0004232726, -0.0004132572, -0.0011177964, + 0.0003901324, -0.0001717773, 0.0017855096, -0.0004855918, 0.0021464955, + 0.0014836569, 0.0000012891, -0.0015731771, -0.0017389940, -0.0019799229, + -0.0009240555, 0.0019443615, 0.0006001443, 0.0005528561, 0.0005344218, + -0.0027472340, -0.0020740977, 0.0009065783, -0.0001100171, -0.0019298911, + 0.0009652362, 0.0008027344, -0.0002402833, 0.0039920574, -0.0011625816, + 0.0016141310, -0.0005874787, -0.0000488875, -0.0011173476, 0.0002181054, + 0.0008566002, -0.0011819821, -0.0017012965, -0.0106596658, -0.0001434562, + -0.0004386427, -0.0014238665, -0.0010081700, 0.0004863066, 0.0025003275, + -0.0009478377, -0.0006404584, 0.0003598249, 0.0014919410, -0.0006723162, + 0.0014661802, -0.0013623894, 0.0006613694, -0.0001161303, -0.0000204029, + -0.0016096511, -0.0002762933, 0.0001131510, 0.0020368397, -0.8940343857, + -0.0001552454, -0.0012288420, -0.0021548043, -0.0005201777, -0.0012517758, + -0.0022295164, -0.0031692814, 0.0003260798, -0.0030442150, 0.0005472172, + 0.0004332892, 0.0012450113, -0.0001401937, -0.0009990346, -0.0009586430, + -0.0026212437, 0.0013638355, 0.0002294187, -0.0024177018, 0.0011583242, + -0.0007682699, -0.0016758228, 0.0012564256, -0.0022633532, -0.0014572567, + -0.0009833183, -0.0020228720, -0.0008596596, 0.0025246257, 0.0001026664, + -0.0016042604, -0.0020623980, -0.0003483524, -0.0021436913, -0.0003697604, + 0.2329450250, 0.0010337532, 0.0024592271, -0.0019395184, -0.0023817674, + -0.0002863640, 0.0002344502, 0.0036411833, 0.0015422348, 0.0008808537, + -0.0007443362, 0.0016542638, -0.0008394865, 0.0015175841, -0.0018207813, + 0.0000351686, -0.0001361272, -0.0005345182, 0.0007185233, 0.0018254397, + -0.0071089016, 0.0001504307, -0.0006864276, 0.0018194383, -0.0000769573, + 0.0009004436, -0.0021752818, 0.0025423104, -0.0004679621, 0.0006523184, + -0.0016529211, -0.0009540403, 0.0001478160, -0.0002492433, 0.0007852879, + 0.0014534551, -0.0000185174, -0.0003445600, -0.0035447460, 0.0018310635, + 0.0006308153, -0.0000060000, 0.0003658670, 0.0020471867, 0.0014001726, + -0.0018135975, -0.0015483219, 0.0012926143, 0.0378410816, -0.0019780318, + -0.0004211487, 0.0018600184, -0.0018969217, 0.0017331541, -0.0014761412, + -0.0011336897, 0.0012262280, -0.0008751480, -0.0007227673, 0.0008358192, + -0.0005004089, -0.0001409466, -0.0003822942, 0.7173768878, 0.0016002927, + -0.0002190270, -0.0001808059, 0.0008671590, 0.0018063458, 0.0016734396, + 0.0018646345, -0.0025834320, -0.0005496908, -0.0022737738, 0.0012573359, + 0.0002381289, -0.0007521922, 0.0011948996, 0.0004615677, 0.0011336585, + -0.0002923226, 0.0008861786, 0.0001485441, -0.0009319475, 0.0005444757, + 0.0027725941, 0.0002185488, -0.0000996664, -0.0025498532, -0.1296561509, + -0.0001786370, -0.0015404704, -0.0010901666, -0.0020084698, 0.0008293444, + 0.0007327083, 0.0018711608, -0.0017148212, -0.0023182326, -0.0003233808, + -0.0010919304, 1.4903904200, -0.0027958583, -0.0006192499, 0.0002044574, + -0.0023732181, -0.0008345218, 0.0009992537, -0.0028106482, 0.0019668848, + -0.0005281917, -0.0009090746, 0.0009500436, 0.0006605531, -0.0005239742, + -0.0000988045, 0.0010374521, -0.0017036992, 0.0013917522, 0.0024239202, + 0.0013869049, -0.0005359836, 0.0015070268, -0.0005553043, 0.0021433895, + 0.0002777115, 0.0003667992, -0.0010770587, -0.0001422283, 0.0003009466, + -0.0024177502, 0.0003960212, 0.0008915020, -0.0006959440, 0.0008479338, + 0.0010560842, -0.0005592657, 0.0024655233, 0.0014610179, 0.0012891646, + -0.0009388865, -0.0005627417, -0.0014359015, 0.0002002630, -0.0000389200, + -0.0022217343, -0.0017432841, 0.0021624037, -0.0003343623, -0.0028733467, + 0.0000540507, -0.0005589130, -0.0015644792, -0.0000028873, 0.0004113900, + 0.0009427471, -0.0019757757, -0.0009121697, -0.0008413522, 0.0003467270, + -0.0009313682, -0.0004074890, -0.0025466341, -0.0014525979, -0.0017296330, + 0.0024450719, 0.0005788617, -0.0006829845, -0.0006976984, -0.0014864691, + 0.0001455708, -0.0004647365, 0.0005800587, -0.0003808527, -0.0009534797, + 0.0006871512, -0.0007794704, -0.0005551544, 0.0010270104, 0.0015242761, + 0.0015607825, 0.0002242755, -0.0011110154, 0.0001992161, 0.0016222177, + 0.0015886198, -0.0013590157, -0.0012773033, -0.0010906454, 0.0009746994, + 0.0004023225, -0.0003260039, 0.0003086952, 0.0018338109, 0.0001203846, + 0.0090571810, 0.0016635796, -0.0006933131, -0.0000124350, 0.1888161004, + 0.0001434130, -0.0014603720, -0.0011081516, 0.0007604940, -0.0016516370, + 0.0029580081, 0.0011304782, 0.0015684897, -0.0008941456, 0.0008998250, + 0.0001882724, 0.1551248282, 0.0022493992, -0.0011043153, -0.0017567412, + 0.0033645609, 0.0011153696, -0.0013487637, -0.0000164383, -0.0011133980, + -0.0005826131, -0.0006324435, -0.0010281992, 0.0004312131, 0.0000140001, + -0.0012982941, 0.0003996766, -0.0021501435, 0.0006942581, -0.0005908620, + 0.0012034061, 0.0004764171, -1.3123226166, 0.0012531169, -0.0019262858, + 0.0002983725, 0.0002274653, 0.0004861038, 0.0003864029, -0.0002280078, + 0.0007204311, 0.0018408080, 0.0008049732, 0.0011757812, 0.0011801724, + -0.0004935708, -0.0008511813, 0.0015439736, -0.0012221169, -0.0009492264, + -0.0006324295, -0.0001189820, -0.0032052393, 0.0004114467, 0.0017356328, + -0.0010003468, -0.0001946026, -0.0003221424, 0.0033392543, -0.0011154437, + -0.0006212643, 0.0010963213, -0.0005532662, -0.0032274555, -0.0009495430, + -0.0001576822, -0.0006756713, 0.0010358659, -0.0009763911, 0.0000891769, + -0.8370429277, -0.0005234233, -0.0019821965, 0.0019877073, -0.0013498063, + 0.0003905914, 0.0005484466, -0.0004199524, -0.0003118883, -0.0010058880, + -0.0010135276, -0.0001023655, 0.0012480845, -0.0003641432, 0.0006866893, + -0.0015177922, -0.0015598601, 0.0000437913, -0.0000327546, -0.0018997705, + -0.0009512246, 0.0004848326, 0.0020839628, -0.0032724538, 0.0000177561, + 0.0012291716, -0.0008910289, -0.0014589750, -0.0017060200, -0.0001503064, + 0.0001353759, 0.0008874261, 0.0030959393, -0.0013965674, 0.0022128387, + 0.0012356318, 0.0002202340, 0.0002928660, -0.0013987548, -0.0022442262, + -0.0000892841, 0.0012427834, -0.0013665631, -0.0018670987, 0.0013659415, + -0.0030762460, -0.0027189569, 0.0017228499, 0.0009926413, -0.0022985246, + -0.0013433765, -0.0002609701, -0.0006189523, 0.0009826075, 0.0005346085, + 0.0009128388, -0.0000359664, -0.0019563984, 0.0002408110, -0.0022958450, + -0.0013782862, 0.0019123396, 0.0025874861, -0.0001889011, -0.0008989209, + 0.0000938727, -0.0025644558, -0.0003623217, -0.0015519126, -0.0016850561, + 0.0004122355, -0.0009466932, 0.0010197998, 0.0005004448, 0.0011631702, + 0.0004498195, 0.0001172398, -0.0008303362, -0.0016792291, -0.0006265896, + -0.0003363518, -0.0003866300, -0.0011300052, 0.0011564717, 0.0004276359, + 0.0001877202, -0.0020405028, 0.0015502059, -0.0008705826, 0.0001338804, + 0.0002633858, 0.0011046573, 0.0008388043, 0.0017280260, -0.0014857417, + 0.0003617102, -0.0016742796, 0.0004523776, -0.0028570741, 0.0015855203, + -0.0004004921, -0.0014321841, -0.0003942666, -0.0006279685, 0.0005026874, + -0.0000741056, 0.0005824147, -0.0016766270, -0.0006213166, -0.0014984966, + -0.0031929808, -0.0005555563, -0.0015196804, -0.0005673281, 0.0004387791, + 0.0001008431, 0.0004420654, 0.0001466774, 0.0000691919, -0.0007069582, + -0.0020408242, -0.0013475742, 0.0005182375, -0.0003199349, 0.0020566229, + 0.0001047086, -0.0006506768, -0.0033983290, 0.0022117430, -0.0022553869, + 0.0018831594, 0.0009502345, -0.0017047403, 0.0017690257, -0.0005811956, + 0.0003559156, 0.0001307917, 0.0015987905, -0.0004872079, 0.0023294734, + 0.0017332556, -0.0009856112, 0.0015977600, 0.0013220868, -0.0020061410, + -0.0014050857, -0.0007860851, 0.0001269104, 0.0008290727, -0.0013722889, + 0.0001911307, -0.0012963512, -0.0011420862, -0.0008232614, 0.0004926799, + 0.0002312544, 0.0016955044, 0.0015603104, -0.0007448446, 0.0021812078, + 0.0004331069, 0.0020316676, 0.0009003365, 0.0013438938, -0.0012381063, + 0.0027669829, -0.0000455491, -0.0012137135, -0.0011029753, 0.0009304332, + -0.0003319252, 0.0010364596, 0.0010321510, -0.0012369547, -0.0001084320, + 0.0000848451, -0.0003348989, -0.0002496480, -0.0025554877, -0.0019792398, + -0.0006302879, -0.0017017722, 0.0029788164, -0.0002146303, 0.0005090784, + 0.7925784588, -0.0004997621, 0.0002269656, 0.0010735877, -0.0013154224, + -0.0004352289, 0.0001776386, -0.0028666044, -0.0000375323, -0.0019620541, + 0.0007343944, -0.0015349655, 0.0005331399, -0.0008449359, 0.0000853101, + 0.0002809826, -0.0000439410, -0.0018144455, -0.0004540603, 0.0021199228, + 0.0004030839, -0.0000959001, -0.0006604424, -0.0009362502, -0.8878006339, + -0.0032960610, -0.0003421360, 0.0002948521, -0.0016184119, 0.0011832947, + 0.0013610087, 0.0014594794, 0.0006602886, 0.0005837930, 0.0006816331, + 0.0007716874, 0.0031969436, 0.0020529842, 0.0019708925, -0.0026596421, + 0.0034113179, 0.0007890761, -0.0017854730, 0.0007227927, -0.0021200217, + -0.0006666151, -0.0010331533, -0.0028466105, -0.0023275786, -0.0000743908, + -0.0022868402, 0.0128585603, 0.0034751548, -0.0000982257, 0.0014488990, + -0.0001011334, 0.0009374500, -0.0007890419, 0.0010805675, 0.0000810321, + -0.0000073225, -0.0013013743, 0.0021548851, -0.0098112188, -0.0002506492, + -0.0022770674, 0.0004352457, -0.0008780822, -0.0007801056, -0.0011901977, + 0.0021059290, 0.0002001310, 0.0016269383, 0.0008174868, -0.0021079271, + 0.0023923577, -0.0007556075, -0.0014049724, 0.0009844438, -0.0014978047, + 0.0000244752, -0.0028710663, -0.0014212155, -0.0027933505, 0.0012484824, + -0.0008785012, 0.0007450919, 0.0017672954, -0.0007905283, 1.1990324259, + 0.0011187969, -0.0008703254, -0.0011124084, -0.0009466021, 0.0002961950, + -0.0029647357, 0.0007414017, -0.0002796538, -0.0021318586, -0.0012115305, + 0.0010176806, -0.0007899571, 0.0007513401, -0.0001947405, -0.0016128469, + -0.0012599230, 0.0003875326, 0.0342366509, -0.0029408033, 0.0005457053, + 0.0007338738, -0.0005680197, -0.0009863889, -0.0013233651, -0.0009847088, + 0.0001911521, 0.0001432777, 0.0008250537, -0.0021860148, -0.0031561553, + 0.0077748671, -0.0015816716, 0.0001099035, 0.0021379287, -0.0004145093, + 0.0019881674, -0.0005196156, -0.0009642411, -0.0010584936, -0.0008696374, + -0.0008881846, 0.0022972049, -0.0027490640, 0.0011371223, -0.0017435750, + -0.0015954932, -0.0009816349, -0.0011108094, 0.0002846906, -0.0002779239, + 0.0009189575, -0.0000040028, 0.0028778487, 0.0000162775, 0.0025745207, + 0.0672807842, -0.0019102396, 0.0009889863, 0.0011899368, 0.0013046453, + 0.0010765672, 0.0003903150, -0.0002551265, -0.0006875100, 0.0006061552, + 0.0005901486, 0.0005913079, -0.0011054657, 0.0004895274, -0.0008422327, + -0.0004730937, 0.0002542890, 0.0019173167, -0.0002296970, -0.0001904648, + -0.0009437832, -0.0003208392, 0.0011951737, -0.0026338738, 0.0012127357, + -0.0006380240, -0.0024945000, 0.0020664036, -0.0006411443, 0.0001898273, + 0.0004858919, -0.0007552881, 0.0001026932, 0.0003010368, 0.0012318287, + -0.0013792256, 0.0014452711, 0.0020671899, -0.0000296170, 0.0014234111, + -0.0015728939, -0.0023492295, -0.0014246525, -0.0008704965, 0.0001858319, + -0.0019290983, 0.0005806801, -0.0011248339, 0.0003123226, -0.0017834353, + -0.0018957257, 0.0034879691, -0.0005808483, -0.0002542557, 0.6782439947, + -0.0012150279, 0.0000657775, -0.0008593099, -0.0014000467, -0.0024677720, + -0.0003239177, 0.0004976405, -0.0024926038, 0.0005844105, -0.0003489237, + -0.0014590119, 0.0025130757, -0.0000903104, -0.0014107375, -0.0001743301, + -0.0011485028, 0.0008795831, -0.0011280430, 0.0004272573, 0.0014003806, + 0.0014621494, -0.0014423588, -0.0017054286, 0.0006655110, 0.0000467417, + -0.0011085900, 0.0006179807, 0.0009628278, 0.0022657542, 0.0006357310, + 0.0028227402, -0.0013772296, 0.0006388524, 0.0003640819, -0.0005338984, + 0.0009557439, -0.0010720947, 0.0016613951, -0.0016436749, 0.0046659382, + 0.0004704013, -0.0014276286, -0.0022672438, 0.0007837923, -0.0003120170, + 0.0011678278, 0.0005469369, -0.0014963448, 0.0008863793, 0.0001253756, + -0.0008415795, 0.0005183425, 0.0012291647, -0.0000841082, -0.0005590376, + 0.5334434509, 0.0016038562, -0.0007569920, -0.0007667483, -0.0001871446, + 0.0003086354, -0.0003838222, 0.0014663013, -0.0035590352, 0.0010444932, + 0.0010446606, 0.0002067182, -0.0002555302, -0.0009113192, 0.0004936996, + 0.0005149096, 0.0002243789, -0.0000146851, -0.0012545774, -0.0011940962, + 0.0011648975, -0.0000884779, 0.0020832894, -0.0008526370, 0.0025668922, + 0.0023889230, 0.0002034726, 0.0031382528, -0.0000233378, -0.0030463571, + -0.0002103648, -0.0010302749, 0.0019656857, -0.0005951582, -0.0000069961, + -0.0000833633, -0.0002517976, 0.0019912249, 0.0007018901, 0.0002762387, + -0.0005643226, 0.0015532663, -0.0003413740, -0.0012749629, -0.0012687398, + 0.0022568046, 0.0017131624, 0.0001816627, -0.0010452884, -0.0013982076, + 0.0012019735, -0.0016721329, -0.0017613363, -0.4964481294, -0.0004584340, + 0.0332553014, -0.0007030356, 0.0009998321, 0.0018916174, -0.7173228264, + -0.0005859598, -0.0001557395, -0.0011301907, -0.0026356592, -0.0002464041, + -0.0001949228, -0.0009067324, 0.0001631714, 0.6644975543, 0.0001137694, + -0.0015164095, -0.0000176157, -0.0006756777, -0.0045296629, -0.0012321910, + 0.0010463777, 0.0003718506, 0.0004338487, -0.0032801765, 0.0023708362, + -0.0021163251, 0.0003469456, -0.0007153975, 0.0011278884, 0.0014361450, + 0.0004753002, 0.0008582752, -0.0002978859, -0.0000765384, -0.0001295275, + 0.0002333834, -0.0015071041, 0.0031445492, 0.0000773286, -0.0003435917, + -0.0010022027, 0.0022507024, 0.0003330507, 0.0007171049, -0.0012460891, + 0.0002246422, -0.0005387031, 0.0013808431, 0.0001997976, 0.0028703972, + 0.0001540799, 0.0012624362, 0.0022634764, 0.0011159813, -0.0007110862, + 0.0014464110, -0.0008799024, -0.0002386516, -0.0008161697, -0.0024990912, + 0.0011690578, -0.0001931837, -0.0008650729, 0.0017992526, 0.0002650147, + -0.0010479926, 0.0033831075, -0.0003830926, 0.0050933417, 0.0012783883, + 0.0000854814, 0.0008783477, 0.0074942322, 0.0002412749, 0.0008552889, + 0.0000340608, 0.0016387085, -0.0021174634, -0.0002473183, -0.0008650413, + -0.0019307411, -0.0004215147, -0.0021289336, -0.0000192067, 0.0010120380, + 0.0005866196, 0.0009483602, 0.0025691572, -0.0011936743, 0.0012095373, + 0.0012238077, -0.0003187303, -0.0007067731, -0.0008555383, -0.0023700641, + -0.0035067843, -0.0014942409, -0.0004717928, -0.0012601931, -0.0024653124, + 0.0018310375, 0.0007010854, 0.0002668109, 0.0001911754, -0.0008696706, + -0.0010685069, 0.0003414112, 0.0001610778, -0.0004674639, 0.0017252755, + -0.0003573205, 0.0002163979, -0.0021560267, -0.0009839446, -0.0005345833, + -0.0016589828, -0.0008377045, -0.0016175504, -0.0031547900, 0.0009299265, + -0.0007545049, -0.0011937018, 0.0003064803, 0.0009141118, -0.0005109846, + -0.0008974932, -0.0021362936, -0.0003943718, -0.0002701120, -0.0017985236, + 0.2200999707, 0.0009712456, -0.0022260631, 0.0017957002, -0.0001155082, + -0.0029836649, -0.0017417257, -0.0000185220, 0.0006250474, 0.0000612307, + -0.0024211193, -0.0013153391, 0.0024380907, -0.0009566331, -0.0007160776, + -0.0012316792, -0.0006859545, -0.0041493317, -0.0001988029, -0.0022266633, + 0.0021011545, 0.4524824917, -0.0007764969, -0.0006680284, -0.0027641130, + -0.0004016436, 0.0004521816, -0.0006209095, -0.0020347480, -0.0012603970, + -0.0008104062, -0.0018917136, -0.0001394427, 0.0003214725, -0.0017658744, + -0.0023258585, -0.0018151226, -0.0034630669, 0.0010475796, -0.0020551572, + -0.0019852475, -0.0001652944, 0.0024909801, -0.0002910225, -0.0000148993, + 0.0019578699, 0.0010313618, -0.0018381122, -0.0008535441, 0.0012752749, + -0.0022934554, 0.0004354361, -0.0026775063, -0.0017194570, 0.0014673104, + -0.0014260964, -0.9107233286, -0.0004701153, -0.0001131748, -0.0013670097, + 0.0012647938, -0.0021093714, -0.0022432297, -0.0005051382, 0.0002487683, + 0.0013420950, 0.0003463669, -0.0015341934, -0.0027453597, 0.0012835958, + 0.0000975537, 0.0002353700, -0.0004877113, 0.0005176496, 0.0007648142, + 0.0013382081, -0.0010484220, -0.0031996476, -0.0007176840, 0.0008574463, + -0.0010770382, 0.0001103105, 0.0007265545, -0.0007302649, 0.0003154844, + -0.0002400434, 0.0025252695, -0.0005871684, 0.0003943444, -0.0002776179, + 0.0017484622, -0.0006836015, -0.0019680280, 0.0004609897, 0.0011117910, + -0.0011068312, 0.0000608652, 0.0008072427, -0.0016430141, 0.0001365115, + 0.0002014115, -0.0019923719, -0.0012989868, 0.0002075338, -0.0013847264}; + +float unet_input_time_embedding_50_35[] = { + -0.0004140036, 0.0002222641, 0.0006625485, 0.0001552880, 0.0001186864, + -0.0011977013, 0.0003460316, -0.0001048049, -0.0005810049, -0.0009092898, + -0.0013054342, 0.0010987287, 0.0032020165, -0.0006335690, -0.0003222954, + -0.0004375107, 0.0023043444, -0.0012849431, 0.0000019085, -0.0003535887, + -0.0007162956, 0.0023328019, -0.0021496331, -0.0180551782, 0.0014263655, + 0.0007854791, 0.0012174537, -0.0010541882, 0.0005040414, 0.0007390995, + -0.0016388693, -0.0008626101, 0.0018633911, 0.0005923943, 0.0010183898, + -0.0011742734, -0.0011793613, -0.0021634386, 0.0014065346, 0.0009661000, + -0.0012093419, -0.0000061216, -0.0000617229, -0.0009543179, 0.0003137994, + 0.0025823857, -0.0015737293, 0.0006917801, -0.0001800607, 0.0001474860, + 0.0001684069, -0.0017815630, 0.1629237384, -0.0007430138, 0.0011818490, + 0.0009604988, 0.0018814878, -0.0008983831, 0.0019568861, 0.0002370176, + 0.0004002571, -0.0015215046, 0.0000185943, 0.0016263425, -0.0001406465, + -0.0031685457, 0.0004773294, 0.0013567809, -0.0003464129, 0.0011736457, + -0.0006565209, -0.0012460044, 0.0018362498, 0.0009648292, 0.0004485813, + 0.0001644297, -0.0004045796, -0.0005482184, 0.0007607010, 0.0016075668, + -0.0005316630, 0.0010041563, -0.0011352797, -0.0005490263, -0.0008801550, + 0.0018438706, 0.0000312905, 0.0011106571, -0.0000364957, -0.0015688394, + -0.0004504568, 0.0032332013, -0.0012534037, 0.0013317008, -0.0022184295, + 0.0002106782, -0.0012798216, -0.0018349485, -0.0011677435, -0.0001124740, + 0.0001460104, -0.0015903213, 0.0007044934, -0.0163189229, -0.0025230390, + 0.0003730943, -0.0004454921, -0.0038081622, -0.0014235007, -0.0011431836, + 0.0027228515, -0.0002265433, 0.2771358490, 0.0006498629, 0.0000648480, + -0.0007614174, 0.0021258509, -0.0010630743, 0.0025012232, -0.0004177270, + 0.0005734949, -0.0002301082, 0.1035432220, 0.0006076074, 0.0005777683, + 0.0002978873, -0.0019161571, -0.0011909558, 0.0006278660, 0.0012241267, + -0.0005651624, -0.0001972634, 0.0006338705, -0.0017061997, 0.0012362634, + 0.0025560337, -0.0024316960, 0.0001082178, 0.0022597108, 0.0010562791, + -0.0008130118, 0.0007004417, -0.0002409224, 0.0019000247, 0.0021839605, + 0.0004258140, -0.0004601879, 0.0002350910, -0.0000756457, -0.0006412389, + 0.0003378115, 0.0010384183, 0.0007386340, 0.0002107400, 0.0002939408, + 0.0023902501, 0.0010661972, -0.0020317631, 0.0001720698, -0.0026220563, + 0.0009842617, 0.0034104921, 0.0009621540, -0.0004826344, 0.0003407975, + -0.0002714775, 0.0013021871, 0.0025378149, 0.0136350030, 0.0008551644, + 0.0011482880, 0.0019803466, 0.0011508712, 0.0022084191, -0.0033715302, + -0.0021013794, 0.0019108508, -0.0026057418, -0.0000758744, -0.0009617340, + -0.0003651953, -0.0007783081, 0.0056059514, 0.0003670442, -0.0014647099, + 0.0000719861, -0.0006029028, -0.0001010415, -0.0010404112, 0.0003992757, + 0.0004383167, -0.0017094840, -0.0016264553, 0.0002348421, 0.0009654239, + -0.0029547946, 0.0008746126, 0.0007178281, 0.0020199360, 0.0014612139, + -0.0003781724, 0.0003096093, 0.0002389350, 0.0002787190, 0.0002348665, + 0.0010971641, 0.0020921605, -0.0018686159, -0.0009824594, 0.0009120656, + 0.0025554071, -0.0008207993, -0.0012236105, -0.0011984019, 0.0004465240, + -0.0007166713, -0.0014063204, 0.0012139250, 0.0002772185, -0.0005465933, + 0.0015710397, -0.0015629544, 0.0010007129, -0.0020491714, 0.0011929709, + 0.0010031653, -0.0006797835, 0.0002176915, 0.0030076455, -0.0028506476, + -0.0012848834, 0.0010367101, 0.0012973500, -0.0021366444, -0.0000614515, + -0.0004993058, 0.0018852009, -0.0002930695, 0.0017566942, 0.0015150602, + 0.0019818705, -0.0008654536, 0.0012835085, -0.0022640554, -0.7704418302, + 0.0001396455, 0.0022564554, -0.0005186953, 0.0005805041, -0.0000791207, + 0.0017302036, 0.0013563284, 0.0002998603, 0.0005255332, 0.0006037517, + -0.0006778657, -0.0005038013, -0.0015682782, 0.0007078748, -0.0012101642, + 0.0001437375, -0.0018010524, 0.0019108036, 0.0016798315, -0.0026158434, + -0.0011181901, 0.0024291412, -0.0004664930, -0.0003823480, 0.0003672205, + 0.0013558702, 0.0015137915, 0.0019928780, -0.0026564021, -0.0001006608, + 0.0014501433, -0.0000880794, 0.0009307512, 0.0014586756, 0.0002876099, + 0.2377954274, 0.0004732991, 0.0000632213, 0.0010657534, -0.0007532667, + -0.0006506164, 0.0008347631, -0.0022368343, -0.0018848460, -0.0000986308, + -0.0001768245, -0.0001805183, -0.0008056511, -0.0008903013, -0.0011045374, + -0.0004648091, -0.0002671108, -0.0001566596, 0.0002597668, -0.0021746377, + -0.0002656020, 0.0031800519, 0.0024465369, 0.0004926827, -0.0014938405, + -0.0008292054, 0.0017294758, 0.0009423394, 0.0001527634, -0.0007746983, + 0.0006656682, -0.0000392804, -0.0021826995, -0.0011250209, 0.0010187486, + -0.0010582181, 0.0006737850, 0.0019872473, 0.0017980197, -0.0018167286, + 0.0015610687, 0.0008078634, -0.0006903380, -0.0021935930, -0.0002252409, + 0.0019972220, -0.0004124362, -0.0008477392, 0.0253876857, 0.0016156514, + 0.0025654538, -0.0005720293, 0.0010178605, -0.0004896512, 0.0004424066, + 0.0014973003, 0.0013569121, 0.0026536505, 0.0005262713, -0.0005525937, + 0.0005208710, -0.0008812824, 0.0017804413, 0.6392786503, -0.0009400796, + 0.0000136928, 0.0008108102, 0.0000839593, -0.0003988985, -0.0005104133, + -0.0001160977, 0.0000770744, 0.0001536193, 0.0029070107, -0.0007275395, + 0.0010393467, -0.0008286207, -0.0013793443, 0.0017029527, -0.0029395097, + 0.0001168349, -0.0016076718, -0.0006150724, 0.0010808106, -0.0008032579, + -0.0010751856, 0.0023984895, 0.0014300635, 0.0008747466, -0.0486053713, + 0.0011215648, -0.0003837268, 0.0020858385, 0.0029983362, 0.0018253906, + -0.0010216821, -0.0008583679, 0.0018358183, 0.0013885626, 0.0002783313, + -0.0008599040, 1.4749081135, 0.0014542496, -0.0007658564, -0.0010518925, + 0.0007249048, -0.0007552984, -0.0009528697, 0.0005170875, 0.0000680033, + -0.0019079805, -0.0000540612, 0.0018816260, -0.0012123040, -0.0016840994, + 0.0007586717, -0.0002793726, 0.0002113933, -0.0026885963, -0.0009282976, + 0.0015390557, 0.0010153307, -0.0010179223, 0.0008586156, 0.0004630508, + -0.0014496330, 0.0014989210, 0.0020007815, 0.0006627198, -0.0006119478, + 0.0019833734, -0.0005860943, 0.0007728045, 0.0000974599, -0.0016089398, + 0.0008681770, 0.0005641067, 0.0016597162, -0.0028001778, -0.0016523143, + -0.0000061619, -0.0025948284, 0.0001086109, 0.0000692236, -0.0030762386, + 0.0005314010, 0.0001483178, -0.0003900286, 0.0010435360, 0.0000299205, + -0.0007378762, 0.0001930048, -0.0004275425, 0.0013764910, 0.0000870369, + 0.0005463110, 0.0010317909, 0.0021342786, 0.0020001084, 0.0008455936, + -0.0015607551, 0.0008962834, -0.0007360097, 0.0010293995, 0.0019114052, + -0.0004257965, -0.0019497534, -0.0011542530, 0.0011440241, 0.0054064784, + 0.0011851103, 0.0005339338, -0.0002934786, -0.0005242331, 0.0010147511, + -0.0011439156, -0.0009137383, -0.0011696327, -0.0007131249, 0.0011921152, + -0.0008268177, 0.0005609933, 0.0003886649, 0.0031990227, 0.0010582851, + -0.0013634223, -0.0008304114, 0.0010160268, -0.0020438461, -0.0005425629, + -0.0013877263, -0.0008244731, -0.0000461526, -0.0012089822, -0.0000029784, + -0.0006010868, 0.0015873555, -0.0016488289, 0.0017127153, 0.1981812119, + -0.0012887609, 0.0003807222, -0.0006724203, -0.0009264841, -0.0000736389, + -0.0013571096, 0.0007176429, -0.0001175636, 0.0006683483, -0.0000877595, + -0.0010932577, 0.1435837001, -0.0007345050, -0.0003427113, -0.0003587452, + -0.0004240695, 0.0001020646, 0.0014982768, -0.0024149842, 0.0013608921, + 0.0007779771, 0.0004530801, 0.0008849325, -0.0016326350, -0.0001794163, + 0.0033621648, -0.0013112812, 0.0011409865, -0.0016848296, -0.0006127553, + -0.0006928064, -0.0000532782, -1.1151801348, -0.0013951687, 0.0041705240, + -0.0006816671, -0.0009936290, -0.0015489561, -0.0002036444, 0.0004242719, + 0.0003085225, -0.0019278820, -0.0021203700, -0.0028810031, -0.0018591951, + -0.0002527526, 0.0011913599, -0.0012673847, -0.0009354176, -0.0004039785, + -0.0010284737, 0.0035023759, 0.0014082384, -0.0005240638, 0.0000471619, + 0.0018634598, -0.0010955894, 0.0000532728, -0.0054586288, 0.0005696744, + 0.0031443145, -0.0004134020, 0.0007551778, 0.0000622333, -0.0005905305, + 0.0014700387, 0.0002868185, -0.0002844222, 0.0022765500, 0.0013250643, + -0.6837453842, 0.0016864054, 0.0008430451, -0.0010020342, 0.0010094414, + -0.0026021684, 0.0031705119, 0.0013526892, -0.0003667721, 0.0014121474, + -0.0012836894, -0.0012165484, 0.0008963016, 0.0000821285, -0.0005214205, + 0.0019518947, 0.0007874044, -0.0001458984, 0.0000530221, 0.0007448159, + -0.0001909818, -0.0011454085, -0.0012357980, 0.0006269983, 0.0004510530, + -0.0005760193, 0.0010314605, 0.0021592244, -0.0016286890, 0.0007003583, + -0.0020129366, -0.0002392661, 0.0005084793, 0.0006432227, -0.0017596467, + -0.0005540464, -0.0014164192, 0.0014857533, 0.0001754146, -0.0006774706, + -0.0001717313, 0.0010045492, 0.0004366115, 0.0005876599, -0.0007136972, + 0.0024949932, 0.0017778956, 0.0000939448, -0.0003550854, 0.0019355477, + 0.0007623113, -0.0006199512, -0.0040562218, -0.0008388233, -0.0008921493, + -0.0001018355, 0.0001731929, 0.0020056239, -0.0014518407, 0.0014232137, + 0.0004890501, -0.0016093352, -0.0025642891, -0.0003421861, 0.0017421460, + 0.0010318202, 0.0026960238, -0.0014314330, 0.0006930027, -0.0004597623, + 0.0000425749, 0.0019787182, -0.0003582479, -0.0013388554, 0.0020231628, + -0.0005987762, -0.0011917565, 0.0002832201, -0.0007534525, -0.0014549061, + 0.0002684356, 0.0023224638, 0.0014546803, 0.0000003048, 0.0002645273, + 0.0012598755, -0.0014516797, 0.0010877860, 0.0001123399, 0.0008304752, + 0.0007660807, 0.0009494729, 0.0006401006, 0.0001367491, -0.0004213690, + 0.0006517083, -0.0004103873, 0.0003529817, 0.0010444811, 0.0027868035, + -0.0015044060, 0.0024926970, 0.0012918168, 0.0000674170, 0.0021680933, + -0.0009621868, -0.0009471277, 0.0018965639, -0.0007974691, 0.0001517460, + 0.0006733378, 0.0003777095, -0.0013148618, -0.0011714316, 0.0023355205, + -0.0006067450, -0.0013285284, -0.0005685744, -0.0011981607, 0.0036295997, + 0.0007351001, 0.0004320543, -0.0008759517, -0.0015978382, -0.0028781425, + -0.0000933427, 0.0009399879, 0.0000585131, -0.0011495184, -0.0000311695, + -0.0014203025, 0.0007113209, 0.0007651635, 0.0001793091, -0.0010087509, + -0.0001349957, 0.0016520401, 0.0000132343, -0.0031188079, -0.0015342529, + -0.0004993910, 0.0010544844, 0.0010220206, -0.0014145267, 0.0004684697, + 0.0015327645, 0.0006743819, 0.0014002798, -0.0019181792, 0.0034716446, + -0.0011383248, 0.0025987211, -0.0006339632, -0.0001536491, -0.0009035566, + 0.0006847470, 0.0006909342, -0.0004103440, -0.0002769034, 0.0011709845, + -0.0007568458, 0.0016723741, 0.0004688707, 0.0006458885, 0.0002873768, + -0.0023687035, -0.0013728729, 0.0010328591, 0.0014600072, 0.0020930879, + -0.0014342116, 0.0027690066, 0.0020145630, -0.0014054654, -0.0003555098, + -0.0016269106, 0.0021108733, 0.0013617005, 0.0007225089, 0.0014070687, + 0.0000159359, 0.0013295934, -0.0006361862, 0.0014347737, 0.0001609116, + 0.6969127655, -0.0000592489, 0.0001753797, -0.0001943167, 0.0036507049, + -0.0004940233, 0.0030632755, 0.0007633213, 0.0020805453, 0.0001700725, + 0.0015852181, -0.0007056399, 0.0011350053, -0.0015607437, -0.0000081705, + -0.0011973896, 0.0007905301, 0.0019553688, -0.0008119899, -0.0012687480, + -0.0005690842, 0.0008009290, 0.0013449629, -0.0029071425, -0.6399224401, + 0.0018112455, -0.0001576624, -0.0014729751, -0.0011125547, -0.0012277020, + -0.0010466864, 0.0008140394, -0.0011863895, -0.0018499549, -0.0019674045, + 0.0008325237, -0.0025150767, -0.0006975820, -0.0011714264, 0.0003204443, + -0.0007915911, -0.0028431974, 0.0001198412, 0.0002746372, 0.0007034484, + 0.0000964473, 0.0031073585, 0.0002829612, 0.0008896529, -0.0012843763, + 0.0003989632, 0.0105211604, -0.0008199448, 0.0037350971, 0.0006627091, + 0.0004076805, 0.0004460639, 0.0014233247, 0.0004587076, -0.0005043974, + -0.0028596572, 0.0013595815, 0.0000162188, -0.0038250508, 0.0012353493, + 0.0002234137, -0.0020722628, 0.0009545929, 0.0008566836, 0.0000227042, + -0.0010389570, 0.0000459165, 0.0006976011, 0.0006645613, 0.0011817274, + 0.0000788228, 0.0004572074, -0.0003460740, -0.0021589207, 0.0011971272, + -0.0002693674, 0.0004957300, -0.0001472365, 0.0004366664, -0.0016261579, + 0.0015491978, -0.0005396850, 0.0007165354, 0.0008834891, 1.0940024853, + -0.0001431666, -0.0002481700, 0.0045942725, -0.0014317825, -0.0009628232, + 0.0015318275, 0.0011837850, 0.0021179640, 0.0037843811, 0.0025149402, + -0.0005840079, -0.0004167620, 0.0002797642, 0.0023629465, 0.0001010232, + 0.0001088281, -0.0013829637, 0.0473909937, 0.0007459992, -0.0012777392, + 0.0014406247, 0.0008228342, -0.0008190956, 0.0020685652, -0.0019854654, + 0.0010790881, 0.0012134025, -0.0012874795, 0.0013174629, 0.0023192344, + 0.0132873449, 0.0012992416, -0.0003944596, 0.0004474563, 0.0001813406, + -0.0011675241, 0.0015427205, -0.0001301276, 0.0000014062, 0.0009325473, + -0.0010733763, -0.0014936994, 0.0046976302, 0.0008161517, 0.0005349895, + 0.0000114744, -0.0055892705, 0.0018384289, 0.0005072071, 0.0015182281, + 0.0019059349, -0.0003109919, 0.0016199485, -0.0015678062, -0.0010517808, + 0.0743555278, 0.0014585970, -0.0011801203, -0.0002531270, -0.0001733282, + -0.0033504611, 0.0002884264, 0.0008157007, -0.0005184368, -0.0006804770, + -0.0017730978, 0.0006190860, -0.0002407325, 0.0004153121, -0.0006551826, + -0.0015021581, -0.0008761033, 0.0013627646, 0.0002932725, -0.0001588278, + -0.0033706939, 0.0006472530, 0.0014475025, 0.0005068155, 0.0000541518, + 0.0013677524, 0.0006159432, 0.0014388616, 0.0004467936, 0.0014322130, + -0.0005577378, -0.0011134850, 0.0004749550, 0.0008461848, -0.0005376996, + -0.0001295693, -0.0016913032, 0.0002139597, 0.0010290002, -0.0027352287, + 0.0002679257, 0.0016531730, -0.0007518297, 0.0008457666, -0.0016778000, + 0.0018830374, -0.0008846051, -0.0003044829, 0.0000260266, -0.0000838095, + -0.0001644772, -0.0009481578, 0.0015057056, 0.0010881540, 0.6144497395, + -0.0002744254, 0.0018545818, 0.0011764783, -0.0010136261, -0.0011294903, + 0.0001833215, 0.0022840933, -0.0000438672, 0.0003382554, -0.0010534548, + -0.0011512061, -0.0012910427, -0.0003681667, 0.0024437096, -0.0010665725, + 0.0014681474, 0.0015835479, 0.0012007654, -0.0011284649, -0.0014097476, + 0.0002234438, 0.0019217557, 0.0022412683, -0.0020855637, -0.0013773493, + -0.0007205394, -0.0007569545, 0.0002577147, -0.0021553906, -0.0000746548, + 0.0019052087, -0.0005811863, -0.0007587643, -0.0027897735, 0.0009057708, + 0.0000328652, 0.0022488427, -0.0023860938, -0.0003363518, -0.0010017243, + -0.0000534919, -0.0000494807, 0.0013381648, -0.0010091659, -0.0003679721, + 0.0013539523, 0.0024900772, -0.0004645009, 0.0005155005, -0.0004828069, + 0.0004434470, -0.0000794725, -0.0006984253, 0.0003476394, 0.0005118824, + 0.4610164464, -0.0009600741, 0.0008932352, -0.0005885477, -0.0005245223, + 0.0021387672, 0.0012211292, 0.0009078766, 0.0007616691, -0.0008785902, + 0.0010082673, 0.0022058259, 0.0009553926, 0.0002160599, 0.0013116888, + 0.0009687366, 0.0010949867, -0.0009177360, -0.0014022072, 0.0004491638, + 0.0008065733, 0.0022135754, -0.0031048767, -0.0004444979, 0.0008563777, + -0.0001742309, 0.0022244849, 0.0002556408, 0.0006649666, 0.0022291280, + -0.0011561881, 0.0013622616, -0.0015120335, 0.0008131566, 0.0011385428, + -0.0019777829, 0.0008641892, 0.0008289954, -0.0029203526, 0.0002080626, + 0.0013712260, 0.0013724314, -0.0002486333, -0.0007255161, 0.0017134936, + 0.0002864562, -0.0012153063, -0.0004572301, -0.0009066073, 0.0018199375, + -0.0013024616, 0.0015463177, 0.0016683782, -0.3394517601, 0.0016678839, + 0.0411394536, 0.0004528213, -0.0012894589, -0.0028751416, -0.5135992765, + 0.0028496250, -0.0011502537, -0.0007336745, -0.0010185288, 0.0013752379, + -0.0003794360, 0.0007825310, -0.0003959304, 0.7327728868, 0.0013885102, + 0.0012595567, -0.0024684074, -0.0005274137, 0.0002752924, 0.0009208843, + -0.0006769467, -0.0018602964, 0.0002973797, 0.0021259363, -0.0025640219, + 0.0003538895, 0.0000494081, 0.0009255719, -0.0005340250, 0.0005075163, + -0.0011845280, -0.0011286319, -0.0012834170, -0.0010286239, 0.0006848983, + 0.0014547822, -0.0001636287, -0.0010517295, 0.0003056233, 0.0005233032, + 0.0004239425, -0.0003169591, -0.0001781904, -0.0003095483, -0.0006244015, + 0.0003909057, -0.0006999196, -0.0030945735, -0.0008907588, -0.0015260894, + -0.0014618952, 0.0016851164, -0.0023533881, 0.0008264917, -0.0016947696, + -0.0018065423, -0.0019159536, 0.0016414616, 0.0018555298, 0.0021399271, + -0.0006602402, -0.0013070399, 0.0003804490, -0.0001074066, 0.0015884909, + 0.0001644737, -0.0024262462, -0.0005775797, -0.0019686990, -0.0024645501, + 0.0004942054, 0.0000890600, 0.0117409155, 0.0015160232, -0.0037572565, + 0.0012272955, 0.0002035621, -0.0007555420, 0.0005348017, -0.0006106321, + -0.0011368571, -0.0006003962, 0.0018595862, -0.0005202899, 0.0007014098, + 0.0001972849, 0.0002994537, 0.0003683562, -0.0006653816, -0.0007556232, + -0.0002914765, 0.0022910209, 0.0020360495, -0.0006772326, 0.0004065987, + 0.0028164927, 0.0011282573, 0.0006837287, 0.0012621824, 0.0011017299, + 0.0003300048, -0.0001196566, -0.0013664879, 0.0002552555, 0.0006939962, + -0.0007077460, -0.0001903239, 0.0012662802, -0.0004422249, -0.0020915773, + -0.0003132154, 0.0013998188, 0.0012662634, -0.0013890211, 0.0000060313, + 0.0001353293, -0.0005650086, 0.0000779675, 0.0006978521, 0.0000312841, + -0.0017933925, 0.0000873574, -0.0002177507, 0.0018079529, -0.0009112824, + 0.0003127772, -0.0002847877, -0.0002293058, -0.0004729903, -0.0000578710, + 0.2354328483, -0.0005788582, 0.0002997952, -0.0016444923, 0.0006829801, + 0.0010098787, 0.0017272776, -0.0013808163, 0.0003248688, 0.0020069117, + -0.0018668454, 0.0001159931, -0.0010028402, -0.0009055925, -0.0001787287, + 0.0011881562, 0.0001686560, -0.0001503490, 0.0008412339, -0.0034083514, + -0.0010227915, 0.4213223755, -0.0008493916, -0.0013979548, 0.0008971933, + 0.0016378793, -0.0008360118, 0.0006569009, 0.0005685920, 0.0004320154, + -0.0001974264, 0.0017412193, 0.0002542455, 0.0013004299, 0.0002292662, + 0.0017698077, -0.0006425329, 0.0014586491, 0.0011057635, 0.0000466953, + -0.0006584481, -0.0004526363, -0.0002689761, -0.0008603274, -0.0001331782, + 0.0000860053, -0.0001670058, 0.0012039845, 0.0009208685, -0.0014632372, + 0.0005678217, -0.0021679807, -0.0011416189, -0.0008709290, 0.0027832957, + 0.0013654424, -0.7769652009, 0.0012049740, 0.0005598858, -0.0011539222, + -0.0006665143, 0.0013901771, 0.0002930139, 0.0007969325, -0.0012874706, + -0.0000246642, -0.0001367036, 0.0005857520, 0.0003134846, 0.0010166285, + -0.0002522045, -0.0007320930, -0.0000694753, 0.0000019972, -0.0022278540, + 0.0009222468, 0.0027950089, 0.0011221301, -0.0028299349, 0.0015457617, + 0.0012487257, 0.0005320022, -0.0014429269, 0.0014235810, 0.0010928428, + 0.0008763581, -0.0002724403, 0.0001309719, -0.0019323382, 0.0000505410, + -0.0001036949, 0.0008522053, 0.0003924589, -0.0006565623, -0.0021759442, + -0.0000576624, -0.0001644595, 0.0002617233, 0.0001973794, 0.0007359209, + -0.0003929716, -0.0006363089, -0.0068788179, -0.0004079620, 0.0005142897}; + +float unet_input_time_embedding_50_36[] = { + -0.0005972036, 0.0011009265, 0.0021203663, 0.0026976815, 0.0004404439, + -0.0007576849, -0.0005127643, -0.0000856299, 0.0015579271, -0.0011169834, + 0.0007502737, -0.0013468713, 0.0034593558, -0.0007451181, -0.0034623803, + 0.0006771369, 0.0006923908, -0.0007591286, 0.0011187253, -0.0013671084, + -0.0003703432, -0.0003212336, -0.0020085676, -0.0385545641, 0.0000655514, + 0.0019006149, 0.0012399619, 0.0000121752, -0.0002038068, 0.0019833650, + 0.0003663392, 0.0009564248, 0.0010678945, 0.0001249686, -0.0002008234, + -0.0001765843, 0.0012606382, 0.0004032095, 0.0039347559, 0.0008387258, + 0.0003124475, -0.0009823919, 0.0009490368, 0.0000125254, 0.0003874169, + 0.0015079370, -0.0022595567, 0.0004993165, 0.0004922310, -0.0004164389, + -0.0008935318, -0.0001696150, 0.1749689132, 0.0002560979, 0.0009744442, + -0.0021828590, 0.0006058938, 0.0015111263, -0.0001289290, -0.0006211305, + 0.0000477836, -0.0010816684, 0.0015163659, -0.0002973850, 0.0006849617, + 0.0004768660, -0.0000512074, -0.0000955459, 0.0001160828, 0.0005987983, + 0.0009214038, -0.0019297865, 0.0009575004, 0.0009087906, -0.0009066807, + -0.0013334127, 0.0002152845, -0.0013695182, -0.0006397768, -0.0012073007, + 0.0019187590, -0.0018632194, 0.0007011951, 0.0004699596, -0.0001788514, + 0.0021158231, 0.0018145558, 0.0014324351, -0.0001596007, 0.0016683764, + -0.0014622260, 0.0012533320, 0.0009090686, 0.0004505996, 0.0018770159, + 0.0021545626, -0.0018081190, -0.0007716198, 0.0003593103, 0.0010096431, + 0.0016794989, -0.0003181915, 0.0003941364, -0.0267405994, -0.0047122478, + -0.0003144862, 0.0015829348, -0.0030391659, -0.0004540228, 0.0014951602, + 0.0000854279, -0.0025765179, 0.2588471174, 0.0027093440, 0.0021508941, + 0.0017440501, -0.0000909441, -0.0007670126, 0.0006262213, -0.0013462119, + -0.0018210686, 0.0005102945, 0.1470680535, 0.0007824181, -0.0005495343, + -0.0011059958, -0.0015578426, 0.0002985722, 0.0013825125, 0.0017995806, + -0.0022430788, 0.0005483869, -0.0005399592, -0.0040658778, -0.0000987006, + 0.0007786804, -0.0004605209, 0.0015945388, -0.0001625009, 0.0005550575, + -0.0002632060, -0.0008180346, 0.0002710954, 0.0020083133, -0.0002086493, + -0.0010541580, 0.0034250175, -0.0002825763, -0.0003319122, -0.0004178709, + 0.0001247025, 0.0004187726, 0.0010270872, 0.0002503146, -0.0014485051, + 0.0003626351, 0.0009157849, -0.0001138570, -0.0006962940, -0.0030462057, + -0.0010308661, 0.0020334022, 0.0040247082, -0.0007505412, -0.0012015216, + 0.0006932649, 0.0012401049, -0.0013010548, 0.0247597471, 0.0015907625, + 0.0014815087, 0.0016320264, -0.0017268313, -0.0013327524, -0.0023716846, + -0.0010356666, 0.0001888032, -0.0003335411, -0.0015001472, -0.0012595505, + -0.0011362962, -0.0027776463, 0.0038119056, -0.0004161294, -0.0006594639, + 0.0008816789, 0.0006775474, 0.0007919683, -0.0001200736, 0.0011151652, + -0.0004592622, 0.0010535498, -0.0011621366, -0.0012694888, 0.0003726692, + -0.0001010597, -0.0008877264, 0.0018232586, 0.0002014667, -0.0005527199, + 0.0013300627, -0.0000627781, -0.0004143366, -0.0007772474, -0.0009262995, + 0.0011700401, 0.0003693199, -0.0013415916, -0.0015916380, 0.0020234310, + 0.0003352803, 0.0001620571, -0.0017115932, -0.0011225205, 0.0019823024, + -0.0023001870, -0.0014640996, 0.0002051760, -0.0021056463, -0.0011379431, + -0.0013050381, -0.0025466306, 0.0009399278, 0.0091523184, -0.0005298792, + 0.0016817846, -0.0003533009, 0.0021600369, 0.0008184721, -0.0011427898, + -0.0027197963, 0.0005648001, 0.0015647942, -0.0009172480, 0.0002776720, + -0.0003124778, -0.0007396922, -0.0002275249, 0.0008297674, -0.0000288970, + 0.0008553613, 0.0002763225, 0.0002953748, -0.0014093481, -0.6650761962, + -0.0002654798, 0.0013863398, -0.0006570738, 0.0008274494, 0.0013163642, + 0.0004822826, 0.0027280240, 0.0011601155, -0.0018728869, -0.0006141399, + -0.0016842487, -0.0000637118, -0.0016198497, 0.0028015808, -0.0005364623, + -0.0000155075, -0.0011140744, 0.0002325934, -0.0013232395, -0.0017130197, + 0.0014910442, 0.0022759722, 0.0009637109, -0.0004037460, 0.0000678953, + 0.0029342733, -0.0007747498, 0.0002693492, 0.0000897804, 0.0012832801, + -0.0002679217, 0.0002619675, 0.0010042940, 0.0004329486, -0.0006701222, + 0.2345663309, 0.0007450134, -0.0015647887, 0.0008619409, 0.0015795999, + -0.0003480958, 0.0015496993, -0.0035577973, -0.0001456756, -0.0027470868, + 0.0002832947, -0.0004931979, 0.0016187094, 0.0005312513, -0.0012348760, + -0.0014703688, -0.0027006236, 0.0012649177, -0.0019170395, -0.0025591438, + 0.0019344380, -0.0009530878, 0.0027897996, 0.0005081026, 0.0015263858, + -0.0014448236, 0.0002431229, 0.0003692857, 0.0005858671, 0.0006342479, + 0.0009637983, -0.0012479473, -0.0015324373, 0.0007459056, 0.0008239825, + -0.0001848382, 0.0000974628, -0.0010749158, 0.0003117984, -0.0029299329, + -0.0000790406, 0.0007165964, -0.0026527008, -0.0015920447, 0.0005453335, + 0.0035559805, 0.0027723219, -0.0016308567, 0.0133623332, 0.0014569755, + 0.0031656376, -0.0007246562, 0.0013063637, 0.0002725273, 0.0010399814, + 0.0007656850, -0.0004460111, 0.0014639542, -0.0004967735, -0.0022036848, + 0.0017739432, -0.0021407104, 0.0001166437, 0.5629497766, -0.0007911867, + -0.0013228171, 0.0011260287, 0.0007240545, -0.0010541826, -0.0009979988, + -0.0015383926, -0.0005211616, 0.0021215864, 0.0004736362, -0.0003195504, + 0.0012857332, -0.0010425455, -0.0011456030, -0.0013418454, -0.0006147027, + -0.0000686222, -0.0003390983, 0.0008658455, 0.0014429525, -0.0001895732, + -0.0017667871, -0.0004906063, -0.0012866403, -0.0003432380, 0.0102560567, + -0.0011240118, -0.0010358705, -0.0004213029, 0.0015728446, 0.0022953118, + 0.0010321853, -0.0016708603, -0.0000931991, 0.0009710330, -0.0015836363, + -0.0009338827, 1.4426327944, 0.0016914814, -0.0012080907, -0.0004478469, + 0.0011471368, 0.0007965048, -0.0006976174, 0.0027682264, -0.0009927382, + 0.0006726021, -0.0020839782, 0.0007798835, 0.0003118631, 0.0014443826, + 0.0004983083, -0.0013885964, -0.0010706141, -0.0026771550, -0.0031419983, + -0.0024024602, 0.0009392565, -0.0008534587, 0.0002693697, -0.0000861185, + 0.0010546562, 0.0005619676, -0.0000555585, -0.0016350800, -0.0002750959, + -0.0013833195, 0.0002012202, -0.0026364531, -0.0023278361, -0.0035138626, + 0.0031251602, -0.0037708022, -0.0009435264, 0.0021148678, -0.0003960039, + 0.0014570744, -0.0001392483, -0.0009414208, 0.0018109130, -0.0007078694, + 0.0010237182, 0.0009885812, 0.0000164343, 0.0018272642, -0.0003617034, + 0.0002027582, 0.0003500377, 0.0036206841, 0.0035414807, 0.0018766952, + 0.0003137262, -0.0001054434, 0.0008856135, -0.0005352739, -0.0018644112, + -0.0004910170, 0.0009096947, -0.0006467089, 0.0012532838, 0.0012971645, + -0.0012701126, 0.0009564641, -0.0000418269, -0.0006345441, 0.0026601013, + -0.0019022194, -0.0004265644, 0.0013658318, -0.0000524765, 0.0005000287, + -0.0008555353, -0.0029321881, -0.0018961832, -0.0002029296, -0.0000058992, + -0.0002891510, 0.0010947809, 0.0001670926, -0.0006835127, 0.0018912521, + -0.0015939530, -0.0024353066, -0.0005812198, -0.0012148978, 0.0001754672, + -0.0000031383, -0.0007156504, -0.0008638417, 0.0000325015, -0.0004176418, + -0.0089012487, -0.0003664196, -0.0002400930, 0.0003270600, 0.2030657530, + -0.0001316478, 0.0005518353, 0.0011391202, -0.0041542426, -0.0010641681, + -0.0011768191, 0.0007517908, 0.0001929468, -0.0003297534, -0.0005552021, + -0.0023272317, 0.1281388104, 0.0018081688, -0.0014194171, -0.0005668434, + 0.0059956880, 0.0011079693, -0.0004704371, -0.0003350652, 0.0028898160, + -0.0017636889, 0.0005493509, 0.0022313651, -0.0020359452, 0.0019770451, + -0.0011633576, -0.0004786626, 0.0019732132, 0.0004141834, -0.0019289139, + -0.0006259836, 0.0006797859, -0.9159294367, 0.0005286941, 0.0013623155, + -0.0003796928, -0.0015580067, -0.0037811650, 0.0017834874, -0.0015925784, + -0.0022883411, -0.0019812095, -0.0013646592, -0.0000047982, -0.0006801616, + -0.0018323858, 0.0027169448, 0.0008773427, -0.0020102868, 0.0013455967, + 0.0000078364, 0.0004451605, -0.0005127778, 0.0001976576, -0.0003113274, + 0.0001999068, 0.0020615065, -0.0002609573, -0.0008347742, -0.0005909344, + -0.0000011949, -0.0015726909, 0.0003590453, 0.0008688145, -0.0012636213, + -0.0009377464, -0.0005483152, 0.0007364531, 0.0003532711, 0.0006479630, + -0.5322133303, 0.0017569195, -0.0006068668, -0.0003675572, -0.0002237097, + -0.0030009672, 0.0001829579, 0.0003306735, 0.0006342237, 0.0004585746, + 0.0001594834, -0.0000585340, -0.0018339180, 0.0010118976, -0.0027761599, + 0.0013001850, -0.0026579462, 0.0001923861, -0.0001385780, 0.0012378353, + -0.0016646946, 0.0002790429, 0.0001412972, 0.0031553395, -0.0022218809, + -0.0001380751, -0.0007137166, 0.0013130917, -0.0025287098, 0.0035517446, + 0.0010632970, -0.0016659959, 0.0012410651, -0.0004326933, -0.0016697419, + -0.0016480673, 0.0006313152, -0.0001507173, 0.0000836672, -0.0011481154, + -0.0004986256, -0.0013960232, -0.0001644613, 0.0012540175, -0.0016744076, + 0.0017643553, 0.0020402712, -0.0012117606, 0.0013626600, -0.0006046868, + 0.0008686506, -0.0013533873, 0.0013945578, -0.0005456790, -0.0030640203, + -0.0021695623, -0.0009209125, 0.0018464758, -0.0028729234, 0.0007526134, + -0.0015449857, -0.0003142930, -0.0025423225, 0.0018212204, -0.0000957642, + 0.0002916986, 0.0011003094, 0.0018091090, 0.0018121731, 0.0014457272, + 0.0017953669, 0.0010269942, 0.0012368625, -0.0012368397, -0.0015824870, + -0.0013039252, -0.0017378198, 0.0004979288, -0.0011963733, -0.0000785221, + 0.0013463462, 0.0000669474, -0.0013220649, 0.0004944862, 0.0002930611, + -0.0011658678, -0.0019573665, -0.0000201656, 0.0020592287, 0.0004419219, + -0.0016377041, 0.0026334848, 0.0009577281, -0.0017406858, 0.0009264634, + 0.0012024912, -0.0019130129, -0.0021264188, 0.0037030857, -0.0001509232, + -0.0005668571, -0.0034258254, 0.0018062068, -0.0000771922, 0.0004665586, + -0.0026735549, 0.0005856904, 0.0022048336, -0.0005552385, -0.0013855123, + 0.0013065906, -0.0020483308, 0.0002668520, -0.0017512640, -0.0001808330, + -0.0022871995, -0.0003433348, 0.0007081250, -0.0003164026, 0.0006980015, + 0.0002293654, -0.0004332929, 0.0001161210, 0.0000779163, 0.0014412105, + -0.0017557452, 0.0012635025, -0.0004754458, -0.0010764650, 0.0006234432, + -0.0009162277, -0.0005438193, -0.0005636252, -0.0008399378, -0.0034597442, + -0.0002132710, 0.0001074160, 0.0012540140, 0.0013693138, -0.0037932973, + 0.0002406929, -0.0001379382, 0.0004694078, 0.0000338105, -0.0002785351, + 0.0001747680, 0.0003542155, -0.0022812700, -0.0002585351, 0.0013862797, + -0.0005175034, 0.0003087185, -0.0023072509, -0.0001725748, -0.0015793932, + -0.0008969624, -0.0010057525, 0.0003980747, -0.0001954560, -0.0005023459, + 0.0013036253, 0.0028675543, 0.0006869840, -0.0012947172, 0.0018030223, + -0.0007836532, 0.0013376139, -0.0002860780, 0.0027819325, 0.0008858414, + -0.0004958743, 0.0024024891, -0.0014142502, -0.0011282042, -0.0033920964, + 0.0020123343, -0.0022810278, -0.0005280385, 0.0020110863, -0.0016593696, + -0.0009664306, -0.0023629200, 0.0001237444, 0.0009660213, -0.0019289443, + 0.6071860194, -0.0020542447, -0.0019037640, -0.0022467524, 0.0001392975, + -0.0017723253, 0.0005910546, 0.0016770735, -0.0008381247, -0.0021944330, + 0.0007978445, -0.0005052685, -0.0017553669, 0.0019317875, 0.0024424177, + -0.0003543689, 0.0017839444, 0.0017740102, -0.0011404841, -0.0024884313, + 0.0000868049, 0.0008336632, 0.0010915973, -0.0022576174, -0.4015978575, + 0.0034775315, 0.0019669826, -0.0014017220, -0.0005035852, 0.0022959248, + -0.0025721141, -0.0009036156, -0.0033148886, -0.0020741932, -0.0011434555, + 0.0003110291, -0.0015830165, -0.0006319545, -0.0012375875, -0.0009978916, + -0.0006883696, -0.0015352489, 0.0015048254, 0.0000022827, 0.0006240583, + -0.0018534819, 0.0036477065, -0.0008532132, 0.0016572601, -0.0012153070, + 0.0000090864, 0.0205687806, -0.0007130103, 0.0009067012, 0.0018877904, + -0.0009449815, -0.0024199456, 0.0018785093, 0.0007380205, 0.0004673670, + -0.0011597394, -0.0009881244, -0.0002645160, -0.0066260966, 0.0000440963, + -0.0004915287, -0.0013254241, -0.0010326012, -0.0002091508, 0.0014019147, + -0.0014002279, -0.0032530371, 0.0000097335, 0.0009361005, 0.0005647090, + -0.0023355009, 0.0020251011, 0.0014490107, -0.0012419447, -0.0011548470, + -0.0033545895, -0.0000883965, 0.0031946171, -0.0006297551, -0.0018538439, + -0.0006937501, -0.0014894059, -0.0009643458, 0.0017509346, 0.9881345034, + 0.0007223072, 0.0011671577, 0.0013625446, 0.0005294804, -0.0015617523, + 0.0030921709, 0.0011710753, 0.0000356748, 0.0019693819, 0.0013020090, + -0.0002637848, 0.0007673479, 0.0008365210, -0.0015118951, 0.0011538573, + -0.0001340816, -0.0011404122, 0.0553831235, 0.0008925674, -0.0008877140, + -0.0007608058, 0.0002641180, -0.0001301924, 0.0021170210, 0.0027883947, + -0.0005377382, 0.0028863295, -0.0005018959, -0.0005535656, -0.0000938447, + 0.0100969523, 0.0009463173, 0.0030771354, -0.0002898653, -0.0005744263, + 0.0004239473, -0.0003319015, -0.0010029171, -0.0005906284, 0.0008856170, + -0.0012812382, -0.0017033634, 0.0032073129, -0.0003937550, -0.0013715274, + -0.0008885935, -0.0052021872, 0.0023192014, -0.0015841399, -0.0016403422, + 0.0014710755, -0.0019067647, 0.0028092777, 0.0020894818, 0.0007459619, + 0.0821365491, -0.0008782005, -0.0029020067, 0.0015818772, -0.0021351532, + -0.0007676868, -0.0009831660, 0.0014791498, 0.0005182263, -0.0009987564, + 0.0001325330, -0.0006659823, 0.0012621866, -0.0014334233, -0.0004946194, + 0.0003887140, -0.0014080734, -0.0007085783, 0.0015996122, 0.0008678194, + 0.0009756740, -0.0003932733, 0.0007714499, -0.0019194549, -0.0015276426, + 0.0001035919, -0.0011761454, -0.0008629753, 0.0021384736, 0.0023877956, + -0.0020154917, -0.0006085377, 0.0017051650, -0.0014732049, -0.0011537289, + 0.0020078144, 0.0024348418, -0.0018430593, 0.0000484032, -0.0001303568, + -0.0013319072, 0.0000080299, -0.0002917843, -0.0023087910, -0.0014677672, + -0.0002231784, -0.0008508516, 0.0001699314, 0.0002862498, 0.0006314839, + 0.0010662852, 0.0024927994, -0.0012548623, 0.0009407406, 0.5531275868, + 0.0004282410, -0.0004917225, -0.0031481534, -0.0001471383, -0.0011182036, + 0.0006476836, -0.0026330804, 0.0003732354, 0.0000241748, -0.0003767004, + -0.0006787247, -0.0002104854, 0.0024844967, -0.0000326916, -0.0015953188, + -0.0003924542, 0.0009673081, -0.0012576184, -0.0000332911, -0.0033173708, + 0.0022585103, -0.0001433943, 0.0001781735, -0.0007405602, 0.0007890331, + -0.0002643084, -0.0013910973, -0.0008206475, -0.0012153536, -0.0018537156, + 0.0000680473, -0.0000483282, -0.0023121652, 0.0002435474, -0.0014562495, + -0.0007592967, 0.0019314514, -0.0009882381, 0.0001117508, -0.0005758179, + -0.0001412448, 0.0002828375, 0.0014126950, 0.0012011222, -0.0002316635, + -0.0003406827, 0.0004924210, -0.0021011648, -0.0009515155, -0.0021725912, + 0.0014866980, -0.0027985661, -0.0010470799, -0.0019237893, 0.0033799806, + 0.3958943784, -0.0006546144, -0.0001524077, 0.0016369389, 0.0000019413, + 0.0007492398, 0.0013063415, 0.0003328142, -0.0001799576, -0.0009838357, + 0.0010066608, -0.0002245107, 0.0002266644, 0.0011462742, -0.0001879832, + -0.0007818760, 0.0012077400, -0.0003976701, 0.0000915006, -0.0019151266, + -0.0019429177, 0.0015330702, 0.0009214953, 0.0025007073, 0.0005988213, + 0.0015370515, -0.0002561873, 0.0001196912, -0.0029980759, 0.0021240734, + 0.0023418248, 0.0005202848, -0.0017741680, -0.0014917711, 0.0001961472, + 0.0001403177, 0.0029681197, 0.0001944671, -0.0020584355, -0.0001341351, + 0.0013787455, -0.0005256308, 0.0006678579, 0.0006450017, 0.0011304177, + -0.0005695778, 0.0008553063, -0.0018240466, 0.0014711524, 0.0017283312, + -0.0002060905, -0.0000820886, 0.0018076017, -0.1959063113, 0.0002631771, + 0.0410269350, 0.0029860418, -0.0022631171, -0.0003950417, -0.3753862679, + 0.0040869215, 0.0009707236, -0.0011557098, 0.0007936549, 0.0005124870, + 0.0032383942, 0.0007498511, 0.0018612389, 0.8039670587, -0.0001399252, + 0.0008597460, -0.0002492450, -0.0002884130, -0.0065999278, -0.0002013277, + 0.0000898726, -0.0004028901, 0.0005709613, 0.0039698081, -0.0013164137, + 0.0004935022, -0.0015160064, 0.0015087118, -0.0012814899, 0.0009356050, + -0.0013441339, -0.0015304436, 0.0003760327, -0.0000179056, 0.0021537757, + 0.0013113655, -0.0005442973, -0.0019374108, -0.0013546692, -0.0007391965, + -0.0009677043, 0.0002604704, 0.0006208075, -0.0003516302, -0.0000257269, + -0.0009102665, -0.0012848089, -0.0012817262, 0.0000210772, 0.0002057720, + -0.0007521296, -0.0017413332, -0.0006503511, 0.0004899960, 0.0011272589, + 0.0003522616, -0.0013292711, -0.0006296404, 0.0013050190, -0.0023438835, + 0.0014300239, 0.0011369481, 0.0003477568, -0.0007256425, -0.0023025693, + -0.0009596827, -0.0000001518, 0.0002286281, -0.0005228468, 0.0008969419, + 0.0008387286, -0.0016240801, 0.0079424409, 0.0002755332, 0.0009564268, + -0.0022354261, -0.0020701741, 0.0011906694, 0.0004236447, 0.0009508564, + 0.0006448906, -0.0016842119, 0.0008114888, 0.0012476188, 0.0014607706, + -0.0009011453, 0.0007919297, 0.0005199346, -0.0016375855, 0.0015272081, + 0.0012458446, 0.0014490243, -0.0004621277, -0.0009909575, 0.0005509611, + 0.0013498361, 0.0007290328, -0.0029726322, 0.0006059795, -0.0011502886, + -0.0017541833, 0.0013872178, -0.0006959215, 0.0000206144, 0.0005568410, + 0.0001581428, -0.0001924164, -0.0022506444, 0.0003011024, -0.0031002657, + -0.0002468254, 0.0019808528, 0.0015247043, -0.0016140505, -0.0006127075, + -0.0004176025, -0.0006819092, -0.0002598208, 0.0014443640, -0.0005039661, + -0.0006613070, 0.0011634314, 0.0023566990, 0.0011607540, -0.0010119714, + -0.0016142814, 0.0022140038, 0.0011537431, -0.0008310252, 0.0004350436, + 0.2449630350, -0.0031980430, 0.0003637957, -0.0000516246, 0.0009980788, + -0.0010797554, 0.0000680075, -0.0015780570, -0.0012707314, -0.0017085606, + -0.0023516258, 0.0008915995, -0.0005542333, -0.0018688249, 0.0002718163, + 0.0005537907, 0.0018097069, 0.0021156352, -0.0000395468, -0.0019522863, + -0.0019756174, 0.3922185898, -0.0003507624, 0.0000373400, -0.0008739580, + -0.0002393585, -0.0011022764, 0.0014146746, -0.0013962919, 0.0017296718, + 0.0004208870, 0.0023546829, 0.0014816355, 0.0015598410, -0.0003109837, + 0.0006558243, -0.0000035488, 0.0031849588, 0.0004192647, -0.0001252131, + 0.0001078728, -0.0030257311, -0.0016570457, 0.0031830943, 0.0015941095, + -0.0001474622, -0.0002196057, -0.0000084187, 0.0002616765, 0.0000940887, + 0.0020746365, -0.0004501985, 0.0011889823, -0.0019473255, 0.0009843614, + 0.0021445025, -0.6618119478, -0.0000789813, -0.0001109033, 0.0003280232, + -0.0006893401, -0.0002566588, -0.0016639546, -0.0011616466, -0.0000130453, + -0.0016180547, 0.0000847318, 0.0006626543, -0.0007428909, 0.0025035334, + -0.0011596605, -0.0002114795, 0.0003511370, -0.0006590844, -0.0017521521, + -0.0011953707, 0.0019593406, 0.0027892888, -0.0017421310, 0.0012314850, + 0.0001519960, -0.0012518018, 0.0000259664, 0.0011833711, 0.0005868322, + -0.0010758658, 0.0002883277, -0.0027269763, -0.0005218986, -0.0011389512, + 0.0000716490, 0.0004688692, 0.0008567628, -0.0011647200, -0.0020831472, + 0.0007374892, 0.0002420251, -0.0005299136, 0.0005942429, 0.0008244585, + -0.0006964626, 0.0007733703, -0.0217624772, -0.0004102516, 0.0007254796}; + +float unet_input_time_embedding_50_37[] = { + 0.0008044625, -0.0035317037, 0.0013214210, 0.0007793950, 0.0015930315, + 0.0013200073, -0.0001922480, -0.0011990662, 0.0008184731, -0.0016470617, + -0.0003340738, -0.0016132940, 0.0033289874, -0.0009465297, -0.0015226216, + 0.0002504364, 0.0015209541, -0.0007158609, -0.0002732748, -0.0029032328, + -0.0016226447, 0.0018802220, -0.0016425356, -0.0575557575, 0.0006257452, + -0.0007731877, 0.0005118148, 0.0019489806, -0.0021584127, 0.0002048416, + 0.0017492368, 0.0008090348, 0.0008401619, -0.0003214334, 0.0008904708, + -0.0005710074, 0.0003107628, -0.0002456324, 0.0011110287, 0.0012920015, + 0.0008475147, -0.0006089453, 0.0004737303, 0.0006369930, 0.0002608385, + 0.0009482850, -0.0014366102, 0.0012661670, 0.0001360988, -0.0011400864, + 0.0007739081, 0.0011679432, 0.1920000464, 0.0004634261, 0.0007117715, + 0.0002815932, 0.0024893754, 0.0001461224, -0.0001632692, -0.0011667481, + 0.0018407509, -0.0004087923, -0.0004540132, -0.0009165020, 0.0010139677, + -0.0001574336, 0.0009520440, 0.0015015394, 0.0016749464, -0.0002392811, + -0.0009523309, -0.0009689579, 0.0005744963, 0.0015300200, 0.0009374386, + 0.0011253860, 0.0010643462, -0.0023741582, 0.0007415162, -0.0006377308, + 0.0027983368, -0.0009847948, 0.0006643760, 0.0000233816, 0.0013142063, + 0.0016398393, 0.0003364403, 0.0013504019, -0.0000393996, 0.0011808211, + 0.0013810062, 0.0011513075, 0.0000201883, -0.0006877530, 0.0018448452, + 0.0012118737, -0.0006918958, -0.0010941364, -0.0001400041, -0.0005698483, + 0.0006480776, -0.0017855950, 0.0000418974, -0.0316868462, -0.0009606769, + 0.0005334560, 0.0036504101, 0.0006003072, 0.0002112102, -0.0008782735, + -0.0001471671, -0.0020437473, 0.2360028028, 0.0000720364, 0.0014390219, + 0.0000221422, 0.0010201833, -0.0028982249, -0.0000405135, 0.0022821377, + -0.0017515956, 0.0000778746, 0.1839839369, -0.0007761684, 0.0003066845, + 0.0004263935, 0.0012210528, 0.0007160944, -0.0001062243, 0.0010822923, + 0.0000577904, 0.0002868408, 0.0002596511, -0.0037437407, -0.0004226281, + 0.0013841114, -0.0037865061, -0.0011897711, 0.0010814872, 0.0018014186, + 0.0011681833, 0.0000559986, 0.0010726484, 0.0007925720, 0.0004726199, + -0.0004922953, 0.0023326997, -0.0014283038, 0.0007070468, -0.0008254852, + -0.0018386319, -0.0009119421, -0.0006857226, -0.0002015629, -0.0017414251, + 0.0002100486, -0.0010552509, 0.0025939681, -0.0004907232, -0.0018697926, + -0.0003321953, 0.0021312325, 0.0024454216, -0.0014943792, -0.0009609731, + -0.0012376481, 0.0017564085, 0.0013540043, 0.0257560872, 0.0006143663, + -0.0019023198, 0.0012554638, -0.0008417843, 0.0029674387, -0.0022238926, + 0.0001662979, -0.0008346336, -0.0005208505, -0.0020325629, -0.0022399547, + -0.0011984329, -0.0010271715, 0.0074323281, -0.0024660402, 0.0007102145, + 0.0005146298, 0.0013843933, 0.0036857012, 0.0006058742, 0.0018620593, + -0.0001230980, 0.0011109109, -0.0007813460, 0.0000407144, -0.0005222936, + 0.0015917583, 0.0009112981, 0.0024636504, 0.0031764721, 0.0000685891, + 0.0010467283, -0.0001444449, -0.0000663679, 0.0013848447, -0.0002917396, + 0.0008410150, 0.0017888473, -0.0009383848, -0.0013480945, 0.0005176251, + -0.0018431866, -0.0016823653, 0.0010434554, -0.0016982097, 0.0010632812, + -0.0013799910, 0.0004838740, 0.0014134077, 0.0015821211, -0.0008146657, + -0.0007206802, -0.0015495744, 0.0000347837, 0.0046643252, -0.0004430946, + -0.0000576382, 0.0011850493, 0.0001784528, 0.0007300975, -0.0012595709, + -0.0024223728, -0.0017668365, 0.0011092145, -0.0005765376, 0.0019903528, + 0.0015567229, 0.0015692092, -0.0002191584, -0.0005060975, -0.0000951853, + -0.0017192315, 0.0006073088, -0.0009881670, -0.0005331784, -0.5514470339, + -0.0005313519, 0.0009179504, 0.0005760571, -0.0002183011, 0.0011255099, + -0.0012184819, 0.0006542220, 0.0001379051, 0.0029200260, -0.0009740090, + -0.0013360709, -0.0015445240, -0.0016252449, 0.0016914262, 0.0002514186, + -0.0004521618, -0.0017367450, -0.0004595302, 0.0012299683, -0.0001774513, + -0.0004552500, 0.0013469686, 0.0004658159, 0.0002876595, 0.0006472887, + 0.0009227716, 0.0027600096, -0.0004240489, -0.0017439947, 0.0000334943, + 0.0020365638, 0.0010806047, 0.0011799228, -0.0005519884, 0.0000676801, + 0.2151886672, 0.0014358507, -0.0014992853, 0.0007691057, 0.0026004547, + -0.0001961831, 0.0004072706, -0.0013829258, -0.0010336651, -0.0023621628, + -0.0014541965, 0.0002155346, 0.0019665523, 0.0023113342, 0.0004203077, + -0.0024068952, 0.0004649665, 0.0007363628, -0.0016196449, -0.0028055282, + 0.0043400722, 0.0012491792, 0.0031744298, 0.0003071970, 0.0011646322, + -0.0000305101, 0.0003113574, 0.0000236221, -0.0009358777, 0.0005877023, + 0.0016654250, -0.0002417450, -0.0003556057, 0.0005897060, 0.0011619590, + -0.0007110275, 0.0001401441, -0.0014055618, 0.0033408124, 0.0003909138, + -0.0003732627, 0.0000772947, 0.0004830635, -0.0044051916, -0.0010931705, + 0.0009543728, 0.0051361304, 0.0003775652, 0.0067634284, 0.0023611162, + 0.0027367831, -0.0035172165, 0.0019580810, -0.0012327326, 0.0004253518, + 0.0011898503, -0.0006972973, -0.0012725006, 0.0000604922, -0.0008583623, + 0.0017367927, 0.0004933777, 0.0017771095, 0.4952852130, 0.0003490848, + 0.0010497519, 0.0002274459, -0.0007736735, 0.0013731560, -0.0004665539, + -0.0009683897, 0.0001628082, -0.0004622685, 0.0028250664, -0.0006990881, + -0.0006107767, -0.0002091599, -0.0020143776, 0.0017899810, 0.0009896974, + -0.0000871876, 0.0011523506, -0.0012620762, 0.0018215571, -0.0003279854, + -0.0009805779, -0.0015555765, 0.0003773784, 0.0005097231, 0.0472384728, + -0.0015359335, 0.0000980454, -0.0005545404, 0.0014065607, 0.0009032066, + 0.0004871437, -0.0032833889, -0.0001308487, 0.0004489820, -0.0013581631, + -0.0006264831, 1.3965510130, 0.0011897447, 0.0015825839, -0.0007811720, + -0.0007530504, 0.0001548999, 0.0011876139, 0.0024167900, -0.0003258400, + -0.0000120727, -0.0021066251, -0.0003458494, -0.0001265511, -0.0009498065, + 0.0009161117, -0.0016230447, -0.0005380773, 0.0000797277, -0.0017651189, + -0.0021844802, -0.0006216709, -0.0003518343, 0.0001865788, 0.0006579133, + 0.0009140146, -0.0005000587, 0.0003313650, -0.0011902105, -0.0000425484, + -0.0007142420, 0.0001523066, -0.0019514789, -0.0022536006, 0.0002323745, + 0.0011266589, -0.0005447399, -0.0024185358, 0.0002212971, -0.0025982745, + 0.0002425716, -0.0012960990, 0.0001978754, -0.0012228328, -0.0000806302, + 0.0021954901, -0.0004271297, -0.0018820099, 0.0016294345, 0.0009958572, + -0.0007820870, 0.0013350795, 0.0014049434, 0.0016800500, 0.0006178931, + 0.0008533485, 0.0008371463, 0.0024923659, 0.0018631807, 0.0006852646, + -0.0011322899, 0.0011318380, -0.0014399890, 0.0006091807, 0.0026660308, + -0.0001718407, 0.0021091965, -0.0010226569, 0.0006686640, -0.0000109626, + -0.0001689871, 0.0012494242, 0.0009668993, 0.0003281671, -0.0012682907, + -0.0017972542, -0.0023395866, -0.0022743070, 0.0003221361, -0.0022123840, + -0.0000631779, 0.0009667724, -0.0004151321, 0.0011228059, -0.0012648320, + 0.0004584091, -0.0002024029, 0.0002515931, 0.0014487345, 0.0013559614, + -0.0011230442, 0.0000929777, -0.0005541120, -0.0000456362, -0.0014956403, + -0.0080620293, 0.0010401029, -0.0013586370, 0.0007103402, 0.1959512681, + -0.0013938581, 0.0016482089, 0.0009339312, -0.0020838447, -0.0025904097, + -0.0001670094, 0.0008691766, 0.0001670886, -0.0016127289, 0.0011082818, + 0.0001227977, 0.1032738239, -0.0003088277, -0.0010485048, 0.0015488225, + 0.0019276844, 0.0009252504, -0.0020954143, -0.0004322850, -0.0002981625, + -0.0002671448, 0.0015894184, 0.0011640610, -0.0032338337, -0.0001204920, + -0.0004710390, 0.0000011679, 0.0016861906, -0.0021056747, -0.0010091113, + -0.0002502168, -0.0023831897, -0.7303232551, 0.0013859095, 0.0013881224, + -0.0009631882, -0.0009207609, -0.0001238948, 0.0002615470, 0.0006978023, + -0.0012702593, -0.0005579102, -0.0004139686, -0.0001576738, -0.0003640563, + -0.0013630730, 0.0006638603, 0.0007781894, -0.0002954537, -0.0006166723, + -0.0011610815, 0.0012979098, 0.0013580769, 0.0003813759, 0.0003564137, + 0.0017358998, 0.0001042404, -0.0006494934, -0.0007243017, 0.0016722549, + 0.0011063162, -0.0018810974, -0.0003713749, 0.0002059145, 0.0000227513, + 0.0000950228, -0.0007115807, 0.0005531078, 0.0001751683, 0.0000444455, + -0.3686862290, -0.0004131463, -0.0006168932, -0.0020796186, 0.0000861338, + -0.0007863721, 0.0008501678, 0.0008760141, 0.0021106754, -0.0011727777, + 0.0007859580, -0.0013895003, 0.0003037388, 0.0012139808, -0.0013684928, + -0.0012872508, -0.0005080709, 0.0013598003, -0.0011899965, -0.0003502211, + -0.0008763539, 0.0004016627, 0.0011581799, 0.0025191528, -0.0028607310, + 0.0016425829, -0.0002641750, 0.0014111628, 0.0000137272, 0.0016472461, + 0.0007967269, -0.0011601530, 0.0070638363, -0.0003312001, -0.0022243902, + -0.0001078499, -0.0003986233, -0.0000164467, 0.0023420560, 0.0007151389, + -0.0009073416, -0.0024302364, 0.0014805510, 0.0029936889, 0.0003405460, + 0.0015830575, 0.0034955107, 0.0009608972, 0.0020007840, 0.0005199523, + 0.0021954086, -0.0016007810, 0.0026181629, 0.0003459170, -0.0027094313, + 0.0005353901, 0.0001337636, -0.0007254451, -0.0001603320, -0.0002010504, + 0.0008401794, 0.0003564809, 0.0001186631, 0.0006567207, 0.0008652536, + 0.0016228911, 0.0002050395, 0.0007877797, -0.0007265508, 0.0014254351, + 0.0014484883, -0.0013513538, -0.0008976348, -0.0021089907, -0.0007826961, + 0.0005779355, -0.0016387540, -0.0012137454, -0.0012359633, 0.0002134875, + -0.0006174799, -0.0002168159, -0.0011291410, -0.0000861189, 0.0004852177, + 0.0000667600, -0.0004806237, 0.0017725275, -0.0001065480, -0.0019549034, + -0.0014490435, -0.0001754172, 0.0006881226, -0.0000386571, 0.0005141268, + 0.0015741476, -0.0012877798, 0.0005539863, 0.0024877167, -0.0003354447, + -0.0007465760, -0.0002221582, -0.0005595495, -0.0006358959, -0.0002189656, + -0.0017721134, -0.0005218771, 0.0017821174, -0.0005554059, 0.0002552052, + 0.0023315270, -0.0002460955, -0.0029490683, -0.0044679702, -0.0005574548, + 0.0002249242, -0.0002267877, -0.0022252465, -0.0008278170, 0.0011406677, + -0.0005422083, 0.0001821581, -0.0009772894, 0.0001734449, -0.0007668361, + -0.0020692912, 0.0019482091, -0.0004676506, 0.0003037811, 0.0011940310, + -0.0022694424, -0.0000205380, -0.0012821974, -0.0027027940, -0.0026576295, + 0.0010506823, 0.0006511456, -0.0013071967, -0.0002564592, -0.0029680319, + -0.0016368453, 0.0015464458, 0.0009732505, -0.0024546504, -0.0004485403, + 0.0005124464, -0.0004870202, -0.0013547894, -0.0002185719, -0.0004497636, + -0.0005445024, 0.0023507732, -0.0023165036, -0.0004355605, -0.0032013399, + -0.0009214063, -0.0021136710, -0.0015769028, 0.0012916287, -0.0005406422, + -0.0010350593, 0.0050266483, 0.0001508869, 0.0000844277, 0.0002681804, + -0.0021029408, -0.0001541320, 0.0003130925, 0.0017604923, -0.0000689649, + -0.0003568111, 0.0008212687, 0.0004235756, -0.0006815424, -0.0016204242, + 0.0005086646, 0.0012298748, 0.0010634977, 0.0004800237, 0.0011797387, + 0.0005507213, 0.0004828973, -0.0028007366, 0.0000890959, 0.0004841730, + 0.5248337388, 0.0001663947, -0.0009320714, -0.0002491828, 0.0007377360, + 0.0004502400, -0.0002713222, 0.0014783479, -0.0012235173, -0.0004324811, + 0.0012990632, -0.0004817155, -0.0012416145, 0.0034098681, -0.0010026623, + -0.0018330978, 0.0017923305, 0.0000162674, 0.0009098449, -0.0004423002, + 0.0016651126, -0.0013492978, 0.0004590155, -0.0015004657, -0.2127001286, + 0.0036353236, 0.0000566149, -0.0012056213, -0.0007989886, -0.0002303203, + -0.0020920145, -0.0005700231, -0.0005593310, 0.0000139629, -0.0011542563, + 0.0003631106, -0.0007050503, -0.0007258421, -0.0027446817, 0.0001108092, + -0.0003529135, -0.0017862162, 0.0022319341, -0.0002180208, 0.0005311561, + 0.0006338297, 0.0023546556, 0.0008113125, 0.0010151728, -0.0000420418, + 0.0020672125, -0.0008161920, -0.0006329911, 0.0007874360, 0.0005584001, + -0.0006500707, -0.0012812798, 0.0027033694, -0.0019034515, 0.0013528274, + -0.0013481043, 0.0004134048, -0.0012762608, -0.0106902299, -0.0006224387, + 0.0008179263, -0.0000500819, -0.0005768557, 0.0011496246, -0.0009632539, + 0.0022149808, -0.0011480340, 0.0005855989, 0.0017429276, 0.0014745622, + -0.0003357675, 0.0002790734, 0.0006816931, 0.0006337957, 0.0006539812, + -0.0014045653, -0.0007108254, 0.0012674490, -0.0017872178, 0.0004042259, + 0.0009527579, 0.0001133726, -0.0012037405, 0.0005716498, 0.8877289295, + -0.0014320402, -0.0022001315, 0.0011870313, 0.0007754199, 0.0010523616, + 0.0010252877, -0.0004642205, 0.0025865566, 0.0028199216, 0.0013130070, + 0.0001651591, 0.0019391160, 0.0035989040, 0.0007756762, -0.0006785711, + 0.0005152543, -0.0022689723, 0.0521660373, 0.0008180938, 0.0023952571, + 0.0006737653, 0.0026178150, 0.0017051154, 0.0013399888, 0.0020600150, + 0.0004193662, 0.0009027361, 0.0008970607, 0.0004585045, -0.0006159218, + 0.0058976444, 0.0006070742, 0.0011014626, 0.0003683171, -0.0000474523, + 0.0003978182, 0.0001141555, -0.0001637810, -0.0012086401, 0.0003841072, + 0.0000030790, -0.0010397672, 0.0027084062, -0.0013567705, -0.0031913552, + 0.0006501591, -0.0030081668, 0.0015908401, -0.0013337780, 0.0004732879, + 0.0013531419, 0.0006529186, -0.0004490884, -0.0006493056, -0.0012887535, + 0.0826543272, 0.0015432456, -0.0011020279, 0.0020357331, -0.0008098867, + -0.0009568788, -0.0011411156, 0.0011605229, 0.0009387687, -0.0011995928, + 0.0019586855, 0.0006217328, 0.0014575347, 0.0005911747, -0.0012972271, + -0.0016717594, -0.0006087564, 0.0000051156, 0.0022474020, -0.0007754369, + -0.0002247742, -0.0008281465, -0.0010779556, 0.0001305360, -0.0017881497, + 0.0003277035, 0.0002799705, -0.0005091057, 0.0016776980, -0.0011979216, + 0.0001569185, 0.0007730855, -0.0000100927, -0.0011104890, -0.0011617327, + -0.0003857159, 0.0002968728, -0.0003431581, 0.0006083800, -0.0023032920, + 0.0020379415, 0.0003282111, 0.0013064435, -0.0017506084, 0.0002085278, + 0.0008907318, 0.0012069808, 0.0017196261, -0.0014903649, 0.0013972446, + 0.0003232160, -0.0014475812, -0.0006674592, 0.0009231246, 0.4855784178, + 0.0021177253, 0.0020626048, 0.0012412528, 0.0007663595, -0.0002605226, + -0.0008668080, -0.0000187489, 0.0015784549, 0.0001049140, 0.0015112399, + 0.0000086153, 0.0010888702, 0.0062960815, -0.0002599178, 0.0013759914, + -0.0002472727, -0.0004568676, 0.0010862974, 0.0013354546, -0.0004429161, + -0.0002952013, -0.0008429051, -0.0004239980, -0.0018388350, 0.0011472641, + -0.0008376888, -0.0016252084, -0.0000914759, -0.0001699645, -0.0009323275, + 0.0033139198, -0.0012600617, 0.0001275954, -0.0011723875, 0.0012860680, + 0.0000518085, 0.0010280929, -0.0011643661, 0.0003270418, 0.0001172032, + 0.0006175097, 0.0000003786, 0.0010288195, 0.0007820925, -0.0038354243, + -0.0009278599, -0.0003428841, -0.0002899747, -0.0019898871, -0.0011092341, + 0.0001991402, -0.0012731017, -0.0017011487, 0.0013010901, 0.0033128164, + 0.3316530585, 0.0014681187, 0.0007573776, 0.0014230197, 0.0001583719, + -0.0000257800, 0.0016696462, -0.0023041349, 0.0022813482, 0.0022781896, + -0.0024029461, -0.0016122255, 0.0000043511, -0.0001959992, 0.0002031078, + 0.0007614763, 0.0004138029, -0.0007267240, 0.0007273478, 0.0005584587, + -0.0001679519, 0.0009050645, -0.0004172912, 0.0000815559, -0.0002611210, + 0.0011638752, -0.0010064123, -0.0012828943, -0.0001989049, 0.0002030367, + -0.0003297771, -0.0002718652, -0.0011077340, -0.0001921568, -0.0013836320, + 0.0010747224, 0.0007565540, 0.0023402828, -0.0001381596, -0.0004676734, + 0.0019239469, 0.0004659644, 0.0000346638, 0.0003352794, 0.0010112876, + 0.0000330270, 0.0022023134, -0.0002945495, -0.0013005013, 0.0014322577, + -0.0018673283, 0.0019463063, 0.0019245069, -0.0732219741, -0.0004711547, + 0.0400264971, -0.0002318078, -0.0015941015, 0.0009212827, -0.2748256922, + 0.0020735688, -0.0016539851, 0.0011497280, 0.0020764368, -0.0000776169, + 0.0000419938, -0.0004416401, -0.0001819199, 0.8745396733, 0.0001616594, + 0.0016019479, -0.0027332420, -0.0002630925, -0.0012567090, -0.0007368559, + -0.0004179338, -0.0022834726, 0.0010468233, 0.0033235238, -0.0025137481, + -0.0000346326, 0.0000047749, 0.0024038297, -0.0006350377, -0.0001690642, + -0.0000848386, -0.0019821189, -0.0015376045, 0.0002843193, 0.0013364968, + -0.0018672016, -0.0011206972, -0.0009142729, -0.0024988335, 0.0013789188, + -0.0019955949, 0.0000389400, -0.0012051025, 0.0007190551, 0.0012802808, + 0.0000415330, 0.0009090519, -0.0005119052, 0.0005011214, -0.0008594077, + -0.0009944215, -0.0015865599, -0.0017772871, -0.0007391169, 0.0009037405, + 0.0000881795, -0.0000159135, -0.0007320268, -0.0008162186, 0.0014867398, + -0.0002583991, 0.0007108413, 0.0009728232, -0.0001355640, -0.0013650720, + -0.0016018432, -0.0011622300, -0.0023264107, -0.0014684643, -0.0005791821, + -0.0003321515, 0.0000639359, 0.0038179392, 0.0004619574, 0.0004857644, + -0.0015504067, -0.0008888355, 0.0002775311, 0.0024568131, 0.0008768353, + 0.0017987918, 0.0002555880, -0.0012582638, 0.0003878144, 0.0002861633, + -0.0015728982, -0.0003531203, -0.0005585384, 0.0004019854, 0.0010233024, + -0.0014395057, 0.0012522792, 0.0001530064, -0.0009672001, 0.0014018472, + 0.0012585367, -0.0012833336, -0.0010184228, 0.0017890222, 0.0006971275, + 0.0008492591, 0.0011646505, 0.0016806875, 0.0010708123, -0.0005381589, + -0.0008073230, 0.0018478022, 0.0007929634, 0.0011856321, -0.0022585704, + -0.0010571736, 0.0014231657, 0.0003851163, -0.0005127781, 0.0005605877, + 0.0001565290, -0.0006247502, 0.0002817293, 0.0000142455, 0.0006536325, + 0.0022122976, 0.0019054147, 0.0006950626, 0.0006358738, -0.0012270696, + 0.0017393767, -0.0005142530, -0.0011424548, 0.0023735007, -0.0003865296, + 0.2609436512, -0.0024013049, 0.0016646573, 0.0001326085, 0.0002264702, + 0.0003424256, 0.0012177334, 0.0000253294, 0.0003748226, 0.0000266517, + -0.0025628051, 0.0011758382, -0.0024539484, -0.0017147488, -0.0011637593, + -0.0005040034, 0.0024837535, 0.0023097480, -0.0002657827, 0.0013490901, + -0.0006284071, 0.3545973897, -0.0005104647, -0.0002089599, 0.0013371909, + -0.0005979086, -0.0013294760, 0.0015489552, 0.0003939931, 0.0010424294, + 0.0001966194, 0.0010516243, 0.0004326557, 0.0004984015, 0.0001321572, + 0.0007086494, 0.0027329109, 0.0011368231, -0.0004642657, 0.0019296901, + 0.0007509000, -0.0008389917, -0.0015839576, 0.0025531487, 0.0025072442, + -0.0026324959, -0.0003685170, -0.0004735165, -0.0001336951, -0.0001138616, + 0.0005444380, -0.0010851156, 0.0013191605, -0.0003496500, -0.0013453290, + -0.0007378069, -0.5508984923, 0.0019176579, -0.0002376591, 0.0005697946, + 0.0005479546, -0.0008280568, -0.0010607420, 0.0003869717, 0.0016260998, + 0.0002640029, -0.0004884236, -0.0000030791, 0.0017181966, -0.0005163630, + -0.0013700468, -0.0019376586, 0.0006515905, 0.0001951014, -0.0014639338, + 0.0003047814, 0.0008658068, 0.0022253804, -0.0010226754, 0.0015026936, + 0.0002475306, 0.0006512129, -0.0001650178, 0.0016578529, 0.0008367738, + -0.0003431356, 0.0000607860, -0.0013995386, -0.0020802701, 0.0004216218, + -0.0003044461, 0.0007637693, -0.0008684760, -0.0019752393, -0.0005775604, + -0.0005084891, 0.0005452102, 0.0015909905, 0.0011310983, 0.0014414163, + 0.0013880841, 0.0004396643, -0.0365881920, -0.0001282225, -0.0006698793}; + +float unet_input_time_embedding_50_38[] = { + 0.0001356583, -0.0025166865, 0.0006835517, -0.0005177751, 0.0001507252, + -0.0018888223, 0.0021164229, -0.0009625476, 0.0018546237, 0.0005725977, + -0.0013559910, 0.0000944077, 0.0000140779, -0.0011729561, 0.0008247187, + -0.0003435537, 0.0012319083, 0.0007275881, -0.0004065137, -0.0011813429, + 0.0044159428, 0.0010349946, -0.0003128474, -0.0688182861, 0.0008897420, + 0.0008335218, -0.0000711819, -0.0008975761, -0.0021702847, 0.0030444339, + -0.0012311831, -0.0004574609, -0.0012837835, -0.0001065442, -0.0006782734, + 0.0012693605, -0.0014222600, 0.0011543285, -0.0009006008, 0.0018293355, + 0.0019581071, 0.0006306097, -0.0014586854, 0.0025028596, 0.0009867707, + -0.0009041796, 0.0002373112, -0.0001118081, -0.0006511654, -0.0003176290, + -0.0006862199, 0.0002747392, 0.2053166479, 0.0012822617, 0.0000219803, + -0.0005241213, -0.0027787008, 0.0019271113, 0.0008446979, -0.0004969658, + -0.0008987139, 0.0030853464, 0.0017323880, -0.0013590420, 0.0005973564, + -0.0003182278, 0.0024902783, -0.0018382539, 0.0005456945, 0.0007072655, + -0.0009056302, 0.0005209639, 0.0005937002, -0.0003109202, -0.0003205054, + 0.0009416584, -0.0004428080, 0.0002661189, 0.0007287494, 0.0005258613, + 0.0000183389, -0.0001455121, 0.0004697847, 0.0021118429, -0.0004098834, + -0.0011666534, 0.0024050900, 0.0010286989, 0.0018109297, -0.0002647806, + 0.0013732056, -0.0008985065, -0.0015634480, -0.0011429916, 0.0024293680, + 0.0029947786, 0.0010742042, 0.0005490286, 0.0010705194, 0.0011337940, + 0.0002671769, 0.0006113998, 0.0015642042, -0.0441717543, -0.0008782619, + -0.0016989117, -0.0004944825, -0.0005629519, -0.0006884860, -0.0010047001, + 0.0007167668, -0.0002264082, 0.2112488747, 0.0027257539, 0.0013253717, + -0.0013468359, 0.0002694004, -0.0025191784, 0.0012178938, -0.0013084901, + -0.0003487733, 0.0015093151, 0.2095011324, 0.0021790080, 0.0007111281, + -0.0010818033, 0.0003950391, 0.0005069957, -0.0002493784, 0.0005360059, + -0.0006988109, -0.0005299207, 0.0012661328, 0.0000438252, 0.0007838097, + 0.0021499826, -0.0004071717, -0.0003268216, 0.0022020824, -0.0028839642, + -0.0002408500, 0.0015651649, -0.0014778599, 0.0011523354, 0.0015581020, + 0.0004714224, -0.0003097728, -0.0003345720, 0.0011352170, -0.0011388883, + 0.0021071346, 0.0005125013, -0.0013979501, 0.0009158677, -0.0015774271, + 0.0004691333, -0.0002562702, 0.0010110615, 0.0015555054, 0.0005696672, + 0.0008888417, -0.0005368969, -0.0003600260, -0.0024744333, -0.0008341777, + 0.0001968367, 0.0005408714, -0.0021925056, 0.0444281474, -0.0016659636, + 0.0001248569, -0.0000083297, 0.0005823215, 0.0013323305, -0.0002944451, + 0.0000182563, -0.0002906240, -0.0004962021, -0.0025100093, -0.0016954951, + -0.0017934400, -0.0027243281, 0.0004672967, 0.0002182617, 0.0013116654, + -0.0013975897, 0.0016739266, 0.0004870687, -0.0013027638, -0.0005535246, + 0.0011073253, 0.0018669772, -0.0002808486, 0.0008513813, 0.0003823387, + 0.0030622710, -0.0000621587, 0.0000293273, 0.0005219064, -0.0000574226, + -0.0006242320, -0.0008190922, 0.0005934490, -0.0017051562, -0.0006290572, + -0.0008715121, 0.0011662182, -0.0022239583, -0.0002159341, 0.0028914595, + -0.0005043317, 0.0002830089, -0.0019700932, 0.0011508907, 0.0001662625, + 0.0007789279, 0.0007477829, 0.0003028754, 0.0006054171, -0.0014386271, + -0.0008945577, -0.0013287906, 0.0004422872, 0.0170062967, -0.0001325567, + 0.0016175946, 0.0022689765, 0.0020356083, 0.0022836116, -0.0002518604, + -0.0014431253, 0.0000810511, 0.0004731840, 0.0028511262, 0.0006025452, + 0.0001615766, -0.0000058836, -0.0019402034, 0.0013921224, -0.0012794402, + -0.0002500110, -0.0005894636, -0.0013577973, 0.0003564935, -0.4439121783, + -0.0009466319, 0.0011307746, -0.0009383914, -0.0020546475, -0.0005659941, + 0.0013098354, -0.0001121820, 0.0017007161, -0.0004044967, -0.0014768695, + 0.0007803079, -0.0005194461, 0.0014765024, 0.0005954599, -0.0016688997, + 0.0014566006, 0.0005540873, -0.0008239897, 0.0022367076, 0.0006439575, + 0.0005573244, 0.0008332506, -0.0010096985, 0.0000054101, -0.0023117927, + -0.0019918447, 0.0003283580, -0.0011842448, 0.0028033042, 0.0002982020, + 0.0002824359, 0.0006219968, -0.0000103917, -0.0018012160, -0.0003150324, + 0.2003574818, -0.0009192843, 0.0005835335, -0.0000957060, -0.0032856958, + -0.0003761621, -0.0002558930, -0.0008607570, 0.0002080500, -0.0004257513, + 0.0015468389, 0.0006338707, 0.0002721446, 0.0002725141, 0.0002582977, + -0.0030603823, -0.0015418120, 0.0009185611, -0.0003949800, 0.0006732612, + 0.0021324838, -0.0000138022, 0.0014318585, -0.0005079836, 0.0004407198, + -0.0000712688, 0.0014731148, 0.0014706850, -0.0009732638, 0.0026678867, + 0.0025129095, -0.0000085535, 0.0019390469, 0.0015926454, 0.0036489121, + -0.0010315753, -0.0005861645, -0.0004534409, -0.0009120097, -0.0004709712, + -0.0003393532, 0.0006382368, 0.0005590094, -0.0020612902, 0.0001977197, + -0.0001147646, 0.0026706960, -0.0002203360, 0.0025856160, -0.0004447144, + -0.0009259984, 0.0025698091, 0.0016273296, 0.0007505333, -0.0003361190, + -0.0005311547, -0.0009053845, 0.0019988185, -0.0011810833, 0.0017957683, + 0.0008258801, -0.0013545111, 0.0002694202, 0.4272662401, 0.0006803316, + -0.0013452852, 0.0011215758, -0.0016247568, -0.0016423459, 0.0005754387, + 0.0002698684, -0.0000464711, -0.0006663213, 0.0038888343, -0.0010485711, + 0.0027522566, 0.0016795091, -0.0016074113, 0.0019638245, 0.0046698684, + 0.0009530047, -0.0012273262, 0.0020114696, 0.0003255904, -0.0001442392, + -0.0015376292, -0.0000558766, 0.0016823700, -0.0002860622, 0.0798607096, + -0.0013884311, -0.0013763965, -0.0005168710, -0.0006006751, 0.0005757005, + -0.0000725316, 0.0007209671, 0.0008911986, 0.0008755110, -0.0012015579, + 0.0000354765, 1.3390954733, 0.0004479298, 0.0022830316, -0.0000642766, + 0.0001887404, -0.0002275556, -0.0002959566, 0.0011471855, 0.0010293885, + 0.0003098408, 0.0018640525, -0.0020190957, 0.0008380446, 0.0001581730, + 0.0004137061, -0.0024262983, -0.0001076587, 0.0004856647, 0.0009936225, + 0.0008361002, -0.0013820790, -0.0013850450, 0.0010299967, 0.0006595524, + -0.0004506101, 0.0012982307, -0.0003308849, -0.0009187819, -0.0005587395, + -0.0023709829, 0.0013870127, 0.0004490418, -0.0007965031, -0.0000584458, + 0.0009422451, 0.0005928962, -0.0002668800, 0.0003728671, -0.0000480898, + 0.0000272652, -0.0019648431, 0.0020546408, -0.0007858437, -0.0002539093, + 0.0028160983, -0.0016900441, -0.0011240121, 0.0014409567, 0.0008205077, + 0.0005502696, -0.0022382936, 0.0006833456, 0.0012359370, 0.0019886140, + 0.0005019046, -0.0001392579, -0.0004422150, 0.0010132482, 0.0006969499, + -0.0001243120, -0.0022534360, 0.0022522821, -0.0000390790, 0.0004996599, + -0.0009328993, -0.0003777347, 0.0023505697, 0.0008023917, -0.0014514462, + -0.0014358559, 0.0016941633, -0.0003601152, 0.0012867576, -0.0003015252, + 0.0013827784, 0.0006189691, -0.0013054521, 0.0002178680, -0.0000460898, + -0.0021136717, 0.0011898410, -0.0001328226, -0.0006893562, 0.0009488668, + 0.0028781518, 0.0023821481, 0.0005385233, -0.0009918195, 0.0007870127, + -0.0005057072, 0.0009039401, -0.0018390876, 0.0006574295, -0.0002400628, + 0.0016069803, 0.0013568923, -0.0009713831, 0.0003690943, 0.1962859482, + -0.0010805361, -0.0001196241, 0.0018255138, -0.0001411510, -0.0000425886, + 0.0015080688, 0.0007688769, -0.0015570037, -0.0002395627, -0.0001843027, + -0.0006522173, 0.0824467540, -0.0005904392, -0.0018862435, 0.0009832182, + -0.0064017386, -0.0014657592, -0.0017657639, -0.0008961745, -0.0018459593, + -0.0009723054, 0.0009606881, -0.0004336350, 0.0006988589, -0.0002098861, + 0.0000823219, 0.0002706207, -0.0005141393, 0.0000647227, -0.0009111941, + 0.0016779944, -0.0014845072, -0.5496939421, -0.0026501594, -0.0027389401, + -0.0030972154, 0.0011122236, -0.0006729765, 0.0003732350, -0.0022136406, + 0.0014879587, -0.0013504475, 0.0033205333, 0.0022144341, 0.0011169268, + -0.0022237615, -0.0003538649, 0.0022247136, -0.0001648897, 0.0001285624, + -0.0018373725, -0.0001156903, -0.0000655656, -0.0014958924, 0.0004426187, + 0.0008709857, -0.0000748429, 0.0000971535, 0.0011555217, -0.0007848453, + -0.0007009597, -0.0009619561, -0.0002985588, -0.0008112960, -0.0002311752, + -0.0001753857, -0.0015140886, 0.0013327450, 0.0002096645, -0.0005216664, + -0.2265601158, 0.0008979421, 0.0007873191, -0.0016398770, 0.0017160042, + 0.0005805155, 0.0003323539, -0.0009222706, 0.0013981727, -0.0015159948, + 0.0013164850, 0.0001778054, -0.0010033804, 0.0002237239, -0.0028002881, + 0.0004793582, -0.0016864063, 0.0001065216, -0.0018855399, 0.0014196341, + -0.0005884029, 0.0007732874, -0.0000975044, -0.0005009694, 0.0004419102, + 0.0014571147, -0.0006889577, -0.0003859918, 0.0021685753, 0.0002334735, + 0.0003440606, -0.0002628465, 0.0053613386, -0.0016124473, 0.0020920441, + 0.0010572772, -0.0010729767, 0.0006462815, -0.0017488413, -0.0004714155, + -0.0016607825, 0.0000220682, 0.0004331432, -0.0008892361, -0.0038730409, + 0.0015518626, 0.0004984584, -0.0013816059, 0.0018495852, -0.0009966372, + 0.0026148451, 0.0020201905, -0.0008797450, -0.0004401887, 0.0008285504, + 0.0010024591, 0.0013083419, -0.0011242840, 0.0013395463, -0.0001418530, + -0.0010245867, -0.0021115560, 0.0011123600, -0.0008667666, 0.0010838653, + 0.0001305114, -0.0005360767, 0.0002721176, -0.0021061786, 0.0009040635, + -0.0004550596, 0.0010725464, 0.0003334126, -0.0008554454, -0.0012894305, + 0.0005766912, -0.0023959826, -0.0010242087, 0.0024146533, -0.0007707803, + -0.0008543516, -0.0003379553, 0.0007646546, 0.0001629605, -0.0003750063, + 0.0002703918, -0.0000497440, -0.0018487667, -0.0007531578, 0.0008403109, + -0.0006821022, 0.0011116706, 0.0016823902, 0.0004513140, -0.0019230167, + 0.0003696213, -0.0002218047, -0.0005645400, -0.0000658799, -0.0000491841, + -0.0000725497, -0.0005741226, -0.0007701779, -0.0009174263, 0.0006235130, + -0.0006314891, -0.0008354237, -0.0005333168, -0.0016447969, 0.0004503825, + 0.0017651273, -0.0009296197, 0.0003022385, 0.0007109615, 0.0003925241, + -0.0005182221, 0.0018485375, 0.0002095242, 0.0000741857, -0.0012506748, + 0.0023852990, -0.0005866142, 0.0015886688, 0.0008332806, -0.0015072916, + -0.0016213241, -0.0004552339, 0.0004466735, 0.0005204873, -0.0016241572, + 0.0001526142, -0.0004483550, -0.0001948159, 0.0009722204, -0.0003011841, + 0.0009882138, 0.0006929263, 0.0010812820, -0.0008004513, -0.0014357264, + -0.0019435375, 0.0025602914, -0.0002556646, 0.0010644889, 0.0007786534, + -0.0016985382, -0.0015500300, 0.0012282133, 0.0003222583, 0.0026805401, + -0.0014047101, -0.0008123978, -0.0005671263, -0.0022217352, -0.0012360173, + -0.0009763963, -0.0017212792, -0.0000573439, 0.0008626988, 0.0019387775, + -0.0007910179, 0.0069078263, 0.0006307843, -0.0001173583, 0.0005122921, + -0.0010828876, -0.0007966496, 0.0003191452, -0.0004445156, 0.0002252460, + 0.0000810940, 0.0010880437, 0.0020321403, -0.0003998881, -0.0016123855, + -0.0004376555, 0.0003903927, 0.0017946223, -0.0005343980, -0.0017612386, + -0.0006744298, -0.0025903527, -0.0002682186, -0.0012429687, -0.0021926900, + 0.4445204139, 0.0008197525, -0.0016305484, 0.0011080857, 0.0030227802, + 0.0010140142, -0.0001862049, -0.0019913893, 0.0026280573, 0.0011148327, + 0.0014930516, -0.0015360183, 0.0016291990, -0.0021998028, -0.0022030533, + -0.0002896867, -0.0000448527, 0.0008156821, -0.0002108878, -0.0017034623, + -0.0022324934, -0.0015796695, 0.0006757156, 0.0010351746, -0.0428623520, + -0.0008334827, 0.0006164673, -0.0012551427, -0.0022459687, 0.0018713851, + -0.0008736309, 0.0001010833, 0.0003664474, -0.0007429745, -0.0008275830, + -0.0011412329, 0.0008721510, 0.0008795727, -0.0001636264, 0.0014055152, + -0.0006113744, 0.0006283438, -0.0015207510, 0.0002555479, 0.0032483423, + -0.0009402381, 0.0030180544, 0.0001853632, 0.0027412619, -0.0003176248, + -0.0034507224, 0.0037887325, -0.0010923799, -0.0004283125, 0.0014057686, + 0.0004081010, -0.0000473775, 0.0019883190, 0.0013699210, 0.0011057288, + -0.0001821199, 0.0022604386, -0.0013425633, -0.0098183909, -0.0003728531, + -0.0016968403, 0.0020583733, 0.0004306998, 0.0010971325, -0.0007218458, + 0.0008544894, 0.0013719769, -0.0006679443, 0.0010464319, -0.0006948024, + -0.0021842648, -0.0005625410, 0.0003010317, -0.0020038094, -0.0019346513, + 0.0006122570, 0.0013960404, 0.0002109734, 0.0002410844, 0.0008011905, + 0.0026453673, 0.0004567049, -0.0000492399, -0.0003114960, 0.7799529433, + -0.0015748469, -0.0005343880, -0.0013159130, 0.0020476822, 0.0006631835, + 0.0014372848, 0.0006053112, 0.0004755012, 0.0016101969, -0.0014894335, + 0.0011049740, 0.0003583394, 0.0009988546, -0.0008811718, -0.0000653785, + 0.0009433241, 0.0004530824, 0.0467126518, -0.0023243506, 0.0009782219, + 0.0030498812, -0.0006640735, -0.0014112941, 0.0006812047, -0.0008831595, + -0.0018516835, 0.0009736132, -0.0010542413, 0.0011118338, -0.0002059033, + -0.0080082361, -0.0007976429, 0.0004861071, -0.0002658619, 0.0007982627, + -0.0009355862, -0.0020280476, -0.0017712824, 0.0003977654, 0.0020900262, + 0.0008396218, 0.0006548734, 0.0007995069, 0.0015269383, 0.0002919353, + 0.0018097693, 0.0002655718, 0.0013588872, 0.0019129061, -0.0004848270, + 0.0005779939, -0.0004643532, 0.0010810304, 0.0007770526, -0.0009251223, + 0.0773016214, 0.0015864087, 0.0034868391, -0.0035398621, -0.0006834066, + -0.0007501110, -0.0007680985, 0.0002120351, 0.0005417068, -0.0011907646, + 0.0023201699, -0.0000889688, 0.0002499667, -0.0022409009, 0.0001506805, + -0.0005977978, -0.0018734147, -0.0011001645, -0.0016877495, -0.0016188351, + 0.0007268721, 0.0025111716, 0.0007088836, -0.0006550043, 0.0016236221, + 0.0008188989, -0.0008079465, -0.0001623557, -0.0011007064, -0.0006435616, + 0.0013784377, -0.0006906503, -0.0015543713, -0.0000740739, -0.0007616980, + 0.0002801206, 0.0015704788, 0.0004601383, 0.0000950694, 0.0006306642, + -0.0012175119, -0.0000455631, -0.0022212658, -0.0000992958, -0.0001892154, + 0.0001002178, 0.0011143927, 0.0006910029, 0.0006376345, 0.0000218157, + -0.0002484987, 0.0003558661, 0.0028006216, 0.0014349781, 0.4211278856, + -0.0023736090, -0.0006985799, -0.0014857026, 0.0005467578, -0.0007862216, + 0.0008934699, 0.0000231374, 0.0005303631, 0.0009847102, 0.0010912386, + 0.0035460074, 0.0009626350, 0.0019814540, -0.0010425700, -0.0009816862, + -0.0010054931, 0.0027248410, 0.0013472838, -0.0000665248, 0.0002648962, + -0.0002344726, -0.0007991078, -0.0007108438, -0.0001055929, 0.0009123779, + 0.0000573578, 0.0010934283, -0.0009131483, -0.0015682364, -0.0024437555, + -0.0015000359, -0.0008574007, 0.0006861729, -0.0020024288, 0.0012464826, + -0.0009688204, 0.0012288495, 0.0011265638, 0.0010394794, -0.0021207866, + 0.0004950473, 0.0010157484, 0.0005529828, -0.0000726228, -0.0000109281, + 0.0006479954, -0.0004305830, -0.0005907954, -0.0009668693, -0.0002859812, + 0.0001391604, -0.0005393766, -0.0003661052, -0.0002233731, 0.0008765762, + 0.2674427330, 0.0015839650, 0.0025742287, -0.0001247099, -0.0006843419, + -0.0001109731, 0.0005810796, -0.0002704802, -0.0016259830, -0.0010128919, + -0.0025463582, -0.0010713576, -0.0010595093, -0.0001962304, -0.0008280339, + 0.0008007381, 0.0008993056, -0.0006546807, 0.0012452516, 0.0002889028, + 0.0007559537, -0.0002412928, 0.0011189654, 0.0002064910, 0.0016562985, + -0.0007519855, 0.0014373339, 0.0013897617, 0.0015285362, -0.0008703405, + 0.0003492883, 0.0007872316, 0.0002418466, -0.0003664184, -0.0002510194, + -0.0019411427, 0.0013437070, 0.0008556494, -0.0015069828, -0.0016667128, + 0.0006565959, 0.0007867503, -0.0013971925, -0.0005928027, -0.0007143631, + 0.0001572254, 0.0008449614, -0.0025501866, 0.0008288586, 0.0005790591, + -0.0010294686, 0.0015956727, -0.0008574433, 0.0361419246, -0.0015987123, + 0.0383746102, 0.0015479262, 0.0007001059, 0.0001616545, -0.1912671030, + 0.0007120189, 0.0013379320, 0.0025280481, 0.0017641620, -0.0001068551, + -0.0008410630, 0.0008429086, -0.0001937933, 0.9242221713, 0.0025771486, + -0.0005330709, 0.0018038836, -0.0014241835, -0.0056019812, 0.0004594270, + 0.0011184979, 0.0005020984, 0.0021484667, 0.0005634998, -0.0002571521, + 0.0006765700, 0.0025331303, -0.0001592210, -0.0014584740, -0.0009351554, + 0.0000505722, -0.0001383524, -0.0005284371, 0.0012316550, 0.0000714515, + -0.0007630358, 0.0005814850, -0.0003791461, 0.0000264668, -0.0032962651, + -0.0003077180, 0.0009662868, -0.0003765188, -0.0001653323, 0.0021323692, + 0.0034119894, 0.0014484497, 0.0016129790, -0.0037823217, -0.0016164389, + -0.0002716016, -0.0019917144, 0.0002519845, 0.0010129055, 0.0016625561, + -0.0022287387, 0.0001321845, 0.0003544705, -0.0007357588, -0.0008987410, + 0.0017689988, -0.0006095978, -0.0021310253, 0.0013560725, 0.0002027993, + -0.0012543150, 0.0023115659, 0.0012449347, 0.0035774908, 0.0002495958, + 0.0005388139, 0.0011966426, 0.0085141473, -0.0009507569, 0.0013867528, + -0.0002242047, 0.0005591203, 0.0023944648, -0.0014910959, -0.0000759370, + 0.0008307025, -0.0000893832, 0.0015583937, 0.0010779821, 0.0002745446, + -0.0015678862, 0.0005491823, -0.0014067455, 0.0008352972, 0.0006957089, + 0.0002734098, -0.0001822328, -0.0006829709, -0.0002656735, 0.0000659032, + -0.0019081528, 0.0001078490, -0.0004113292, 0.0022603888, 0.0003236528, + -0.0004824162, 0.0010295534, 0.0014592814, 0.0013969713, -0.0001237281, + -0.0006922195, 0.0005443790, -0.0005268008, -0.0009501933, -0.0001719174, + -0.0008758199, -0.0021407441, -0.0019385903, -0.0018474075, -0.0001729596, + 0.0001721547, -0.0029695986, 0.0021271077, -0.0000480795, -0.0007340778, + 0.0003823410, 0.0008445666, 0.0011623140, 0.0018589267, 0.0019411026, + 0.0012774351, 0.0003230229, -0.0010791798, -0.0006727942, -0.0013843677, + 0.2763130069, 0.0011149384, -0.0036713276, 0.0006956733, -0.0003213097, + 0.0010397491, 0.0016954162, -0.0001221619, 0.0010911380, -0.0016007409, + 0.0009600474, -0.0021214830, -0.0007342687, -0.0003180248, 0.0004799492, + 0.0002899519, -0.0006436761, 0.0022035008, -0.0023415815, -0.0017912439, + 0.0004377016, 0.3178963959, -0.0015469382, -0.0010711197, 0.0015940156, + -0.0017298143, -0.0008502286, 0.0004937171, -0.0014405167, 0.0003775423, + -0.0021045026, -0.0001633679, -0.0009991084, 0.0022356017, 0.0000809606, + -0.0004217857, -0.0007445859, 0.0010794899, 0.0013801698, -0.0005875495, + 0.0002629012, -0.0010661297, 0.0001601182, 0.0013408526, -0.0007831603, + -0.0025315748, -0.0006763859, -0.0036422908, -0.0007341616, -0.0018169768, + 0.0016206767, -0.0012428490, -0.0017604143, 0.0001708410, 0.0001050453, + 0.0019099495, -0.4402412772, 0.0009389017, 0.0014175973, 0.0005796694, + 0.0017957750, -0.0003996051, 0.0016112954, 0.0003410566, -0.0006087277, + -0.0000727456, -0.0007877051, -0.0011697573, 0.0021911338, -0.0000959439, + -0.0023362297, -0.0008666193, 0.0002599955, 0.0014369111, 0.0025774753, + -0.0007240078, -0.0022029867, -0.0011832435, -0.0019183898, -0.0009658728, + 0.0016318085, -0.0011815331, 0.0010997336, -0.0016792256, 0.0019778542, + -0.0003309004, -0.0001343447, -0.0005932169, 0.0003722619, 0.0000319025, + -0.0006269887, 0.0003394443, -0.0006824997, -0.0019808477, 0.0000700837, + 0.0004682024, 0.0010756960, -0.0004809643, -0.0004559024, -0.0005264864, + 0.0006361897, -0.0007883189, -0.0427550860, 0.0023479301, 0.0008931261}; + +float unet_input_time_embedding_50_39[] = { + -0.0000822460, -0.0002381497, 0.0008153496, -0.0016831527, -0.0004065956, + -0.0003307140, 0.0016016788, -0.0007283158, 0.0022853368, 0.0003545112, + -0.0000266819, -0.0004968657, -0.0016063275, 0.0005314737, -0.0000416827, + -0.0002504457, -0.0009786505, -0.0004402709, 0.0024318064, 0.0001754588, + -0.0001128898, -0.0012520105, -0.0010449128, -0.0715119317, -0.0009702777, + 0.0019933709, -0.0003315080, 0.0002448810, -0.0004338300, 0.0006250944, + 0.0017131043, -0.0003622461, -0.0033462588, -0.0011071027, -0.0003449139, + 0.0011858130, 0.0014689472, 0.0015169638, 0.0004138036, -0.0006470438, + 0.0015389379, -0.0001889096, 0.0018213685, -0.0010399828, 0.0014657304, + -0.0004398285, 0.0014544334, -0.0002690097, 0.0000873865, -0.0024069650, + -0.0013617706, 0.0021493861, 0.2098092288, 0.0016146917, -0.0012308833, + -0.0023128034, -0.0014009391, 0.0016206482, -0.0006590942, 0.0014898784, + -0.0022817790, -0.0001035382, 0.0014144280, 0.0015207289, -0.0009767450, + 0.0006289845, 0.0008988241, -0.0008863240, -0.0008282671, -0.0006608331, + 0.0036317091, -0.0006837400, -0.0003359239, -0.0001214584, -0.0009322858, + -0.0017927545, 0.0004050387, -0.0003199140, 0.0012525485, 0.0002745579, + 0.0002410640, 0.0006125543, -0.0002328781, 0.0007048289, -0.0017029184, + 0.0013683485, -0.0001064752, 0.0000173622, -0.0012725461, 0.0016834864, + 0.0006567446, -0.0004698904, 0.0016612867, -0.0004157416, 0.0050112605, + 0.0002006467, -0.0001415215, -0.0031426819, -0.0023126127, 0.0023237457, + 0.0011580307, -0.0008855555, 0.0005512666, -0.0475958399, -0.0018941774, + -0.0002847305, -0.0009482116, 0.0007353174, 0.0006823903, 0.0018297366, + -0.0028788350, -0.0011404548, 0.1847090721, 0.0014670137, 0.0000798441, + -0.0005305591, -0.0013615773, 0.0013655748, 0.0008059172, -0.0020607044, + -0.0030079721, 0.0016795176, 0.2474592179, -0.0007090280, -0.0002907729, + 0.0001410437, 0.0007403293, 0.0006783861, 0.0006472329, -0.0008946150, + -0.0033720587, -0.0013381736, 0.0009729057, -0.0013692882, -0.0003222837, + -0.0014337965, 0.0001072462, 0.0020786794, -0.0010057278, 0.0029876931, + 0.0005786314, -0.0004034161, -0.0015661858, 0.0016096015, -0.0020805825, + 0.0003110371, 0.0009907188, -0.0013959506, 0.0009195788, 0.0003882167, + 0.0000998625, 0.0007223260, -0.0002218098, -0.0019111009, 0.0001989151, + 0.0007596137, 0.0009659464, 0.0004999219, 0.0007810770, -0.0017210441, + -0.0009169616, -0.0012129607, 0.0026282342, -0.0002240063, -0.0013704943, + -0.0000209601, -0.0007033423, 0.0009565707, 0.0478599295, 0.0013087553, + 0.0025510495, -0.0001510978, -0.0011898302, -0.0016311733, -0.0001971480, + -0.0004270901, -0.0001183496, 0.0025862977, -0.0022596456, -0.0001923563, + 0.0010142610, -0.0019832095, -0.0001977738, -0.0020475518, 0.0004459023, + 0.0000123461, 0.0002284981, 0.0003502443, 0.0012864019, -0.0001591877, + -0.0000074471, 0.0030435105, -0.0013092641, 0.0016580147, -0.0001081140, + -0.0011117663, 0.0000748099, -0.0015281411, -0.0008817520, 0.0000830046, + 0.0017784042, -0.0003390801, 0.0009180941, 0.0005690674, 0.0011673477, + 0.0003615012, -0.0010662032, 0.0001908811, -0.0008554084, -0.0004376140, + -0.0002347138, 0.0007502835, 0.0016804771, 0.0015945864, 0.0002879419, + -0.0033300223, 0.0016301624, 0.0010948628, 0.0000476550, -0.0008547941, + -0.0012294129, -0.0007486818, 0.0016024050, 0.0272442251, -0.0004360734, + -0.0000198162, -0.0025708443, 0.0008879348, 0.0007419491, 0.0014441670, + 0.0024941782, -0.0008627111, -0.0001709480, 0.0002036341, 0.0000595003, + -0.0003490783, -0.0022899597, -0.0006893990, -0.0010584313, -0.0011254190, + -0.0001433005, 0.0004750704, -0.0013895070, -0.0007166164, -0.3319910467, + -0.0004991551, -0.0016632094, 0.0004537835, 0.0002330365, 0.0000647940, + -0.0003510918, 0.0037115873, -0.0000752518, -0.0014688708, 0.0001495224, + -0.0010594295, 0.0007370077, 0.0001268279, 0.0003539599, 0.0012100412, + 0.0006059594, -0.0004610368, -0.0002155849, 0.0011008399, -0.0003272732, + 0.0002823928, 0.0030235206, 0.0012085182, -0.0011648573, -0.0008858270, + 0.0002335170, -0.0024015545, -0.0010592106, -0.0007058540, 0.0005023875, + -0.0000033432, 0.0015847771, 0.0004356387, -0.0014495170, -0.0007036366, + 0.1823700219, -0.0000542533, 0.0002407591, -0.0014649602, 0.0022737491, + -0.0001974693, 0.0005746852, -0.0007978830, 0.0009254916, -0.0003022570, + -0.0008706833, 0.0001342471, 0.0006523051, 0.0003887929, 0.0005951505, + -0.0004045768, -0.0005283593, 0.0004927428, -0.0011206302, 0.0017878003, + -0.0021527670, -0.0021003147, -0.0019337902, -0.0001012250, 0.0009855202, + 0.0011321553, -0.0029199519, -0.0011124886, 0.0000632005, -0.0009100502, + -0.0012088385, -0.0012736239, 0.0011197217, -0.0020241109, -0.0002134233, + 0.0013507358, -0.0009015313, -0.0016326648, 0.0000571460, 0.0011929977, + -0.0007049681, 0.0013631247, -0.0022268740, 0.0010821726, 0.0023466120, + 0.0002967664, 0.0019388106, -0.0012530275, -0.0024417061, -0.0004953407, + 0.0010527405, 0.0007230765, 0.0003585684, -0.0004927218, -0.0005212184, + 0.0008638697, 0.0013142035, -0.0001403183, -0.0010348465, -0.0019042133, + -0.0003812080, -0.0000033788, -0.0002866115, 0.3607029021, -0.0014688757, + -0.0023399764, 0.0000180841, 0.0016900945, -0.0006372449, -0.0009508145, + -0.0006857459, 0.0011882260, 0.0025659632, -0.0005624471, -0.0000669938, + -0.0014996724, 0.0001316693, 0.0008974579, -0.0026989128, -0.0024124016, + 0.0024414114, -0.0009581638, -0.0000018175, 0.0005562312, -0.0028438764, + -0.0003542791, 0.0009695427, 0.0012715440, -0.0005155019, 0.1148221642, + -0.0011194786, 0.0007622356, -0.0005529709, 0.0019527953, 0.0010246669, + 0.0011302778, -0.0023322019, 0.0003282230, 0.0005675021, -0.0000188258, + 0.0009362024, 1.2694102526, 0.0004084191, 0.0007002098, -0.0000191336, + 0.0013626588, -0.0000475389, 0.0010234078, -0.0006720540, -0.0002146750, + -0.0000115759, -0.0000304739, -0.0011100941, -0.0004792216, 0.0009878443, + -0.0001765955, 0.0005066926, 0.0003197243, -0.0010417248, -0.0019921996, + -0.0016420346, 0.0005959454, 0.0010284919, -0.0020327033, -0.0012443829, + 0.0025417511, 0.0007466658, -0.0015183534, -0.0004111691, 0.0006604455, + 0.0001699089, -0.0000334368, 0.0013292474, -0.0013267447, 0.0013778205, + 0.0003394685, 0.0000391025, 0.0000835019, -0.0017320476, 0.0015257522, + 0.0010635222, 0.0018715279, 0.0004992912, 0.0003416820, 0.0016915165, + 0.0008823941, 0.0008355035, 0.0007644600, -0.0006153763, -0.0005611401, + 0.0004482716, 0.0008992001, 0.0004058861, -0.0007230924, -0.0001266788, + 0.0004628840, -0.0007287404, 0.0009731394, -0.0022485806, -0.0000937444, + 0.0009292723, 0.0006335923, -0.0010341372, 0.0008930631, -0.0004403854, + 0.0003537540, 0.0009147464, 0.0014138140, 0.0000331490, 0.0001785657, + 0.0003685565, -0.0008501690, 0.0007257338, 0.0010883033, 0.0003687856, + 0.0004726169, 0.0007930556, 0.0003787200, 0.0021816278, -0.0012143702, + 0.0004297378, 0.0006418731, 0.0008079413, -0.0025930516, 0.0009548683, + 0.0008703757, 0.0008799676, -0.0010867370, -0.0007222212, 0.0001581884, + 0.0008350150, 0.0004245525, -0.0035760212, 0.0003272314, -0.0014965194, + -0.0109536573, 0.0002979729, -0.0011810473, -0.0015647737, 0.1909760535, + -0.0001050977, -0.0009334651, 0.0004787340, 0.0002391750, 0.0022319744, + 0.0000818056, -0.0005326823, 0.0008611400, -0.0021862350, -0.0009361922, + -0.0010318710, 0.0634415597, 0.0010669297, -0.0020639752, -0.0002679965, + -0.0046793004, -0.0009804126, 0.0001110430, -0.0000400813, 0.0016697391, + 0.0009584972, -0.0009578806, -0.0010144394, -0.0003475095, -0.0001993762, + -0.0016620329, 0.0009293797, -0.0000056179, 0.0004205434, -0.0026487042, + 0.0001271020, -0.0002254706, -0.3706981838, -0.0006971853, 0.0004749671, + -0.0007032985, 0.0013476838, -0.0012987428, -0.0000354992, -0.0015193601, + -0.0002547638, 0.0011054999, 0.0005222337, 0.0001500398, -0.0000623954, + -0.0011638782, -0.0006787078, 0.0007980135, -0.0008609202, 0.0019364210, + -0.0014031820, -0.0013345699, 0.0014490350, -0.0029527715, -0.0006025166, + -0.0013484468, 0.0011004244, 0.0005300262, -0.0012419047, -0.0014044687, + -0.0011384480, -0.0016958234, 0.0003037145, -0.0016946602, 0.0011734478, + 0.0002917917, 0.0001545092, 0.0007708911, 0.0005945838, -0.0016780952, + -0.0901442468, 0.0007879194, 0.0007875033, -0.0002507488, -0.0000908957, + 0.0006569690, -0.0026249713, -0.0012470102, 0.0010614577, 0.0014539668, + 0.0013293214, -0.0003732833, -0.0009418181, 0.0006962311, -0.0019357558, + -0.0011451924, -0.0015414436, -0.0001031389, -0.0014552698, -0.0005618236, + -0.0019622091, 0.0019143848, 0.0011035118, -0.0012045631, -0.0015327432, + 0.0012439135, -0.0000822265, -0.0004391237, -0.0002081487, 0.0004277057, + 0.0012416299, -0.0021661250, 0.0056781643, -0.0010018839, -0.0008725638, + 0.0008091901, 0.0000243201, -0.0007335169, -0.0011779945, 0.0011536400, + 0.0020585242, -0.0001877141, -0.0000534263, 0.0005759913, -0.0009110840, + -0.0003528330, -0.0006934890, -0.0017680153, 0.0017696060, 0.0017722510, + -0.0003128373, -0.0017660088, 0.0010222206, 0.0013503602, 0.0026980354, + -0.0022350715, -0.0001846371, -0.0021075408, 0.0005280514, 0.0005553891, + -0.0004275027, 0.0002177022, -0.0011674133, -0.0005409168, -0.0017637890, + 0.0006619906, -0.0006514145, 0.0011704201, -0.0003791372, 0.0014997327, + 0.0003604200, 0.0028991671, 0.0012027337, -0.0009162980, -0.0012647505, + -0.0004747608, 0.0005090197, 0.0004338573, -0.0001714081, -0.0000649719, + 0.0002780189, -0.0021539589, -0.0000596944, 0.0001527697, -0.0001910552, + -0.0011537028, -0.0004669733, 0.0006171040, 0.0008152351, -0.0009414512, + -0.0020631892, 0.0015389407, 0.0005471904, -0.0001876727, 0.0027458980, + 0.0019873679, 0.0008853739, 0.0006153921, 0.0004500900, -0.0008500898, + 0.0022108383, -0.0000015469, 0.0004802977, -0.0004001716, -0.0021340423, + 0.0014336847, 0.0000144783, 0.0001165625, 0.0009363183, 0.0001309565, + 0.0011954801, -0.0005383897, 0.0002969879, -0.0002353216, -0.0024949801, + -0.0001091417, -0.0011252135, 0.0011346857, -0.0009825125, -0.0002843541, + -0.0013641657, 0.0002737471, 0.0005207085, -0.0006684531, -0.0005809851, + -0.0017657545, -0.0008257871, 0.0009680726, 0.0004178081, 0.0002146238, + 0.0014017825, -0.0000565150, -0.0000814395, -0.0002777291, 0.0001258347, + 0.0016197092, -0.0010404550, 0.0003318905, 0.0023810794, -0.0009926287, + 0.0010269834, -0.0018554050, -0.0021767549, 0.0008709459, 0.0000889401, + -0.0006937252, -0.0005851469, -0.0010078698, 0.0012419892, -0.0030387230, + -0.0000874465, -0.0004228740, -0.0008893290, -0.0002343461, -0.0017902730, + -0.0024273675, -0.0002507661, 0.0003917678, -0.0001602611, -0.0005189519, + 0.0006320542, 0.0104729058, -0.0003057748, 0.0004770542, -0.0017254143, + -0.0009865358, 0.0002193451, -0.0024510208, -0.0010111041, -0.0016100816, + 0.0002557822, -0.0003173817, -0.0009480455, 0.0003287745, -0.0015617774, + 0.0024854322, -0.0022405842, 0.0003853666, 0.0018195328, -0.0009654604, + 0.0016589337, -0.0034308378, 0.0004417410, -0.0009537353, -0.0017857434, + 0.3613783717, -0.0013924935, -0.0006255675, -0.0001958781, -0.0017381543, + -0.0020174216, -0.0008338308, 0.0009664483, -0.0010818252, -0.0007711505, + -0.0001450996, -0.0012032060, -0.0013718986, 0.0004635113, -0.0004667966, + 0.0020753851, -0.0003483854, -0.0007857853, -0.0002792482, -0.0002876178, + 0.0008739089, 0.0020848722, 0.0000638649, 0.0006527368, 0.1135351062, + 0.0005793825, 0.0018194842, 0.0011392082, 0.0008870815, 0.0013667629, + 0.0000300407, -0.0015008756, -0.0014536916, -0.0025345837, 0.0018109852, + -0.0004590047, 0.0010508215, -0.0013261992, 0.0010344677, -0.0007766373, + 0.0006188750, 0.0019902335, -0.0001931139, 0.0009405701, 0.0002959725, + -0.0021497933, -0.0001630384, -0.0015195722, 0.0014790809, 0.0003742967, + 0.0012980090, -0.0052290899, 0.0010653557, -0.0027739429, 0.0004059109, + -0.0006068159, -0.0004360576, -0.0006827335, -0.0009957585, 0.0003148855, + 0.0004617861, 0.0013190433, 0.0002749482, -0.0152501436, 0.0014861673, + 0.0002513780, -0.0005041736, -0.0004925333, -0.0018392266, -0.0004859022, + -0.0012112102, -0.0000012654, -0.0022953276, 0.0009301628, -0.0009400634, + -0.0024688239, -0.0001812975, 0.0005425209, 0.0000123889, -0.0011603045, + -0.0010395870, 0.0002865386, -0.0003300360, 0.0009344490, -0.0012480577, + -0.0005796966, 0.0008045103, 0.0006957972, 0.0011741996, 0.6708433628, + -0.0003612689, 0.0003607795, -0.0001665166, 0.0011346580, -0.0019247306, + -0.0009770899, 0.0005726083, -0.0014490150, -0.0016992523, -0.0014120601, + -0.0004846223, 0.0019429717, 0.0020630953, 0.0003393525, 0.0007089678, + -0.0011589252, 0.0002402659, 0.0330461338, 0.0007909201, 0.0010155265, + 0.0003177212, -0.0007150350, 0.0005318412, -0.0009913016, 0.0003261953, + -0.0000153063, -0.0011869448, -0.0004889991, -0.0002496336, -0.0002285084, + -0.0048466250, -0.0013116687, 0.0013290211, -0.0010665832, -0.0004536640, + 0.0004656883, 0.0013673254, -0.0009445064, 0.0012495791, 0.0015808325, + 0.0001865430, -0.0004050201, -0.0017500576, -0.0014836213, -0.0003485401, + 0.0007719523, 0.0076904255, -0.0002514934, -0.0003784890, -0.0025627739, + 0.0013552806, 0.0015296596, 0.0019464307, 0.0010046734, 0.0015616433, + 0.0750456229, 0.0004071194, 0.0006074524, -0.0009090099, 0.0005646765, + 0.0025014442, -0.0005066176, -0.0006548101, 0.0006527712, -0.0023273320, + -0.0003037716, -0.0001781022, -0.0015339777, -0.0005656080, 0.0009197942, + 0.0016771865, -0.0002194846, 0.0007226724, -0.0009899903, -0.0002542716, + 0.0015577795, -0.0005024986, -0.0022141412, -0.0009097145, -0.0009444801, + -0.0024869358, 0.0018448839, -0.0020675184, -0.0012394465, -0.0011691209, + 0.0003031113, 0.0010315318, 0.0004065065, 0.0002687783, -0.0033834232, + 0.0014280768, 0.0010560774, -0.0010457179, -0.0006464520, 0.0000814805, + -0.0007968843, 0.0012577078, -0.0003310228, -0.0003357683, 0.0008561672, + -0.0036680019, 0.0003389174, 0.0006021464, 0.0015762184, 0.0003981403, + 0.0017582048, -0.0002019030, -0.0036267764, 0.0007298985, 0.3556582928, + 0.0009915547, -0.0000621649, -0.0009279950, 0.0012243583, 0.0004574368, + 0.0017018672, -0.0026513203, -0.0010770792, 0.0010029897, -0.0009384160, + 0.0002367803, -0.0018827380, -0.0035888534, 0.0017344232, -0.0000561378, + -0.0014152243, 0.0016490648, 0.0015815012, -0.0007606712, 0.0001207094, + -0.0008101636, -0.0015662131, -0.0019219085, 0.0013263565, 0.0024658244, + 0.0017363806, 0.0002381070, 0.0000406727, 0.0008232761, -0.0012496030, + 0.0000265993, 0.0010523675, 0.0006291298, 0.0006944919, -0.0006901054, + 0.0007833475, -0.0009650105, 0.0007692066, 0.0012229336, -0.0014115779, + 0.0002938258, 0.0004349686, -0.0000347686, 0.0019724946, -0.0005120963, + 0.0006755644, 0.0005086167, -0.0010696375, 0.0000955439, -0.0019440013, + 0.0016470674, -0.0003169121, 0.0009136028, 0.0014843582, 0.0003791624, + 0.2036788911, 0.0005599796, -0.0008463482, 0.0010039618, 0.0002463013, + -0.0010463208, -0.0009801402, 0.0000735289, 0.0003381018, -0.0004930795, + -0.0008030359, -0.0011397703, -0.0010951092, 0.0005497911, -0.0012655080, + -0.0020798882, 0.0015147291, -0.0016317763, -0.0003416669, -0.0007310323, + -0.0003509908, -0.0011012073, -0.0001519741, 0.0003423784, 0.0006739614, + -0.0000778278, -0.0004204500, -0.0024387238, -0.0007355033, 0.0000665905, + -0.0004790062, 0.0004183392, -0.0007439969, -0.0023093990, 0.0001469995, + -0.0003812132, 0.0007528806, -0.0011211629, -0.0001971722, -0.0020910432, + -0.0015205222, -0.0013830244, 0.0007216157, -0.0002878415, -0.0002512205, + 0.0010533868, 0.0007097796, 0.0026489664, 0.0007988142, -0.0004935558, + 0.0002130182, 0.0001228754, 0.0001963158, 0.1300311536, 0.0002338635, + 0.0292778388, 0.0016591016, -0.0002026181, -0.0012245609, -0.1063519493, + 0.0011138483, 0.0005322793, 0.0001446065, -0.0004096739, 0.0009989238, + 0.0010553543, 0.0003238467, -0.0010071034, 0.9597470164, 0.0000501410, + 0.0008804407, 0.0012057668, 0.0007164275, -0.0063235234, -0.0010316428, + -0.0003466955, 0.0013188254, -0.0016001859, 0.0021424717, -0.0004464849, + 0.0011130655, -0.0012082336, -0.0003182599, -0.0003045066, 0.0003409262, + -0.0006085944, -0.0004715251, 0.0019482188, 0.0003098533, 0.0026660361, + -0.0004571495, -0.0011096408, 0.0000746055, 0.0002912446, 0.0005757844, + -0.0015095116, -0.0000413028, -0.0021229545, -0.0007029297, 0.0012137368, + 0.0008681717, -0.0016522314, 0.0012021372, 0.0011521243, -0.0018453002, + -0.0023547728, -0.0026819129, 0.0000287763, 0.0027492626, 0.0029834118, + 0.0003517456, 0.0011053821, -0.0020410628, 0.0005357843, -0.0014219189, + 0.0024124475, 0.0014758472, -0.0017446755, 0.0014354219, -0.0006254233, + 0.0016027489, 0.0017162934, 0.0002360209, 0.0011951872, 0.0022505624, + -0.0017298507, -0.0023370313, -0.0006463709, -0.0010271682, 0.0000499743, + -0.0018110345, -0.0010855730, 0.0002116079, 0.0009089056, 0.0025294435, + -0.0002017617, -0.0004585660, 0.0023597148, 0.0028085404, -0.0029590023, + 0.0002315430, 0.0011386164, 0.0010020393, 0.0004858505, 0.0002436158, + 0.0012963829, -0.0015228526, -0.0010803067, 0.0005604737, -0.0003820397, + -0.0006454387, 0.0019334722, -0.0011305631, -0.0015239064, -0.0008133920, + 0.0001662220, 0.0011251117, 0.0002918197, 0.0003569345, 0.0000302030, + 0.0001972881, -0.0000764127, -0.0015884014, 0.0004376754, -0.0005564928, + 0.0000031542, -0.0005245460, -0.0018503827, -0.0005294560, -0.0031644199, + 0.0009101096, -0.0000386907, 0.0022191876, 0.0005501583, 0.0011666776, + 0.0001905207, 0.0015471601, 0.0009191802, -0.0002348643, 0.0005828952, + -0.0017883833, 0.0005804772, -0.0000520626, 0.0001656485, 0.0006150217, + 0.2834462225, 0.0000264777, -0.0014770961, -0.0003948079, -0.0010779460, + 0.0000345033, -0.0006152901, -0.0004075792, -0.0002649797, 0.0001942278, + -0.0035146214, -0.0000759707, 0.0002829074, 0.0002584006, 0.0002281498, + 0.0005195182, -0.0009202734, 0.0025132829, -0.0005256273, -0.0045180856, + 0.0004067537, 0.2844447494, -0.0004122781, -0.0006296989, -0.0011237985, + 0.0002825642, -0.0003668639, -0.0012785305, -0.0011381472, 0.0001591370, + 0.0007051718, -0.0015286477, 0.0004832116, -0.0004572039, 0.0001337512, + -0.0016903644, -0.0010998067, 0.0013648528, 0.0014304705, -0.0012937766, + 0.0021914740, 0.0004046117, -0.0015300054, -0.0011060215, 0.0002472387, + -0.0004277120, -0.0011654636, -0.0024056444, 0.0005586119, -0.0001459792, + 0.0001616551, -0.0010758340, 0.0001300392, 0.0001926470, -0.0016507767, + -0.0006089447, -0.3256118000, -0.0001933440, -0.0004752204, 0.0005971289, + 0.0030978255, -0.0001130973, 0.0002227251, -0.0010272337, -0.0000700131, + -0.0013289456, -0.0013667162, 0.0009553673, -0.0011469596, 0.0024721683, + -0.0030379058, -0.0007381384, 0.0013764664, 0.0013363077, 0.0008418588, + -0.0016167052, -0.0006443784, 0.0006895936, 0.0006275539, 0.0007161330, + -0.0004920792, -0.0002276427, 0.0004782341, -0.0002045194, 0.0002862837, + -0.0006017821, 0.0017133332, -0.0025782543, 0.0016760543, 0.0008011628, + -0.0012958352, -0.0019043679, 0.0026775515, 0.0003925533, -0.0013519221, + -0.0002555698, -0.0026857397, -0.0000479694, -0.0001634285, -0.0012437003, + 0.0009675878, 0.0005611759, -0.0507084131, -0.0006640501, 0.0005429402}; + +float unet_input_time_embedding_50_40[] = { + -0.0003096145, 0.0002079864, -0.0008287886, 0.0002666000, 0.0001965156, + -0.0012981719, 0.0016748090, -0.0002365042, -0.0001891085, 0.0000198189, + 0.0013922008, 0.0000067730, -0.0014664801, 0.0009291074, 0.0012008487, + 0.0009289053, -0.0001668595, -0.0009800906, 0.0014662157, -0.0010494427, + 0.0007138909, -0.0001745624, -0.0002549348, -0.0672773346, 0.0004062110, + -0.0009267004, -0.0007606810, -0.0027152561, 0.0007767278, -0.0001303656, + 0.0016536880, 0.0002916621, -0.0025007185, -0.0007674787, 0.0012946387, + 0.0002733432, -0.0021615699, 0.0015154787, -0.0002470696, -0.0004180418, + 0.0014512809, 0.0004188521, 0.0005220817, -0.0002331957, 0.0005964108, + -0.0023867416, 0.0013705574, 0.0007145624, -0.0009111033, -0.0007105567, + 0.0005443855, 0.0035142454, 0.2173087448, 0.0013463199, 0.0005755500, + 0.0005178542, -0.0014453760, 0.0011780441, -0.0009506657, -0.0009327556, + -0.0019720723, 0.0012563871, 0.0012244885, 0.0002071087, 0.0008809520, + 0.0015424825, 0.0011923024, -0.0016293033, -0.0012828754, 0.0013876692, + 0.0012741059, -0.0004261187, 0.0001827655, -0.0003620628, -0.0010508122, + -0.0020972183, 0.0022717793, 0.0005167052, -0.0003701260, -0.0001660094, + -0.0003961865, 0.0013044140, -0.0009167287, -0.0008232591, -0.0012636154, + -0.0011979265, -0.0003466057, -0.0008747014, -0.0021602819, 0.0009526464, + -0.0012577990, 0.0003105788, 0.0000442453, -0.0026512393, -0.0034838547, + 0.0007146946, -0.0000334694, -0.0010483256, -0.0015344658, 0.0003361451, + 0.0017745434, 0.0012009274, -0.0023205234, -0.0542621277, 0.0003067327, + 0.0000599297, -0.0000410113, 0.0003889697, 0.0011817745, 0.0006041168, + -0.0041808258, 0.0008762288, 0.1610827446, 0.0008326033, 0.0003494648, + 0.0016386495, -0.0010661534, 0.0016691762, -0.0015559413, -0.0014784539, + -0.0009626346, 0.0007530136, 0.2630167603, 0.0010068561, -0.0002092738, + -0.0012765098, -0.0013869996, 0.0016563504, -0.0010341275, 0.0006662090, + -0.0011248942, -0.0010669045, 0.0001226047, -0.0002030013, 0.0012560601, + -0.0017383809, -0.0002057422, -0.0001817569, -0.0003274083, -0.0003729574, + 0.0012896114, -0.0005618562, 0.0001341412, -0.0007549264, -0.0005879134, + 0.0002650698, 0.0011124951, 0.0000826865, 0.0000597900, -0.0021121795, + 0.0020406554, 0.0005839377, 0.0003597313, 0.0003831799, -0.0005497001, + -0.0014762324, -0.0005960893, -0.0006298227, 0.0008088301, -0.0015065074, + -0.0003138070, -0.0022003376, -0.0004840959, -0.0006212858, -0.0006077006, + 0.0001986090, 0.0009134593, -0.0018248493, 0.0748606026, -0.0002893440, + 0.0004906907, -0.0001374185, 0.0003905920, -0.0015392667, -0.0001336858, + -0.0013695927, -0.0003453693, 0.0006010486, 0.0004873541, -0.0008863900, + -0.0009194151, -0.0024164421, -0.0036459132, -0.0000608298, 0.0006264122, + -0.0002583503, 0.0012203576, 0.0010258644, 0.0000477722, -0.0000469266, + 0.0004784814, 0.0014462820, -0.0012260407, -0.0016262152, -0.0011949474, + 0.0007646405, 0.0015953825, -0.0010332474, -0.0006153492, 0.0000627306, + 0.0001704115, 0.0011307616, -0.0018876251, 0.0014533338, 0.0002553212, + -0.0019124532, -0.0007237515, -0.0016945945, 0.0009492650, -0.0004631232, + -0.0004000524, 0.0001588948, -0.0011203266, -0.0008493590, 0.0004047910, + -0.0017265920, 0.0019181882, 0.0007706308, -0.0023942967, 0.0008373976, + 0.0002102256, -0.0001226562, 0.0005394842, 0.0292613469, 0.0001676316, + 0.0018385574, 0.0018246444, 0.0009079000, 0.0015552638, 0.0010159365, + -0.0009246487, -0.0005842904, -0.0018178937, -0.0009430773, 0.0005202247, + -0.0002906355, -0.0004180833, 0.0013770396, 0.0018370580, -0.0000488106, + 0.0004649230, -0.0001698493, -0.0017180492, -0.0005261600, -0.2192906290, + -0.0025024225, -0.0011187580, 0.0017165147, -0.0009918767, 0.0010654528, + -0.0000516511, 0.0006427444, -0.0000579297, -0.0009913193, 0.0009306935, + 0.0022757344, -0.0003582877, 0.0017755727, 0.0002225146, 0.0004714244, + 0.0002570068, 0.0007630985, -0.0013672134, 0.0058334279, 0.0003785609, + 0.0002363599, -0.0020736782, -0.0006532022, -0.0009165267, -0.0004942734, + -0.0008941106, -0.0006530648, -0.0032948435, 0.0018802324, -0.0002219982, + -0.0001326652, 0.0011810302, 0.0002205679, 0.0004226817, -0.0005900261, + 0.1602392048, 0.0006873570, 0.0007135702, -0.0015308233, -0.0028453441, + 0.0015078941, 0.0013983189, 0.0014028724, -0.0005844817, 0.0010448718, + -0.0000919263, 0.0007071006, 0.0008500256, -0.0009138135, -0.0011502877, + -0.0000350685, -0.0018094853, 0.0001829830, -0.0001608822, 0.0013077310, + 0.0002190061, -0.0016304145, 0.0004133816, -0.0001713056, 0.0005359810, + -0.0007788469, -0.0006681383, -0.0018594819, -0.0007054675, -0.0001296019, + 0.0005678334, -0.0005995440, 0.0013368644, 0.0001533651, -0.0004027053, + 0.0009892150, -0.0016100960, -0.0004717293, 0.0000301753, -0.0014060470, + -0.0008713193, -0.0004224419, -0.0009368362, 0.0010120943, 0.0011592266, + 0.0000029667, -0.0023293961, -0.0005736146, -0.0149116106, -0.0001192335, + -0.0008927248, 0.0008045966, -0.0000758833, 0.0001543225, -0.0005327757, + -0.0012324248, 0.0004893646, -0.0008793742, -0.0009783111, 0.0002346127, + -0.0009676749, -0.0011791030, -0.0008919465, 0.2873716950, 0.0006204250, + 0.0005264124, 0.0016766387, 0.0006935034, -0.0009886336, 0.0000364765, + 0.0000928361, -0.0016066353, -0.0003013872, -0.0002585296, 0.0000288648, + 0.0003438415, 0.0025363974, -0.0003328634, -0.0013196799, 0.0007593357, + 0.0003449358, -0.0020603281, 0.0003487486, -0.0000660312, -0.0003325833, + -0.0000948182, -0.0005729836, 0.0000167908, 0.0002123462, 0.1425679177, + 0.0008425778, 0.0000990378, 0.0005162715, -0.0003475649, -0.0002592152, + 0.0013949384, -0.0003859017, 0.0002744880, 0.0008244382, 0.0009928131, + 0.0025034358, 1.1842626333, 0.0002611048, 0.0010752091, 0.0016011549, + 0.0013315079, 0.0007073986, -0.0015739151, 0.0000270125, -0.0008498528, + 0.0020036204, -0.0010113675, -0.0026240074, 0.0003621532, 0.0011302414, + -0.0008492433, -0.0014895163, 0.0004035361, 0.0011644340, -0.0004356354, + -0.0040200464, 0.0010467577, -0.0006924614, -0.0000014165, -0.0003433116, + 0.0003546900, 0.0001260218, -0.0014374927, -0.0024082779, 0.0012864796, + -0.0002707909, 0.0021726219, -0.0024412314, 0.0004561054, 0.0010576439, + 0.0010916139, -0.0005161637, 0.0001087948, -0.0006469861, 0.0028515728, + -0.0004210409, 0.0004269823, -0.0004985276, 0.0010697402, 0.0014873995, + 0.0007654238, 0.0000815308, 0.0002478589, -0.0018702915, -0.0010809866, + 0.0006556907, -0.0016729941, 0.0009404439, -0.0010543205, -0.0005511156, + 0.0000944966, 0.0009098295, 0.0012827592, -0.0018141135, 0.0000997342, + 0.0007720515, -0.0008422639, -0.0006471727, 0.0013650807, -0.0006507423, + -0.0006354800, 0.0020553414, 0.0007562423, -0.0008706558, -0.0008183122, + 0.0002512680, 0.0008492507, 0.0020597556, 0.0005398346, 0.0012069559, + -0.0007854709, 0.0000543175, 0.0025927983, -0.0016169916, 0.0005105771, + 0.0000020028, 0.0001036897, -0.0011484895, -0.0024191602, -0.0026170239, + 0.0006639231, -0.0007934035, -0.0002065445, 0.0011925214, 0.0004467615, + 0.0001391693, -0.0001779241, 0.0005552545, -0.0000556782, -0.0005157702, + -0.0024281126, -0.0012417641, -0.0005889673, -0.0012339428, 0.1865599900, + 0.0006933201, -0.0011564450, 0.0006174957, -0.0017419872, 0.0017825698, + 0.0013038622, 0.0005970474, 0.0015574386, -0.0006006183, 0.0015711279, + -0.0019544624, 0.0388961248, 0.0000109221, 0.0005581682, -0.0020244515, + -0.0075885407, 0.0012429245, 0.0002658125, 0.0015750756, 0.0008044718, + 0.0012667822, -0.0009382572, -0.0008716471, 0.0019056550, -0.0005314355, + 0.0003506127, 0.0022942917, -0.0014269397, 0.0013429536, -0.0008885888, + 0.0008406576, -0.0016659158, -0.2090888917, 0.0001766952, 0.0002191163, + -0.0002686968, 0.0012228908, -0.0007362054, -0.0002599801, -0.0012497818, + 0.0003096699, 0.0009054509, 0.0005538784, 0.0016670763, -0.0002631806, + 0.0003594634, 0.0005685029, 0.0001818761, -0.0016281223, 0.0005821806, + -0.0000545066, -0.0005132752, -0.0010300218, -0.0020793050, -0.0013330814, + -0.0014438934, 0.0000716322, 0.0011966901, -0.0000351658, -0.0009062857, + -0.0028698167, 0.0001433492, 0.0012587579, -0.0007510046, 0.0010630081, + 0.0005977000, -0.0000017099, 0.0005162135, -0.0014645546, -0.0015871646, + 0.0503158420, -0.0019107279, 0.0003800208, 0.0001859502, 0.0019782833, + 0.0007459350, -0.0033665742, 0.0001819986, 0.0001849155, 0.0007395530, + -0.0013360847, 0.0015504429, -0.0004839501, 0.0015659144, -0.0000291751, + 0.0006273855, -0.0019733282, 0.0003327911, -0.0015314077, -0.0008051833, + -0.0030402509, 0.0016233255, 0.0007495601, -0.0009670404, 0.0005565919, + 0.0006796299, -0.0008050444, 0.0005623787, -0.0008304240, -0.0002031536, + -0.0001051128, -0.0007857523, 0.0020461218, -0.0009932510, 0.0000785906, + -0.0005038634, -0.0001444211, -0.0006091816, -0.0017143148, 0.0006625238, + 0.0010593972, -0.0003756951, 0.0036968300, 0.0009698914, 0.0003289930, + -0.0014997846, -0.0014071077, -0.0007662969, -0.0000338969, -0.0009936653, + -0.0009481427, 0.0002074912, -0.0039410647, -0.0007745585, 0.0021556397, + -0.0018939900, 0.0012687185, -0.0014117572, -0.0015923256, 0.0011178905, + -0.0019809024, 0.0013938635, -0.0005363510, 0.0015096401, 0.0003323578, + 0.0000928110, -0.0002125826, -0.0001197834, 0.0002055084, -0.0001992204, + -0.0003941520, 0.0006652813, -0.0000179349, 0.0015027127, -0.0010639452, + 0.0007508555, -0.0010083148, 0.0005781939, 0.0012048471, 0.0000010254, + 0.0012442872, -0.0015423798, -0.0008986442, 0.0004791075, 0.0013980698, + -0.0005433755, 0.0002735888, -0.0005734359, 0.0019823173, -0.0004646487, + -0.0009986787, 0.0003175410, 0.0000712129, -0.0010455453, 0.0009171744, + -0.0006393880, -0.0004707715, 0.0001294196, -0.0046047238, -0.0004035858, + 0.0004725355, -0.0024026055, 0.0013428254, 0.0004894766, 0.0014748075, + -0.0007416054, -0.0017278397, -0.0005119741, -0.0000541769, 0.0008854428, + 0.0003681378, 0.0006839237, 0.0020892462, 0.0002238458, -0.0005436130, + 0.0013276362, 0.0003931875, 0.0018028519, -0.0013458978, -0.0020229728, + 0.0003944619, -0.0007904726, -0.0011043873, 0.0010740494, 0.0012699477, + 0.0009249868, 0.0007378060, -0.0006960500, 0.0002509262, 0.0007741386, + 0.0011826518, 0.0000136276, -0.0013215523, 0.0001176774, 0.0016904455, + -0.0012476142, -0.0010657613, 0.0011128306, 0.0006039683, 0.0004529152, + 0.0001000231, -0.0014889063, -0.0021546830, 0.0012256615, -0.0006579810, + -0.0022224421, 0.0010052219, 0.0004471913, 0.0011851469, -0.0007299539, + 0.0006318698, -0.0019701733, 0.0007160695, -0.0002088986, -0.0004084818, + -0.0012994711, -0.0001685387, 0.0009141690, -0.0015803606, 0.0012015933, + 0.0009774887, 0.0145555483, -0.0008155096, 0.0008782381, -0.0018435277, + 0.0011467556, 0.0018861294, -0.0008083702, -0.0014416048, 0.0002557514, + 0.0008973684, -0.0010123635, -0.0002821981, 0.0018509706, -0.0009422584, + 0.0018273457, -0.0014030952, -0.0005818920, 0.0010062563, -0.0010856583, + -0.0007264742, -0.0017648702, 0.0005323675, -0.0010999679, -0.0025766781, + 0.2844092846, 0.0002096132, -0.0006969697, -0.0017669136, -0.0013223188, + 0.0009793025, -0.0019621747, -0.0001620618, -0.0024511029, -0.0004286882, + -0.0010149144, 0.0009189133, 0.0006612140, -0.0006107020, -0.0007705484, + 0.0022286593, -0.0000851671, -0.0023339200, 0.0003858623, -0.0008662099, + -0.0017504795, 0.0011522267, -0.0007007919, -0.0001600531, 0.2466568053, + -0.0014752240, 0.0000115386, -0.0004795615, 0.0002637212, 0.0014556446, + 0.0011013811, -0.0012874500, -0.0007785545, 0.0008971710, 0.0004277183, + 0.0014640861, 0.0012623840, 0.0014193784, 0.0006823542, 0.0002450971, + 0.0009289893, 0.0003043367, 0.0007520225, -0.0017704736, 0.0001081512, + -0.0023387587, -0.0010524979, -0.0011255045, 0.0014683125, 0.0004268982, + -0.0008560638, 0.0046289968, -0.0003821058, -0.0016423669, 0.0008862671, + 0.0002584310, 0.0011299674, -0.0004175309, -0.0014835610, -0.0005354512, + -0.0003261180, -0.0020720102, 0.0004782864, -0.0151275760, -0.0012701943, + -0.0001450818, 0.0020096910, -0.0002374301, -0.0005988348, -0.0014098827, + -0.0024391548, -0.0013491018, -0.0013894171, 0.0001774708, -0.0013547697, + -0.0009993223, 0.0019600361, -0.0016553659, 0.0005014283, -0.0005483921, + 0.0004981477, 0.0003363891, 0.0008174223, 0.0004736041, -0.0006410379, + 0.0022311425, 0.0009019257, -0.0003526424, -0.0005170980, 0.5652836561, + -0.0003690566, 0.0013813959, -0.0017042988, 0.0000277192, -0.0004866284, + 0.0004721389, -0.0001211772, -0.0006821505, -0.0016301291, -0.0001354585, + -0.0012358590, 0.0025920207, -0.0004246882, -0.0013520550, 0.0002085109, + -0.0003118778, 0.0005293265, 0.0310514886, -0.0005548424, -0.0008573084, + -0.0010445286, 0.0006608134, 0.0018637809, -0.0011144048, -0.0005803963, + -0.0009155916, -0.0011128115, -0.0007333761, -0.0003744550, -0.0000781817, + -0.0098367669, -0.0012888936, 0.0003169021, -0.0017405641, -0.0008714106, + -0.0002580523, 0.0004525245, 0.0003795070, 0.0018479064, 0.0002482301, + 0.0005159052, 0.0023451997, -0.0003527896, -0.0019098476, 0.0006799174, + -0.0005889330, 0.0002670749, -0.0001130374, -0.0013280357, -0.0020842482, + -0.0006240597, 0.0001847211, 0.0011380101, 0.0023177136, 0.0008599286, + 0.0742665231, -0.0008225321, -0.0000943756, -0.0005555807, -0.0008020813, + 0.0015986515, 0.0017429986, -0.0003344677, 0.0009870015, 0.0020234957, + 0.0010060202, -0.0000262889, -0.0007251301, -0.0010151216, -0.0000542649, + 0.0012923081, 0.0011595597, -0.0021025152, -0.0018009109, 0.0002007522, + 0.0002056677, -0.0005081075, -0.0003351029, 0.0013723746, -0.0008423538, + -0.0002349466, 0.0003921986, -0.0017210279, -0.0010188543, 0.0000582538, + -0.0001289366, 0.0012422575, 0.0017384812, -0.0000127708, -0.0002155323, + 0.0000967372, 0.0004313956, -0.0012447459, -0.0011188206, 0.0018660082, + -0.0018455833, 0.0012267337, 0.0007492574, -0.0003304649, -0.0002875780, + -0.0023979228, -0.0008274899, 0.0000000871, 0.0009503056, -0.0014702970, + -0.0007839580, 0.0007428076, -0.0007180228, 0.0003166231, 0.2817551196, + -0.0001875358, -0.0001344699, -0.0024411157, -0.0004546491, 0.0010724273, + 0.0020082141, -0.0001142790, -0.0006140089, 0.0019057286, 0.0000688438, + -0.0003542531, 0.0009726644, -0.0022997223, 0.0010560553, -0.0011184677, + -0.0000174050, 0.0009266884, 0.0003898405, 0.0011583674, -0.0013662225, + 0.0002253903, -0.0004406972, -0.0002148142, 0.0024152217, 0.0017408901, + 0.0021371441, 0.0030331400, 0.0002122507, -0.0007040277, 0.0007299688, + -0.0028056733, 0.0014446499, 0.0010799067, 0.0005303188, 0.0003700573, + -0.0013209058, 0.0002247870, 0.0012187482, 0.0013491400, 0.0003192150, + -0.0000673751, -0.0006326525, -0.0008055544, -0.0009090978, 0.0019793229, + -0.0029178644, 0.0001626834, -0.0016206673, 0.0002850648, -0.0011247802, + 0.0003455282, -0.0000125146, 0.0003848081, -0.0008044983, -0.0000016899, + 0.1452041864, 0.0002485262, -0.0013112547, 0.0002472086, -0.0008350306, + 0.0000524979, 0.0008186344, 0.0004635077, -0.0011224523, -0.0016049470, + 0.0007578733, -0.0015918994, 0.0001286259, -0.0003281045, -0.0009702010, + -0.0012477823, 0.0004807045, 0.0001010317, -0.0019384196, -0.0001691449, + -0.0004512353, -0.0007235628, 0.0008276701, 0.0012943298, 0.0002892488, + 0.0010653851, -0.0008820379, -0.0003268130, -0.0030598694, -0.0016342318, + 0.0002223258, 0.0002659692, 0.0001374111, -0.0021752778, -0.0017470494, + 0.0001360458, 0.0006171373, -0.0001058881, 0.0001450875, -0.0009602068, + -0.0016572222, -0.0034240207, -0.0003535785, 0.0005671582, -0.0012822308, + -0.0003854753, 0.0010017846, -0.0003593039, 0.0025382680, 0.0003575273, + 0.0005361936, 0.0006380007, 0.0007887543, 0.2226429433, -0.0014604030, + 0.0262477659, 0.0000198793, -0.0000659251, 0.0000280342, -0.0392289571, + -0.0013435455, 0.0010090843, 0.0008312380, 0.0010915450, 0.0000396115, + 0.0002414286, 0.0018507245, -0.0013710344, 0.9944313169, -0.0012981179, + -0.0012852002, 0.0031463795, -0.0005823370, -0.0039799302, -0.0031927694, + -0.0007435367, 0.0021547284, -0.0037527941, 0.0013719964, 0.0000823592, + 0.0003791633, 0.0002070758, -0.0027311139, -0.0009238953, -0.0006811479, + 0.0000715905, 0.0006792615, 0.0022764846, -0.0009869626, 0.0004911716, + 0.0003283122, 0.0001936017, 0.0007904284, 0.0005311458, 0.0012114018, + 0.0000297612, -0.0012637586, 0.0011719437, -0.0012723696, 0.0002770629, + -0.0010767239, -0.0007542474, 0.0009738961, -0.0011504404, 0.0013728570, + 0.0015507936, -0.0024942954, -0.0002475553, 0.0001697137, 0.0013067783, + 0.0015493836, -0.0010243217, -0.0012004387, 0.0017419816, -0.0026640545, + 0.0003054678, 0.0029096771, -0.0011525210, -0.0004950180, -0.0005285268, + -0.0003101202, 0.0006681839, 0.0009133061, -0.0009292960, 0.0021337778, + 0.0014105523, -0.0016156461, -0.0016250988, 0.0005954667, 0.0010883585, + -0.0015753186, -0.0005611310, 0.0013029694, 0.0003408892, 0.0006535866, + 0.0004244559, -0.0010792592, 0.0008484405, 0.0023784346, -0.0005968451, + 0.0007750646, -0.0002877377, -0.0007178099, 0.0006703539, 0.0008086755, + 0.0007794374, 0.0002765809, -0.0016924663, -0.0008798272, -0.0002662651, + -0.0017067241, 0.0006391723, -0.0002353577, -0.0020564622, -0.0014137337, + -0.0000957157, 0.0014900914, 0.0003353166, 0.0001129992, 0.0005047238, + 0.0006578481, 0.0004540959, -0.0011408925, 0.0007384880, 0.0009550537, + 0.0008652112, -0.0004365789, -0.0004227407, 0.0009815744, -0.0019513615, + -0.0007965791, 0.0005411069, 0.0005630245, 0.0004398162, -0.0009347652, + 0.0004772088, -0.0015077757, 0.0002389776, 0.0001865528, 0.0016542645, + -0.0031793471, 0.0006991068, 0.0012453184, -0.0018299181, 0.0007649953, + 0.2928944230, 0.0007657888, -0.0011929543, -0.0016092750, 0.0017307659, + -0.0014319124, -0.0025039671, -0.0014202783, -0.0006915026, -0.0030943258, + -0.0013136086, 0.0009969947, 0.0013791351, 0.0013982025, 0.0020811833, + 0.0005872165, -0.0000403570, 0.0018799966, -0.0030520558, -0.0022187768, + -0.0012698104, 0.2443455160, 0.0015423482, -0.0007685167, 0.0010644339, + 0.0009787851, 0.0012180491, -0.0020581544, -0.0013765907, 0.0026522838, + -0.0004079049, 0.0000814197, -0.0007726420, -0.0001482577, -0.0010277343, + -0.0010862360, -0.0003722669, 0.0002535898, 0.0012436300, -0.0003859862, + 0.0019575488, -0.0022128499, -0.0007107360, -0.0015721419, -0.0029766178, + 0.0012691903, -0.0005167537, -0.0018011755, 0.0001113461, -0.0021333275, + 0.0003489134, 0.0009584189, -0.0000436902, -0.0012603382, 0.0004822295, + 0.0009047404, -0.2202252895, 0.0001453441, 0.0012356308, 0.0002516892, + 0.0002128568, 0.0000072166, -0.0010954144, -0.0003313122, 0.0011745277, + -0.0005724342, -0.0000107911, 0.0017795124, 0.0002713688, 0.0011604107, + 0.0005390234, -0.0005455430, 0.0018877196, 0.0001797914, 0.0010002078, + -0.0004277220, -0.0009437092, 0.0006027562, 0.0017698130, -0.0015412876, + 0.0004234836, -0.0013476755, 0.0015822598, -0.0013976307, 0.0007102631, + -0.0002972797, 0.0008873665, -0.0017864041, 0.0007560585, 0.0012248415, + -0.0007835361, -0.0001864117, 0.0007547978, 0.0005581527, 0.0018229305, + 0.0004455345, 0.0006854213, -0.0017798177, 0.0019745324, -0.0011093114, + 0.0000254977, -0.0000785049, -0.0493084155, -0.0005964575, 0.0011311743}; + +float unet_input_time_embedding_50_41[] = { + -0.0012501329, 0.0003364941, -0.0013668039, 0.0001725018, -0.0009158591, + -0.0002465406, 0.0003885342, -0.0008768362, -0.0023079948, 0.0020548988, + -0.0002365301, 0.0026270454, -0.0026618820, 0.0001687144, 0.0005532992, + -0.0010568993, 0.0002799453, -0.0002369656, -0.0006307043, 0.0004908317, + -0.0001725550, 0.0024257107, 0.0013628417, -0.0625582188, 0.0001215267, + -0.0012758673, 0.0000165915, -0.0019183308, -0.0005870113, -0.0006497847, + -0.0015788146, 0.0000910326, -0.0003877501, -0.0005545761, -0.0001901439, + 0.0005659256, -0.0019702194, -0.0000780856, -0.0027400465, 0.0003075451, + -0.0005559404, 0.0012442251, 0.0001276145, 0.0004885318, -0.0016354986, + -0.0011310133, 0.0018103751, 0.0004035290, -0.0000645733, 0.0010703718, + -0.0004018606, -0.0002183418, 0.2136665136, -0.0000285511, 0.0004586345, + 0.0003535917, -0.0010499543, 0.0020670122, 0.0007525510, 0.0011667795, + 0.0001733000, 0.0008660298, 0.0016789543, -0.0007610773, 0.0003780774, + 0.0014518835, 0.0000615488, -0.0003535590, 0.0011401074, -0.0002640903, + -0.0007345839, 0.0008321069, 0.0000288936, -0.0016306348, -0.0005538175, + 0.0005186666, -0.0025901771, 0.0025356328, -0.0004319039, 0.0023809930, + -0.0015329369, 0.0017593425, -0.0000057998, 0.0000592433, -0.0009968383, + -0.0032856760, 0.0011028197, -0.0000227736, 0.0000397619, -0.0023122602, + 0.0005773494, -0.0013395371, -0.0023082071, -0.0009169156, -0.0033876807, + 0.0001640796, 0.0016644998, 0.0004510200, 0.0000073359, -0.0020619100, + -0.0008560382, 0.0002332434, 0.0003371886, -0.0710566938, 0.0024142745, + -0.0026082634, -0.0011368534, 0.0012734598, -0.0009810843, -0.0011968925, + 0.0008159741, -0.0001234803, 0.1233783513, -0.0018168362, -0.0004572161, + -0.0009874424, 0.0013921061, 0.0000917641, -0.0004286375, -0.0009953335, + 0.0011444832, 0.0007814297, 0.2809599638, -0.0002537780, 0.0010244511, + -0.0003857985, 0.0002458580, -0.0002638130, -0.0012103706, 0.0000096075, + 0.0016905614, -0.0003232444, -0.0003997786, 0.0012939060, 0.0001381235, + 0.0017585841, 0.0000736935, -0.0012885369, 0.0003717653, -0.0023438861, + 0.0007988049, 0.0004364094, 0.0000871257, -0.0012826314, 0.0013577498, + -0.0005979612, -0.0025309930, -0.0000628801, 0.0001324848, -0.0009180317, + 0.0010708307, 0.0002411447, -0.0001919654, -0.0008394413, 0.0001131743, + -0.0012669745, -0.0005190396, 0.0023854198, -0.0002117557, 0.0006943736, + -0.0003248262, -0.0005912107, -0.0017026896, 0.0009032784, 0.0016719322, + -0.0003354530, -0.0003098024, 0.0011979369, 0.0903665349, -0.0017127267, + -0.0003204144, -0.0017614178, 0.0010844739, -0.0017609997, 0.0021598146, + 0.0025250735, -0.0003078923, -0.0012838636, 0.0021889326, 0.0013693366, + 0.0001438810, 0.0003004568, 0.0005317591, 0.0018573976, 0.0016004150, + -0.0007462152, -0.0016362937, -0.0011383467, -0.0020449013, -0.0002370779, + 0.0004422250, -0.0007602707, 0.0012300828, -0.0005028474, 0.0001543262, + 0.0031148749, -0.0010281442, -0.0018677069, -0.0016040032, 0.0003035781, + 0.0000371030, 0.0017180541, 0.0013237819, -0.0002751292, -0.0002132738, + -0.0029423330, -0.0001423783, 0.0008819485, -0.0003878982, -0.0012400020, + -0.0003924104, 0.0002220594, 0.0007959260, 0.0014952554, -0.0006664249, + 0.0015373817, -0.0000566232, 0.0006648116, -0.0003379161, 0.0005739251, + 0.0015835902, 0.0005928238, -0.0008714281, 0.0183081217, 0.0014953476, + 0.0013101399, 0.0025609778, -0.0020013903, -0.0008241674, -0.0014634952, + 0.0005812738, 0.0019806768, 0.0001377529, 0.0025439342, -0.0000075186, + 0.0011713211, -0.0010258839, -0.0010057874, -0.0000600424, -0.0015953314, + -0.0001453029, -0.0001841820, 0.0012577269, 0.0024047550, -0.1320890784, + -0.0002086766, 0.0014913431, -0.0000762177, -0.0021340940, -0.0010257103, + 0.0011168513, -0.0026905134, 0.0015192251, -0.0006507915, 0.0006637829, + 0.0027762905, -0.0011800691, 0.0008153504, -0.0014812483, -0.0003616211, + 0.0019771187, 0.0005168368, -0.0001261577, 0.0052923858, 0.0001145421, + 0.0004996415, -0.0028133807, -0.0008771433, 0.0011659879, 0.0006640442, + -0.0017026477, 0.0007089525, -0.0013318758, -0.0000971698, 0.0001684942, + 0.0006431419, 0.0005003838, -0.0008145906, -0.0004908079, -0.0007860102, + 0.1305394620, -0.0001688562, 0.0011100686, 0.0005791406, -0.0025487496, + 0.0001023486, -0.0009937226, 0.0008884032, -0.0005424335, 0.0029028407, + -0.0004737634, 0.0002641825, -0.0009066269, 0.0010027657, 0.0001990059, + 0.0017316025, 0.0008333426, -0.0006245789, 0.0024479707, -0.0000259336, + -0.0011035884, -0.0004028410, -0.0009520588, -0.0001271758, -0.0011435256, + 0.0001887148, 0.0004180290, 0.0008763520, -0.0011472153, 0.0019335849, + 0.0003756005, 0.0009920422, 0.0003069302, -0.0010192879, 0.0012450661, + -0.0000183289, 0.0012877147, -0.0002674032, -0.0014894903, 0.0014209282, + -0.0011301285, 0.0009256608, 0.0011256319, 0.0001725685, -0.0003147383, + -0.0011293152, -0.0025773216, 0.0013326509, -0.0163735971, 0.0004774285, + -0.0019244025, 0.0012923407, -0.0009088389, 0.0005706139, -0.0002555102, + -0.0018642312, -0.0020930159, -0.0001552977, -0.0002940618, 0.0000692508, + -0.0009107911, 0.0008865809, -0.0006392517, 0.2100196034, 0.0009828017, + -0.0012802603, -0.0005308575, 0.0008413938, 0.0016223174, 0.0012792662, + 0.0017338591, 0.0000954494, -0.0016152542, 0.0006986503, 0.0001983121, + -0.0008130763, 0.0000584485, -0.0008036005, 0.0010512066, 0.0014186972, + -0.0002969564, 0.0006622155, 0.0004556128, -0.0013991469, 0.0004291324, + 0.0002945319, 0.0001448374, -0.0000177817, -0.0020476915, 0.1743402779, + 0.0007996438, 0.0001394693, 0.0005057908, -0.0009244336, -0.0005336010, + -0.0015150248, 0.0011924491, -0.0000664836, -0.0009289898, -0.0005507721, + -0.0001990268, 1.0944863558, -0.0018767461, 0.0000804765, -0.0011174614, + -0.0005974367, 0.0003935196, -0.0018711323, -0.0007470534, 0.0015269876, + 0.0011054007, 0.0032803565, 0.0002873181, -0.0009116167, 0.0004850309, + -0.0004185992, 0.0005351019, 0.0015545377, 0.0030901260, 0.0021108184, + 0.0021941660, -0.0011038631, 0.0005622848, -0.0008806931, -0.0004973235, + -0.0003879336, 0.0003405685, -0.0011799773, -0.0012380222, 0.0000330638, + -0.0000930121, 0.0001614373, 0.0014779926, 0.0007225040, 0.0017717164, + 0.0003028054, 0.0002970127, 0.0019219354, -0.0008632988, 0.0005063908, + -0.0005497241, -0.0011944065, 0.0015004277, 0.0008822766, 0.0000489214, + -0.0012056683, -0.0005222904, 0.0021203621, 0.0010803230, -0.0008003773, + -0.0000629076, 0.0000040091, -0.0008793829, -0.0012431783, -0.0004374384, + 0.0002789338, -0.0005619135, -0.0014733844, 0.0000394722, 0.0011302952, + -0.0003078831, -0.0002686442, 0.0018290729, -0.0010824786, -0.0004795019, + -0.0003297348, -0.0013055494, -0.0006860464, 0.0001436076, -0.0001534186, + 0.0007214402, 0.0006248299, -0.0004674813, 0.0008984478, 0.0004519629, + 0.0016639587, -0.0006056949, 0.0004207259, -0.0002464904, 0.0009570299, + 0.0008311584, -0.0005748887, 0.0007542305, 0.0003954299, -0.0005402528, + 0.0019291816, 0.0024445259, 0.0010778448, -0.0022769510, 0.0023132083, + 0.0003160574, -0.0000314021, 0.0010407856, 0.0007811517, 0.0008079153, + -0.0014798008, 0.0003433730, -0.0001912448, 0.0004439736, 0.1894602478, + -0.0004171389, 0.0001388648, -0.0002086805, 0.0006254723, 0.0013723569, + 0.0017702723, 0.0001888892, -0.0006163800, -0.0007016719, 0.0001208300, + 0.0008580750, 0.0004551662, 0.0004623332, -0.0006877524, -0.0011576228, + -0.0023093882, -0.0009804312, 0.0008742234, 0.0002154261, -0.0026784902, + 0.0015261080, -0.0020963605, -0.0016276566, 0.0007367306, -0.0020095052, + -0.0000999297, 0.0000355276, 0.0005660342, 0.0001912061, 0.0003300048, + 0.0007529748, 0.0001777981, -0.0527987219, -0.0001883851, -0.0016767086, + -0.0014463319, -0.0002638577, 0.0015589604, 0.0006468678, -0.0009288057, + 0.0014852760, 0.0004579066, 0.0018596136, 0.0005502678, -0.0011273744, + -0.0013722638, -0.0002638248, -0.0006052000, 0.0011257371, -0.0014351194, + -0.0007352366, -0.0017325119, -0.0006418000, 0.0009316911, 0.0009402584, + 0.0002185351, -0.0004310363, -0.0005339833, 0.0032657692, -0.0002916022, + -0.0023094323, -0.0004999842, -0.0000649496, -0.0010055902, -0.0003245515, + -0.0005653459, -0.0007187384, 0.0003331285, 0.0000309234, 0.0008249423, + 0.1735277623, 0.0010338761, -0.0013869249, 0.0014638852, -0.0004392006, + 0.0014383119, 0.0016983007, -0.0013544820, -0.0008160607, 0.0003788178, + -0.0007176045, 0.0013430902, 0.0005069901, -0.0022117631, 0.0018769093, + -0.0008470519, 0.0004981193, -0.0012343735, -0.0000037504, -0.0000269115, + 0.0001703090, -0.0007879913, -0.0016842966, -0.0016651938, 0.0024930700, + -0.0002264818, 0.0002127676, -0.0019649286, 0.0017097131, -0.0029249862, + -0.0011525054, 0.0020870394, 0.0001728260, 0.0005546986, 0.0010909440, + 0.0023131119, -0.0011026580, 0.0017025345, 0.0000105365, -0.0004734178, + -0.0010228067, 0.0012398926, -0.0012424719, -0.0016720835, 0.0001102993, + -0.0008101379, -0.0001812665, 0.0007198220, 0.0000398369, -0.0013183849, + -0.0001293137, 0.0010788981, -0.0005252277, -0.0000005366, 0.0008111154, + 0.0009460638, -0.0003285904, 0.0003652221, 0.0012495926, -0.0000409496, + -0.0000976531, -0.0006356980, 0.0008953420, -0.0010802369, 0.0012552887, + 0.0010421530, 0.0001238437, 0.0002513937, -0.0013165274, -0.0014921364, + -0.0004209217, -0.0000838927, 0.0010364978, -0.0001369230, 0.0008261828, + 0.0009923372, -0.0015484940, 0.0017185125, 0.0014623085, -0.0012103375, + -0.0014693672, -0.0004637486, 0.0009866903, -0.0005839334, -0.0006126282, + -0.0005729748, 0.0002039934, -0.0000944148, -0.0016451748, 0.0009138922, + 0.0019547441, 0.0003810718, -0.0010125760, 0.0012021968, -0.0012974194, + 0.0000273437, 0.0001398465, 0.0005714830, -0.0044414909, 0.0008517858, + 0.0007647412, 0.0007527899, 0.0002945235, -0.0002998845, 0.0001849500, + 0.0011318373, -0.0004660577, -0.0015117959, -0.0010839013, 0.0000286838, + -0.0019660490, -0.0006344104, 0.0006352294, 0.0013953241, 0.0002578129, + 0.0007754508, 0.0017619361, 0.0001399572, 0.0008030229, -0.0001562590, + -0.0001597761, 0.0018212099, -0.0009024626, 0.0004529043, 0.0009451117, + 0.0013721688, -0.0008255983, -0.0012301188, 0.0016621845, -0.0020553323, + -0.0001261863, -0.0000519077, 0.0007662764, 0.0015668314, 0.0018275045, + -0.0003881338, 0.0004373058, -0.0004060047, -0.0027521690, 0.0008122837, + -0.0000400664, 0.0013898714, -0.0011292642, 0.0010294471, 0.0009213137, + -0.0021143276, -0.0017581419, -0.0002831398, 0.0002866306, 0.0024413331, + -0.0014974736, -0.0005100560, 0.0006138904, -0.0005011549, 0.0000365991, + 0.0005027696, 0.0008576028, -0.0009322502, 0.0013250313, 0.0013128126, + -0.0012367032, 0.0084319003, -0.0011233957, 0.0004388290, -0.0007975944, + 0.0009629048, -0.0003356021, 0.0006507449, -0.0011627788, 0.0005134093, + 0.0009356290, -0.0006544157, 0.0024889675, -0.0020885426, 0.0019413836, + 0.0003744024, 0.0001879847, -0.0009939070, -0.0038167881, 0.0014071502, + 0.0005048783, -0.0006223032, 0.0001149978, 0.0006641573, 0.0001130102, + 0.1987475902, 0.0012309705, -0.0008840840, 0.0012895698, 0.0009912653, + 0.0002530739, -0.0003869403, -0.0031818347, 0.0002352719, -0.0004995840, + -0.0003778157, 0.0001565513, 0.0010588417, -0.0024121406, -0.0014598602, + 0.0011199915, 0.0014059704, -0.0003581923, -0.0007186946, 0.0017179523, + 0.0008266112, -0.0017321941, -0.0010511553, 0.0004193021, 0.3404139280, + -0.0014129123, -0.0008568729, -0.0001956765, 0.0001210663, 0.0000592726, + 0.0017313417, 0.0019941519, 0.0006082681, -0.0002445541, -0.0004545511, + 0.0015263408, 0.0010348228, 0.0009405771, -0.0006189751, -0.0012383014, + -0.0005192277, 0.0005823486, -0.0006517144, -0.0009255833, 0.0008243676, + 0.0001666974, -0.0012429327, 0.0002038050, -0.0008286452, 0.0000590677, + -0.0021265917, 0.0099816564, 0.0001048101, -0.0015862528, -0.0017212504, + 0.0017628270, 0.0010257249, -0.0002354637, 0.0006756061, -0.0003259113, + 0.0010348526, 0.0015184989, 0.0002246025, -0.0142431529, 0.0005781455, + -0.0009518707, 0.0016429119, 0.0007668900, 0.0004098276, -0.0005719680, + 0.0015902319, 0.0024831472, -0.0003941639, 0.0015410578, -0.0018661768, + 0.0000630986, -0.0003139023, 0.0004683490, -0.0014578281, 0.0000246414, + 0.0012183106, -0.0001450744, -0.0010655569, -0.0006809318, 0.0006741127, + 0.0004992802, 0.0006611721, 0.0016484438, -0.0015313367, 0.4623337388, + -0.0005944003, -0.0008210118, -0.0014026765, -0.0010180830, 0.0006596510, + -0.0014864046, -0.0004783468, -0.0000834097, -0.0010628586, -0.0001321463, + 0.0004631483, 0.0002042735, -0.0008045721, 0.0006137039, 0.0002391821, + 0.0006100219, -0.0003873282, 0.0220175516, -0.0014436250, 0.0007537740, + 0.0012882049, -0.0002001533, 0.0022682389, -0.0010452229, -0.0012156349, + 0.0008242754, -0.0012519865, 0.0006700562, 0.0017285696, -0.0014956770, + -0.0072627664, -0.0008684224, -0.0014478113, -0.0001218403, -0.0001962376, + -0.0012995289, -0.0005444456, -0.0003656475, 0.0005424885, -0.0002090354, + 0.0014110859, 0.0007234611, 0.0022772495, 0.0008839273, 0.0007450358, + 0.0009209802, 0.0004860004, -0.0009841248, 0.0003764017, 0.0011823806, + 0.0007081865, -0.0007012612, -0.0000959504, 0.0005085847, 0.0006233447, + 0.0545239151, -0.0010062909, 0.0015949048, -0.0008150730, 0.0005740102, + -0.0005095991, -0.0013431231, -0.0021311501, -0.0011516097, 0.0002684430, + -0.0002456359, -0.0007822562, -0.0000133531, -0.0003732513, 0.0018453286, + -0.0014625788, -0.0014776874, 0.0004003433, -0.0001342136, 0.0008528465, + -0.0001841970, 0.0015187822, 0.0001005158, -0.0008116495, 0.0009672181, + 0.0019847658, -0.0008457415, -0.0004238115, -0.0000427677, 0.0000167992, + -0.0013366546, -0.0000499302, -0.0031741299, 0.0012035489, 0.0009726929, + -0.0002793013, -0.0011220607, 0.0006697308, 0.0003731824, 0.0001424805, + -0.0014528772, -0.0004985444, 0.0009950222, -0.0008741827, -0.0010242106, + 0.0004559662, 0.0002958465, -0.0008445060, -0.0005419507, -0.0010266494, + -0.0007227608, 0.0002089057, 0.0014759850, 0.0006225966, 0.2157481462, + -0.0013406641, 0.0001159431, 0.0011995016, -0.0000870817, 0.0007101297, + 0.0000746269, 0.0012950372, 0.0000731545, 0.0004208931, -0.0011283099, + 0.0010181201, 0.0002864772, -0.0029455516, -0.0001943153, 0.0011449684, + -0.0001848363, -0.0005512669, -0.0003100680, 0.0013359892, 0.0014147649, + 0.0000988571, -0.0009552818, -0.0009642950, 0.0010311920, 0.0001999457, + -0.0012224372, 0.0007989409, 0.0001405189, 0.0010473090, -0.0001993049, + 0.0018147260, -0.0002200333, 0.0004283213, 0.0011629113, 0.0004187766, + -0.0005681750, -0.0007009266, 0.0009267307, -0.0002329587, 0.0013848878, + 0.0007791775, 0.0006717020, -0.0004662918, -0.0012009648, 0.0005442114, + -0.0007498364, -0.0002208222, 0.0001319046, -0.0006295741, 0.0001838501, + -0.0012852504, 0.0005717659, -0.0000171601, -0.0000458555, -0.0022640734, + 0.0839577317, -0.0003275289, 0.0005386965, -0.0004002687, -0.0010264709, + 0.0010188647, 0.0004106923, 0.0008257824, -0.0017627552, -0.0005147684, + 0.0006556341, 0.0002459879, -0.0002028607, -0.0006878327, 0.0002166250, + 0.0007348452, 0.0002874620, 0.0000237925, -0.0006147618, 0.0006974950, + 0.0013054247, -0.0012082591, 0.0020773485, -0.0005928623, 0.0008304366, + -0.0002261815, 0.0012786738, 0.0004814693, 0.0009113785, -0.0008716227, + -0.0004832144, 0.0011226155, -0.0006741893, 0.0009575691, -0.0007555643, + -0.0003924173, -0.0014647156, 0.0008723880, 0.0003134534, -0.0003865762, + -0.0005868843, -0.0003879634, -0.0002864264, -0.0009922939, -0.0008894389, + 0.0005399208, 0.0003205722, -0.0026230998, -0.0000980898, -0.0010175584, + -0.0007755095, 0.0002418272, -0.0013485039, 0.3263641894, -0.0010011527, + 0.0192486532, -0.0015845099, 0.0014975066, 0.0018332794, 0.0131017482, + -0.0016701161, -0.0000732522, -0.0008499259, 0.0005806652, -0.0002404253, + -0.0010023285, -0.0005300341, 0.0003598919, 1.0410920382, 0.0006424901, + -0.0008839206, 0.0002164159, 0.0001207580, -0.0020365347, -0.0008623227, + 0.0005951226, 0.0002468079, -0.0003322307, -0.0022788786, 0.0016225395, + -0.0008864524, 0.0017477246, -0.0020947997, -0.0000670231, 0.0018271683, + 0.0003706403, 0.0006986703, -0.0010775866, 0.0004057023, -0.0011950131, + -0.0006289654, 0.0002528809, 0.0008674464, 0.0005394863, -0.0003939650, + 0.0003640338, -0.0009439462, 0.0007400494, 0.0021341043, 0.0009610951, + 0.0011392126, 0.0010483740, 0.0006125513, -0.0011855746, 0.0006775763, + -0.0003186045, -0.0003713449, 0.0012152095, 0.0002165143, -0.0018162266, + -0.0007957201, 0.0010409956, 0.0004441352, 0.0002306560, -0.0001390164, + 0.0017404938, -0.0009351197, -0.0012334799, 0.0005806227, 0.0013316149, + -0.0008499916, 0.0012523271, -0.0003542555, 0.0012312131, -0.0001090448, + 0.0007416951, -0.0001064005, 0.0034320499, -0.0014274870, 0.0000010324, + 0.0007460276, 0.0024991101, -0.0017851493, -0.0005702609, 0.0004781929, + -0.0007947078, 0.0027738977, -0.0010206986, -0.0005597445, 0.0006836266, + 0.0010242071, -0.0004512258, 0.0012055640, -0.0005402763, 0.0008802698, + -0.0002537793, -0.0001877239, 0.0009162676, -0.0009908439, -0.0011827564, + -0.0023652790, 0.0000369558, 0.0026003886, -0.0004838118, -0.0007896698, + 0.0003422927, 0.0001146242, 0.0001365258, 0.0007830672, -0.0006798396, + -0.0005921950, 0.0009205160, 0.0011748783, 0.0010068323, 0.0009302458, + -0.0001454088, -0.0006714747, -0.0021528234, -0.0007038154, -0.0009750286, + -0.0015966652, -0.0002729007, -0.0010052999, -0.0001397915, 0.0021517607, + 0.0005782023, 0.0002546592, -0.0012580703, 0.0023060706, 0.0011906857, + -0.0006796964, 0.0001618962, -0.0018199421, -0.0000915942, -0.0014330158, + 0.2816971540, 0.0015897434, -0.0007357233, 0.0008031471, -0.0003123555, + -0.0011651539, 0.0001155739, -0.0002446620, 0.0007431959, 0.0012493031, + 0.0017506913, -0.0009283653, 0.0016532294, 0.0004503836, -0.0004105144, + -0.0009206134, -0.0003319811, -0.0000985600, 0.0006346842, 0.0010002037, + 0.0008594212, 0.1957869679, 0.0004084229, -0.0011576219, 0.0013623636, + 0.0021864609, 0.0003760251, -0.0018779626, 0.0000057998, -0.0006191935, + -0.0006967923, -0.0009417585, -0.0002164715, -0.0011045942, -0.0006906248, + 0.0003659101, -0.0005542743, -0.0008105286, -0.0004860903, -0.0013039272, + -0.0013015873, -0.0013860362, 0.0022169305, -0.0008846638, -0.0008423943, + 0.0007227273, 0.0014289010, -0.0012302408, -0.0002567042, 0.0008582901, + -0.0009062273, 0.0004209448, -0.0022845916, 0.0023039500, 0.0016176165, + -0.0006073663, -0.1298165172, 0.0018167030, 0.0012383889, -0.0007338969, + -0.0016345799, 0.0010092088, 0.0001532889, 0.0005592473, -0.0020013265, + 0.0010764985, -0.0002141556, -0.0015508326, -0.0003371867, -0.0010752166, + 0.0014630291, 0.0003797017, -0.0005870587, 0.0007062932, 0.0017171819, + 0.0009511043, -0.0005377335, -0.0021386258, -0.0008298369, -0.0014380133, + -0.0007117358, 0.0004618932, 0.0012474041, -0.0018493624, -0.0010862930, + -0.0002058932, 0.0012962199, 0.0008395384, 0.0016807719, 0.0014035455, + 0.0003092908, -0.0016597845, -0.0011298954, -0.0001910488, 0.0017663828, + -0.0000625146, 0.0001232987, 0.0002675967, -0.0007858230, 0.0000998285, + 0.0000841208, -0.0014745761, -0.0442060195, -0.0002778129, 0.0000553273}; + +float unet_input_time_embedding_50_42[] = { + -0.0008950057, -0.0017217528, 0.0009929603, -0.0016169106, 0.0011240599, + 0.0010552458, 0.0004894681, 0.0007172116, 0.0008785774, 0.0006539966, + -0.0008621558, -0.0012919526, -0.0000890126, 0.0011460800, -0.0017852383, + 0.0001550233, -0.0008227322, 0.0022452318, -0.0007501193, -0.0006188846, + 0.0019830172, -0.0005100165, -0.0000954856, -0.0447518565, 0.0003688396, + 0.0014381649, 0.0008737938, 0.0014110133, -0.0003575314, 0.0022907974, + 0.0002294313, 0.0009414199, 0.0001955833, 0.0010600993, -0.0025655781, + 0.0012436723, -0.0000619213, -0.0010266304, 0.0007936195, -0.0011687074, + 0.0013088207, -0.0026156912, -0.0013701427, 0.0002196068, 0.0009132591, + 0.0007569774, -0.0001995130, 0.0001532608, -0.0002708212, 0.0015221846, + -0.0011366638, -0.0010586781, 0.2025865167, 0.0007085879, 0.0007716651, + -0.0012944549, -0.0011761034, -0.0025830911, -0.0022681695, 0.0023602298, + 0.0005051089, 0.0009441511, -0.0003983337, 0.0020551705, -0.0010216946, + -0.0020609042, -0.0010932500, -0.0024818555, 0.0025789766, 0.0003977893, + 0.0016159336, 0.0017052423, 0.0008373018, 0.0022407779, 0.0006141742, + -0.0016593430, 0.0019740220, 0.0000290116, -0.0008911980, 0.0007110753, + 0.0031317221, -0.0016689411, 0.0014847268, 0.0001030569, -0.0002602348, + 0.0017782702, -0.0001490435, 0.0008436763, 0.0012619151, 0.0002993566, + 0.0011482805, -0.0000493256, 0.0001250133, 0.0002367924, -0.0051092315, + 0.0003950000, 0.0007632570, 0.0010593696, 0.0009325822, 0.0015961155, + 0.0005916532, 0.0021961932, 0.0005834154, -0.0881039575, -0.0002499153, + -0.0016612690, 0.0002680547, -0.0010543363, 0.0019666553, -0.0003112406, + -0.0021922202, -0.0004192395, 0.0810349956, 0.0000851727, 0.0012862962, + 0.0001717173, -0.0001153001, -0.0006279850, 0.0013281207, -0.0019345696, + -0.0004501957, 0.0001154705, 0.2938118875, -0.0000407766, -0.0008022226, + -0.0003035567, 0.0002067895, -0.0014099688, 0.0002372889, -0.0013374896, + -0.0006024758, -0.0010129074, 0.0006583561, 0.0018630233, -0.0008204123, + -0.0008529832, 0.0002720156, 0.0019860575, -0.0007065404, -0.0022507249, + -0.0017553011, 0.0009405883, -0.0014207521, 0.0016239081, 0.0001520019, + 0.0008166241, 0.0009858280, 0.0009192871, 0.0005398742, 0.0020205949, + -0.0004397798, 0.0000218939, -0.0010741211, -0.0005947661, -0.0011607590, + 0.0006747544, 0.0006170189, 0.0020032907, 0.0002981997, 0.0003257585, + -0.0000235103, 0.0002237478, 0.0006017024, -0.0013305710, -0.0021037138, + 0.0000483827, -0.0008023579, -0.0000291499, 0.0946801901, -0.0010695795, + 0.0021187710, -0.0021235193, -0.0000022464, -0.0001578015, -0.0008588489, + 0.0004176996, 0.0007005465, 0.0012812661, -0.0035200776, -0.0000025118, + -0.0000305646, 0.0003549857, -0.0036465614, 0.0015613779, -0.0009680751, + 0.0011279541, 0.0002176375, -0.0013904977, 0.0003797575, -0.0016635519, + -0.0004729356, 0.0002049534, -0.0002471259, 0.0013597233, -0.0017227242, + -0.0000450620, 0.0027181031, 0.0009875381, -0.0006120983, -0.0003602090, + -0.0001176703, 0.0003606374, 0.0006227549, -0.0031001018, -0.0012535471, + 0.0026084688, -0.0006914579, 0.0005127164, -0.0000908040, 0.0006558013, + -0.0007274463, 0.0002619778, -0.0009488857, 0.0006290951, 0.0012736903, + 0.0004565585, 0.0006147088, -0.0018184169, 0.0005789519, 0.0006800214, + -0.0018731384, 0.0002213000, 0.0006554134, 0.0169186890, 0.0006735465, + -0.0010655052, -0.0009756535, -0.0001759465, -0.0024544015, 0.0007609641, + 0.0034736525, 0.0005389098, 0.0001343838, -0.0009476994, -0.0012659868, + -0.0006591468, 0.0004859571, -0.0001258785, 0.0013386309, 0.0007012752, + 0.0010247931, 0.0005046345, -0.0005321645, 0.0008677915, -0.0327174366, + 0.0000917336, -0.0002365387, -0.0011924111, 0.0007695761, -0.0014301492, + -0.0017729737, 0.0000856342, -0.0006301804, -0.0001430856, -0.0010901857, + 0.0001893810, 0.0011400292, 0.0006729414, 0.0010161076, -0.0010822857, + -0.0009015342, 0.0006985408, -0.0001740460, 0.0014923081, -0.0009725093, + -0.0020529772, 0.0010478375, 0.0025500981, -0.0003055390, -0.0001612916, + -0.0005110437, -0.0006293338, -0.0001207506, 0.0029993649, 0.0003514602, + 0.0001113614, -0.0011981186, 0.0011518826, -0.0004771193, -0.0006942677, + 0.0995714962, -0.0011038966, 0.0012950647, -0.0000476441, 0.0013905489, + -0.0008314177, 0.0007574526, 0.0003923071, 0.0014300020, -0.0014106696, + 0.0015628081, 0.0004045540, 0.0002991611, -0.0003734895, -0.0001329426, + 0.0007060603, -0.0003686124, 0.0009272969, -0.0013429220, 0.0022853662, + -0.0023044357, -0.0002212611, 0.0001143449, 0.0019230368, 0.0009977294, + 0.0014737898, 0.0000770767, 0.0012911512, -0.0003021960, -0.0019555711, + 0.0002811244, -0.0010530987, -0.0022664615, -0.0002651829, 0.0018003085, + 0.0015928545, 0.0005803603, 0.0002830275, 0.0003244467, 0.0017024106, + 0.0016403457, -0.0013586241, 0.0005909784, 0.0004235436, 0.0022654422, + -0.0006521321, -0.0009408779, 0.0007390617, -0.0164748505, 0.0009116326, + 0.0005489807, 0.0036173156, 0.0009629008, 0.0007471126, 0.0007786416, + -0.0007750373, 0.0019293318, 0.0009868339, 0.0015188446, 0.0013366798, + 0.0011369046, -0.0010923853, 0.0015209054, 0.1269370914, -0.0006072742, + -0.0012158444, -0.0008529859, 0.0000803717, -0.0008497804, -0.0005699049, + -0.0000582393, 0.0005204389, 0.0003478420, -0.0008603986, 0.0007618085, + 0.0021911981, -0.0001611878, 0.0007299405, -0.0013644886, -0.0008811452, + 0.0007965541, 0.0002825567, 0.0001052953, 0.0010523335, -0.0000626064, + -0.0007117225, 0.0008507282, 0.0003051674, -0.0009207968, 0.2163736224, + -0.0028789528, -0.0006478117, 0.0006797339, 0.0019307053, 0.0017139118, + -0.0003502515, 0.0011737264, -0.0013424775, -0.0020522338, 0.0007671071, + -0.0000212406, 0.9953832626, 0.0010355073, -0.0014706147, -0.0004928363, + 0.0010920707, 0.0010700827, 0.0012094832, 0.0030004573, 0.0013515805, + 0.0009436449, -0.0002816383, -0.0000486095, -0.0013180021, 0.0006226785, + -0.0006394917, -0.0002605128, -0.0014599949, -0.0020459995, -0.0023722593, + -0.0003090263, -0.0005522966, 0.0000644282, -0.0014408641, -0.0013376037, + 0.0015414653, 0.0016993183, -0.0015072031, 0.0020241141, 0.0003358964, + -0.0028797160, -0.0001654795, 0.0012388504, 0.0007888249, -0.0000449100, + -0.0000690303, -0.0002882523, -0.0010289294, -0.0002914527, 0.0011893879, + 0.0013118358, 0.0022680156, 0.0001062558, 0.0040503056, -0.0006383327, + 0.0007118429, -0.0001376057, 0.0004046470, -0.0014869987, 0.0018363870, + -0.0005079568, -0.0033549014, 0.0009001822, 0.0014602460, 0.0023187362, + -0.0002028766, -0.0010792809, -0.0003390268, -0.0009803902, -0.0026650354, + 0.0000782656, -0.0008731468, -0.0003654360, 0.0016678229, 0.0007607669, + 0.0009968146, -0.0020411080, 0.0008626818, -0.0016356607, 0.0017786669, + 0.0010262844, -0.0003117044, -0.0015722129, 0.0000546705, 0.0001919605, + -0.0000072815, 0.0024267053, 0.0017610984, -0.0023519751, -0.0002202736, + -0.0002990309, -0.0006992333, 0.0017503460, -0.0012703798, 0.0027069212, + -0.0001094653, -0.0014157430, -0.0007472401, -0.0006663102, -0.0015000235, + 0.0011183427, 0.0001022280, -0.0016943188, 0.0004642049, -0.0009870371, + -0.0068325158, 0.0024466570, -0.0005343838, 0.0007170122, 0.1894543320, + -0.0017913897, 0.0003946921, 0.0011296298, 0.0004701444, -0.0006460165, + 0.0014972605, -0.0011256261, 0.0020120814, -0.0009564455, -0.0026711919, + -0.0015211264, -0.0444221385, 0.0030339393, -0.0007339944, 0.0002482242, + -0.0042014318, -0.0011463473, 0.0014328002, 0.0007338892, 0.0007637602, + -0.0019895951, 0.0021465579, 0.0018086508, -0.0016007801, 0.0000425065, + 0.0003692063, -0.0003161628, 0.0011301799, 0.0005539530, 0.0004419798, + -0.0006685981, 0.0009130153, 0.1006917208, 0.0042872727, -0.0039072540, + 0.0005700109, 0.0007623429, -0.0008933991, 0.0014489940, 0.0017622979, + -0.0006644982, 0.0009014024, 0.0002223229, -0.0004801867, 0.0025099856, + -0.0005448493, 0.0014551978, -0.0002894090, -0.0015629027, 0.0012831737, + -0.0006347864, -0.0026481343, -0.0008200542, -0.0002202804, 0.0001093394, + -0.0028066689, -0.0005811043, 0.0015879187, 0.0004915884, -0.0004875516, + 0.0012763268, 0.0007202663, -0.0002254879, -0.0020499113, -0.0002024034, + -0.0005351221, 0.0002459288, -0.0004205322, 0.0013780899, -0.0026152292, + 0.2890581489, 0.0014175298, 0.0010648100, -0.0006023520, 0.0010193968, + -0.0006140458, 0.0008043044, -0.0002113096, 0.0017043222, 0.0006332528, + 0.0021321485, -0.0000177597, -0.0007807901, 0.0002029738, -0.0011428082, + 0.0000939937, -0.0021192161, 0.0012536566, 0.0026183557, 0.0006517889, + 0.0006419676, -0.0005485865, 0.0000628666, 0.0005105080, 0.0001153722, + 0.0011661509, 0.0012112891, -0.0006416314, 0.0026065153, 0.0008901809, + -0.0008484675, 0.0002512685, 0.0018905182, 0.0002366363, 0.0001451969, + -0.0011806956, 0.0006752792, 0.0005840850, -0.0006783986, 0.0006456315, + 0.0004770764, 0.0027500787, 0.0001773667, 0.0013432563, -0.0013439464, + -0.0019364194, -0.0018673550, -0.0018292498, 0.0003583557, 0.0010948046, + 0.0006327410, -0.0008961298, 0.0004111631, 0.0018142692, 0.0004463927, + -0.0006631261, 0.0006695871, -0.0029345823, 0.0000420961, -0.0001005044, + 0.0014657171, 0.0003860104, -0.0005282981, 0.0000860807, -0.0005977293, + 0.0020900897, 0.0007101024, 0.0013289135, -0.0005813255, -0.0003101530, + 0.0006348793, 0.0005713416, 0.0005017284, 0.0003759130, -0.0013088482, + -0.0013165874, 0.0002045424, -0.0026867550, -0.0011115070, 0.0006774222, + 0.0004442646, 0.0004184474, 0.0012247750, -0.0011916945, -0.0003982256, + 0.0021751327, -0.0007885632, 0.0004741697, -0.0006219763, 0.0000990615, + 0.0004006921, 0.0011881560, 0.0008190537, -0.0005813735, 0.0010511545, + -0.0003756339, 0.0027117888, 0.0018372817, -0.0051875943, -0.0006845286, + 0.0003620599, -0.0035921345, 0.0004988939, -0.0005541439, -0.0009245197, + -0.0018387318, -0.0014592699, 0.0004277900, 0.0007532028, -0.0010350612, + 0.0011952417, 0.0012098723, -0.0003312995, -0.0011275973, 0.0019608308, + -0.0015004221, 0.0005499488, -0.0011794062, -0.0005917388, 0.0014210205, + 0.0010754995, -0.0001665135, 0.0007979951, -0.0007641737, 0.0016924459, + -0.0010604337, 0.0008119420, 0.0024027303, 0.0003108722, -0.0009247228, + 0.0001860699, -0.0007102303, 0.0018775398, -0.0006273506, -0.0002226038, + -0.0006710421, -0.0010466282, 0.0017021981, 0.0001353738, 0.0002411068, + 0.0012908680, -0.0000624908, 0.0012693254, 0.0005515760, -0.0009651310, + 0.0005520459, 0.0011877745, -0.0011109784, -0.0000765361, -0.0004562233, + 0.0020964199, -0.0002710361, -0.0003038247, -0.0018545178, 0.0004997519, + 0.0006820788, 0.0011826642, -0.0001479969, 0.0007230686, -0.0011061537, + -0.0016537011, 0.0153991869, -0.0004580530, -0.0012667202, 0.0010368959, + -0.0012514801, -0.0004237639, -0.0003313436, -0.0010328372, 0.0004292876, + -0.0008038403, -0.0004578005, 0.0001135445, -0.0007804926, -0.0020696383, + 0.0019572391, -0.0037927292, 0.0003117598, 0.0023714998, -0.0023638695, + -0.0009543400, 0.0002156626, 0.0014818229, 0.0001913458, -0.0015430192, + 0.1154039949, -0.0028460110, -0.0013950383, 0.0006801104, 0.0001850938, + 0.0005661189, -0.0016383687, 0.0022528023, 0.0010944211, -0.0010641757, + 0.0008632187, 0.0007253623, -0.0022268826, 0.0000854270, -0.0015546288, + -0.0002377138, -0.0000763286, 0.0001864214, 0.0000840090, -0.0011588954, + 0.0011443882, 0.0009704097, -0.0005991383, 0.0009324525, 0.4100396037, + 0.0018016230, 0.0013728944, -0.0012041419, -0.0004663849, 0.0018239976, + -0.0001024557, 0.0007980528, -0.0004588711, -0.0006018328, -0.0011823042, + -0.0022806667, -0.0014164494, 0.0017599491, 0.0002661615, -0.0003386908, + 0.0017600117, 0.0000611581, 0.0000106157, 0.0023282580, 0.0026159547, + -0.0002440829, -0.0002041735, 0.0002807979, -0.0003416254, -0.0021777768, + -0.0006681690, 0.0136047453, 0.0008140504, 0.0008281888, -0.0005867374, + -0.0022973213, -0.0005420099, 0.0001697882, 0.0013566730, -0.0002583871, + -0.0003387793, -0.0007697293, -0.0026007604, -0.0138504216, 0.0005814349, + 0.0003508885, -0.0001797362, -0.0010411433, -0.0009881579, 0.0007965416, + -0.0000903341, 0.0007936966, -0.0006134075, -0.0023385871, 0.0003319039, + 0.0011135925, 0.0016890799, -0.0009118215, -0.0009549381, -0.0013297093, + -0.0023795133, 0.0019471794, -0.0000259653, -0.0002037682, -0.0002332770, + -0.0001519267, 0.0011102322, -0.0006607551, 0.0005757946, 0.3545994163, + -0.0004006908, -0.0003078424, 0.0001151931, 0.0010167144, -0.0013250713, + 0.0006420964, 0.0028736021, -0.0008390709, 0.0009563835, -0.0015428914, + 0.0018393381, -0.0007391318, 0.0001295647, -0.0024751294, -0.0008368305, + 0.0000947581, 0.0021239044, 0.0094519444, -0.0009556622, 0.0008510972, + 0.0007073525, -0.0006092046, -0.0020407336, -0.0000039167, -0.0007045255, + 0.0009416267, 0.0021957858, 0.0008378137, -0.0011115293, 0.0001371736, + -0.0072248634, 0.0002693878, 0.0001716875, 0.0009585125, -0.0002941317, + -0.0000463333, -0.0016714558, -0.0018613767, 0.0000861321, -0.0004611830, + 0.0004507722, -0.0011700937, 0.0000794055, 0.0011075230, 0.0001346377, + -0.0010962877, 0.0048307120, 0.0009525642, -0.0014629803, -0.0022637029, + 0.0000999093, 0.0004556505, 0.0024968632, -0.0001342943, 0.0002021026, + 0.0418744124, 0.0004941962, 0.0009208731, -0.0014124755, 0.0004100872, + -0.0004663304, -0.0009738526, -0.0008638166, -0.0003047122, -0.0011526500, + -0.0003721239, -0.0007123630, -0.0011831508, -0.0008082739, -0.0007886332, + -0.0003663232, -0.0015567490, 0.0019566617, 0.0008971416, 0.0002696048, + -0.0007302640, 0.0001422442, 0.0014971215, -0.0017674901, 0.0008889977, + 0.0001048604, 0.0003082994, 0.0013376734, -0.0012536482, -0.0006208150, + 0.0014962412, -0.0026171762, -0.0002232175, -0.0006010153, -0.0014903033, + 0.0003930554, 0.0020584106, -0.0000268968, 0.0013335873, 0.0010711625, + -0.0022878377, -0.0013582935, -0.0012898343, -0.0007500756, -0.0004614959, + 0.0003065616, 0.0001215818, -0.0018442178, 0.0014077205, -0.0005059959, + 0.0012960210, -0.0000779360, -0.0004602295, 0.0004105913, 0.1368141770, + 0.0028472228, 0.0009976225, 0.0002832501, -0.0005451965, -0.0016659908, + 0.0008718632, 0.0009432147, -0.0012614364, -0.0006204192, 0.0011995099, + 0.0013411797, 0.0021695984, -0.0011642911, 0.0001916536, 0.0006584595, + -0.0022375942, 0.0002678876, 0.0024982085, -0.0010539587, 0.0001350550, + 0.0002696868, -0.0009647948, -0.0024612397, -0.0000652778, -0.0016810289, + 0.0010013115, -0.0010416922, -0.0006425004, 0.0007882323, 0.0004600370, + -0.0000885453, -0.0003461596, -0.0008469191, -0.0011976562, 0.0018846085, + 0.0008627289, -0.0003749644, 0.0009226176, -0.0000055041, -0.0008265111, + -0.0011267955, -0.0003244034, -0.0000991896, -0.0003338106, 0.0002209952, + 0.0026319681, 0.0006305929, 0.0008886708, -0.0006126412, -0.0002839752, + -0.0008558483, -0.0007085223, -0.0017304807, 0.0026324571, -0.0007396042, + 0.0229431745, 0.0006037485, 0.0011449913, 0.0020733986, 0.0015632338, + 0.0023904431, -0.0004004436, -0.0004134075, 0.0006903652, 0.0000023703, + 0.0005128982, 0.0022047702, 0.0009735855, -0.0002020765, 0.0012293087, + 0.0010942956, -0.0007671453, 0.0005562874, 0.0004671293, -0.0008802856, + -0.0025100932, 0.0006014513, 0.0004439782, 0.0003862791, 0.0021333736, + 0.0007379693, 0.0001868033, -0.0001122297, 0.0017158447, 0.0008268161, + -0.0025475766, -0.0019238994, -0.0001224975, -0.0004820651, 0.0016679289, + 0.0005842117, 0.0016172930, -0.0004661954, 0.0013710484, -0.0015610673, + -0.0013569833, 0.0005418139, -0.0007632338, 0.0015475417, -0.0000078814, + -0.0001022923, 0.0005641319, -0.0008139109, -0.0002089184, 0.0008341828, + 0.0007119852, 0.0011621825, -0.0016252128, 0.4190716445, -0.0002992593, + 0.0116692111, 0.0001567242, -0.0005884049, 0.0001585013, 0.0564846434, + 0.0010137311, 0.0012150398, 0.0003128210, -0.0014106189, -0.0004645144, + 0.0025757339, 0.0000211694, 0.0007728683, 1.0805093050, -0.0012974804, + -0.0007077891, 0.0012683340, 0.0005960996, -0.0012124539, 0.0013405383, + 0.0006159302, 0.0018270165, 0.0017683066, 0.0017717932, 0.0002332237, + 0.0017192713, -0.0013583307, 0.0013072952, 0.0017149127, 0.0010874348, + -0.0007004894, -0.0003396671, -0.0017287172, -0.0000271522, 0.0014946163, + 0.0000670454, -0.0025912456, 0.0012314087, 0.0004615337, -0.0014963264, + -0.0012524407, 0.0015332880, 0.0007236484, -0.0039380910, -0.0013659056, + 0.0015562547, -0.0006580940, -0.0004270757, 0.0010375616, -0.0011036014, + -0.0014342424, -0.0021811863, 0.0026237306, 0.0019146646, -0.0002254136, + -0.0002524778, 0.0028625950, 0.0013818427, -0.0001565176, 0.0005129620, + -0.0001983363, -0.0005998616, 0.0008059675, 0.0003240930, -0.0014041896, + 0.0021717160, 0.0030051917, -0.0008935491, 0.0013528368, 0.0020885174, + -0.0012442544, 0.0004640588, -0.0091593461, -0.0001049084, 0.0013434230, + -0.0006061201, -0.0010919665, -0.0000180912, -0.0011353921, 0.0002220178, + -0.0000804346, -0.0014771796, 0.0021518788, 0.0015516388, -0.0014077635, + -0.0005409444, 0.0002075024, -0.0000439370, -0.0003619171, -0.0003466175, + 0.0010751584, 0.0002094652, 0.0003434698, -0.0002253191, 0.0009586336, + -0.0014520241, 0.0010878639, -0.0009055272, 0.0002455835, 0.0008131843, + 0.0004231753, 0.0018006328, -0.0004832461, 0.0007564556, -0.0016777867, + -0.0014408347, 0.0006045282, -0.0005562343, -0.0012635479, 0.0012171495, + -0.0009008478, 0.0001835576, 0.0003094901, 0.0000501316, 0.0011174786, + 0.0013364840, 0.0007071464, 0.0030706988, 0.0018556863, -0.0020115958, + -0.0001499611, -0.0004827909, 0.0023618978, 0.0004673774, 0.0012184912, + 0.0007424299, 0.0016645424, 0.0013225095, -0.0008198027, 0.0016042888, + 0.2768129110, -0.0007832760, 0.0003030655, -0.0006658062, 0.0000442609, + 0.0002017076, -0.0005012860, -0.0001997443, 0.0004016794, -0.0021680510, + 0.0010465211, -0.0021140445, 0.0003632321, -0.0005286820, 0.0010783705, + -0.0005042202, 0.0003806758, 0.0000734394, -0.0009914450, -0.0005331854, + 0.0008303565, 0.1478063613, 0.0003473179, 0.0003395351, -0.0007476150, + -0.0008298922, -0.0020934944, 0.0010516024, 0.0001960194, -0.0015915753, + 0.0005305409, 0.0003795957, 0.0001196708, 0.0015045828, -0.0000880810, + -0.0000184882, -0.0023035044, 0.0003012386, -0.0008696401, -0.0006717606, + -0.0004669212, 0.0021433430, -0.0003667231, -0.0006674551, 0.0026418781, + -0.0004350697, 0.0005699936, -0.0011096904, 0.0003989302, -0.0005496508, + 0.0019450280, 0.0012591872, 0.0006490257, 0.0006621956, -0.0019343933, + 0.0016025325, -0.0323512554, -0.0020759115, -0.0009200126, 0.0002426335, + 0.0013868713, -0.0003325532, 0.0011481151, 0.0022416308, -0.0019104686, + 0.0007073041, 0.0007683305, -0.0001090850, 0.0010238620, 0.0013733683, + -0.0015406399, -0.0004192860, 0.0013448424, 0.0006578765, 0.0015045293, + 0.0011722157, 0.0008019321, -0.0008561248, -0.0002068732, -0.0000034319, + 0.0009453469, -0.0009316173, 0.0005467348, 0.0010817917, -0.0006321333, + 0.0022700941, 0.0025051790, -0.0007508625, -0.0002142972, -0.0010081311, + -0.0017881421, -0.0007282873, 0.0014595049, 0.0025265999, -0.0033227240, + -0.0005084900, 0.0009701326, 0.0005861449, -0.0004244903, -0.0012796223, + -0.0021066791, 0.0002455134, -0.0358748324, 0.0007672358, -0.0006452701}; + +float unet_input_time_embedding_50_43[] = { + -0.0014619660, 0.0016355896, 0.0020091999, 0.0011513049, 0.0023535599, + -0.0014705686, 0.0013810986, 0.0004874454, 0.0004144784, 0.0000709132, + -0.0008566321, 0.0004720250, -0.0036957804, 0.0028704824, -0.0012450572, + -0.0010427134, -0.0006759744, 0.0008354962, -0.0006599725, -0.0010477477, + -0.0000441531, -0.0017258562, -0.0005362130, -0.0193492621, 0.0013431930, + -0.0004928383, 0.0010349127, -0.0012299120, 0.0012745807, 0.0025302581, + 0.0016957840, 0.0009484581, 0.0001644483, 0.0006431667, 0.0013064097, + -0.0008307523, 0.0001706388, -0.0002545121, -0.0020353049, 0.0004924610, + 0.0005756570, -0.0013057741, -0.0004601623, -0.0004080515, 0.0003300360, + -0.0026297437, -0.0012841988, -0.0008570077, 0.0012272629, 0.0009783735, + -0.0012333086, -0.0006676165, 0.1889671832, -0.0006187158, 0.0004646220, + 0.0006339641, 0.0003361195, 0.0001277728, -0.0018155719, -0.0009880092, + 0.0006810734, -0.0011065056, 0.0001862096, 0.0010990391, 0.0008398197, + -0.0014259359, -0.0010349159, 0.0014165927, 0.0035036886, 0.0003161158, + 0.0004364820, 0.0002058938, -0.0013588413, -0.0005012332, 0.0015078150, + -0.0015039938, -0.0001421291, -0.0005795108, -0.0014238302, -0.0000809480, + 0.0012138209, 0.0015130598, -0.0006664833, -0.0031099156, -0.0006913377, + 0.0005709502, -0.0006910622, -0.0003937213, 0.0018903585, -0.0026581949, + -0.0018224766, -0.0008010752, 0.0017286809, 0.0009385116, -0.0055397465, + 0.0009396975, -0.0012372388, -0.0008222144, 0.0009442156, -0.0007872758, + 0.0004128926, 0.0010121639, -0.0016371129, -0.1109504849, -0.0002819942, + -0.0015423642, 0.0010427784, -0.0000052974, 0.0037945944, 0.0015964496, + -0.0005529593, -0.0006720265, 0.0389102139, 0.0010618586, 0.0027894890, + 0.0000157948, 0.0011153866, -0.0007047972, 0.0004120072, 0.0005051207, + 0.0003762585, 0.0007740986, 0.2950453758, -0.0009721802, -0.0002167048, + -0.0006286749, -0.0007555415, 0.0001153247, -0.0010344554, 0.0010952032, + 0.0019073854, -0.0005498650, 0.0015758474, -0.0005137082, 0.0012597109, + -0.0006302174, -0.0004395187, 0.0002034502, 0.0002663471, -0.0001609870, + -0.0002841267, 0.0001486924, 0.0010336423, 0.0015989929, 0.0010313133, + 0.0001682048, 0.0007658629, 0.0007646466, -0.0005189837, 0.0015750050, + -0.0000779070, 0.0004385245, -0.0007854744, 0.0005619994, 0.0010625585, + 0.0013582166, -0.0009277649, 0.0013620201, 0.0003066920, -0.0019026510, + -0.0003539324, 0.0000032060, -0.0004405258, 0.0006335613, -0.0015171063, + 0.0006754899, 0.0000391586, -0.0006583584, 0.1114975661, 0.0021293934, + -0.0002502674, 0.0004087416, -0.0002244385, -0.0003825990, -0.0012080949, + -0.0025764005, 0.0021772105, -0.0014115791, -0.0010085313, 0.0001080520, + -0.0029925909, 0.0011623390, 0.0005106856, 0.0002530564, -0.0009282248, + 0.0006788042, -0.0006149514, 0.0004991484, -0.0006004199, -0.0006672265, + 0.0008635786, -0.0016725985, -0.0008635361, 0.0020038725, -0.0003421744, + -0.0004656529, 0.0006896582, 0.0020973301, 0.0003818694, -0.0009813113, + 0.0006982628, 0.0007253564, -0.0007262733, -0.0002087131, -0.0016411869, + 0.0016523851, -0.0010882188, 0.0005541528, 0.0000215997, 0.0020096267, + 0.0002261833, 0.0015304792, -0.0020637074, -0.0008997256, 0.0030180598, + 0.0001096898, -0.0008560829, -0.0001450763, -0.0002107896, 0.0007205227, + 0.0006269761, 0.0021839924, 0.0000067502, 0.0078579066, -0.0015692858, + 0.0000123708, -0.0031006606, 0.0008115121, -0.0016845248, -0.0017324095, + 0.0015704618, 0.0005138796, -0.0005544201, -0.0002797241, 0.0003841314, + -0.0016391999, 0.0008875853, 0.0006421022, -0.0008489769, -0.0006227944, + 0.0020133613, 0.0001225858, -0.0006618244, -0.0010602828, 0.0636371747, + 0.0002523912, 0.0011016054, 0.0022291446, 0.0014673290, -0.0003069765, + 0.0003647013, 0.0001863735, 0.0007094336, 0.0021849414, -0.0012258834, + 0.0001699266, -0.0019749985, -0.0017118085, -0.0001104490, 0.0006369423, + 0.0013390463, 0.0006417602, 0.0010277641, 0.0026645276, -0.0013086403, + -0.0006972766, -0.0022641351, 0.0017651683, 0.0008927230, 0.0014752666, + 0.0003563999, 0.0005938325, -0.0013264408, -0.0011044145, 0.0004254370, + 0.0025499829, 0.0006432929, 0.0019505471, 0.0020791078, -0.0005098595, + 0.0617257319, 0.0004617088, -0.0015675932, 0.0013071336, -0.0001432657, + 0.0026533990, 0.0007164269, -0.0002013855, -0.0005272431, 0.0018488928, + 0.0000325321, 0.0012049130, -0.0007301520, -0.0011984149, -0.0004178230, + 0.0016205236, -0.0010442706, -0.0001634974, -0.0002812571, 0.0006573100, + -0.0043448266, -0.0012876850, 0.0018637954, 0.0009951191, -0.0011527725, + -0.0014412785, 0.0003912426, 0.0006609503, -0.0004372001, -0.0012752209, + -0.0001611132, 0.0000665649, -0.0009494884, -0.0010286532, -0.0010529528, + 0.0003550118, 0.0022859527, -0.0004231152, -0.0008688718, -0.0018084650, + 0.0001182479, -0.0003153947, -0.0008355414, -0.0015407391, 0.0007567942, + 0.0014758357, -0.0024244562, -0.0004839539, -0.0220106468, 0.0009851928, + 0.0027539190, -0.0000033819, -0.0018331112, -0.0009281458, 0.0000045775, + -0.0017239964, 0.0000222044, -0.0014268237, 0.0012495546, 0.0001548603, + -0.0008426006, -0.0012568999, -0.0005090723, 0.0420994870, 0.0005646702, + 0.0004205061, -0.0000911882, 0.0009827809, -0.0005623340, 0.0007976372, + 0.0001100097, -0.0012288135, 0.0005432847, -0.0003884695, 0.0015591382, + 0.0008006264, -0.0000227173, -0.0004880623, -0.0006325245, -0.0027030376, + 0.0001062155, -0.0006279014, -0.0015637828, 0.0013541481, 0.0006405328, + -0.0030904284, -0.0006461577, -0.0005773166, 0.0011868123, 0.2598228753, + 0.0022701211, -0.0000088485, 0.0016844615, -0.0005166614, -0.0002206587, + 0.0004525772, 0.0019419157, -0.0002524974, 0.0013546876, 0.0000080438, + 0.0002826099, 0.8869444728, 0.0015447827, 0.0002866071, 0.0011825347, + 0.0026846169, 0.0005032714, -0.0039156619, 0.0023017447, -0.0020722845, + -0.0005811211, -0.0001653332, 0.0013311063, -0.0013854997, 0.0003576186, + -0.0009366206, -0.0000275732, 0.0007467262, -0.0017506429, -0.0027052872, + -0.0013904949, 0.0009978591, -0.0000021004, -0.0001575006, 0.0003555967, + -0.0013328725, 0.0012293434, -0.0023500435, -0.0007097870, -0.0007789698, + 0.0007809226, 0.0011301627, -0.0006681373, 0.0004748790, 0.0004251448, + 0.0012407021, -0.0024248324, 0.0012041158, -0.0020610094, 0.0007012589, + 0.0002866683, 0.0021807435, -0.0007572547, 0.0008806621, -0.0003719022, + 0.0024899156, 0.0014993167, 0.0003725412, -0.0003875101, 0.0019162861, + 0.0003915918, -0.0012230608, 0.0012335093, 0.0009574331, -0.0005285701, + -0.0020159138, 0.0000464441, 0.0004832894, 0.0013785129, 0.0006411683, + 0.0012816912, 0.0031685745, -0.0013363381, 0.0014275971, 0.0024224177, + -0.0006346072, -0.0014111495, -0.0007009553, -0.0002337643, 0.0003189272, + -0.0005641109, 0.0012338804, 0.0004256966, -0.0010877312, 0.0000192742, + -0.0010291748, 0.0000280803, 0.0011258954, -0.0039617768, 0.0014845468, + -0.0006241186, -0.0004794076, 0.0001863216, 0.0002065633, -0.0008509080, + -0.0010446012, 0.0000615357, -0.0002755178, -0.0021697679, -0.0000314098, + 0.0003753803, 0.0003959651, 0.0020636218, -0.0021733332, -0.0009963810, + -0.0134495720, -0.0003063660, 0.0015784163, 0.0021088440, 0.2051135600, + -0.0012201644, 0.0002334710, -0.0010025040, 0.0011285082, 0.0001089878, + -0.0004882250, -0.0006208585, 0.0025127204, 0.0001872159, 0.0018642473, + -0.0004106970, -0.0892037600, 0.0014131912, 0.0021049171, -0.0019252878, + 0.0017660231, -0.0004713396, 0.0012858883, -0.0004334385, -0.0000589294, + -0.0005386835, 0.0003994526, -0.0011171647, -0.0001924699, 0.0001978001, + 0.0001804626, -0.0023956695, -0.0007147997, 0.0007258118, 0.0034396411, + -0.0020793776, 0.0020865239, 0.2435161918, 0.0027142167, 0.0002919264, + 0.0020125476, -0.0024340702, -0.0013947431, 0.0002306243, 0.0028534210, + -0.0017183288, 0.0007465030, -0.0014381461, -0.0019522025, -0.0007777347, + 0.0015717829, 0.0003219448, -0.0014672198, -0.0008875830, 0.0008651921, + 0.0023108872, -0.0013457634, -0.0002168464, 0.0010177733, -0.0003422666, + -0.0029468772, -0.0002851423, -0.0009724477, -0.0012470987, -0.0018472688, + 0.0029802741, 0.0016680681, -0.0000228419, 0.0009513483, -0.0001012287, + -0.0004207287, -0.0003120117, -0.0002946276, 0.0000624363, -0.0005508177, + 0.4095844924, -0.0006621620, 0.0000254149, -0.0020502154, 0.0000136388, + 0.0001295087, 0.0012206174, 0.0005264906, -0.0009663110, -0.0009346372, + 0.0011590915, 0.0004187919, -0.0017344290, 0.0010219926, 0.0001231472, + 0.0010795258, -0.0008555008, 0.0009257351, 0.0022443701, 0.0009241779, + 0.0016363878, -0.0025550819, -0.0012441375, 0.0005360378, 0.0005487888, + -0.0005536070, 0.0003005599, 0.0018308000, 0.0010131365, -0.0003219685, + -0.0024579179, 0.0018672249, -0.0032224800, 0.0003740134, -0.0017495414, + -0.0004373349, -0.0012379526, 0.0004493282, 0.0012718565, 0.0018664887, + 0.0009522539, 0.0009060921, -0.0011642855, -0.0005932283, -0.0017534245, + 0.0023758335, -0.0001576850, -0.0006709686, 0.0001153485, -0.0015984436, + -0.0004458637, -0.0017946092, 0.0002944944, 0.0006315440, 0.0001628238, + -0.0019249122, 0.0001787700, 0.0013604567, -0.0011154349, 0.0013879199, + -0.0001088146, 0.0005654970, -0.0019260596, 0.0022007315, 0.0008298298, + 0.0008825925, 0.0026866393, -0.0000673977, 0.0014122715, -0.0002764182, + 0.0003257184, -0.0003430411, 0.0015354385, 0.0001208670, 0.0009365226, + -0.0000520460, -0.0010263643, -0.0002394423, -0.0011949702, 0.0002651699, + -0.0005166898, 0.0021622381, 0.0007922462, 0.0010953333, 0.0004408539, + -0.0007058410, -0.0030054792, 0.0007959440, -0.0007420494, 0.0025036680, + 0.0008051795, 0.0007050580, -0.0012433834, -0.0004806209, 0.0003349045, + 0.0000073438, 0.0009107329, -0.0000450795, 0.0001720511, -0.0007215007, + -0.0017136788, -0.0004461361, 0.0001367561, 0.0020396938, 0.0007171081, + 0.0001473092, -0.0000238846, 0.0010534879, 0.0001419031, -0.0000411430, + -0.0001809178, -0.0003683553, -0.0000002016, -0.0003925274, -0.0008249395, + -0.0006413753, -0.0002383064, 0.0022688040, 0.0004569606, 0.0018668795, + 0.0000044203, 0.0007875774, -0.0012366606, -0.0016193755, 0.0025014393, + 0.0001788698, 0.0023300275, 0.0005622488, 0.0000373940, 0.0008403142, + -0.0015354571, 0.0019569187, 0.0005633803, 0.0004310267, -0.0008996716, + -0.0007951069, -0.0009736354, 0.0016120544, 0.0003177999, 0.0004228444, + -0.0008448181, -0.0005390849, 0.0006863677, -0.0008636063, -0.0000390362, + 0.0003474038, 0.0002298334, -0.0006307783, 0.0000474558, -0.0014021099, + 0.0013990060, 0.0013562664, 0.0005326413, -0.0020006655, 0.0000542607, + -0.0005116072, 0.0002500536, 0.0011660820, -0.0017451674, -0.0007384862, + -0.0001261537, 0.0123801483, 0.0011418795, -0.0002453527, -0.0009400011, + -0.0014248965, -0.0002094936, -0.0011337907, 0.0011758253, 0.0007295609, + -0.0007972103, 0.0014976072, -0.0011378013, -0.0001943876, 0.0012076346, + 0.0021908111, -0.0009489749, -0.0020551663, 0.0009195432, -0.0000079810, + -0.0013130368, 0.0027185846, 0.0000411412, -0.0000481242, -0.0003636254, + 0.0315820463, -0.0022960156, -0.0002721930, -0.0002774938, 0.0000811229, + -0.0014159181, -0.0009656027, 0.0018106317, -0.0015783005, -0.0014621280, + -0.0002783537, 0.0021537712, 0.0010222836, 0.0013022046, -0.0005205041, + 0.0010116461, 0.0020654688, 0.0006528893, 0.0009443122, -0.0000996206, + 0.0017227535, -0.0003546798, 0.0016881664, -0.0001395314, 0.4719333947, + 0.0019930827, -0.0012881078, -0.0004427209, 0.0015971558, -0.0017887307, + -0.0011935513, 0.0017057554, -0.0016002832, -0.0010259210, -0.0017235253, + -0.0007334570, -0.0013589161, -0.0003774716, -0.0024432994, -0.0005333885, + -0.0008095810, 0.0004653530, 0.0008689249, 0.0000536945, -0.0006726366, + 0.0010248674, 0.0016103304, 0.0005915503, -0.0014081304, 0.0003076470, + -0.0000080592, 0.0218032505, -0.0029318333, 0.0000706967, 0.0002394454, + 0.0007914359, 0.0005248669, -0.0021889112, -0.0010477337, 0.0004936798, + -0.0020832361, -0.0006267210, -0.0009193165, -0.0061827125, 0.0004445903, + 0.0003379608, 0.0024647678, -0.0001314300, -0.0007287059, -0.0009971568, + -0.0005987380, -0.0003672130, 0.0012121021, -0.0018290745, 0.0001716329, + -0.0010458200, 0.0018798381, 0.0003005605, -0.0009067585, 0.0011204383, + -0.0016375883, 0.0022879615, 0.0000749175, 0.0016539374, -0.0005804251, + 0.0010064458, -0.0002887506, -0.0015103123, -0.0009217781, 0.2392946780, + 0.0008400222, -0.0011469857, 0.0009862563, 0.0005000080, -0.0007722413, + 0.0009494547, -0.0000983379, -0.0013454412, -0.0007007897, -0.0000958811, + -0.0001572890, 0.0000137761, -0.0028375336, -0.0026872279, 0.0021439786, + -0.0007894784, -0.0002907955, -0.0022024731, 0.0002390388, 0.0024959790, + -0.0007265746, 0.0016139504, -0.0003374435, -0.0005932827, -0.0010920900, + 0.0034101643, 0.0006058086, -0.0003838696, 0.0011199052, 0.0020924360, + -0.0000527363, 0.0013238685, -0.0019093063, -0.0002201658, 0.0004462125, + 0.0027069901, 0.0015415060, -0.0014702771, 0.0000197594, -0.0006519021, + -0.0004644291, -0.0017645340, 0.0020263512, 0.0014186313, 0.0007929049, + -0.0009167495, 0.0013194713, -0.0000502556, 0.0007751379, -0.0009734752, + -0.0017441695, -0.0008648438, -0.0001188694, -0.0009863008, -0.0014616754, + 0.0297185704, -0.0004947997, -0.0009364723, 0.0003109262, -0.0013077722, + 0.0014409455, -0.0021301259, 0.0018370226, 0.0011360825, 0.0009085037, + -0.0027156149, -0.0001750959, -0.0005976632, -0.0002299319, -0.0011669653, + 0.0007627218, -0.0002458618, 0.0009638852, -0.0008183129, 0.0024073925, + -0.0011944389, 0.0007093392, 0.0001757499, 0.0000318186, 0.0009257807, + 0.0022662003, -0.0009419201, 0.0015085757, 0.0010883384, 0.0015313271, + -0.0020480007, -0.0010491543, 0.0026586475, 0.0012570696, 0.0028246269, + 0.0006998584, -0.0009354660, -0.0009426571, 0.0000945800, -0.0023602722, + -0.0005983813, -0.0016650110, -0.0022224030, 0.0006814077, -0.0001012175, + 0.0005225958, -0.0003690477, 0.0007689958, 0.0005288710, -0.0016408912, + 0.0003060703, -0.0007831237, 0.0004006625, 0.0006971387, 0.0552419871, + 0.0011640762, 0.0025426364, 0.0024963208, 0.0001918932, 0.0003419891, + -0.0022176774, 0.0008680880, 0.0015841015, -0.0003057458, -0.0010443558, + -0.0005409984, 0.0017898534, 0.0004262086, 0.0001300047, 0.0005043917, + -0.0004573693, -0.0017605518, 0.0010094047, -0.0005347501, -0.0022793019, + 0.0010424396, 0.0010082796, 0.0003132909, -0.0003708308, -0.0002559253, + 0.0005766950, -0.0004671321, -0.0005597156, 0.0000726953, 0.0016861297, + 0.0006455090, 0.0011417195, 0.0002744598, -0.0025237422, 0.0004969370, + 0.0017471956, 0.0007022725, -0.0026505182, 0.0011391863, -0.0003852793, + 0.0004233499, -0.0008638492, 0.0006435609, -0.0010454614, 0.0015982073, + 0.0010362915, -0.0010862835, 0.0020232499, 0.0008128602, 0.0004465939, + 0.0003137238, -0.0004843676, -0.0027727718, 0.0000515834, 0.0004277546, + -0.0483118929, 0.0002803020, -0.0016995827, 0.0001001863, -0.0012152586, + 0.0028362500, 0.0003332738, -0.0001038415, 0.0010912707, -0.0001349163, + 0.0016952942, 0.0020598713, 0.0018079788, 0.0010195330, -0.0002477964, + 0.0008296827, -0.0001800014, -0.0012753727, -0.0006701041, -0.0008679118, + -0.0014299802, -0.0000227286, 0.0005518505, 0.0012386031, -0.0002745823, + 0.0015821005, -0.0000967234, 0.0004558794, 0.0004389745, 0.0000506644, + -0.0010745088, -0.0010882576, -0.0010050435, -0.0012529490, 0.0017872662, + 0.0002623429, 0.0005438676, -0.0022211932, -0.0000388301, -0.0016662404, + 0.0006530017, 0.0002179253, -0.0009706579, -0.0008597933, -0.0002702149, + 0.0007575154, -0.0009872247, -0.0016986049, -0.0002309916, -0.0003086533, + 0.0004271304, 0.0004785284, 0.0004989100, 0.5221107006, -0.0001842512, + -0.0079936739, 0.0007201093, -0.0008761301, 0.0010271918, 0.0987375230, + -0.0005210745, -0.0018772408, -0.0001906594, -0.0022656089, -0.0017236115, + 0.0021854800, 0.0010802087, 0.0010190653, 1.1078478098, 0.0001157466, + -0.0006369718, 0.0021537512, 0.0007995345, -0.0007989709, 0.0002557896, + -0.0012993808, 0.0006283699, 0.0004405044, 0.0009557789, 0.0020124568, + 0.0017790096, 0.0004404970, 0.0008879956, 0.0008111973, 0.0023362408, + -0.0015379901, 0.0005354399, 0.0003587173, 0.0000612247, 0.0014533121, + 0.0012043156, -0.0014226965, -0.0007670186, -0.0010504699, 0.0010342270, + 0.0004706961, 0.0000185417, 0.0026676208, -0.0005039682, 0.0004384415, + -0.0015918773, 0.0015347376, -0.0001086202, -0.0012903246, -0.0011691814, + 0.0006141840, -0.0029132466, -0.0014186122, -0.0008349235, 0.0002999823, + -0.0007347874, 0.0009639533, 0.0031237863, 0.0007311516, 0.0017817852, + -0.0012578123, 0.0000043234, 0.0012771711, -0.0007986686, 0.0022540395, + 0.0004194141, -0.0012244140, 0.0017121290, -0.0017318330, -0.0025778413, + -0.0036757570, 0.0003266393, -0.0105073322, -0.0000672643, -0.0016966038, + -0.0007558414, 0.0005693316, 0.0010282062, 0.0007509207, -0.0014854569, + 0.0012664227, -0.0000765705, 0.0020222808, 0.0004694059, -0.0001142654, + 0.0010351993, -0.0005517006, 0.0005265670, 0.0000613998, -0.0001963091, + -0.0000971821, 0.0006006714, 0.0007980714, 0.0010805386, -0.0000309870, + 0.0004338892, 0.0028416011, 0.0007270466, 0.0007157112, 0.0003987537, + -0.0006667543, 0.0012181012, -0.0011625208, 0.0007778313, -0.0006040966, + 0.0003716783, -0.0009003202, 0.0015970347, 0.0003580508, 0.0026009525, + -0.0009252238, 0.0009934199, 0.0011633579, 0.0000671812, -0.0011846325, + 0.0017422212, 0.0013626363, -0.0005260305, 0.0010146778, -0.0017064693, + -0.0016977284, -0.0000654922, -0.0003009934, -0.0008729215, 0.0011623413, + 0.0015281660, 0.0013687063, 0.0007908886, -0.0004834628, 0.0018010463, + 0.2600721121, -0.0012276040, -0.0005720829, -0.0009601210, 0.0021087986, + 0.0005294289, -0.0012039433, -0.0001574855, -0.0002168845, -0.0005754859, + 0.0035008299, 0.0002142970, -0.0007145451, 0.0008922135, 0.0011749906, + -0.0025650125, 0.0003280565, 0.0005144468, -0.0000955490, 0.0030813548, + 0.0004000240, 0.0957573801, 0.0011169973, -0.0010908111, 0.0004801236, + 0.0016827853, -0.0001209674, -0.0000393975, 0.0006665459, -0.0007778192, + 0.0013995590, 0.0020030634, -0.0005155928, 0.0007633148, 0.0004784360, + 0.0005671508, 0.0007666459, -0.0005277726, -0.0004634042, 0.0007748702, + -0.0017314178, 0.0000567194, -0.0004815095, -0.0001032506, -0.0003452222, + 0.0010040153, -0.0015082143, 0.0021324814, 0.0002237130, 0.0003458839, + 0.0019013527, 0.0025377062, 0.0017558925, 0.0004351033, 0.0017165956, + 0.0017939784, 0.0651933476, 0.0007299162, 0.0001482819, 0.0005229164, + -0.0015554198, 0.0015876398, -0.0004592806, 0.0001303398, -0.0001769654, + -0.0015363242, 0.0020187949, 0.0006862773, 0.0005285642, -0.0017171795, + 0.0024333510, 0.0006173888, -0.0005486240, -0.0003747731, -0.0006455597, + -0.0006384421, 0.0021580486, 0.0001494819, 0.0000599868, 0.0008602375, + 0.0007975926, 0.0010927911, 0.0002075830, 0.0003076880, 0.0014127332, + -0.0008734501, 0.0000102166, 0.0026696799, -0.0008045639, 0.0007711230, + -0.0009269994, 0.0006603808, 0.0008379919, 0.0011925985, -0.0027868312, + 0.0012745936, 0.0026739235, -0.0004509999, 0.0020702379, -0.0002858284, + -0.0006446028, 0.0006073024, -0.0232972614, 0.0010647250, 0.0003304827}; + +float unet_input_time_embedding_50_44[] = { + 0.0005918005, 0.0008348043, -0.0009287563, 0.0008230740, -0.0001035328, + -0.0016003754, 0.0009354154, -0.0003218747, -0.0002607801, 0.0000956517, + -0.0009365382, -0.0010785996, 0.0001243819, 0.0008191462, -0.0002133474, + -0.0000351574, -0.0016339896, 0.0003507802, -0.0018956478, 0.0010853135, + 0.0007143952, 0.0001382604, 0.0005052566, 0.0101950113, 0.0002634290, + -0.0012054538, -0.0002183262, 0.0012451643, 0.0005741081, -0.0007319408, + -0.0014997358, -0.0014825796, -0.0001110090, -0.0007062098, 0.0008155964, + -0.0004450618, 0.0005603707, 0.0002035587, 0.0002561356, -0.0011729086, + -0.0004455494, -0.0005174548, -0.0013111071, -0.0014334721, -0.0000207985, + -0.0015004356, 0.0010896840, -0.0005834550, -0.0010749395, 0.0018050391, + -0.0005701799, -0.0013638930, 0.1310471892, -0.0003146906, 0.0005366429, + 0.0004122297, -0.0000850799, -0.0009132938, -0.0003048000, -0.0005692372, + 0.0009669808, 0.0004029520, 0.0015220768, -0.0018473614, -0.0003462108, + 0.0004169177, -0.0010278155, -0.0002659337, -0.0015025102, -0.0001069777, + -0.0021889554, 0.0007769917, -0.0001128193, -0.0003756508, 0.0006210129, + 0.0015362706, 0.0004669053, 0.0002869638, 0.0004948258, 0.0000666522, + -0.0006271633, -0.0010405089, -0.0020087943, 0.0006264243, -0.0005534126, + -0.0011826274, -0.0019141005, -0.0013556955, -0.0002128691, 0.0007692042, + 0.0007980642, 0.0002210075, 0.0008819150, -0.0001007853, 0.0009902040, + -0.0001158707, 0.0006850949, 0.0009086337, 0.0009100644, 0.0006169365, + -0.0027447171, 0.0007971658, 0.0003450462, -0.1658229232, 0.0009879849, + 0.0008029351, -0.0006728838, 0.0001657559, 0.0003271308, -0.0016363398, + -0.0002021124, -0.0011454364, -0.0437361524, 0.0004293686, -0.0011608908, + -0.0007069933, -0.0001141937, 0.0015851788, 0.0018772746, -0.0018659832, + -0.0004124129, -0.0003222697, 0.2632731497, 0.0006743995, -0.0020316653, + 0.0003296654, -0.0008480670, 0.0012371852, -0.0000485121, -0.0013703783, + 0.0011630426, 0.0001965789, -0.0007908507, 0.0020198878, -0.0000999363, + -0.0003850248, -0.0001601437, 0.0002258550, -0.0007415283, 0.0002041236, + -0.0010672256, -0.0002949303, -0.0001825187, -0.0002667410, -0.0009718558, + -0.0004217364, -0.0012912578, 0.0007759333, 0.0004133498, 0.0015186151, + -0.0005513472, 0.0005248358, -0.0000396897, 0.0012301547, 0.0006798054, + 0.0000530493, 0.0011533219, -0.0001633270, -0.0002205991, 0.0006094999, + 0.0008126181, -0.0012886884, 0.0003720801, -0.0006685294, 0.0001685577, + -0.0008313005, -0.0002716670, 0.0002474831, 0.0771936849, -0.0003446881, + -0.0016559990, 0.0001979731, 0.0001252485, -0.0001531398, 0.0003818702, + -0.0014081467, 0.0012066119, -0.0001578704, -0.0001181788, -0.0004090006, + -0.0000722646, 0.0010565259, -0.0011862158, 0.0004432660, -0.0006158017, + 0.0001009982, -0.0003869571, -0.0020260294, 0.0002758899, -0.0007458390, + 0.0009062141, -0.0015145894, 0.0008490109, -0.0008449892, -0.0028249607, + 0.0000663348, 0.0004922679, 0.0012247553, -0.0001682698, 0.0002032151, + 0.0001331596, -0.0008066627, 0.0007054894, 0.0002056924, -0.0002703406, + 0.0002656626, -0.0004825860, -0.0001879828, 0.0002044849, -0.0001817152, + -0.0009628292, 0.0001163022, -0.0007049378, 0.0003618605, -0.0012737920, + 0.0023621228, -0.0008498458, 0.0010162215, 0.0008453779, 0.0003089606, + 0.0003911844, -0.0009195763, -0.0010764569, -0.0121544478, -0.0012178133, + -0.0006225826, -0.0009598029, 0.0018040133, 0.0012855658, 0.0018963935, + 0.0024181218, 0.0010221801, -0.0007376391, 0.0005984190, -0.0022024764, + -0.0006042984, -0.0004213569, 0.0006079637, -0.0005503232, 0.0003180309, + -0.0007281809, -0.0001994356, -0.0011404799, -0.0002432913, 0.1409083605, + -0.0004082953, -0.0009211649, -0.0006668895, 0.0014271555, -0.0003397306, + -0.0010801833, -0.0018809498, -0.0000440427, 0.0003697770, -0.0008657714, + 0.0004258470, 0.0019028937, 0.0002916829, 0.0009599768, 0.0007781686, + -0.0019307369, -0.0002399539, 0.0002563943, -0.0049910783, 0.0017921842, + -0.0010187305, -0.0001886101, 0.0013508406, 0.0004562158, -0.0000522807, + -0.0012128782, -0.0012281829, 0.0007257145, 0.0008658844, -0.0001462898, + -0.0000170902, -0.0013391217, -0.0008963891, -0.0010678237, -0.0002665194, + -0.0110824183, 0.0000072476, -0.0010940124, -0.0008758996, -0.0014714638, + -0.0003626002, 0.0003417572, 0.0009974937, 0.0012966860, -0.0014847973, + -0.0012438407, -0.0001661025, -0.0011676650, 0.0012631137, -0.0018670820, + -0.0006521503, -0.0007536658, 0.0000849026, -0.0004609548, 0.0019245544, + -0.0012324797, -0.0001595530, -0.0002271746, -0.0005984958, 0.0001262247, + 0.0005186428, 0.0016597388, -0.0002537266, -0.0005946821, 0.0010274127, + -0.0013050605, -0.0005946294, 0.0013522666, 0.0005309135, -0.0007504281, + 0.0000904794, -0.0014020164, 0.0010835384, -0.0000399309, 0.0005961573, + 0.0005427471, 0.0002551558, 0.0008643738, 0.0010075374, 0.0012408291, + -0.0008312245, -0.0017523970, 0.0015464323, -0.0103424415, -0.0016531087, + 0.0003907834, 0.0016089710, -0.0018498922, -0.0000863960, -0.0008282796, + 0.0005165143, -0.0003911627, -0.0002450488, -0.0003022188, -0.0001806119, + 0.0005440442, 0.0008143827, -0.0005550331, -0.0544065014, 0.0005267800, + 0.0014220322, -0.0013538125, -0.0017402691, 0.0000936482, 0.0016196292, + 0.0013389122, -0.0000484083, -0.0006863261, -0.0019039325, -0.0007344872, + -0.0003008684, 0.0008107671, 0.0011061487, 0.0010713744, 0.0007489873, + -0.0005590031, -0.0002187458, -0.0002263607, 0.0003586598, 0.0009535284, + -0.0005414819, -0.0011084829, -0.0002484461, 0.0005831113, 0.3088426888, + 0.0012786863, 0.0004847012, 0.0022603571, 0.0002855780, 0.0015099940, + 0.0002138101, 0.0010614571, -0.0025130950, 0.0000768809, -0.0001703491, + 0.0007349871, 0.8208861351, -0.0001469724, -0.0010589282, 0.0022351895, + -0.0003995125, -0.0009690402, 0.0010489887, -0.0004452211, 0.0002119127, + -0.0011261031, -0.0009650300, 0.0005353931, -0.0001775241, -0.0008332026, + -0.0009723550, 0.0006621107, -0.0005335930, 0.0004374390, 0.0008105938, + 0.0001484407, -0.0010411516, 0.0019894775, 0.0005007824, 0.0012037056, + -0.0000522630, -0.0007231993, 0.0001520552, 0.0005036076, -0.0000813603, + -0.0000538279, -0.0013730281, -0.0006286961, 0.0012937461, 0.0012182475, + -0.0004222426, 0.0001187753, 0.0006557816, 0.0001666611, 0.0004098755, + -0.0006858187, -0.0009629691, 0.0010221733, -0.0006123765, -0.0007284423, + -0.0019660189, -0.0005129548, -0.0022629965, 0.0008640683, 0.0000617485, + -0.0011493559, 0.0001060800, -0.0019937241, -0.0007808746, 0.0009352370, + -0.0016231774, -0.0009373594, -0.0019965610, -0.0000461107, 0.0003122210, + -0.0005536294, 0.0001385701, -0.0006506952, 0.0001583009, -0.0011972121, + 0.0006411257, -0.0018583559, 0.0010731649, -0.0002908781, -0.0025570802, + -0.0000854470, 0.0001876764, -0.0017735057, -0.0012319218, -0.0015177501, + -0.0009755604, 0.0010380605, 0.0002929769, -0.0017667809, 0.0002911063, + 0.0001583907, -0.0021408461, -0.0009044941, -0.0014405026, -0.0000111340, + -0.0002697697, 0.0002190615, -0.0007194066, -0.0000192925, 0.0000457796, + 0.0002770256, -0.0006043280, 0.0008348580, 0.0004221811, 0.0008993908, + -0.0118459556, -0.0002334286, -0.0005235894, -0.0000911765, 0.2430362403, + -0.0008154095, 0.0001393699, -0.0003556353, 0.0020969515, 0.0001729031, + 0.0002602403, 0.0003169256, 0.0018785298, -0.0007858505, 0.0005155595, + 0.0005356963, -0.1543771029, -0.0012578804, -0.0007324149, -0.0001492710, + 0.0099295555, 0.0001258561, -0.0001542419, 0.0001365426, -0.0016872850, + -0.0002482855, -0.0000711484, -0.0014867876, -0.0005280650, 0.0000178846, + -0.0005943226, 0.0000517489, -0.0000816121, -0.0021524313, 0.0008664642, + 0.0001130688, 0.0010242104, 0.3251378834, 0.0007396573, -0.0009013171, + 0.0005640751, -0.0009466135, -0.0008024974, -0.0001928657, 0.0006206734, + -0.0003605247, 0.0000932259, -0.0015541321, 0.0000871504, 0.0004597399, + 0.0008932987, -0.0019824833, 0.0006699050, -0.0008873078, -0.0000151005, + 0.0002042798, -0.0008409382, -0.0014630426, -0.0001300995, 0.0010707490, + 0.0005104097, 0.0006634402, 0.0004334545, 0.0020155404, 0.0006032961, + 0.0019666813, 0.0018646428, 0.0000948777, -0.0001119892, -0.0004081908, + 0.0005344022, 0.0013453085, -0.0006524459, -0.0010780140, -0.0015353160, + 0.5289890170, -0.0008673631, 0.0001292371, 0.0007905319, -0.0006938179, + 0.0010552531, 0.0001489876, -0.0008745324, -0.0006749434, -0.0011097779, + -0.0005746959, 0.0011871093, 0.0001939475, -0.0000035595, 0.0003546546, + 0.0000117440, -0.0014469372, -0.0005614790, 0.0009816019, -0.0007264176, + 0.0006758820, -0.0013774622, 0.0008666040, 0.0007325043, -0.0007627956, + -0.0005314527, -0.0005799027, 0.0000844239, -0.0012542065, 0.0006674125, + 0.0000923630, 0.0001700071, 0.0003580363, -0.0009817401, 0.0004603309, + 0.0005231500, -0.0008231159, -0.0005868725, -0.0009769178, 0.0013398076, + 0.0006330976, 0.0005053105, 0.0004992522, -0.0006102622, 0.0012512498, + -0.0008819059, -0.0007083376, 0.0012575453, -0.0015061605, -0.0012291439, + 0.0007419125, 0.0016114814, -0.0007205950, 0.0002582197, -0.0004065132, + 0.0001625493, -0.0006920031, 0.0011105763, -0.0011578441, -0.0011429477, + 0.0005054784, -0.0003211717, 0.0017422789, 0.0013863235, -0.0005731797, + 0.0000238782, -0.0018681614, -0.0011994920, -0.0011351844, -0.0012915435, + -0.0016160696, -0.0016628216, -0.0001745545, 0.0015922906, 0.0003521070, + -0.0012114625, -0.0002276793, -0.0019439331, -0.0007401272, 0.0001736381, + -0.0004375447, -0.0006263137, 0.0006785792, 0.0001489718, 0.0014290866, + -0.0014836136, -0.0005195807, -0.0005444562, -0.0011447533, -0.0005743871, + -0.0000628863, -0.0010875012, -0.0005125436, 0.0008353812, -0.0017894818, + 0.0009856747, 0.0004769610, 0.0009504349, 0.0018420368, 0.0002957601, + -0.0013413051, -0.0025634887, 0.0003423432, 0.0007353802, 0.0001300024, + -0.0006970542, -0.0014100105, 0.0010234648, -0.0008043376, -0.0001892014, + -0.0012054103, -0.0005338085, -0.0005432577, 0.0007785048, 0.0012242645, + -0.0009694158, -0.0001066812, -0.0021133414, 0.0009008062, -0.0003073703, + -0.0014671085, -0.0024184580, -0.0007824327, -0.0024288192, 0.0016919617, + -0.0009025475, 0.0007035951, 0.0002242681, 0.0005018841, 0.0000147768, + 0.0000361153, 0.0005215886, 0.0021095090, 0.0007918022, 0.0000470709, + 0.0001117559, -0.0009795553, 0.0026742194, -0.0008867835, 0.0005556475, + -0.0007701558, 0.0000876635, 0.0002558015, -0.0017540886, -0.0009461404, + 0.0007395907, 0.0007684985, 0.0013696784, 0.0015356799, -0.0011429079, + 0.0019187019, -0.0002139213, 0.0010208108, 0.0013973708, 0.0006512068, + 0.0001578256, -0.0000209026, 0.0010542334, -0.0006097599, 0.0002795017, + 0.0002241423, -0.0005788608, 0.0003645870, -0.0015067817, 0.0009061685, + 0.0008133415, 0.0001373095, -0.0007667215, -0.0008724071, -0.0014801142, + -0.0008028336, 0.0002966742, -0.0000598121, 0.0002811187, 0.0011771645, + -0.0006431872, -0.0000553150, -0.0000015448, 0.0001552720, -0.0003804003, + -0.0006250925, -0.0021353010, 0.0005489502, -0.0017730412, 0.0013803220, + -0.0646006614, 0.0002500755, -0.0010187454, 0.0009515630, -0.0008147180, + 0.0000152723, -0.0000722548, -0.0013186927, 0.0015082292, -0.0010077376, + 0.0002277656, -0.0013087405, 0.0002813587, -0.0005709962, -0.0009957883, + -0.0015991454, -0.0009954203, 0.0021042833, -0.0003251452, 0.0002792419, + 0.0003881026, 0.0006609336, 0.0004192827, 0.0013384002, 0.4785140157, + 0.0004461203, -0.0012907556, 0.0011398178, -0.0007158308, 0.0002986561, + 0.0004641050, -0.0004023983, 0.0003672828, 0.0016945419, 0.0003739647, + 0.0007361593, -0.0006491253, -0.0012849625, 0.0013948579, 0.0002913582, + 0.0000437249, 0.0004975293, -0.0002343776, 0.0003075614, -0.0013444796, + 0.0007877392, 0.0001658014, -0.0020600224, -0.0015236679, 0.0000661430, + -0.0005215374, 0.0129413716, 0.0011284309, -0.0013870751, 0.0017043562, + 0.0002759249, -0.0003316863, -0.0011730110, 0.0001981836, -0.0011220975, + 0.0005898704, 0.0000304701, -0.0004611230, 0.0084886393, -0.0008742819, + -0.0011843377, -0.0005709392, -0.0006229362, 0.0008355351, 0.0002801302, + 0.0014784760, 0.0001533658, 0.0004435102, -0.0000096836, 0.0014576475, + 0.0016122790, 0.0008157282, -0.0024009501, 0.0011187419, 0.0007708133, + 0.0003968440, -0.0009902343, -0.0004104013, 0.0003404839, 0.0007194788, + -0.0007054769, -0.0001506618, -0.0005556796, 0.0006851070, 0.1341033876, + 0.0008404932, -0.0015442504, -0.0009792977, 0.0017082056, -0.0011065321, + -0.0008105494, 0.0001351638, -0.0014863913, -0.0013262758, -0.0000301655, + 0.0010922023, -0.0003918619, 0.0002161807, 0.0001151003, -0.0011790043, + -0.0016129520, 0.0000290500, -0.0172699038, -0.0007246681, 0.0011238079, + 0.0006807949, 0.0006485726, -0.0009807255, -0.0010766387, -0.0008629840, + 0.0010110624, -0.0014791333, -0.0002652757, -0.0013850546, -0.0003323872, + 0.0062909690, -0.0022587888, -0.0002718854, 0.0001749303, 0.0004512994, + 0.0011289637, -0.0007475968, 0.0005500328, -0.0010681105, 0.0003128350, + 0.0003616763, 0.0006691086, -0.0039879838, -0.0009927519, 0.0008600940, + -0.0006617405, 0.0018361672, -0.0006858618, 0.0007909224, -0.0010577911, + -0.0015433289, -0.0003333860, 0.0000752243, -0.0013318107, -0.0002241798, + 0.0054158210, -0.0006996918, 0.0003997227, -0.0015605194, -0.0005930413, + 0.0006599454, 0.0005434328, -0.0008967314, -0.0007147153, 0.0006994429, + -0.0002126573, 0.0005830335, 0.0002669669, -0.0006439527, -0.0004217792, + -0.0001107403, 0.0009357487, 0.0015317694, -0.0000834032, -0.0007537464, + -0.0004424639, -0.0008245688, 0.0023183068, 0.0007569091, -0.0006768978, + -0.0025379360, -0.0010301475, 0.0001113870, -0.0007365677, -0.0017072072, + 0.0011811373, 0.0002983761, 0.0004035905, -0.0009599959, 0.0006273971, + 0.0001099012, 0.0002611242, 0.0010921133, -0.0007327986, 0.0000201535, + 0.0003473191, -0.0003298363, -0.0000655288, -0.0008503075, -0.0001000345, + -0.0010105860, 0.0007487277, -0.0000451324, 0.0005225296, 0.0000927603, + 0.0003605857, 0.0013266931, 0.0002296664, -0.0010361029, -0.0412168577, + -0.0001867502, 0.0007570786, -0.0000901353, -0.0013955545, -0.0001417799, + -0.0011079097, 0.0001563006, 0.0005158107, 0.0003659376, -0.0001700572, + 0.0003584890, 0.0012641274, -0.0011766832, -0.0009212110, -0.0012264652, + 0.0004710129, 0.0005844430, 0.0003230995, 0.0006093234, -0.0004211545, + -0.0007288093, 0.0003938335, -0.0010222116, -0.0004446311, 0.0002605067, + -0.0002371692, 0.0010782969, -0.0010430855, -0.0007029856, -0.0000981521, + -0.0004632936, -0.0008867057, -0.0013986938, 0.0001326147, -0.0006282255, + 0.0001195269, -0.0013805319, 0.0000986996, -0.0001000380, 0.0000565890, + 0.0005774288, -0.0015888400, -0.0022557159, -0.0010805511, -0.0019756141, + 0.0017305210, -0.0015795231, 0.0009429215, -0.0005526361, 0.0023900615, + -0.0006629481, -0.0012965682, 0.0005224412, 0.0004855029, -0.0002065911, + -0.1448445916, -0.0010590515, 0.0006242935, -0.0028862574, 0.0015677274, + 0.0005763473, -0.0015793070, -0.0012351028, -0.0003621019, 0.0000991712, + 0.0004414099, 0.0009069890, 0.0001094886, -0.0001386842, -0.0009594428, + -0.0003947541, -0.0001497581, 0.0004260442, 0.0012844962, -0.0004994860, + -0.0010360079, -0.0010921267, -0.0006867340, 0.0004902044, 0.0010933299, + 0.0003541172, -0.0004071142, -0.0005778002, 0.0011471694, -0.0013849486, + 0.0009716570, -0.0024694887, 0.0008885906, -0.0002481707, 0.0010429192, + -0.0004022835, -0.0012379383, 0.0015089200, -0.0007284314, -0.0006032817, + 0.0012169920, 0.0033000149, -0.0002590073, 0.0011311797, 0.0007828770, + 0.0000387379, 0.0002612986, 0.0007195649, -0.0024163695, -0.0004406301, + -0.0000625723, 0.0004220367, -0.0007986934, 0.6447911859, -0.0004381232, + -0.0261247326, -0.0009958559, 0.0009216401, 0.0008604077, 0.1161885709, + 0.0000449428, -0.0002007606, -0.0005064914, -0.0012407596, -0.0005530231, + 0.0002497295, -0.0004862058, -0.0007026391, 1.1589665413, 0.0002957813, + -0.0001147024, -0.0006919370, 0.0008973986, 0.0005346923, 0.0001925025, + 0.0011173217, 0.0004826803, 0.0012821620, -0.0019197923, 0.0008760463, + -0.0003506253, 0.0010160711, 0.0001649619, -0.0000166264, -0.0008825362, + -0.0012323486, 0.0006867554, 0.0001195213, -0.0018698233, 0.0010483684, + -0.0002143825, -0.0010060775, 0.0010168604, 0.0018156874, -0.0001042287, + -0.0010083911, 0.0004109917, 0.0008719433, -0.0001010841, -0.0002413886, + -0.0000849792, 0.0003739847, 0.0015480155, 0.0002966691, 0.0002586776, + 0.0015374226, 0.0022143098, 0.0003492435, -0.0005576953, -0.0011300864, + 0.0004506018, -0.0010630041, 0.0005503136, -0.0012964294, -0.0014068524, + -0.0003740552, 0.0010489279, -0.0000441205, -0.0003633671, -0.0004249288, + 0.0008875409, 0.0000359733, -0.0020564445, 0.0011252144, -0.0003401968, + -0.0012637414, 0.0011397826, -0.0045167929, 0.0012416686, -0.0002321838, + -0.0014129370, 0.0003904605, 0.0009767045, -0.0017099436, -0.0007746199, + 0.0000333488, -0.0005298718, -0.0022588517, 0.0000887830, -0.0003785626, + -0.0001027466, -0.0001625307, -0.0010839361, 0.0002328060, 0.0003276768, + -0.0002372214, -0.0001059850, 0.0005042196, -0.0002180976, -0.0001456756, + 0.0003649890, -0.0009586811, -0.0008818576, -0.0010685828, 0.0000491757, + 0.0010460708, -0.0001726637, -0.0015740637, -0.0010499482, 0.0002197435, + 0.0003330233, -0.0005688587, 0.0026593888, -0.0010419376, 0.0011404242, + -0.0008682474, -0.0019553765, 0.0014659436, 0.0001806743, 0.0001102088, + 0.0013937808, 0.0001869627, -0.0009348625, -0.0003797160, -0.0003722291, + 0.0011816267, -0.0017866226, -0.0000673588, 0.0003708145, 0.0005085310, + -0.0011603944, -0.0021521195, -0.0000837040, -0.0007770818, -0.0009293691, + 0.2262163311, 0.0005083559, -0.0018412088, 0.0006502265, 0.0007057585, + -0.0001354389, -0.0000813466, -0.0001436116, 0.0004176283, -0.0017364924, + -0.0005213255, -0.0003029198, 0.0015492511, 0.0003529149, -0.0005639344, + 0.0006763930, 0.0016346732, -0.0008708024, 0.0013532378, 0.0021409481, + -0.0017379271, 0.0168596692, -0.0008374325, 0.0013827579, -0.0005652127, + -0.0001204805, -0.0006625704, 0.0003177277, -0.0009249290, -0.0015675128, + -0.0006251461, -0.0010964060, -0.0005176542, -0.0000852058, -0.0005721243, + 0.0005644117, 0.0006527898, -0.0025330558, 0.0005901922, -0.0002803034, + -0.0023970983, 0.0004368247, 0.0011268430, -0.0003713346, -0.0006115120, + 0.0001770864, -0.0008957377, 0.0006943282, 0.0009241886, -0.0013203183, + -0.0015024232, -0.0004824949, -0.0003897673, -0.0003899717, -0.0008954098, + 0.0000905256, 0.1301283836, -0.0003974203, 0.0002889617, 0.0012633449, + -0.0007787135, -0.0000779561, 0.0005017482, 0.0004382764, 0.0007729780, + -0.0008118171, 0.0013038717, -0.0003645433, 0.0003064480, -0.0001290157, + 0.0015777149, -0.0017647784, -0.0016211323, -0.0003137048, 0.0006234441, + -0.0000309302, -0.0010009697, -0.0014877804, -0.0007941633, 0.0003822315, + 0.0008841767, 0.0004945681, -0.0009164934, 0.0008106334, 0.0004947016, + 0.0007654213, -0.0001535686, -0.0012369999, 0.0004549391, -0.0006687632, + -0.0011567012, -0.0014449395, 0.0000206353, 0.0003723804, -0.0012139534, + -0.0003230255, 0.0000604908, 0.0010661907, 0.0007612216, 0.0007566554, + 0.0013977448, -0.0005293824, -0.0040674903, -0.0003633907, -0.0004918938}; + +float unet_input_time_embedding_50_45[] = { + 0.0002006008, 0.0003508717, 0.0011663781, 0.0009910953, 0.0017679823, + -0.0020392216, 0.0006326117, -0.0001272392, 0.0018957299, -0.0006539084, + -0.0001048853, -0.0002644542, 0.0000996324, 0.0010184897, 0.0005054837, + 0.0008077768, 0.0012777885, -0.0002173530, -0.0003807294, -0.0005455683, + -0.0015141894, 0.0007932866, -0.0007410286, 0.0508972146, 0.0007778357, + -0.0010746028, -0.0017042104, -0.0005848343, -0.0017272424, -0.0014870535, + 0.0010152394, -0.0001093838, -0.0002961764, 0.0007132590, 0.0007660827, + -0.0017572627, -0.0004014219, 0.0009360549, 0.0008630883, 0.0009660106, + 0.0003986121, -0.0000585809, 0.0015728744, 0.0015875679, -0.0005202091, + -0.0008864391, -0.0000109659, 0.0006761877, 0.0009139492, -0.0000732381, + 0.0024718931, -0.0001485378, 0.0659802631, 0.0021024500, 0.0000977510, + 0.0001147945, 0.0008061194, -0.0009821362, 0.0003446066, -0.0016320061, + -0.0007468336, -0.0006214416, 0.0000549392, -0.0005526396, 0.0001905221, + 0.0021077469, 0.0013367347, -0.0004200378, -0.0001521790, -0.0008260442, + -0.0004248898, -0.0009156342, -0.0005741450, 0.0002575447, -0.0002837619, + -0.0000450574, 0.0021058470, -0.0012882529, 0.0016279095, -0.0024373278, + -0.0010973660, -0.0003576350, -0.0022778744, -0.0013943753, 0.0013205174, + 0.0002208061, 0.0011393554, -0.0018390613, -0.0003196946, 0.0015096178, + -0.0006789843, 0.0029955390, 0.0012188880, -0.0003652415, -0.0011705351, + -0.0000736136, -0.0009162603, 0.0001101857, -0.0002632341, 0.0004143235, + 0.0004610037, -0.0008209408, -0.0004608259, -0.2300363928, -0.0006073681, + 0.0017921086, 0.0009413783, 0.0005091317, -0.0010303953, 0.0009726209, + -0.0005725652, -0.0011556866, -0.1230877712, 0.0007890947, -0.0008134842, + 0.0010648896, 0.0009218152, 0.0003976549, 0.0002541579, 0.0010364957, + -0.0007723630, -0.0000993598, 0.2126669586, 0.0004137922, -0.0009533344, + 0.0000407803, -0.0009796084, 0.0014626742, 0.0005059973, 0.0015854179, + -0.0011425228, 0.0005536638, 0.0000098154, -0.0007953271, 0.0004953383, + -0.0017471120, -0.0002127070, 0.0014175093, -0.0007067863, 0.0012705214, + 0.0015632643, -0.0015098250, -0.0010600481, -0.0012116800, -0.0010605718, + -0.0003849631, -0.0001587472, 0.0001401119, -0.0010645250, -0.0008693771, + 0.0002435138, -0.0017952455, 0.0002896194, 0.0007416164, 0.0004524891, + 0.0007900139, -0.0004807739, -0.0025566639, 0.0002836883, -0.0016978541, + 0.0001707734, 0.0002801333, 0.0002725311, -0.0026786793, -0.0002830829, + 0.0008514670, -0.0001322981, 0.0018820036, 0.0441834964, 0.0012359185, + -0.0001257508, 0.0007097516, -0.0014530944, 0.0007450927, -0.0006212858, + -0.0022611907, 0.0006806642, -0.0003130585, -0.0005768908, -0.0021154168, + 0.0001675864, 0.0002926299, 0.0011386652, -0.0006895503, 0.0003502453, + 0.0010996950, 0.0003755055, 0.0017345129, -0.0000572675, 0.0013876716, + 0.0001665489, -0.0004296117, -0.0006459331, -0.0016532971, -0.0009451420, + -0.0014858297, -0.0002950028, 0.0025360049, 0.0023796947, 0.0014032521, + -0.0006140647, 0.0012697168, -0.0021016113, 0.0009242040, 0.0015719123, + 0.0019923039, 0.0006145785, -0.0005927412, -0.0006210329, 0.0006422824, + -0.0002650602, -0.0005417042, -0.0006418917, -0.0024002905, -0.0023381470, + -0.0006704987, -0.0008080653, 0.0017097169, -0.0004227218, 0.0011412142, + 0.0006837947, 0.0009129011, 0.0005031002, -0.0110528786, -0.0008616361, + -0.0009567426, -0.0011819135, 0.0006648176, 0.0012789972, 0.0008986765, + 0.0007566968, -0.0010851580, 0.0005350248, 0.0001009987, 0.0008478910, + 0.0002892730, 0.0017915531, 0.0006936966, -0.0004908759, 0.0020653326, + 0.0002118370, -0.0011624347, -0.0008678024, -0.0001607928, 0.2379702330, + -0.0029108992, 0.0003876514, 0.0008881047, 0.0014790799, 0.0010848437, + -0.0006328700, 0.0022509242, -0.0009645824, 0.0013359217, -0.0002648933, + -0.0010498236, 0.0000664606, 0.0002405351, 0.0008928934, -0.0006843846, + -0.0005667899, -0.0010041134, -0.0001148107, -0.0033517457, -0.0002977581, + -0.0005186163, 0.0000967425, 0.0002363683, -0.0001133233, -0.0007742126, + 0.0004547751, -0.0002013964, -0.0004777897, -0.0021833768, 0.0004211552, + 0.0003419803, -0.0010765102, 0.0023385761, 0.0011581872, 0.0001397182, + -0.0944035202, -0.0001081005, -0.0013860097, -0.0002354840, -0.0004877401, + 0.0002695937, 0.0017298106, -0.0003703777, -0.0009376863, 0.0000690222, + 0.0001818932, 0.0011236700, 0.0022331602, 0.0003651048, 0.0000615376, + -0.0011080485, -0.0013957634, -0.0006893380, -0.0006534127, -0.0014132643, + 0.0003640051, -0.0009049017, 0.0021226625, -0.0011399435, -0.0006764068, + 0.0001852023, -0.0024926201, -0.0003508148, -0.0004513678, -0.0007225722, + 0.0003526453, 0.0019271090, 0.0007721779, 0.0002104240, -0.0012424691, + 0.0002854001, 0.0002429067, -0.0005181902, 0.0015375246, -0.0012625712, + 0.0007152788, -0.0001657656, -0.0003510634, -0.0005528857, -0.0013257276, + -0.0001049261, -0.0005366448, -0.0016700304, 0.0103451312, 0.0001118309, + 0.0019893148, -0.0011665686, -0.0005308524, 0.0000572482, -0.0000715414, + -0.0000163680, 0.0014041138, 0.0001596344, 0.0007517193, -0.0003911140, + 0.0015577320, 0.0009889703, -0.0004972867, -0.1577996165, 0.0003700666, + 0.0004724246, -0.0001167521, -0.0000681129, -0.0007049085, -0.0000575133, + -0.0009876047, 0.0005974788, -0.0000289804, 0.0004544612, 0.0002737233, + 0.0002434319, 0.0011788144, -0.0011014891, 0.0003311555, 0.0010999618, + 0.0015259674, -0.0006071790, -0.0003382782, 0.0007193875, 0.0027740714, + -0.0011690871, -0.0004413868, 0.0005972935, 0.0021723537, 0.3609549999, + 0.0008487194, 0.0011584056, -0.0007659367, 0.0004160032, 0.0001273751, + 0.0012804372, -0.0001953862, 0.0003574535, 0.0004870864, -0.0000525173, + -0.0003774044, 0.7351654172, 0.0001565274, 0.0017980728, -0.0000985148, + -0.0003440622, 0.0002660365, 0.0006078891, 0.0009984421, -0.0013994868, + 0.0000731302, -0.0024290136, -0.0013353252, -0.0001004336, 0.0010813931, + 0.0006896509, -0.0015203962, 0.0001769686, -0.0005429001, -0.0000068480, + -0.0009534393, 0.0027979282, -0.0013171227, 0.0012617116, -0.0009195805, + 0.0005312706, 0.0006182793, -0.0005264073, 0.0003238008, 0.0009907819, + 0.0026181494, 0.0005329833, -0.0025980868, -0.0012627710, -0.0009351491, + 0.0000357812, -0.0010494497, -0.0020490973, -0.0022034883, -0.0005287137, + 0.0010700696, 0.0007398480, -0.0017780643, -0.0013703804, 0.0011319472, + 0.0012734816, -0.0001141699, -0.0008605210, -0.0004263185, 0.0011018831, + 0.0020232373, 0.0001437017, -0.0000111479, 0.0002765290, -0.0002111447, + -0.0006423588, 0.0008951109, 0.0025521794, 0.0000358783, -0.0005310359, + 0.0001518517, 0.0010599140, -0.0002442942, 0.0012104309, 0.0010684261, + -0.0005626134, 0.0016094074, -0.0005667093, 0.0004335567, -0.0004939949, + 0.0011789394, -0.0009795669, 0.0018292407, -0.0014196176, -0.0024378477, + -0.0014807023, 0.0005321242, 0.0007568039, -0.0005858084, -0.0008076164, + -0.0003017662, -0.0015706997, -0.0002385673, -0.0003026751, -0.0003315299, + -0.0000070967, -0.0001807720, -0.0007806607, 0.0018439003, -0.0002256692, + -0.0005028620, 0.0006362679, 0.0004957281, -0.0005855679, -0.0019219285, + -0.0119957570, -0.0006892476, 0.0015121867, -0.0010982137, 0.2845870256, + -0.0010160157, 0.0009637475, 0.0014339415, -0.0012217609, 0.0002389800, + -0.0010828370, 0.0006805991, 0.0015894733, 0.0010255910, 0.0010955746, + 0.0003564972, -0.2228889465, -0.0008263835, 0.0001180437, -0.0005939514, + -0.0036888442, 0.0019636499, 0.0001727808, -0.0000405712, 0.0003903522, + -0.0017209849, -0.0002993802, -0.0006769234, 0.0001578247, 0.0004384331, + -0.0011089677, 0.0002581961, 0.0000184424, -0.0014960971, -0.0001296797, + 0.0006128633, -0.0010198362, 0.3999869823, -0.0028191786, 0.0005184842, + 0.0023555867, -0.0004955754, -0.0016357182, -0.0005832147, -0.0001632813, + -0.0028623934, -0.0005936376, -0.0030190134, -0.0006645448, 0.0001956229, + 0.0004004035, -0.0006674851, 0.0006501046, 0.0004518665, -0.0000977335, + 0.0005764512, -0.0000260682, 0.0001989878, -0.0010504343, -0.0009287302, + -0.0020263658, 0.0001651261, -0.0001922029, -0.0002426552, -0.0002485574, + -0.0001162891, 0.0009653475, 0.0008613305, 0.0026488393, 0.0003457800, + 0.0001290077, 0.0015745731, 0.0007380880, 0.0005155364, -0.0002662195, + 0.6774362326, -0.0007068077, -0.0020650066, -0.0016493639, 0.0011019059, + 0.0006670883, 0.0007956917, 0.0018021287, -0.0004023528, -0.0009028865, + -0.0008202284, 0.0009146639, -0.0005193055, 0.0006987064, -0.0005675862, + -0.0012756316, 0.0005099764, 0.0017646723, -0.0022259494, -0.0012976080, + -0.0006848512, 0.0003632503, -0.0004291418, 0.0003947320, -0.0010899990, + 0.0011175228, -0.0018549245, 0.0026870077, 0.0000723377, 0.0004627320, + 0.0004206835, -0.0009944849, 0.0003673616, -0.0008540581, -0.0021651906, + 0.0007057535, 0.0021283529, -0.0012432770, 0.0009191055, 0.0001632231, + 0.0001102091, 0.0025262157, 0.0008718651, 0.0001061438, -0.0003223452, + 0.0024905074, 0.0026418988, -0.0001457557, 0.0003845915, -0.0003273296, + 0.0004625106, -0.0010163053, -0.0053940210, -0.0015626980, 0.0003520988, + 0.0013841477, -0.0006796737, 0.0018373292, 0.0011415576, 0.0011050559, + -0.0012937598, 0.0010608626, -0.0015335937, -0.0004663570, -0.0017154869, + 0.0000230186, 0.0011450599, -0.0016821816, 0.0013948230, 0.0014720929, + -0.0001372681, -0.0013332810, 0.0001987349, 0.0013162699, 0.0000484232, + 0.0016867239, -0.0020623717, -0.0012927481, 0.0011945178, 0.0001377207, + -0.0005980786, 0.0007790227, -0.0013253746, 0.0016403503, 0.0014390431, + 0.0001645833, 0.0000096688, -0.0011654379, 0.0010040537, 0.0000873217, + -0.0010708220, 0.0002189971, 0.0002622420, 0.0017404181, 0.0002376870, + -0.0006159797, -0.0004092865, 0.0003786348, 0.0033782199, -0.0005650101, + -0.0020815849, 0.0014030142, -0.0008239776, 0.0015016911, -0.0004777643, + -0.0006852958, 0.0015456532, 0.0004960448, -0.0015042417, -0.0003681793, + 0.0000320161, 0.0006183279, -0.0011259377, -0.0014970716, -0.0010032537, + -0.0003708992, -0.0007978595, -0.0003014617, -0.0020327636, 0.0013171692, + 0.0002581973, 0.0026434937, -0.0002414703, 0.0000597273, 0.0005706679, + 0.0002086591, 0.0017502569, 0.0006717350, -0.0012726597, 0.0013533863, + -0.0017614181, 0.0004716725, 0.0000172239, -0.0005397653, -0.0014368743, + 0.0000733971, -0.0006992342, 0.0000758951, 0.0011526989, -0.0018665330, + 0.0010690382, -0.0007453449, 0.0018662976, -0.0015132425, -0.0007816376, + 0.0001512088, 0.0014156620, -0.0001005754, 0.0001182402, 0.0007349914, + -0.0007023872, 0.0006158007, 0.0004579460, 0.0010342244, -0.0008370150, + 0.0003458243, -0.0006382759, 0.0010008230, -0.0015342690, -0.0005202976, + 0.0018235436, 0.0073655052, -0.0009897905, -0.0005744211, 0.0003921110, + -0.0019226139, 0.0010428587, -0.0004921532, 0.0008324636, -0.0005112058, + -0.0002742559, 0.0001862701, -0.0009028838, 0.0002101540, 0.0006148964, + -0.0004110658, 0.0012521064, -0.0003419197, 0.0001145652, -0.0000001977, + 0.0011610107, 0.0016216058, -0.0011560088, -0.0001464342, 0.0000660606, + -0.1668267846, -0.0001209383, -0.0004161145, -0.0021566907, -0.0013220548, + -0.0010878583, 0.0002488801, 0.0006363074, -0.0006011953, -0.0000216118, + 0.0010276255, -0.0001434044, 0.0013035099, -0.0000267341, -0.0013360474, + 0.0002533391, 0.0000090511, -0.0007316228, -0.0000888673, -0.0014166771, + -0.0004600142, 0.0002893093, -0.0002223012, -0.0005726947, 0.4700181484, + 0.0016525371, 0.0002726198, 0.0002493095, -0.0013804552, 0.0008682110, + -0.0023441133, -0.0013776034, 0.0003316840, -0.0013082132, 0.0004257499, + 0.0018645357, 0.0011096103, -0.0008738162, -0.0005208331, 0.0020038546, + -0.0005741310, -0.0005079815, 0.0020099282, 0.0006457164, -0.0018320642, + -0.0000649570, 0.0004834804, -0.0008529092, 0.0015485459, 0.0004225257, + 0.0006878772, 0.0186198652, -0.0016222517, -0.0007687737, -0.0011031474, + 0.0010668995, 0.0007844290, -0.0002919352, -0.0006855456, 0.0014449533, + -0.0010957788, 0.0003455835, -0.0003327408, -0.0085127279, -0.0016154740, + 0.0011642078, 0.0011402161, 0.0006886014, -0.0005744928, -0.0001700087, + -0.0015434260, 0.0004980308, -0.0004657672, 0.0018179985, 0.0017754083, + -0.0005626546, -0.0000950613, -0.0000839896, 0.0012186188, -0.0002926174, + 0.0008432334, 0.0010689055, -0.0000748141, 0.0001944409, -0.0006469230, + 0.0016406570, 0.0006343446, -0.0014475952, -0.0000473859, 0.0141667239, + 0.0000892727, 0.0018341318, -0.0004131844, 0.0021481980, 0.0009562979, + 0.0002578965, -0.0013160720, 0.0011122245, -0.0009027000, -0.0004313635, + -0.0006248171, -0.0014547459, 0.0013012169, 0.0000863709, 0.0005665062, + 0.0005090544, -0.0018066019, -0.0354754105, -0.0002553952, -0.0017720126, + -0.0001223916, 0.0000198768, 0.0001236447, 0.0004233574, 0.0005780719, + -0.0007589981, -0.0012187625, -0.0019489328, -0.0006596176, 0.0015223222, + 0.0131740244, -0.0005025868, 0.0000858856, 0.0001229998, 0.0007553594, + 0.0011415980, 0.0019786595, -0.0006784904, 0.0001565017, -0.0001390679, + -0.0018021343, -0.0000648820, 0.0006053541, -0.0015362559, -0.0006392860, + 0.0000090371, -0.0019862172, -0.0002756566, -0.0000696494, 0.0007925378, + 0.0008697158, 0.0005443052, 0.0007995227, -0.0018737699, -0.0010447740, + -0.0185275748, 0.0002758562, 0.0001181448, 0.0019737403, -0.0018057453, + 0.0006421444, 0.0021084002, -0.0004457589, 0.0023466714, 0.0016602583, + 0.0010058836, 0.0006339792, -0.0000674545, -0.0008480712, -0.0005404106, + -0.0001702143, 0.0004437997, -0.0003069100, 0.0005743145, 0.0005339347, + -0.0008228421, -0.0001187935, -0.0008406118, 0.0001090309, -0.0005076630, + 0.0002602786, -0.0002709264, -0.0004891168, 0.0000519222, -0.0010227875, + 0.0009015470, 0.0010822086, 0.0025104340, 0.0000780749, 0.0000950349, + 0.0003589711, -0.0003848085, 0.0006581575, -0.0024984335, 0.0008844147, + -0.0011942158, 0.0007382212, -0.0000135824, 0.0008811094, 0.0002838909, + -0.0007838923, -0.0009383694, 0.0007284384, -0.0006148882, 0.0014439843, + -0.0001563225, 0.0004926462, 0.0008954784, 0.0004150365, -0.1497260928, + -0.0007065043, -0.0002328590, 0.0021761600, -0.0002553957, -0.0000817915, + -0.0002551684, -0.0025648912, 0.0017868062, 0.0002464722, 0.0000265557, + 0.0000270327, -0.0006505079, -0.0043498185, -0.0008935959, 0.0010467116, + 0.0002023075, -0.0004087198, 0.0011592433, -0.0006026919, -0.0007111488, + 0.0003640940, -0.0005680206, 0.0004791305, -0.0000149044, 0.0007587409, + 0.0013062507, -0.0002991622, 0.0002574832, 0.0000884933, -0.0000712201, + 0.0022578079, -0.0017271498, 0.0010280209, -0.0016446090, -0.0005481681, + -0.0004209911, 0.0001993239, -0.0013136488, -0.0004165694, -0.0005033596, + -0.0010559889, 0.0001510673, -0.0004179869, -0.0014067601, -0.0002187975, + 0.0003590139, -0.0013135634, 0.0013409713, 0.0005171257, -0.0002195262, + 0.0012967818, -0.0013186540, -0.0023248089, -0.0017106389, -0.0002402808, + -0.2544894516, 0.0000099072, -0.0000943094, 0.0006186569, 0.0014164825, + -0.0013569680, 0.0007494534, -0.0007750186, -0.0005965419, -0.0006264423, + -0.0007844211, -0.0010209475, -0.0000066785, 0.0007677141, -0.0012281883, + -0.0008715698, 0.0013371170, -0.0006284635, 0.0003372605, -0.0007245149, + -0.0010762333, -0.0008748138, -0.0003597010, 0.0021992056, -0.0011517601, + -0.0003707912, -0.0005526433, 0.0002758268, -0.0015741307, -0.0000336603, + 0.0002988745, -0.0020075927, -0.0008614169, -0.0011185498, -0.0007932065, + 0.0005308309, -0.0008154991, -0.0003391239, -0.0012502136, -0.0012147024, + 0.0008035335, -0.0007672322, -0.0002730116, 0.0017026081, 0.0013758747, + 0.0007595839, 0.0003021429, 0.0008522830, -0.0006129302, 0.0014011702, + -0.0009959335, -0.0007030698, 0.0008788831, 0.7766852379, 0.0017432712, + -0.0527217910, 0.0002430047, -0.0007106517, 0.0008169694, 0.1336439550, + -0.0005990425, 0.0006430177, 0.0020699492, 0.0001561856, -0.0002492159, + -0.0017737020, -0.0001728917, 0.0006315336, 1.1911747456, 0.0007217346, + -0.0009963345, 0.0023384581, 0.0001175167, 0.0031070104, 0.0000713291, + -0.0017121271, -0.0003298232, -0.0002289917, 0.0017166415, -0.0002708975, + 0.0006770752, 0.0014648307, 0.0002605594, -0.0015111691, -0.0017280756, + -0.0004284594, -0.0005518203, -0.0006184680, -0.0016868920, 0.0000273630, + 0.0001012604, -0.0007125493, 0.0002930257, -0.0011094222, 0.0009995003, + -0.0009564517, -0.0002752775, 0.0003679809, -0.0005300271, 0.0006584506, + -0.0017144484, -0.0000468958, 0.0008123792, -0.0013741087, 0.0009554168, + 0.0005291831, -0.0001435308, -0.0015987048, -0.0008812954, 0.0012872857, + -0.0005477322, 0.0005023852, -0.0000288866, 0.0005027186, -0.0005037703, + -0.0025482730, 0.0007643250, -0.0001739236, 0.0013353535, 0.0016182718, + -0.0016707554, -0.0015320866, -0.0013355119, -0.0010140208, -0.0014916130, + -0.0012573963, -0.0013818499, -0.0008124695, -0.0003171861, -0.0008267113, + -0.0010903948, -0.0011907126, 0.0002267817, 0.0005362192, 0.0004226870, + 0.0003912915, -0.0004712087, -0.0004281875, 0.0002277414, 0.0018837177, + -0.0004736257, -0.0003527664, 0.0013293722, -0.0003422827, 0.0011643677, + -0.0017069364, 0.0002335580, 0.0004214622, 0.0000132404, 0.0002460256, + 0.0003251424, 0.0008771382, 0.0020980958, -0.0000602629, 0.0013599203, + -0.0006260099, 0.0007127535, 0.0007243990, 0.0011337125, -0.0004136232, + 0.0018822812, 0.0003017287, -0.0006353166, 0.0023875230, 0.0001970661, + 0.0000238037, -0.0006896551, 0.0020153709, 0.0017129355, -0.0007881971, + 0.0004938382, -0.0009213841, -0.0007115272, -0.0004999852, -0.0000618007, + 0.0010522129, 0.0001813937, 0.0005370572, -0.0014451552, 0.0009162063, + 0.0000305097, -0.0006585007, 0.0003454745, 0.0010164571, 0.0005631885, + 0.1741017699, 0.0006229342, 0.0001532511, 0.0012739833, 0.0005122417, + 0.0009885028, -0.0007317031, -0.0000464307, 0.0005307528, -0.0004911744, + -0.0009372002, 0.0011165977, -0.0009792983, -0.0003789337, -0.0001648199, + 0.0015616857, 0.0008661347, 0.0002976470, -0.0013810117, 0.0039522317, + -0.0025104904, -0.0688845068, 0.0006521000, -0.0006935513, 0.0015311146, + 0.0028777765, 0.0003967346, 0.0009266865, 0.0023600468, 0.0013188384, + -0.0003686198, 0.0007139561, 0.0016994337, 0.0000612773, 0.0012517895, + -0.0003403723, 0.0011836658, 0.0003826492, 0.0000823773, 0.0027609244, + 0.0020442272, -0.0004912489, -0.0005991640, -0.0020841630, -0.0013469178, + 0.0006141250, -0.0009659951, 0.0003171966, 0.0020142314, -0.0023015714, + 0.0006365156, -0.0002778675, 0.0011978727, -0.0005946514, 0.0004221778, + -0.0007009277, 0.2012278587, 0.0005553965, 0.0016098178, 0.0000976026, + 0.0009818936, -0.0001218545, -0.0012280873, -0.0007971346, 0.0005694618, + 0.0003624316, 0.0004617787, 0.0006153021, -0.0000839341, -0.0006652609, + 0.0007761172, -0.0012373527, 0.0002806913, -0.0004170439, 0.0000183005, + -0.0003906228, 0.0008918829, 0.0015825946, 0.0005866609, 0.0006822525, + -0.0004639928, 0.0007455056, 0.0006950409, 0.0014778390, 0.0008877579, + -0.0009382062, 0.0003086901, 0.0004452267, -0.0014730002, 0.0007582940, + -0.0006205654, 0.0005438062, -0.0010856641, -0.0005391593, -0.0018059134, + -0.0006763786, 0.0020504622, -0.0007946887, 0.0001519592, 0.0001500792, + -0.0003489438, 0.0001489706, 0.0080937911, -0.0001822481, 0.0005458573}; + +float unet_input_time_embedding_50_46[] = { + 0.0002100850, -0.0013404419, -0.0000481233, -0.0005352042, 0.0006209887, + 0.0008709710, -0.0007497510, 0.0000603836, 0.0014498853, -0.0007360831, + -0.0001537011, -0.0002751118, -0.0003411528, -0.0004002783, -0.0001091603, + 0.0001405282, 0.0004568826, -0.0007581105, -0.0002956087, -0.0001687435, + -0.0003567259, 0.0018445514, 0.0003600094, 0.0803808272, -0.0013650756, + 0.0005574261, 0.0014013564, 0.0002125474, -0.0019267943, -0.0000024238, + 0.0016119820, 0.0002136654, 0.0006011818, 0.0005741804, -0.0015640804, + 0.0006527710, 0.0021232003, 0.0004167145, -0.0010455451, -0.0003870521, + 0.0001878194, 0.0006472198, 0.0004408939, -0.0002428917, -0.0007201233, + 0.0003000924, 0.0008496968, -0.0008559963, -0.0001694714, 0.0003112903, + -0.0007336643, 0.0001390714, -0.0069186003, 0.0002235314, -0.0005900009, + -0.0002930236, -0.0000172683, 0.0006895768, -0.0002976102, 0.0018329646, + 0.0014207431, -0.0011014630, 0.0003073108, 0.0004360911, 0.0002752622, + -0.0003245114, 0.0000978531, -0.0011828222, 0.0022021849, -0.0008766602, + 0.0006760545, 0.0000106236, 0.0012196777, -0.0001515709, 0.0007769419, + 0.0023209658, -0.0003991136, 0.0009387033, 0.0006559388, -0.0002152442, + 0.0007786998, -0.0010937973, 0.0004606661, 0.0006558697, -0.0000130504, + -0.0013521963, 0.0003061834, -0.0005341708, 0.0018117726, 0.0001479192, + 0.0016843168, -0.0009435555, -0.0001355605, -0.0010444981, -0.0023425152, + 0.0014943713, -0.0006457102, -0.0000548922, -0.0014017976, -0.0002974090, + 0.0011579865, 0.0002136877, 0.0004927202, -0.3127126694, 0.0010958556, + -0.0023049866, 0.0004443801, 0.0012356667, -0.0008329875, -0.0001934594, + -0.0003384007, -0.0011963546, -0.2246664613, -0.0002326090, 0.0010141078, + -0.0010770413, -0.0003419160, -0.0004607376, -0.0006614677, 0.0024958353, + 0.0004330338, -0.0000243334, 0.1442266554, -0.0011999761, 0.0000518244, + 0.0010590986, -0.0000326843, -0.0005974444, 0.0005604941, -0.0002550506, + -0.0012784274, 0.0003832001, -0.0000480581, -0.0004562642, -0.0005953708, + -0.0006795950, -0.0004535329, -0.0002668072, -0.0008146968, -0.0003673481, + -0.0002423942, 0.0008427938, -0.0010435036, -0.0003460106, -0.0001840473, + -0.0016009957, 0.0011609010, 0.0000589201, 0.0009661005, 0.0003474820, + -0.0013097366, -0.0009543451, -0.0006256332, -0.0006696484, -0.0003286623, + 0.0007050317, -0.0015627723, 0.0005858243, 0.0013017270, 0.0004499285, + -0.0004419349, 0.0009793440, -0.0004705805, 0.0008790330, -0.0014913362, + -0.0013516182, -0.0008170109, 0.0048549660, 0.0147048915, -0.0011208130, + 0.0005207317, 0.0000409060, -0.0007205373, 0.0001565337, -0.0007309597, + 0.0003773207, -0.0007730931, 0.0000570947, 0.0005383044, -0.0000150222, + -0.0020237032, -0.0001582308, 0.0026254407, 0.0005469797, -0.0007686373, + -0.0002461468, -0.0000056215, -0.0013645128, 0.0000181985, 0.0003637960, + 0.0002231770, -0.0003258619, 0.0000901845, 0.0009754538, 0.0001061051, + 0.0026058410, 0.0011233242, 0.0003956952, -0.0001117171, -0.0000111852, + 0.0011342689, -0.0002320535, -0.0001993626, -0.0020438428, -0.0005061431, + 0.0008462565, 0.0000271226, -0.0003281068, -0.0007891548, -0.0004235343, + 0.0007797175, -0.0002805819, -0.0010957215, 0.0015022764, 0.0000462323, + -0.0010356409, 0.0010785400, -0.0012376907, -0.0006973039, 0.0001520094, + -0.0009488817, 0.0001290343, -0.0005968646, -0.0186377689, -0.0002513939, + -0.0003991593, 0.0010426799, -0.0019522076, -0.0009372190, -0.0001404588, + 0.0007546018, 0.0002481877, 0.0000767633, 0.0006988510, 0.0002527116, + 0.0006481791, -0.0012802486, -0.0008417084, -0.0008152444, -0.0005954466, + 0.0007595953, -0.0004035882, 0.0006958612, 0.0005093645, 0.3497014344, + 0.0004856179, 0.0004191147, -0.0006295008, -0.0010066300, -0.0007447838, + -0.0003512958, -0.0001324401, -0.0001966115, 0.0005428502, -0.0002914891, + -0.0003239536, -0.0004867096, 0.0000073180, -0.0008272321, 0.0001220688, + 0.0004694862, -0.0009188720, -0.0013475164, 0.0007572960, -0.0012758159, + 0.0009690910, 0.0007966114, -0.0006645657, 0.0000756271, 0.0019554493, + 0.0003034035, 0.0000114383, -0.0002855700, -0.0003157975, 0.0002099993, + -0.0002684770, 0.0000266004, 0.0004798230, 0.0009873183, -0.0000077570, + -0.1861128211, -0.0011220872, 0.0006803278, 0.0001077401, 0.0004828596, + -0.0009259814, -0.0007084780, -0.0008289342, -0.0007226504, -0.0005258569, + -0.0008612572, -0.0001248964, 0.0007951239, 0.0000492835, 0.0005847705, + -0.0009652986, 0.0015987046, -0.0008899886, 0.0008516759, -0.0014560884, + -0.0025524786, 0.0007946752, -0.0004584544, -0.0002113599, 0.0007220504, + -0.0006680577, -0.0004332643, 0.0012772502, 0.0003367034, 0.0022368939, + 0.0000149058, -0.0012028348, -0.0007510993, -0.0008457834, 0.0014021541, + 0.0006691199, 0.0012359201, -0.0010702647, 0.0007063560, 0.0010330430, + -0.0013091599, -0.0004236414, -0.0000622959, -0.0026230365, 0.0004717403, + 0.0002154303, -0.0003319513, -0.0002432070, 0.0241107233, 0.0007310030, + 0.0007778113, -0.0001181090, 0.0004566938, 0.0000384338, 0.0010312709, + 0.0010044184, -0.0001613626, 0.0003788794, -0.0010632807, -0.0009363065, + 0.0001417985, 0.0005259814, -0.0001145515, -0.2790180445, -0.0003386552, + -0.0006716745, -0.0002999477, 0.0004959462, -0.0001412039, -0.0015451751, + 0.0000851718, 0.0006776173, 0.0012839222, 0.0003035730, 0.0006275323, + -0.0002083792, 0.0003415775, -0.0012553305, 0.0010396210, 0.0010899024, + -0.0001875935, 0.0008585923, -0.0007499517, -0.0011679097, -0.0005199687, + -0.0004049004, 0.0004315372, 0.0005903030, -0.0021100789, 0.4169444442, + 0.0006256578, 0.0000356089, -0.0020272564, 0.0004533799, 0.0012476586, + -0.0005002203, -0.0005235535, 0.0001982802, 0.0002816848, 0.0001055533, + -0.0005971584, 0.6346184611, -0.0003024787, 0.0002157534, -0.0027283160, + 0.0008131173, 0.0005612322, 0.0003302014, 0.0008184123, 0.0008258992, + -0.0002273517, 0.0006140763, 0.0007306957, -0.0010509214, 0.0012244172, + 0.0009516282, 0.0001936690, 0.0008224266, -0.0008163261, 0.0012345267, + 0.0014309563, -0.0006333692, 0.0008008850, -0.0012665945, -0.0000340911, + -0.0000497125, 0.0005887704, -0.0002602222, 0.0003318503, 0.0004298128, + 0.0006773588, 0.0000009239, -0.0002923999, -0.0004064368, 0.0004454290, + -0.0002505223, 0.0006057015, -0.0004895958, -0.0015097326, -0.0007556602, + 0.0009177483, 0.0009765315, -0.0005658920, 0.0006954486, -0.0001640646, + 0.0004145051, -0.0017317887, 0.0012213681, 0.0009750777, -0.0014612298, + -0.0005317195, -0.0005468954, 0.0001414239, 0.0019006734, -0.0000430526, + 0.0011415510, -0.0009892443, -0.0005383946, -0.0004052110, 0.0001172980, + -0.0006211558, -0.0001308753, 0.0014136095, -0.0009637789, 0.0008179673, + 0.0007219310, -0.0005844538, 0.0005309605, 0.0005364302, 0.0019828854, + -0.0015673391, -0.0010292036, 0.0012161534, 0.0009188610, -0.0008168607, + 0.0013073739, 0.0006715301, -0.0002050619, 0.0001713755, -0.0012177790, + 0.0010365774, 0.0002924260, 0.0015483240, 0.0009339411, 0.0016774009, + -0.0001725815, 0.0011297222, -0.0006451178, 0.0005332780, 0.0012878445, + -0.0007990403, -0.0005588392, -0.0005570585, 0.0008973356, -0.0017500948, + -0.0086947177, -0.0006814571, 0.0012797426, 0.0010040998, 0.3390770555, + -0.0004267809, 0.0000122418, 0.0005923184, -0.0001468845, 0.0010568297, + 0.0005748543, -0.0008339968, -0.0017189914, -0.0005811718, -0.0014667336, + 0.0012225169, -0.3114139736, -0.0000082334, -0.0012310804, 0.0003895452, + 0.0029800383, -0.0008008406, -0.0008197483, -0.0006788960, -0.0006778247, + -0.0001816438, 0.0003637457, -0.0001078099, -0.0016020653, 0.0000034999, + 0.0004651337, -0.0013433727, 0.0012667082, -0.0000010482, -0.0009077364, + 0.0003627581, -0.0000790670, 0.4750966430, -0.0013083210, -0.0004430875, + 0.0000439761, -0.0000858125, -0.0000473727, 0.0011496043, -0.0006569619, + 0.0010320409, 0.0005415147, 0.0014814910, -0.0009496254, 0.0003604051, + -0.0016903139, 0.0006634228, -0.0012620105, 0.0005925428, 0.0005254261, + 0.0007028796, -0.0004399293, 0.0003042049, 0.0009753134, -0.0001018967, + 0.0002857971, 0.0006320958, -0.0005015519, 0.0002936795, 0.0002190303, + -0.0012811068, -0.0018185452, -0.0007043679, -0.0003394419, 0.0002148249, + -0.0011077155, -0.0004612445, -0.0006653639, -0.0002561486, 0.0005321307, + 0.8342514038, 0.0016671624, -0.0005321419, -0.0003140597, -0.0000846623, + -0.0020260480, 0.0000782143, -0.0013523542, -0.0000934419, -0.0004775163, + 0.0008637859, -0.0004339829, 0.0001469306, -0.0006985152, -0.0008467287, + -0.0007199449, -0.0001252508, -0.0000985023, 0.0002210913, -0.0007027229, + -0.0002743668, -0.0003406741, 0.0005699270, 0.0003459368, -0.0001256913, + 0.0006638784, 0.0005208706, -0.0011747470, 0.0023266715, -0.0000593385, + 0.0012869141, 0.0017392240, -0.0049619139, 0.0018231041, -0.0000882316, + 0.0009882355, 0.0000122981, 0.0021252595, 0.0014842814, -0.0016268915, + -0.0013140348, 0.0016710130, -0.0006289613, 0.0000364734, -0.0019778502, + -0.0005454861, 0.0012753651, 0.0016780309, -0.0003718776, 0.0000446630, + 0.0010613720, 0.0001998628, -0.0009655394, -0.0002771213, -0.0008570531, + 0.0017909457, 0.0001820362, 0.0016503183, 0.0000390274, 0.0004143922, + 0.0006272842, -0.0014227955, -0.0007102359, -0.0004745196, 0.0008338322, + 0.0012074169, 0.0001746341, 0.0012894040, -0.0004087267, -0.0001239593, + 0.0003699670, 0.0007357554, 0.0007225610, 0.0005829297, -0.0002045222, + 0.0009762719, -0.0012755955, 0.0017300143, -0.0004159971, -0.0017261817, + -0.0011971709, -0.0009893670, -0.0004792268, -0.0008992248, -0.0008229082, + 0.0000767168, 0.0005071529, -0.0001475561, -0.0006164783, -0.0007105973, + -0.0007490980, -0.0005936251, -0.0002230580, -0.0005210827, -0.0002192785, + 0.0003819386, -0.0005703559, 0.0001588131, 0.0010494329, -0.0001480463, + 0.0012592961, 0.0018843925, -0.0004989647, -0.0004012850, -0.0008858906, + 0.0000294717, 0.0012288657, 0.0001459941, -0.0006613833, -0.0007676021, + 0.0006107772, -0.0000834428, -0.0004896265, -0.0006382450, -0.0007355292, + -0.0002613012, -0.0003061547, 0.0004958319, 0.0007576467, 0.0009151966, + 0.0002344495, 0.0016138523, -0.0003178155, -0.0007623404, -0.0006699432, + 0.0001014359, 0.0001418544, 0.0002559442, -0.0001248778, -0.0006602937, + 0.0001747450, 0.0003049239, -0.0005326695, 0.0000493274, -0.0006217640, + 0.0008892533, -0.0001640692, -0.0012276941, -0.0002361359, -0.0013483260, + 0.0003397074, 0.0009756768, 0.0004071968, 0.0002300676, -0.0007486101, + 0.0012043961, -0.0008736625, -0.0014988575, 0.0006376931, 0.0033791177, + -0.0006589377, 0.0017603864, -0.0007587878, -0.0014647816, 0.0013693171, + 0.0008043200, 0.0002686661, -0.0005617361, 0.0012766265, -0.0003030298, + 0.0001402311, -0.0011368887, -0.0000436995, 0.0007909727, 0.0005831947, + -0.0000963006, -0.0003809575, 0.0002420890, 0.0000143151, 0.0002604756, + -0.0001124507, -0.0009638891, 0.0000039370, -0.0008327427, -0.0009503048, + -0.0000800448, 0.0004165620, -0.0008799969, -0.0003479132, 0.0012768486, + 0.0013802070, 0.0004285267, 0.0004331183, 0.0019764458, -0.0010505146, + -0.2947931290, -0.0000310275, -0.0007851236, 0.0005106474, 0.0021000807, + 0.0002825134, 0.0002045911, 0.0012833690, -0.0003706976, -0.0009290257, + 0.0002473581, -0.0000410181, -0.0013345209, -0.0006663546, 0.0001468342, + -0.0007933613, 0.0009583624, -0.0002620392, 0.0002440750, -0.0010363463, + 0.0002782824, 0.0000044946, 0.0006219790, -0.0015189163, 0.4301155508, + 0.0006013890, 0.0001658977, -0.0007743833, -0.0002122386, 0.0001511690, + -0.0010204655, -0.0009472569, -0.0004047147, -0.0014138310, -0.0007718881, + -0.0009963103, 0.0000592060, 0.0009881603, -0.0009058483, -0.0008521075, + 0.0000199252, 0.0001634900, -0.0009831064, 0.0008236077, 0.0015380494, + -0.0002626665, -0.0003346325, 0.0009450295, -0.0004760823, 0.0010100710, + -0.0001361035, 0.0228800382, 0.0006736484, 0.0000573359, -0.0006166757, + 0.0008324446, -0.0003072608, -0.0009945363, -0.0004046950, -0.0001441213, + -0.0000333188, 0.0035559498, -0.0003418578, 0.0011960091, 0.0010407348, + 0.0007259072, -0.0008465482, 0.0008699259, -0.0003144974, -0.0002996079, + 0.0004301453, -0.0000339039, -0.0006450014, 0.0006241560, -0.0004774741, + 0.0014034231, -0.0009027401, 0.0008582863, -0.0003345883, 0.0000965674, + 0.0005190838, 0.0010675546, 0.0003080550, -0.0010618602, 0.0012186693, + 0.0004230654, -0.0007675941, -0.0005017700, 0.0010367131, -0.1100764275, + -0.0007191738, -0.0007611376, 0.0001856516, -0.0000799906, -0.0012784144, + -0.0005315810, -0.0002476368, 0.0005487739, 0.0008461482, -0.0018207263, + -0.0001141841, 0.0005963868, -0.0012815995, 0.0003671423, -0.0000946993, + 0.0007699076, -0.0011477126, -0.0574542806, -0.0011140662, 0.0002989477, + -0.0006470932, -0.0007207650, 0.0009171222, 0.0004073698, 0.0017592087, + 0.0007640356, 0.0005074705, 0.0002049672, 0.0002264539, -0.0005149115, + 0.0108549623, -0.0017998870, 0.0001868750, -0.0001874194, 0.0004026750, + -0.0002859100, -0.0015632794, -0.0015938985, 0.0004281796, 0.0007161107, + -0.0002617389, -0.0016031628, 0.0025793640, 0.0012393945, -0.0002183296, + -0.0001078257, 0.0001692227, 0.0002846983, -0.0006211319, 0.0001822063, + 0.0013041778, -0.0001276117, -0.0003406475, 0.0001145181, -0.0008045144, + -0.0547524244, 0.0012171002, 0.0011675525, -0.0009318925, 0.0013385278, + -0.0007945856, -0.0008994967, -0.0003818963, 0.0000464479, -0.0011787303, + 0.0012109659, 0.0006167791, 0.0009308993, 0.0016272222, 0.0004052748, + -0.0000480243, 0.0001117883, 0.0007125692, 0.0006430487, -0.0001554824, + 0.0001593495, 0.0007769894, -0.0004516831, -0.0016537118, 0.0007114522, + 0.0004173964, 0.0000716066, 0.0006517869, -0.0000557015, -0.0017440990, + -0.0001426099, -0.0006313453, -0.0006364863, 0.0008640324, -0.0005645663, + 0.0001948231, 0.0000292608, 0.0011880451, 0.0019079144, 0.0007830020, + 0.0006671613, 0.0004082108, -0.0000937497, -0.0003048042, -0.0012576380, + -0.0000731219, 0.0012179813, 0.0003590391, -0.0004549978, 0.0003538627, + 0.0002080821, -0.0006190866, 0.0011058481, -0.0000271704, -0.2701951861, + -0.0010543920, 0.0002596434, 0.0007134965, 0.0004643716, 0.0001678271, + -0.0006275028, -0.0002724623, -0.0005480172, 0.0011981064, -0.0010589589, + 0.0004678498, 0.0000280016, -0.0012975931, -0.0002596660, 0.0025178227, + -0.0007093265, 0.0003018302, 0.0001286021, 0.0004486493, 0.0012809443, + 0.0012633353, -0.0015414222, -0.0003380205, -0.0002902234, 0.0006375190, + -0.0004198747, -0.0016708043, 0.0011283844, 0.0002266895, -0.0007567834, + 0.0030232531, 0.0000359146, 0.0000171559, -0.0002037170, 0.0012964588, + -0.0004033095, -0.0004130624, -0.0001761770, -0.0013931154, -0.0007031304, + 0.0002475898, 0.0009794231, 0.0001182011, 0.0002047530, -0.0013496336, + 0.0006482641, 0.0005107168, -0.0003032838, -0.0004473221, -0.0011000191, + 0.0005710976, -0.0001217192, 0.0013830117, 0.0003028647, 0.0006271475, + -0.3739634752, -0.0011922049, -0.0000429386, 0.0011663937, 0.0004656375, + -0.0002357552, 0.0010558702, -0.0003865265, -0.0008050576, -0.0002241412, + -0.0006559857, 0.0004988243, -0.0000641993, 0.0006138110, -0.0001015841, + 0.0006556138, 0.0009190794, -0.0009250897, 0.0003116685, -0.0004105014, + 0.0006042067, -0.0001545817, 0.0012043091, 0.0005784621, 0.0009941831, + -0.0001885146, -0.0001662858, 0.0002896956, 0.0008836021, 0.0010049008, + -0.0001887470, 0.0006753483, 0.0005062131, -0.0004023884, 0.0001996737, + -0.0008476750, 0.0003772661, 0.0001712502, -0.0000176001, 0.0004109070, + -0.0001260233, 0.0010728906, 0.0000521373, 0.0014996585, -0.0000812437, + 0.0002077608, 0.0019775191, -0.0000877233, -0.0007585796, 0.0008501052, + 0.0007127279, -0.0008340375, -0.0005708158, 0.9183158875, 0.0019820163, + -0.0848532319, 0.0004136192, -0.0003966247, -0.0003383330, 0.1536947191, + 0.0003439779, -0.0005427855, 0.0002158899, -0.0002019247, -0.0000059335, + -0.0000764050, -0.0023414707, 0.0009853961, 1.2117766142, -0.0004128783, + -0.0001371652, -0.0011323930, 0.0004409793, 0.0028444296, 0.0005281037, + 0.0008602664, 0.0003460580, 0.0014497973, 0.0005314217, 0.0009491760, + 0.0000815783, -0.0001893453, -0.0013563209, -0.0014912141, 0.0012978176, + -0.0001053629, 0.0003053604, -0.0005639079, 0.0011389009, 0.0002232522, + 0.0000497364, -0.0003616612, 0.0008306857, 0.0004900754, -0.0004498034, + 0.0000229406, -0.0006897589, -0.0014148038, 0.0012462721, -0.0009083170, + 0.0019758127, -0.0003004614, 0.0006510783, 0.0013117781, 0.0001713075, + 0.0005597398, -0.0001386832, 0.0002685616, 0.0009219071, 0.0001589931, + 0.0004263557, 0.0004929220, 0.0000816898, 0.0002964968, 0.0010553955, + -0.0006668589, -0.0008295487, 0.0003572963, 0.0004635262, -0.0002218176, + 0.0013313345, 0.0014444105, -0.0001665133, 0.0007462117, -0.0003173229, + -0.0010192823, -0.0001535767, 0.0094377138, -0.0010142880, 0.0009575253, + 0.0011594505, 0.0013176230, -0.0002491500, 0.0000890661, 0.0015718627, + -0.0002013845, 0.0016982364, -0.0002358733, 0.0000195010, 0.0006001513, + 0.0008171452, -0.0003451556, 0.0016194889, -0.0011862945, -0.0009501907, + 0.0018963506, -0.0011772146, -0.0008048549, -0.0008179799, 0.0005847039, + -0.0010892656, 0.0005316557, 0.0008885666, 0.0011104615, 0.0004463568, + 0.0006810734, -0.0005260373, 0.0003221948, 0.0014145970, -0.0002512177, + -0.0007832078, -0.0011784649, 0.0000406019, -0.0005532890, -0.0001913862, + -0.0008424539, 0.0016890555, -0.0011794984, -0.0006589135, -0.0008025108, + 0.0006708230, -0.0000547700, 0.0004303702, 0.0005217157, 0.0010141074, + 0.0011328552, -0.0003359620, 0.0000645060, 0.0009242877, 0.0000990639, + 0.0011304589, 0.0006900325, -0.0013531896, 0.0009098290, -0.0009724274, + 0.1142468005, 0.0011002026, 0.0003748388, 0.0008604465, 0.0000482619, + 0.0018374515, 0.0010585440, -0.0011397767, 0.0005816445, 0.0010287366, + -0.0005781166, -0.0002673239, 0.0011387095, -0.0006031403, 0.0003102743, + -0.0000012816, 0.0010156906, -0.0005780058, 0.0002551228, 0.0076752291, + 0.0010246295, -0.1666685641, 0.0002213123, -0.0001747180, 0.0009794519, + 0.0007738294, -0.0008569690, 0.0000709512, -0.0008123377, -0.0007558241, + -0.0011627483, -0.0001855246, 0.0006674249, -0.0008915560, -0.0002658085, + -0.0001065100, 0.0008054255, 0.0010387544, -0.0004258766, 0.0004549762, + -0.0003424982, 0.0007365923, 0.0000007845, -0.0004949160, -0.0003376510, + -0.0005283575, 0.0018517701, -0.0016452291, -0.0007217722, 0.0012113508, + -0.0011861968, -0.0006041536, 0.0005402816, 0.0036575315, 0.0003446960, + -0.0007459990, 0.2900228202, 0.0010920544, -0.0000216025, 0.0001800305, + 0.0003034768, -0.0003231878, 0.0004322927, -0.0004551250, -0.0012742062, + 0.0001280718, -0.0001887745, -0.0004379271, 0.0002859184, -0.0011359095, + -0.0007760180, -0.0006803641, 0.0012724199, 0.0003146599, 0.0000275401, + 0.0003910880, 0.0009540804, -0.0007146299, 0.0008768089, 0.0008245017, + -0.0023305633, 0.0007207845, 0.0009594178, 0.0000261255, 0.0002227786, + 0.0000975147, 0.0002871086, -0.0005478095, 0.0014459874, -0.0007848665, + -0.0002380521, -0.0005791704, 0.0005281372, 0.0000855253, -0.0011934217, + -0.0001059449, 0.0002955198, 0.0016096190, -0.0020433902, 0.0002550623, + 0.0003673728, 0.0004524393, 0.0269942712, -0.0020509490, 0.0000028995}; + +float unet_input_time_embedding_50_47[] = { + -0.0002787826, -0.0004468951, -0.0006394563, 0.0001432805, 0.0007283227, + 0.0004097475, -0.0006584586, 0.0008646219, 0.0008027214, -0.0020544606, + -0.0002501227, -0.0000945288, 0.0002905400, -0.0017808224, -0.0000202628, + 0.0002006600, 0.0003120117, -0.0014607680, 0.0006186910, -0.0009680379, + -0.0005552797, 0.0002782941, 0.0007578904, 0.0931828916, -0.0002550378, + -0.0005404286, 0.0012706928, -0.0001266217, -0.0010008217, 0.0001708982, + 0.0016671265, 0.0001573781, -0.0001256214, -0.0001432258, -0.0004378390, + -0.0007242146, -0.0000261134, -0.0006895361, -0.0003403036, -0.0008999417, + 0.0017018062, 0.0013933345, 0.0007908845, 0.0004374580, -0.0005942024, + 0.0002473344, -0.0011097507, -0.0002349028, -0.0009627636, 0.0002311465, + 0.0000448297, 0.0000347772, -0.0913438797, 0.0000718161, -0.0004955094, + -0.0003491123, 0.0010198861, 0.0005117222, -0.0007961928, 0.0017470615, + 0.0006381837, -0.0002319178, 0.0013090665, -0.0001966474, -0.0005601645, + 0.0008022105, 0.0000116089, -0.0006943477, -0.0002706908, -0.0004552177, + -0.0004834267, -0.0004459317, 0.0009202084, -0.0004965197, 0.0017752806, + 0.0006651655, -0.0014313082, -0.0010322984, -0.0001134370, -0.0004823464, + 0.0008198491, 0.0013043337, 0.0001330371, -0.0008183084, 0.0001475967, + 0.0005979391, -0.0003669411, 0.0008350764, -0.0007416792, 0.0003739209, + 0.0010487315, 0.0006574620, 0.0007717228, 0.0000913896, 0.0015969607, + 0.0012790095, -0.0008487487, -0.0017568562, -0.0006014816, 0.0009241635, + 0.0010293638, -0.0006361478, -0.0005110730, -0.4063134491, -0.0010735854, + 0.0001682686, 0.0001737466, -0.0003716676, 0.0000718147, -0.0000292542, + -0.0005857935, 0.0005575009, -0.3447019458, 0.0012198822, 0.0005050180, + 0.0004429058, 0.0011157268, 0.0002761099, -0.0009026867, 0.0008734565, + -0.0015323032, -0.0000903395, 0.0767643675, 0.0003079716, -0.0003121551, + 0.0006333892, -0.0005633403, 0.0006654873, 0.0009207265, 0.0011181110, + -0.0016797460, -0.0010543214, -0.0003925606, -0.0014130911, -0.0004788148, + -0.0007400688, 0.0001658236, 0.0007677656, -0.0007577632, 0.0008261846, + 0.0007161524, -0.0001585011, -0.0016381484, 0.0002506617, -0.0005607449, + -0.0001056558, -0.0005836114, -0.0015188321, 0.0011337593, -0.0004795897, + -0.0004274417, -0.0003140526, -0.0004502139, -0.0007422273, -0.0003735600, + 0.0010708529, 0.0001746863, -0.0015288536, 0.0003353758, -0.0016207346, + -0.0002263419, 0.0009447358, 0.0010792846, -0.0014987909, 0.0005474342, + -0.0006637420, -0.0000071216, 0.0012607025, -0.0247144774, 0.0010730193, + 0.0009637141, 0.0009587882, -0.0005197658, 0.0009428751, -0.0003029527, + -0.0012378348, -0.0005232185, 0.0012294576, -0.0005086362, -0.0004598573, + -0.0011755456, -0.0002030414, 0.0032567079, 0.0010378934, -0.0001610918, + -0.0013856641, 0.0002705124, -0.0001476058, 0.0002269680, 0.0002371292, + -0.0012432872, 0.0021739635, -0.0016080436, 0.0005909668, -0.0004250142, + 0.0004803562, 0.0005187668, 0.0002937624, -0.0001698679, -0.0013136445, + 0.0007302398, 0.0002491954, -0.0002665897, 0.0001576205, -0.0007400559, + -0.0000412809, 0.0009764956, 0.0000246456, -0.0014531512, -0.0011167184, + 0.0009409974, 0.0012138507, -0.0008067852, -0.0000758653, 0.0007719588, + -0.0002014888, 0.0014422713, -0.0000800127, -0.0008464280, 0.0006031942, + -0.0000845403, -0.0005327705, 0.0009777017, -0.0155087020, 0.0004693566, + 0.0005344455, -0.0022333553, -0.0009814156, 0.0015221897, 0.0003361949, + -0.0005193786, -0.0001700302, -0.0013726698, -0.0014918451, 0.0001077801, + 0.0005339854, -0.0008441159, -0.0011522081, -0.0005340343, -0.0008540395, + -0.0000173447, -0.0005408684, 0.0005829569, 0.0001331568, 0.4865400195, + -0.0008403452, 0.0004104716, -0.0007408926, -0.0008041477, -0.0006545582, + 0.0005297484, 0.0002760184, 0.0004061633, 0.0005239062, -0.0003051385, + 0.0003907676, 0.0002283179, -0.0000011142, 0.0006897575, -0.0001107819, + 0.0002360423, -0.0017344637, -0.0008821820, -0.0035664211, -0.0004208799, + 0.0001471001, 0.0011644135, -0.0003640344, 0.0002121637, 0.0000290009, + 0.0010290099, 0.0006581671, 0.0003617438, -0.0014006305, -0.0002920108, + 0.0004545397, 0.0000661113, 0.0009902958, 0.0013870560, -0.0018585301, + -0.2982507646, 0.0002161935, 0.0005820360, -0.0003612079, -0.0000018389, + 0.0006444128, 0.0007140124, -0.0017417681, -0.0006210692, -0.0010031303, + -0.0007418295, 0.0007662624, 0.0008830316, -0.0002400100, 0.0005376833, + -0.0005831863, -0.0001640795, -0.0008560247, 0.0000912030, 0.0004756441, + -0.0028403169, -0.0006118824, 0.0006383354, 0.0006337995, 0.0013006276, + -0.0000981675, -0.0003875699, 0.0005884375, 0.0006211856, 0.0015370599, + -0.0004611840, -0.0010342193, 0.0006601887, -0.0000891294, 0.0004380685, + -0.0003018957, 0.0001053252, 0.0002790238, 0.0008398914, -0.0008367035, + -0.0008951609, -0.0003170231, -0.0007017183, -0.0017326726, 0.0001786926, + 0.0013684409, 0.0006423630, 0.0006565542, 0.0487959459, 0.0007446422, + 0.0005216326, -0.0009039068, 0.0003875203, 0.0024402300, -0.0000095344, + 0.0002393182, 0.0005183930, -0.0004082080, -0.0000498025, -0.0013382854, + -0.0003014039, 0.0014459251, 0.0002113695, -0.4281009436, -0.0008714630, + 0.0000430336, -0.0000101529, 0.0001920784, -0.0002561591, -0.0004463293, + -0.0018461191, 0.0000849310, -0.0000162427, -0.0006578322, 0.0001474424, + -0.0002850899, 0.0001726008, -0.0015177132, 0.0000693784, 0.0017724684, + 0.0006103558, 0.0002835770, -0.0011084890, -0.0005197683, -0.0008161195, + -0.0001943575, 0.0022813813, 0.0004551066, -0.0008367049, 0.4603520036, + -0.0004149829, 0.0017638654, -0.0003807314, 0.0011958787, 0.0003038601, + -0.0003772787, -0.0014963163, -0.0003340000, -0.0008744013, 0.0004532887, + 0.0002112323, 0.5289401412, 0.0006360170, 0.0012301081, -0.0013410738, + 0.0012786492, -0.0005478472, 0.0011974936, -0.0004291399, -0.0009848266, + -0.0010449104, -0.0004498862, -0.0000653728, -0.0001002813, 0.0001147799, + -0.0005567251, 0.0001464188, 0.0007918585, -0.0012484249, -0.0006889803, + 0.0003597891, 0.0006931690, -0.0000949835, -0.0014752313, -0.0010857191, + -0.0009862266, 0.0003348262, -0.0006530876, 0.0005147858, -0.0001773257, + 0.0009636264, 0.0004332163, -0.0003854372, -0.0012646404, 0.0000295623, + -0.0002459099, 0.0010302267, -0.0007858728, -0.0012501618, 0.0001435662, + 0.0003154052, 0.0007244581, 0.0000719284, -0.0025523126, 0.0002224208, + 0.0008325414, -0.0009661457, -0.0002686710, -0.0009152214, -0.0013070251, + -0.0006179758, 0.0001637447, 0.0000253900, 0.0010963620, 0.0001477367, + 0.0001733498, 0.0001935670, 0.0006398477, -0.0001260005, 0.0013589489, + -0.0008896496, -0.0011521520, 0.0008603852, -0.0003643876, 0.0000386431, + -0.0007324698, -0.0004330133, -0.0005523260, 0.0004613018, -0.0017454633, + -0.0003990927, -0.0002725869, 0.0010862343, 0.0001880219, -0.0008651125, + 0.0003077225, 0.0002142042, -0.0011083784, 0.0001926506, -0.0005348604, + 0.0001902333, 0.0000735428, 0.0004407384, 0.0001089914, -0.0003325888, + -0.0000781743, 0.0009352397, 0.0005142395, 0.0010937456, 0.0010028393, + 0.0011014300, 0.0001298208, -0.0008882419, 0.0003924074, -0.0014381725, + -0.0099786744, 0.0006935094, 0.0000788584, 0.0002626730, 0.4008743465, + -0.0010658004, 0.0000789932, -0.0004410660, -0.0016153045, -0.0001146353, + 0.0003370099, -0.0008491792, -0.0002355538, -0.0000639544, -0.0001789427, + 0.0000090436, -0.4276043177, -0.0006544823, -0.0011105821, -0.0002735965, + -0.0002674285, -0.0001359070, -0.0000096089, -0.0015457431, 0.0016447143, + -0.0000986583, -0.0000423966, -0.0009558625, -0.0011403156, 0.0010273810, + 0.0013198077, 0.0003022132, 0.0003712523, 0.0005658595, -0.0012202500, + -0.0014108156, -0.0012153874, 0.5431753397, -0.0007338431, 0.0014606694, + 0.0008010827, 0.0006616018, 0.0005447092, 0.0005514184, 0.0009254394, + -0.0004425729, -0.0001912792, -0.0006280114, -0.0007951665, -0.0002210615, + 0.0006192526, 0.0011730907, -0.0004967595, -0.0003536604, 0.0003904444, + -0.0007173631, -0.0004842575, 0.0003011818, -0.0019035742, 0.0011988794, + -0.0002750538, -0.0001793024, -0.0002876485, -0.0014645001, 0.0002221260, + -0.0005237344, -0.0009928765, -0.0004292601, -0.0000880770, 0.0003184751, + -0.0009249663, -0.0003303885, 0.0003080466, 0.0000478453, -0.0005280664, + 1.0186017752, 0.0016620439, 0.0007228400, -0.0023994753, 0.0002231007, + -0.0004215466, -0.0012283544, -0.0002026469, -0.0002507577, 0.0003362068, + 0.0000222363, -0.0007676579, 0.0003214125, 0.0009304821, -0.0005571120, + -0.0013845926, -0.0003896412, 0.0011376729, 0.0003650635, -0.0009147432, + -0.0000818931, 0.0003891839, -0.0006993716, 0.0001243563, -0.0007093763, + -0.0001216102, 0.0002744049, 0.0010637434, 0.0002162126, -0.0003326761, + 0.0003552942, -0.0001216293, -0.0013426733, 0.0012929650, 0.0000072685, + -0.0003084496, 0.0020287069, 0.0019325097, 0.0011447384, 0.0001117121, + -0.0008814341, 0.0003854805, -0.0004155887, 0.0005337475, -0.0009212201, + 0.0001893229, -0.0002705987, 0.0006206329, 0.0003397921, 0.0003260155, + 0.0003772373, -0.0006655455, -0.0034423051, -0.0000108701, -0.0011205508, + 0.0004299337, -0.0001867801, 0.0005429240, -0.0015765839, 0.0003084906, + -0.0007883678, -0.0011922298, -0.0009201411, -0.0001667477, 0.0007870775, + 0.0006003496, 0.0012944932, -0.0006072651, 0.0014695523, 0.0006427986, + 0.0007192781, 0.0006067330, 0.0011640438, 0.0000545830, -0.0003873496, + 0.0003477959, -0.0010392896, 0.0003506767, -0.0001120940, -0.0008930187, + 0.0007500155, -0.0003257450, -0.0005413647, -0.0012985368, 0.0009583933, + -0.0006067110, -0.0002499570, -0.0003951454, -0.0001558522, -0.0000477848, + -0.0000128126, 0.0002357833, -0.0008134358, -0.0009695629, 0.0007559448, + 0.0008867853, -0.0007817373, 0.0002525204, 0.0014054189, 0.0004849341, + 0.0016580102, 0.0002078451, 0.0008521618, -0.0003795247, 0.0004293863, + -0.0006982961, 0.0007484807, 0.0011452334, -0.0006520423, -0.0019311351, + 0.0015103305, 0.0007685176, -0.0007532184, -0.0016880980, -0.0026139864, + -0.0006525572, 0.0003246003, 0.0012325607, 0.0004166942, -0.0006520377, + 0.0007185584, 0.0008226705, -0.0013045727, -0.0003156743, -0.0010755379, + 0.0005369391, 0.0007980485, 0.0003683344, -0.0007438709, 0.0009357040, + 0.0000918354, 0.0008747913, -0.0004060268, 0.0003468864, -0.0006769542, + 0.0000625658, 0.0005009370, -0.0018652903, 0.0006302246, -0.0001893062, + 0.0010018460, -0.0006708493, 0.0008220172, 0.0001305931, -0.0006114182, + 0.0007401957, -0.0001377342, -0.0009804545, -0.0001038497, 0.0009067580, + -0.0005946783, 0.0002470934, -0.0003373611, -0.0014700613, -0.0005806084, + -0.0014084103, 0.0008588927, -0.0017480296, -0.0004726981, 0.0004290754, + -0.0001335288, -0.0086507881, -0.0012939090, 0.0007858891, -0.0000545736, + -0.0004208940, 0.0004024869, 0.0003722767, 0.0005226217, -0.0003073402, + -0.0002733814, -0.0003391332, 0.0009755337, -0.0010739327, -0.0018610007, + 0.0006845999, 0.0008415598, -0.0003030300, -0.0006671976, 0.0001620653, + 0.0005674092, -0.0003406443, -0.0000364345, 0.0012663775, -0.0010772650, + -0.4397625327, 0.0006011738, -0.0007853881, -0.0001089950, 0.0005818377, + -0.0016595884, 0.0000023693, 0.0012168349, -0.0013458305, 0.0002544350, + 0.0005024638, 0.0000482252, -0.0002930862, 0.0009445855, -0.0008840507, + -0.0005200922, 0.0013774752, -0.0008998662, -0.0002431939, -0.0017525925, + 0.0000337064, 0.0011007171, 0.0006960708, -0.0013069748, 0.3344628811, + 0.0001388772, -0.0001810510, -0.0016024848, 0.0007152986, 0.0000685281, + -0.0024593621, 0.0001068726, -0.0000415864, -0.0001678136, 0.0004977272, + 0.0007434562, 0.0004195292, -0.0002626069, 0.0004529252, -0.0007253070, + 0.0007220372, -0.0010818075, -0.0003550439, -0.0008387100, -0.0001050550, + -0.0005886406, 0.0000776892, -0.0010135483, 0.0006458093, 0.0003602910, + 0.0006198878, 0.0034911209, -0.0001891199, -0.0002927501, 0.0008240039, + -0.0002956096, 0.0001918350, 0.0007343434, -0.0004127109, 0.0005309929, + -0.0011402098, 0.0021131160, 0.0003943545, 0.0049502207, 0.0000234842, + 0.0006278019, -0.0003923059, 0.0008231510, -0.0005750079, -0.0006391518, + -0.0011666324, -0.0000967560, -0.0005995743, 0.0012124801, -0.0004824138, + -0.0009175275, -0.0013571688, 0.0005396175, -0.0006021881, 0.0010101669, + 0.0010172399, 0.0006479369, 0.0000907667, 0.0003853886, 0.0006947450, + -0.0003877608, -0.0006341621, -0.0002591097, 0.0008029158, -0.2704935670, + -0.0005151974, 0.0004465815, 0.0004644998, -0.0013565875, -0.0007454921, + -0.0001388907, 0.0008433890, 0.0008429331, 0.0021791321, 0.0000165533, + -0.0010339131, 0.0013197488, -0.0007404857, 0.0000746883, -0.0003126623, + -0.0005088409, -0.0014720215, -0.1014652476, 0.0001542401, 0.0002545034, + 0.0005524228, 0.0007876013, 0.0010807808, 0.0000942489, 0.0000987037, + -0.0002696197, 0.0011646708, 0.0005706603, -0.0016657626, -0.0008860938, + 0.0063111233, -0.0004813843, 0.0005122917, -0.0015362720, 0.0016849106, + -0.0002813064, 0.0006747968, -0.0005052229, 0.0003148798, -0.0004733982, + -0.0002426011, -0.0003809988, 0.0002757581, -0.0002255936, -0.0009973367, + 0.0002163267, 0.0006571352, 0.0009907475, -0.0011978606, -0.0007999293, + 0.0013517549, -0.0001080558, -0.0010583568, 0.0009109102, -0.0002807763, + -0.1006314158, 0.0011589000, 0.0000435477, -0.0007252095, -0.0013413036, + 0.0001785157, -0.0006201556, 0.0002191598, 0.0010157607, 0.0008300435, + 0.0003801484, 0.0003639916, 0.0001632045, 0.0003880793, 0.0008303160, + -0.0001196971, -0.0003508658, 0.0000327000, 0.0011045993, 0.0004156409, + -0.0006503677, 0.0004406925, 0.0001794780, -0.0011338475, 0.0003011087, + 0.0005241297, 0.0001506181, -0.0006442379, -0.0008945190, -0.0007973439, + -0.0001376702, 0.0001638058, 0.0004945071, 0.0001418127, -0.0001472821, + -0.0000560975, -0.0007070978, -0.0003946060, -0.0014607995, -0.0011060541, + 0.0006419225, 0.0013351662, 0.0003050072, -0.0008388166, -0.0001225881, + -0.0002805479, 0.0009756247, 0.0017336775, -0.0009285967, 0.0000557317, + -0.0014258791, -0.0012585429, -0.0001317818, -0.0010416042, -0.4252460003, + -0.0006076300, -0.0007210905, -0.0004462330, 0.0001026753, -0.0005012238, + 0.0007701023, 0.0005360144, -0.0005714158, 0.0005621216, -0.0002294281, + 0.0005719030, 0.0006383401, -0.0015247390, -0.0002758054, 0.0009149886, + -0.0000249399, 0.0001640494, 0.0010141414, 0.0003503584, 0.0003093506, + 0.0017939676, -0.0004906571, 0.0001970429, -0.0004969980, 0.0007088384, + 0.0003407188, -0.0001195981, 0.0001330706, 0.0000151210, -0.0005348586, + 0.0007700745, 0.0005494701, 0.0007465072, 0.0001845527, -0.0008752877, + 0.0005472268, 0.0008780285, -0.0001971113, -0.0001317766, -0.0000900254, + -0.0013114586, 0.0004011793, 0.0014004200, -0.0013872356, 0.0004670131, + -0.0006420694, 0.0007322254, -0.0004112017, -0.0011076038, 0.0002553090, + 0.0008654495, 0.0005460121, 0.0007302179, 0.0014613392, -0.0000672904, + -0.5217028856, -0.0004952603, 0.0008368557, -0.0000094420, -0.0014457337, + -0.0007568153, 0.0014186040, 0.0009173540, 0.0002937065, -0.0001654893, + 0.0010341445, 0.0000305027, 0.0004027528, 0.0004107553, -0.0003554797, + -0.0002551191, 0.0005851858, -0.0021400689, -0.0008175764, -0.0003498630, + 0.0006476310, 0.0003377643, 0.0000677686, -0.0014168900, 0.0005121417, + 0.0016847975, 0.0000449368, -0.0016176102, -0.0001131736, 0.0005871570, + -0.0006614528, 0.0015486872, 0.0003088690, 0.0002578821, -0.0006745504, + -0.0002669351, 0.0010689328, -0.0008632862, -0.0013859384, 0.0008848221, + 0.0002126773, -0.0000141477, 0.0001409277, 0.0007538074, -0.0003707972, + 0.0009880713, 0.0022791335, 0.0000827721, -0.0006521394, -0.0007782839, + -0.0008875118, 0.0011484758, -0.0007926354, 1.0796533823, 0.0002643925, + -0.1243204027, 0.0011364809, -0.0004493878, 0.0003228954, 0.1578662395, + 0.0003725798, -0.0008338080, 0.0004193652, 0.0010036882, 0.0001267074, + 0.0000290952, -0.0008166740, 0.0001594909, 1.2028518915, -0.0012887353, + 0.0009359566, -0.0010739237, -0.0004053962, 0.0050400901, 0.0000025881, + -0.0005550846, -0.0004066182, 0.0015478209, 0.0014159816, -0.0002584164, + 0.0012023733, -0.0007605380, -0.0012670364, -0.0011183608, 0.0012252037, + -0.0007443272, 0.0016700777, 0.0013872148, 0.0011754609, 0.0003902320, + -0.0007780385, 0.0000851001, 0.0007436080, -0.0002704766, 0.0004527655, + 0.0004235854, -0.0013496045, -0.0004092492, 0.0000157771, 0.0001542419, + 0.0001981489, -0.0002701972, 0.0006128531, 0.0007749489, 0.0001848917, + -0.0014906954, -0.0002760086, -0.0011903720, 0.0010792690, 0.0004539248, + -0.0010983748, -0.0011337055, 0.0001040844, 0.0003583264, -0.0005189662, + 0.0003323236, -0.0012198203, -0.0005357051, -0.0001802791, 0.0006217414, + 0.0019523185, -0.0000621872, -0.0010507938, -0.0003331467, -0.0011124613, + 0.0002352362, -0.0010074994, 0.0048348079, 0.0002995688, 0.0000181887, + -0.0008038371, 0.0002735000, -0.0003299443, -0.0000646999, 0.0014439425, + 0.0007957332, -0.0008942517, 0.0004531061, 0.0000622482, -0.0018543159, + -0.0001265449, -0.0002759323, 0.0005516754, -0.0015158434, -0.0010008567, + -0.0001400940, -0.0000245268, -0.0003613330, 0.0002470911, 0.0006485917, + -0.0003965227, 0.0002483418, 0.0010221115, 0.0005637100, 0.0011439566, + -0.0001179082, -0.0008340434, 0.0004861546, 0.0002603792, 0.0000450367, + -0.0016642916, -0.0002503721, -0.0004612943, 0.0006282196, -0.0005637700, + -0.0009024087, -0.0000412748, 0.0006085197, 0.0006949962, -0.0017837416, + -0.0005753164, -0.0003303553, -0.0000342624, 0.0000104345, 0.0010265210, + -0.0004756288, 0.0008965679, -0.0007657872, -0.0001250306, -0.0003552162, + -0.0002905969, 0.0004354881, -0.0009845728, -0.0003607266, -0.0011852668, + 0.0444648862, 0.0004184067, -0.0000464738, -0.0003295705, -0.0005284303, + 0.0009886534, 0.0013551314, -0.0013679686, -0.0007428867, 0.0008475496, + -0.0017609531, 0.0010792065, -0.0006472366, -0.0000387328, -0.0006743059, + 0.0005866177, 0.0015861215, 0.0001018131, -0.0000048839, -0.0015308163, + 0.0000756611, -0.2921820581, -0.0006344833, -0.0006066998, 0.0006057088, + 0.0007464672, -0.0001653377, -0.0021924782, -0.0015726630, -0.0006335201, + -0.0014294037, 0.0001946737, 0.0000631153, -0.0009865896, 0.0000749787, + -0.0003735847, 0.0013131937, 0.0012149080, 0.0002196291, -0.0006773169, + 0.0008484384, 0.0005470640, -0.0006949438, -0.0002535023, -0.0002926770, + -0.0001243505, 0.0011082147, -0.0013815197, -0.0006995965, -0.0007834332, + -0.0012535345, 0.0002745925, -0.0004565073, 0.0003332450, 0.0009593284, + 0.0000836715, 0.3852029741, 0.0005701035, 0.0002301135, -0.0005782663, + 0.0017357841, -0.0007443088, 0.0012381657, -0.0002591934, 0.0000850298, + -0.0006737895, -0.0010995836, -0.0010352398, -0.0011165421, -0.0005842126, + -0.0022033951, -0.0000310348, 0.0001500249, 0.0009476296, -0.0005722493, + -0.0000457442, 0.0011963286, 0.0002078461, 0.0000865801, -0.0000221319, + -0.0003499314, 0.0004377640, -0.0005208396, 0.0003640736, 0.0009913982, + -0.0005282302, -0.0002769553, -0.0009059729, 0.0001384692, -0.0001058658, + -0.0011503859, 0.0009783660, 0.0012824014, -0.0009523416, -0.0003623825, + 0.0005859607, 0.0000279583, 0.0015574798, -0.0004735701, -0.0017332905, + 0.0008692313, -0.0000201175, 0.0714483559, -0.0008200233, 0.0004898373}; + +float unet_input_time_embedding_50_48[] = { + 0.0006784447, 0.0005526758, -0.0004078243, -0.0026708923, -0.0003972636, + -0.0017510746, 0.0016397212, -0.0018256579, 0.0002448549, 0.0000658703, + 0.0014261194, -0.0003039413, -0.0024554012, 0.0008343058, -0.0005654572, + 0.0000471501, -0.0011171065, -0.0008768884, 0.0010200165, -0.0014449249, + 0.0014456431, -0.0005060844, -0.0012726964, 0.0810554177, 0.0013657373, + 0.0031081152, -0.0012546089, 0.0011869045, 0.0009735399, 0.0004858244, + 0.0024236771, 0.0003992557, -0.0023584198, 0.0005757851, -0.0004910850, + 0.0018806760, 0.0012940723, 0.0005770603, 0.0002415900, -0.0015283274, + -0.0005978635, -0.0003055164, 0.0003237003, 0.0007384913, 0.0005645873, + -0.0004009812, 0.0000194861, -0.0012417124, 0.0005971240, -0.0014225261, + -0.0012529790, -0.0014353422, -0.1959214061, 0.0004005516, -0.0017997605, + -0.0022765824, -0.0011855292, 0.0012853204, -0.0009259409, 0.0006477821, + -0.0000398974, 0.0011089671, -0.0004481017, -0.0003636014, -0.0004244759, + 0.0003779149, 0.0009423462, -0.0005493719, -0.0002603177, -0.0010579864, + 0.0014585746, -0.0006669225, -0.0000228644, 0.0009801704, -0.0027932469, + -0.0019842405, 0.0017850781, -0.0004047668, 0.0017575147, -0.0006970938, + 0.0018592421, -0.0007714716, -0.0004649856, -0.0000269958, -0.0006563847, + -0.0007075507, 0.0020911200, -0.0002657706, 0.0001128279, -0.0015809187, + -0.0006194395, -0.0005969359, 0.0002134563, 0.0007085948, 0.0023169029, + -0.0010578162, 0.0011148648, -0.0005825730, -0.0000265134, -0.0007118629, + 0.0003391141, -0.0007815477, -0.0017797427, -0.5349251032, -0.0001494153, + -0.0006633000, -0.0021545198, 0.0011201929, 0.0006689336, 0.0009151532, + -0.0011161417, -0.0011675274, -0.5146268606, 0.0013169730, 0.0008823592, + -0.0010102282, -0.0010525719, 0.0001741841, 0.0002987618, -0.0004317381, + -0.0004790570, 0.0022085982, -0.0173201598, -0.0004417012, -0.0010497486, + -0.0005582753, -0.0002119523, -0.0011020391, -0.0000695391, -0.0000476413, + -0.0008253753, -0.0002157968, 0.0007490793, 0.0010345364, -0.0014262027, + -0.0009362926, 0.0000368354, 0.0010214308, 0.0005791280, 0.0009862231, + -0.0007491519, -0.0007762578, 0.0008530007, 0.0005467995, -0.0000702192, + -0.0003354084, 0.0004378171, 0.0012884904, 0.0002110614, 0.0000783242, + -0.0020492557, 0.0002092331, 0.0002954355, -0.0014591687, -0.0006271550, + -0.0001529665, 0.0000555301, 0.0008896291, 0.0010395783, 0.0000652480, + -0.0015448404, 0.0001447842, 0.0011180788, 0.0000174721, -0.0000329795, + 0.0017928293, -0.0017898949, -0.0025837095, -0.0572329238, 0.0018222958, + -0.0004827013, -0.0005794931, -0.0001468640, -0.0017276553, -0.0004327549, + -0.0008729300, -0.0004861910, 0.0016332353, 0.0000378978, 0.0003082324, + 0.0014447733, 0.0008501774, 0.0017583030, -0.0018283878, -0.0000914158, + -0.0002088784, 0.0004908657, -0.0007044896, 0.0003803368, -0.0002432815, + 0.0007658645, 0.0004362115, -0.0003662416, 0.0001964143, 0.0002578418, + -0.0020907051, -0.0000216038, -0.0006159702, -0.0011909506, -0.0002576630, + -0.0009952541, 0.0017177905, 0.0012479117, 0.0001938199, 0.0005224184, + 0.0001211874, 0.0009219126, 0.0000701146, 0.0006532120, 0.0004540558, + 0.0010257699, 0.0010921671, -0.0000313497, 0.0009447944, -0.0008901805, + -0.0017330498, -0.0004975884, 0.0005283025, -0.0005396641, -0.0020242482, + -0.0001354776, 0.0006927713, -0.0001984846, 0.0006016223, 0.0011339793, + -0.0016466798, -0.0022242004, -0.0002048984, -0.0014926374, -0.0008917144, + 0.0009683324, -0.0018508979, 0.0011118217, 0.0001955819, 0.0004539080, + 0.0012581400, -0.0030819755, -0.0011121593, -0.0003666542, -0.0006700530, + -0.0012943989, 0.0001127243, -0.0011770769, -0.0002859039, 0.6848530173, + 0.0007576568, -0.0008119163, 0.0008219384, 0.0007080203, -0.0007295627, + -0.0010051318, 0.0011411654, -0.0005826582, -0.0023039514, 0.0001450251, + -0.0010865948, 0.0002377755, -0.0002373619, -0.0000730806, 0.0007903796, + -0.0001604063, 0.0001836228, 0.0003033925, 0.0016989711, 0.0007855023, + -0.0002141679, 0.0007233927, 0.0004531173, -0.0015504798, 0.0000951239, + -0.0007092962, -0.0010277401, -0.0022691810, 0.0006618407, -0.0005347040, + 0.0002930707, 0.0003259210, 0.0002751308, -0.0010648472, -0.0003013813, + -0.4389566779, 0.0003523212, -0.0005204453, -0.0013264976, 0.0009798114, + -0.0010250406, 0.0000492511, -0.0020526408, 0.0010617934, 0.0004629563, + -0.0005592526, -0.0010975406, -0.0003364382, -0.0001269958, 0.0004385286, + -0.0002783653, -0.0008732583, 0.0009488896, 0.0000936878, -0.0006219447, + -0.0037971279, -0.0015329875, -0.0003983738, 0.0011514737, 0.0004094040, + -0.0010505761, -0.0024900225, -0.0005998639, -0.0006338190, -0.0008994113, + -0.0009338204, -0.0013821130, 0.0004107405, -0.0014338698, -0.0012155366, + 0.0011907737, 0.0007057643, -0.0000093025, 0.0009389361, -0.0001742239, + -0.0007057388, 0.0007805768, -0.0005588687, 0.0017577941, 0.0018287434, + -0.0013773781, 0.0029485729, 0.0000312692, 0.0657759085, -0.0010663387, + 0.0005330571, 0.0015136942, -0.0001624856, 0.0002092212, -0.0012665126, + -0.0005958043, 0.0006629091, 0.0005140865, -0.0018874141, -0.0008217366, + -0.0011782441, -0.0014172269, -0.0003122294, -0.6289063096, 0.0015556833, + -0.0005290299, 0.0000741089, 0.0021769395, -0.0018893313, -0.0010789250, + -0.0015523003, 0.0009369962, 0.0020857407, 0.0006169397, 0.0005422012, + -0.0020395373, -0.0008658201, -0.0000774049, -0.0018991814, -0.0013435991, + 0.0015121158, -0.0005469476, 0.0002663890, 0.0012407757, -0.0002456665, + 0.0003184180, -0.0000016955, 0.0003430992, 0.0008584708, 0.4848675430, + -0.0012685359, 0.0007562395, -0.0004076413, 0.0001267111, 0.0002838883, + -0.0000899860, 0.0004066761, -0.0013325608, 0.0014897657, 0.0006172527, + 0.0015303732, 0.3750252724, -0.0007926859, 0.0008587516, -0.0006818771, + 0.0011029096, -0.0000511478, 0.0016767876, 0.0005178968, 0.0000665220, + -0.0013245479, -0.0021848469, -0.0021990510, 0.0004040792, -0.0003632531, + -0.0012299507, -0.0000893702, -0.0002529145, 0.0011596032, -0.0008630157, + -0.0019297529, -0.0009483974, 0.0005722193, -0.0004368741, 0.0001087552, + 0.0010861473, 0.0003126013, -0.0020556082, 0.0008736113, -0.0003275890, + -0.0017006085, -0.0003873222, -0.0005465583, -0.0011179412, 0.0014772920, + 0.0011803557, -0.0002275053, 0.0006883364, 0.0013869442, 0.0011550738, + 0.0002706607, 0.0013551533, 0.0001105574, 0.0004482658, 0.0013614143, + 0.0002522101, 0.0014182543, 0.0005349249, 0.0010602081, -0.0013571796, + 0.0011109910, 0.0001180614, 0.0005613798, 0.0015126220, -0.0006211012, + 0.0014503212, 0.0002231356, 0.0009793995, 0.0004643537, -0.0011255073, + 0.0019415440, 0.0020775963, -0.0017198994, 0.0023521155, -0.0010617909, + -0.0007083085, 0.0006632507, 0.0016940408, -0.0011375304, 0.0017394712, + -0.0008059568, -0.0008034818, -0.0003769433, -0.0000916054, 0.0000002461, + -0.0018316125, 0.0001099901, 0.0020169946, 0.0006846879, -0.0005291193, + 0.0000922570, 0.0005083345, 0.0000310319, -0.0003320406, 0.0009331889, + -0.0000759126, -0.0003441311, -0.0008426504, 0.0002697742, -0.0018054871, + 0.0018031746, -0.0010490341, -0.0022624861, 0.0010471714, 0.0003214702, + -0.0139564350, -0.0007536709, -0.0002441852, -0.0004567159, 0.4671372771, + 0.0021014279, -0.0007798232, -0.0015263325, 0.0018460312, 0.0001368903, + -0.0004364013, -0.0007550172, 0.0002888739, -0.0021674773, 0.0002459281, + -0.0005502338, -0.5899736881, 0.0005837912, -0.0002625086, -0.0001849993, + -0.0087204641, -0.0002348907, -0.0003527580, 0.0016621617, 0.0024547423, + 0.0003499314, -0.0000269050, -0.0013284804, 0.0022607762, -0.0006572679, + -0.0015661730, -0.0004376816, -0.0005002724, 0.0002850899, 0.0003813389, + -0.0002087259, 0.0017863167, 0.6053357124, 0.0017571338, -0.0000677175, + -0.0019813303, -0.0003932761, -0.0002983985, 0.0000285022, -0.0008394923, + -0.0008428819, 0.0001833974, 0.0012565813, -0.0001908294, 0.0017204303, + -0.0006835233, -0.0003402077, 0.0007535242, -0.0003689546, 0.0014055064, + -0.0007096126, -0.0008222093, 0.0003052983, -0.0004183052, 0.0008050122, + -0.0015608172, 0.0007521664, 0.0000507988, -0.0002982588, -0.0000285578, + -0.0003887801, -0.0001228787, 0.0002909134, -0.0000778842, 0.0011823596, + -0.0000619511, -0.0000026762, -0.0011422373, -0.0002622996, -0.0001973230, + 1.2802449465, 0.0001416705, -0.0014283597, 0.0004045488, -0.0002531647, + 0.0012120873, 0.0000440800, -0.0008171210, 0.0007610968, 0.0004683165, + 0.0009305105, -0.0003551339, -0.0007136655, -0.0002258206, -0.0023185392, + 0.0006578974, -0.0007806267, 0.0009900695, -0.0010611499, -0.0012182603, + -0.0008473634, 0.0019597281, 0.0011493382, -0.0004070923, -0.0003938614, + 0.0000591045, 0.0010874853, -0.0000970094, -0.0009080949, 0.0011943982, + -0.0004921723, 0.0005054106, 0.0028427062, 0.0006116546, -0.0022792630, + -0.0011902747, 0.0012161327, -0.0000112350, 0.0001017917, -0.0003381833, + 0.0001493633, -0.0013447092, 0.0013269973, 0.0009490699, 0.0004274822, + 0.0015566209, 0.0007058493, -0.0031264760, 0.0010133949, 0.0006258716, + 0.0008270042, -0.0011393055, 0.0013995534, 0.0013290511, 0.0003823026, + 0.0000335614, -0.0009558551, -0.0023094935, 0.0015575764, 0.0009760058, + -0.0009259407, 0.0006488953, 0.0002589657, -0.0002801786, -0.0020421231, + -0.0008282075, -0.0004666430, -0.0000415099, -0.0001822782, -0.0004260873, + -0.0014125982, 0.0003973035, -0.0004855189, 0.0002051760, 0.0002308791, + -0.0003027101, 0.0007163945, -0.0004763857, -0.0007980838, 0.0004408122, + 0.0004416863, 0.0002536031, -0.0010189511, 0.0007588167, 0.0020041731, + -0.0005000485, -0.0003857475, 0.0009334449, 0.0014779400, 0.0003648414, + 0.0011206969, 0.0003287731, 0.0008752185, 0.0003451358, 0.0016837283, + 0.0006258015, -0.0010300241, -0.0016101003, -0.0004461771, -0.0015888116, + 0.0000744912, 0.0005906168, -0.0014492872, -0.0011870400, -0.0015981949, + -0.0003577906, -0.0005328162, -0.0013100207, 0.0010028810, 0.0002736831, + -0.0005451459, -0.0005244263, 0.0008899962, -0.0002292333, -0.0011185375, + -0.0016765560, -0.0003753235, 0.0018229545, 0.0007764839, 0.0011060996, + 0.0006140845, 0.0004743102, 0.0012647833, -0.0005554163, -0.0001626499, + -0.0022790069, -0.0012771318, -0.0000576712, 0.0010587173, -0.0007262947, + 0.0004907714, -0.0011443193, 0.0003117342, -0.0008345135, -0.0004617795, + -0.0001689275, -0.0009471467, 0.0010016910, 0.0017943736, 0.0008876072, + -0.0001945356, -0.0015208777, -0.0013351396, -0.0005310730, 0.0001670469, + -0.0007085062, -0.0001081410, -0.0016640425, -0.0000313011, -0.0009206180, + 0.0015615365, -0.0006357138, -0.0012392707, -0.0001035992, -0.0002208436, + -0.0000116504, -0.0001547486, 0.0011929213, 0.0000219636, -0.0013717075, + -0.0000520432, -0.0007537575, 0.0001575179, -0.0005494892, -0.0003769095, + 0.0004454392, 0.0006191470, -0.0022047069, -0.0024078239, -0.0009565777, + 0.0012693731, -0.0003140345, -0.0010680879, -0.0005863435, 0.0000334682, + 0.0000356459, -0.0023729736, -0.0000164243, 0.0018277033, -0.0012528365, + 0.0011487696, -0.0012627272, 0.0013707557, -0.0010576169, -0.0011696392, + -0.6364476681, -0.0013724901, -0.0004047174, -0.0018970296, -0.0019488633, + -0.0008514328, -0.0008548647, 0.0012196279, -0.0015459892, -0.0002342097, + -0.0014564481, 0.0009298219, 0.0010897630, -0.0000017695, 0.0016335417, + 0.0020657822, 0.0010966731, -0.0004987814, -0.0009077904, 0.0000832837, + 0.0000721947, 0.0000069612, -0.0014617428, 0.0000966811, 0.1608702093, + -0.0011351753, 0.0001356604, 0.0010703150, -0.0006392705, -0.0003483654, + -0.0003359844, -0.0002993125, -0.0006417279, -0.0007665588, 0.0020729532, + -0.0006733995, 0.0023149122, -0.0005973922, -0.0003414101, -0.0012140679, + -0.0008196039, 0.0028620046, -0.0012237281, 0.0011435919, -0.0000422467, + -0.0012509851, 0.0008529938, 0.0008642410, -0.0006089546, 0.0003601443, + -0.0011946065, -0.0027639638, 0.0004169578, -0.0013895659, -0.0011646724, + -0.0001950035, 0.0002053266, -0.0005307810, 0.0010845284, 0.0004491778, + -0.0005930001, -0.0027908245, -0.0016705117, 0.0013118600, -0.0004925421, + -0.0019997749, 0.0002884723, 0.0007415555, -0.0009820792, 0.0013034944, + -0.0019805720, -0.0003014626, -0.0007016500, -0.0015359250, -0.0002194032, + -0.0000363147, 0.0008920464, -0.0000323128, 0.0007588379, 0.0001114146, + -0.0013590897, 0.0002705380, 0.0008097393, -0.0011866523, -0.0003266179, + 0.0003589247, 0.0008867845, 0.0009257196, -0.0000545473, -0.4833350182, + 0.0012246817, 0.0002156061, -0.0004239508, 0.0001544566, -0.0007673837, + -0.0021742450, 0.0001460323, -0.0011324254, -0.0014791593, -0.0011330368, + -0.0007473209, 0.0005823513, 0.0005212161, -0.0012284312, 0.0004157437, + -0.0000008470, -0.0013081632, -0.1627159417, 0.0015661800, 0.0010483456, + 0.0010010703, -0.0002906770, -0.0011931169, -0.0001793215, -0.0011809459, + -0.0010602754, -0.0005695068, -0.0011587570, -0.0006361892, -0.0000544554, + -0.0074144443, -0.0007804539, 0.0012140768, 0.0005115015, -0.0003489656, + 0.0008644802, 0.0001675314, -0.0006123674, -0.0004313869, 0.0005452330, + -0.0002702521, 0.0003789011, -0.0022944389, -0.0014637255, 0.0001546427, + 0.0003359416, 0.0028461101, -0.0005728928, -0.0005432148, -0.0001576166, + -0.0006104659, 0.0024622441, 0.0026811138, -0.0001853703, 0.0016369186, + -0.1591743827, -0.0001358479, 0.0012510447, -0.0008432358, -0.0010443798, + 0.0025111216, 0.0001089144, -0.0017048568, 0.0005919023, -0.0015508996, + -0.0009633286, 0.0003974251, -0.0009246231, 0.0011061472, -0.0007120841, + 0.0021516716, -0.0008170318, -0.0005991972, -0.0016817786, 0.0003140178, + -0.0004882701, -0.0003729314, -0.0003218995, 0.0001537669, -0.0001872741, + -0.0001710150, 0.0017548529, -0.0018208624, 0.0000909949, 0.0013129022, + 0.0012279719, 0.0007643803, 0.0004842924, 0.0008913174, -0.0002336302, + 0.0005159485, 0.0006218986, 0.0002646500, -0.0009319433, 0.0009656833, + -0.0000880929, -0.0009593563, -0.0007359227, 0.0003672875, 0.0012411601, + -0.0008267313, -0.0004896526, -0.0018241005, 0.0012521649, 0.0007506338, + 0.0013592634, -0.0001587851, -0.0028016842, -0.0004573404, -0.6248047352, + -0.0010655762, -0.0005321726, -0.0012703519, 0.0012057272, -0.0004914068, + 0.0006723218, -0.0016815996, -0.0006787083, -0.0022160974, -0.0001094900, + -0.0020575761, -0.0004593949, -0.0033111740, 0.0005847088, -0.0005815434, + -0.0012445403, 0.0008568148, 0.0004745563, 0.0003265990, -0.0000045162, + -0.0016933144, -0.0003252611, -0.0008019919, 0.0006590341, -0.0007256477, + 0.0022228109, -0.0002846108, 0.0002219691, 0.0025060955, -0.0013234112, + 0.0007513782, 0.0007412052, -0.0010235608, -0.0006196084, 0.0000627600, + 0.0003443898, 0.0000472296, -0.0006484814, -0.0011725337, -0.0004042163, + 0.0007758471, -0.0001801394, 0.0012182479, 0.0014606259, 0.0014936645, + -0.0000462930, 0.0000102287, 0.0001292974, 0.0010812506, -0.0008698730, + -0.0003826782, -0.0004658606, -0.0003910796, -0.0002879186, -0.0008707386, + -0.7079144716, -0.0003253396, 0.0002479404, 0.0003956060, 0.0008508894, + -0.0016626066, 0.0007534870, 0.0014239531, -0.0004444346, -0.0002964794, + -0.0023535884, -0.0008439710, -0.0019539664, 0.0001219020, -0.0017288531, + -0.0017483365, -0.0003989078, 0.0001284876, 0.0001173245, -0.0004396779, + -0.0001777089, -0.0005133970, -0.0003011832, 0.0009782305, 0.0008995342, + 0.0011380916, -0.0006558755, -0.0001340185, 0.0002052826, -0.0023951754, + -0.0011534742, 0.0005902217, 0.0004158598, -0.0012822973, 0.0012832778, + 0.0008050343, 0.0000992989, -0.0014907257, 0.0018276263, -0.0003153463, + -0.0015745820, -0.0008232726, -0.0008202074, 0.0009190557, -0.0001620444, + 0.0001119445, -0.0004033516, 0.0015077227, 0.0007014253, -0.0002500797, + -0.0003222185, 0.0008889977, 0.0001821900, 1.2700374126, 0.0007729705, + -0.1828908324, 0.0009958496, -0.0010302463, -0.0014265368, 0.1573596001, + -0.0012269113, 0.0001134370, -0.0010117972, -0.0004156553, 0.0007031639, + 0.0000414113, 0.0010021855, -0.0003792150, 1.1382056475, 0.0008839876, + -0.0007529401, 0.0004247183, 0.0011691082, 0.0001006681, 0.0002384940, + -0.0006345054, 0.0001686118, 0.0008534240, 0.0008396129, -0.0004169536, + -0.0002803290, -0.0002108049, 0.0004634112, -0.0007974468, -0.0004206025, + -0.0000677591, -0.0009763122, -0.0011713700, 0.0002289549, 0.0023790174, + -0.0008681240, -0.0008782311, -0.0032981923, 0.0000672587, 0.0008179669, + -0.0012036304, 0.0013388065, -0.0010046782, 0.0002576539, -0.0003364598, + -0.0011426008, -0.0002087289, -0.0003134068, -0.0009380737, -0.0000376161, + -0.0023404229, -0.0008377745, 0.0001923850, 0.0005900396, 0.0013479330, + 0.0022552758, 0.0008563604, 0.0005838054, -0.0000755871, 0.0001871923, + 0.0022124506, -0.0001200786, -0.0004862286, 0.0009283265, 0.0006991633, + -0.0010753525, 0.0006898521, 0.0026975619, -0.0002497709, 0.0016330171, + -0.0024756771, -0.0011406585, 0.0093497839, 0.0003684298, 0.0003996673, + -0.0005077976, -0.0001380007, -0.0006827750, 0.0003461661, 0.0000079714, + -0.0003084056, -0.0000707828, 0.0023481571, -0.0006321664, 0.0003552469, + 0.0010731146, 0.0005986430, 0.0006759386, 0.0005604606, 0.0009176633, + -0.0001289493, -0.0020562490, -0.0001030569, 0.0008339705, -0.0005300185, + 0.0001279609, 0.0020077717, -0.0003753192, -0.0010584793, -0.0023293905, + -0.0002513463, -0.0003920982, 0.0009697834, 0.0001673549, -0.0001063363, + 0.0004370981, 0.0005493723, -0.0009283125, 0.0010461435, -0.0015083825, + -0.0002459721, -0.0005005305, -0.0011174465, -0.0011194213, -0.0010833049, + 0.0003463982, 0.0010076101, -0.0001729592, 0.0011119870, 0.0013381462, + 0.0001221132, -0.0003108007, 0.0009707178, -0.0008162550, -0.0003127218, + 0.0007146941, -0.0006854578, 0.0015136154, 0.0002461770, 0.0013436703, + -0.0523240417, -0.0008350753, -0.0010711964, -0.0002606853, 0.0011083193, + -0.0005392071, -0.0008201513, 0.0007646006, -0.0005457522, 0.0014158254, + -0.0002155565, -0.0013258111, 0.0001957049, 0.0008891821, -0.0006050789, + -0.0011607795, -0.0010892153, 0.0021001706, 0.0004796237, -0.0038719787, + 0.0000814614, -0.4516364634, -0.0010941788, -0.0001901314, 0.0000332608, + -0.0008095119, 0.0001108942, -0.0009113972, 0.0006879084, -0.0009248061, + 0.0011009425, -0.0007227799, 0.0008565444, -0.0008577011, -0.0004401037, + -0.0003555554, -0.0004072064, 0.0005543861, 0.0017284034, -0.0005946762, + 0.0005968519, -0.0002383450, -0.0007276181, -0.0015705363, -0.0004100818, + 0.0002738733, -0.0006233694, -0.0004887467, 0.0002795924, 0.0003252802, + 0.0016291641, -0.0010644859, 0.0007625790, -0.0015009096, -0.0022125756, + -0.0002991533, 0.5218949318, 0.0002415329, -0.0015169447, 0.0013395746, + -0.0003567345, -0.0004772038, -0.0001820915, -0.0013718053, -0.0007775349, + -0.0010080952, -0.0001805049, 0.0000383329, -0.0002835090, 0.0025842753, + -0.0014824728, -0.0002204304, 0.0008307523, 0.0002834569, 0.0004486749, + -0.0026660897, -0.0002575782, -0.0006621424, -0.0021515684, -0.0001638904, + -0.0005757003, -0.0010310174, 0.0010418063, 0.0006401474, -0.0009969037, + -0.0006494747, 0.0006411052, -0.0002988027, -0.0002276561, 0.0004281197, + -0.0016784754, -0.0014390871, 0.0018451177, 0.0019427737, -0.0015250223, + -0.0005808957, -0.0014279522, -0.0008362328, -0.0001886422, -0.0000654221, + -0.0002082381, -0.0004897220, 0.1083419695, -0.0006153968, 0.0004100714}; + +float unet_input_time_embedding_50_49[] = { + -0.0005607670, -0.0001561352, -0.0009038127, -0.0000886762, 0.0006618504, + 0.0007118233, -0.0006099916, -0.0004103103, 0.0000918058, -0.0000767911, + -0.0007910284, -0.0022151039, 0.0009435443, 0.0003977041, -0.0014148476, + 0.0007006698, -0.0003120285, 0.0008719245, -0.0001798790, -0.0010501652, + 0.0003221137, 0.0031668367, -0.0016191116, -0.0167429373, -0.0016365040, + -0.0000120362, 0.0000172975, -0.0001151375, 0.0000908822, 0.0004640752, + -0.0009676609, -0.0001657992, -0.0013630474, -0.0000244859, 0.0007782960, + -0.0007353155, -0.0009387862, 0.0007599627, -0.0005796917, -0.0008953605, + -0.0004786178, -0.0008850018, 0.0008373791, -0.0005445806, 0.0006164962, + 0.0000748851, -0.0003949322, 0.0007094692, -0.0003863592, 0.0005156251, + 0.0004220875, 0.0003524886, -0.3373029530, -0.0000391137, 0.0009729831, + -0.0008984502, -0.0008785554, 0.0006943662, 0.0001433319, 0.0015482528, + -0.0001964858, 0.0002407370, -0.0006640158, 0.0005122968, 0.0003348216, + 0.0005722577, 0.0000918722, 0.0005398687, 0.0025775582, -0.0011250779, + 0.0003465521, 0.0005054062, -0.0004686688, -0.0017206613, -0.0001369938, + -0.0001484202, -0.0006407388, -0.0006391658, 0.0001275525, -0.0004507287, + 0.0019908780, 0.0009614985, 0.0005287798, -0.0009480054, -0.0006013836, + 0.0004962140, 0.0009569814, -0.0003726487, 0.0003293767, 0.0005424977, + -0.0000528425, -0.0001772237, -0.0003047334, -0.0006970150, 0.0006662565, + -0.0001734137, 0.0002214895, 0.0016732188, 0.0003690750, -0.0012873625, + -0.0006361166, 0.0021913867, -0.0001400393, -0.7572142482, 0.0001233746, + 0.0012975782, 0.0002996372, 0.0001803897, 0.0003041034, -0.0012668036, + -0.0011965134, -0.0008854084, -0.7578169107, 0.0007564332, 0.0006821239, + 0.0000777133, 0.0015144651, -0.0016475499, -0.0007091342, -0.0021753863, + -0.0012345486, -0.0003402133, -0.0833229795, 0.0000835164, -0.0000213142, + -0.0000733123, 0.0000509550, 0.0002787099, -0.0009843823, 0.0007284987, + -0.0002048644, -0.0009496240, -0.0010728776, -0.0007973379, 0.0010436943, + 0.0005328001, 0.0005586876, 0.0010521896, 0.0003968459, -0.0023421748, + 0.0007753742, -0.0009389766, 0.0015699551, 0.0006988463, -0.0012941689, + 0.0007765172, 0.0008136479, 0.0000300417, -0.0005397750, 0.0001168847, + 0.0000372566, 0.0002005788, -0.0011510239, 0.0010899715, -0.0005462556, + 0.0000584328, -0.0000269059, 0.0001049954, 0.0006182743, -0.0000980017, + 0.0003052091, -0.0003088011, 0.0004047481, -0.0020669554, -0.0009751595, + 0.0004295104, -0.0003267720, 0.0028566113, -0.0390372276, -0.0023247541, + -0.0007255020, -0.0004723240, -0.0007176087, 0.0007465653, -0.0004939800, + -0.0002564853, -0.0003115578, -0.0001002392, -0.0004163918, 0.0011308072, + -0.0015128620, -0.0010795062, -0.0046460889, 0.0006673778, -0.0001839399, + 0.0007858705, -0.0002108314, -0.0003937455, -0.0010486939, 0.0001285425, + 0.0005071198, 0.0008800873, 0.0003266464, 0.0014664673, -0.0004403153, + 0.0000215159, 0.0004017317, 0.0001473036, 0.0012230707, -0.0005975566, + -0.0001378101, -0.0000076601, -0.0002627582, -0.0002769590, -0.0004402325, + -0.0014313618, -0.0007305047, -0.0003998722, -0.0003070896, 0.0004417781, + -0.0001971009, -0.0006668917, -0.0004910717, 0.0001463497, 0.0012032618, + 0.0003290242, -0.0006442070, 0.0009969794, -0.0002637192, -0.0003781078, + -0.0017692409, 0.0002293238, -0.0012104691, 0.0121398820, -0.0001304589, + 0.0003301012, -0.0012272121, 0.0007033981, -0.0000815385, -0.0000839287, + 0.0009504417, -0.0000919923, -0.0007867001, 0.0003539398, 0.0004254263, + 0.0012426525, 0.0009681154, 0.0006899964, 0.0016682232, 0.0005901084, + 0.0020942630, -0.0010575894, -0.0014861447, 0.0012961859, 1.0381654501, + -0.0008235455, 0.0000988301, 0.0001818497, 0.0007822653, 0.0008445401, + 0.0000227820, 0.0007382219, -0.0002216999, -0.0004230663, -0.0005787848, + -0.0007565478, 0.0002338658, 0.0008322686, 0.0008031062, 0.0005192301, + 0.0003775600, 0.0017643243, -0.0018162325, 0.0013532754, -0.0002062743, + -0.0007018247, -0.0008879174, -0.0004533594, -0.0002457555, -0.0007121554, + -0.0010475116, -0.0003313513, 0.0000342908, 0.0009508706, 0.0000298517, + 0.0001127073, -0.0000159498, 0.0006668577, 0.0005785348, -0.0015650140, + -0.6608310342, -0.0009496566, 0.0004961325, -0.0000070473, -0.0011535347, + -0.0001440430, 0.0010389518, 0.0001985460, -0.0008289199, 0.0009929836, + 0.0008438827, 0.0004428872, -0.0000149191, 0.0007404173, -0.0027814386, + 0.0002542208, -0.0010204990, -0.0011003558, -0.0004001684, 0.0009288546, + 0.0014943006, 0.0005492319, 0.0009548956, 0.0010149083, 0.0002492603, + 0.0003337194, -0.0000870088, 0.0004063174, 0.0000054310, -0.0010628947, + -0.0009571719, -0.0004607448, -0.0005845639, -0.0012219809, 0.0000933153, + 0.0010498152, -0.0003458214, -0.0007253806, -0.0002326686, 0.0005235523, + 0.0003581373, -0.0005307370, -0.0016951116, 0.0007734466, 0.0001906947, + 0.0001030061, -0.0005160775, 0.0010108287, 0.0666046441, -0.0000815210, + 0.0010594352, -0.0007413356, -0.0002077945, -0.0013243305, 0.0000839629, + -0.0013177628, 0.0010841519, -0.0008518647, 0.0004218169, -0.0000833347, + 0.0005917614, -0.0003031229, 0.0005244364, -0.9152097106, -0.0012752326, + -0.0004809750, -0.0005985199, 0.0000734705, -0.0009852322, -0.0005865180, + 0.0003904216, 0.0004886901, -0.0004188954, -0.0005152458, 0.0001877045, + 0.0005155532, 0.0006433248, -0.0003023477, 0.0003049267, -0.0005077063, + -0.0004136702, -0.0010010838, -0.0001954790, 0.0007764113, 0.0001610816, + -0.0002936006, -0.0013700044, -0.0005692742, -0.0002710726, 0.4762192965, + 0.0003712610, -0.0012641866, 0.0007465216, 0.0005134558, -0.0012629530, + 0.0006038789, 0.0016416974, -0.0016801634, 0.0005645640, 0.0008617397, + 0.0004909079, 0.0699617043, 0.0008613849, 0.0002329843, 0.0007723952, + -0.0002090959, 0.0005906117, -0.0004280293, 0.0007488239, 0.0005687238, + -0.0001491471, -0.0002331618, 0.0007818625, -0.0009868063, -0.0005112430, + -0.0009205043, 0.0003287345, -0.0006186434, -0.0006206227, -0.0005042441, + -0.0019032520, 0.0010842741, 0.0007437014, -0.0002260213, -0.0002010046, + 0.0001904792, 0.0002779014, -0.0021523195, -0.0005762042, -0.0007051216, + -0.0019331998, 0.0000828565, -0.0010831305, -0.0012792486, 0.0005608462, + 0.0017307999, -0.0008084271, 0.0006105991, -0.0003407993, 0.0010986729, + 0.0002706167, 0.0011438543, -0.0010976512, 0.0017947985, 0.0009358665, + -0.0007514679, -0.0017436678, -0.0001057028, -0.0000065095, 0.0005694529, + -0.0003341069, -0.0003889562, -0.0008544119, -0.0004012245, 0.0003741776, + -0.0000412195, -0.0002970723, -0.0004091484, -0.0024224445, -0.0007064214, + 0.0006726384, 0.0000376222, -0.0003884853, 0.0005214277, 0.0006991054, + 0.0012069112, 0.0009445827, -0.0006641387, -0.0001782919, -0.0004017809, + -0.0015924904, 0.0005706660, 0.0006055830, -0.0005844336, -0.0006954048, + -0.0011435272, -0.0003806511, 0.0001078434, -0.0019006063, -0.0000925148, + 0.0005861465, -0.0014290269, -0.0005304522, -0.0009086010, -0.0007064957, + -0.0007813424, -0.0003541913, 0.0000769794, -0.0003626897, -0.0010358053, + 0.0003719158, 0.0003688084, 0.0000201724, -0.0002624351, -0.0004387693, + -0.0031449702, 0.0004971270, -0.0000568045, 0.0002953243, 0.5479992628, + 0.0005761804, -0.0002851938, 0.0005080067, -0.0013235246, 0.0004278862, + 0.0006920010, 0.0012524722, 0.0020406805, -0.0002538739, 0.0000217406, + -0.0016788729, -0.8287546039, -0.0002426070, 0.0006922008, -0.0007689593, + -0.0039917179, -0.0008693254, 0.0000608107, 0.0010935231, 0.0005303142, + 0.0004270840, 0.0000839438, -0.0004221774, -0.0013000011, -0.0005299901, + 0.0007338517, 0.0002312046, -0.0002306789, 0.0008365917, 0.0005892399, + 0.0009591347, -0.0006600316, 0.6210858822, 0.0015184572, -0.0010201450, + -0.0003653346, -0.0001128712, -0.0012248652, 0.0017733588, -0.0004337085, + -0.0013220604, -0.0000004936, 0.0003320304, -0.0000404734, 0.0000876449, + -0.0001870958, 0.0015832796, 0.0012924420, -0.0016116234, 0.0010489952, + 0.0005721191, 0.0007711095, -0.0015385109, -0.0010251061, 0.0007555124, + -0.0008210687, 0.0010291417, 0.0004241241, -0.0000808164, -0.0007514236, + -0.0000589420, 0.0013702353, -0.0003673768, -0.0005224915, -0.0002324330, + 0.0001424085, 0.0009762291, 0.0015048133, -0.0010810606, -0.0008691940, + 1.7243053913, -0.0005188156, -0.0001736567, -0.0004239473, -0.0003034864, + -0.0002072336, -0.0008344729, 0.0016274443, 0.0004753130, 0.0000300398, + 0.0005799783, 0.0000793264, 0.0001278147, -0.0005155634, 0.0000411244, + -0.0008240966, -0.0014006933, -0.0000915034, 0.0001720591, 0.0015323269, + -0.0006713782, 0.0001830631, -0.0000017681, 0.0001099540, 0.0000000331, + 0.0011557126, -0.0008582808, 0.0001412865, -0.0009140107, 0.0004974657, + -0.0002059552, -0.0018169223, -0.0007993733, -0.0005424957, -0.0007150299, + 0.0004036948, 0.0000542151, -0.0004790458, -0.0024169013, 0.0003688780, + 0.0017604622, 0.0017419462, 0.0004901206, 0.0006424533, -0.0014517880, + -0.0011146807, -0.0012814334, 0.0005298313, 0.0011839094, -0.0009984225, + -0.0002417765, -0.0011861250, -0.0016133897, -0.0008153253, -0.0001994062, + -0.0015055004, 0.0001684361, -0.0019358133, 0.0007748938, 0.0004145412, + -0.0001506130, 0.0015174942, -0.0004946934, -0.0003887438, -0.0010060174, + 0.0014129970, 0.0012087445, 0.0002830942, -0.0005727313, 0.0016815609, + 0.0011277981, -0.0008558750, -0.0007342852, -0.0004251003, -0.0010835477, + 0.0017595594, -0.0002148745, 0.0002730752, 0.0011052811, -0.0000705882, + 0.0002885277, -0.0012782339, -0.0000832229, -0.0002878888, -0.0003922894, + -0.0000988012, -0.0020843989, 0.0010578943, 0.0012918497, -0.0011401931, + -0.0005440138, 0.0006794584, 0.0014212558, -0.0007903615, -0.0003865240, + -0.0015659855, -0.0006718524, 0.0000021453, -0.0011869241, 0.0007318906, + -0.0012120154, -0.0014897380, 0.0013016125, 0.0011834321, 0.0003351565, + -0.0012916408, -0.0000091423, 0.0005630553, -0.0014113355, -0.0012004566, + -0.0000492847, 0.0014302707, 0.0003581042, -0.0015171481, 0.0008631507, + 0.0002739811, -0.0003817441, -0.0004501581, -0.0007158800, -0.0011856988, + 0.0005878482, 0.0002518601, -0.0007099139, 0.0006812674, 0.0016714241, + -0.0005717808, 0.0002326890, -0.0003029434, 0.0001385254, -0.0008979030, + -0.0010642856, -0.0008648117, -0.0005329382, -0.0006882677, -0.0014427137, + -0.0004943535, -0.0011899443, 0.0011431808, -0.0001593577, 0.0003909217, + -0.0000236304, -0.0001004208, 0.0004946801, -0.0000303744, -0.0010659015, + -0.0007033455, 0.0007133991, 0.0011046333, 0.0001717892, 0.0003222357, + -0.0003341073, -0.0020816582, 0.0012221651, -0.0012408115, -0.0002050474, + -0.0001719971, 0.0007286090, 0.0006781067, 0.0004341120, 0.0001038007, + 0.0006635180, -0.0033338191, -0.0002869613, 0.0013964865, 0.0005314411, + 0.0001144484, -0.0000060741, -0.0005904841, 0.0002258650, 0.0011253227, + -0.0002915496, -0.0008587637, 0.0006189820, 0.0009135454, -0.0007087851, + 0.0008123158, -0.0013081236, -0.0014892123, 0.0009504706, -0.0003378538, + -0.0007050857, 0.0006806497, 0.0009273246, -0.0005366048, -0.0011074189, + -0.9240919352, -0.0003138576, -0.0007820097, -0.0001896522, 0.0013308637, + 0.0008044043, 0.0009315182, 0.0012000157, 0.0005845253, -0.0015903357, + 0.0015014256, 0.0005408861, -0.0012065241, 0.0007550414, -0.0010780108, + -0.0009172868, -0.0003201130, -0.0015351963, 0.0003312216, 0.0000183964, + -0.0001739250, 0.0002819025, -0.0002401040, 0.0007367872, -0.1018002033, + 0.0003231377, -0.0000367681, 0.0010450636, -0.0011559543, 0.0016945419, + -0.0001355638, -0.0002812393, -0.0003840635, 0.0010417891, -0.0000473042, + 0.0001867390, -0.0018725162, 0.0007943977, -0.0001430225, -0.0001555732, + 0.0017870246, -0.0009977678, -0.0005319123, -0.0003884428, 0.0001504952, + -0.0008382821, 0.0017127303, 0.0004324203, -0.0007104161, 0.0000700690, + -0.0009259465, 0.0006221612, 0.0000769719, 0.0001184698, 0.0011530151, + 0.0008111811, 0.0005310636, 0.0000104440, -0.0013666591, -0.0006102414, + -0.0012971573, -0.0012021977, -0.0001184740, 0.0038596662, -0.0012559770, + 0.0000523372, 0.0004843872, -0.0014372148, -0.0009070397, 0.0009731483, + -0.0003585853, -0.0025455803, 0.0011267297, -0.0005659068, 0.0008100603, + -0.0004949324, 0.0001035572, 0.0003589134, -0.0005570729, -0.0011525610, + -0.0007743440, 0.0010492690, 0.0009787586, -0.0004104080, -0.0000911031, + 0.0026105149, 0.0004616779, -0.0001641190, -0.0006916758, -0.8113405704, + -0.0002607852, -0.0002964211, 0.0006667633, 0.0000803338, 0.0002620286, + 0.0001047805, -0.0001657754, -0.0006788089, 0.0007337679, 0.0000398145, + 0.0003783021, 0.0008858410, 0.0005102358, -0.0011681784, -0.0003202759, + -0.0004029863, -0.0001517283, -0.2755990624, -0.0000481685, -0.0001544264, + -0.0003663525, 0.0019052802, -0.0009315249, -0.0000256961, 0.0003445388, + 0.0004665013, -0.0007079833, -0.0001542699, -0.0012943619, -0.0002093194, + -0.0262724720, 0.0001454619, -0.0005345331, 0.0002304898, 0.0002006562, + 0.0018564598, -0.0003299550, 0.0002712952, 0.0008703329, 0.0004425049, + -0.0009739827, -0.0009951408, 0.0008660806, -0.0001763378, -0.0004635445, + -0.0003897971, 0.0063610836, -0.0010436084, -0.0014509161, -0.0005710819, + -0.0000589953, -0.0007462059, 0.0003431127, 0.0008291131, -0.0002556753, + -0.2652680278, -0.0002969211, -0.0005470263, 0.0004564142, -0.0000239480, + -0.0009558338, -0.0022970170, 0.0006229505, 0.0008118299, 0.0001442609, + 0.0007302312, 0.0000525229, -0.0008139119, -0.0006137188, -0.0002619959, + 0.0003434711, -0.0012780216, 0.0003640054, -0.0005309349, -0.0002000490, + -0.0003415970, 0.0000261157, 0.0002512615, -0.0003751437, -0.0009985319, + -0.0009877644, -0.0002725050, 0.0018611214, -0.0006705695, 0.0018751915, + -0.0001927523, 0.0003224761, 0.0012245057, 0.0014358566, 0.0003528106, + -0.0001239984, -0.0003376352, -0.0004380189, 0.0005989210, 0.0001228782, + -0.0021364731, 0.0000057137, -0.0007971972, 0.0000453461, -0.0002163311, + -0.0010848660, 0.0003744350, 0.0005281353, -0.0004444384, -0.0018134393, + -0.0006002383, 0.0015819528, 0.0006643332, 0.0010326821, -0.9135034680, + 0.0013726179, 0.0015701242, -0.0005917596, -0.0008181515, 0.0002681985, + 0.0006256476, -0.0003710574, -0.0002583335, 0.0008997903, -0.0010142666, + 0.0007226482, 0.0006785761, -0.0010763891, 0.0012627433, -0.0001513655, + 0.0012864219, -0.0001337155, -0.0012367694, 0.0005483148, -0.0013460750, + -0.0000973837, -0.0015127561, 0.0004032396, 0.0000507771, 0.0003127684, + 0.0007249028, 0.0018094019, -0.0013056542, -0.0005904939, -0.0012362339, + -0.0000872898, 0.0004455904, -0.0008750865, -0.0005748714, 0.0013250001, + 0.0001788351, 0.0009900749, 0.0000365040, 0.0012920410, 0.0003358657, + -0.0003356412, -0.0016971785, 0.0010063904, -0.0004489246, -0.0007476052, + -0.0009073622, -0.0003348198, 0.0005113161, 0.0006021480, -0.0020902460, + -0.0005268567, -0.0006427132, -0.0008134828, 0.0001903954, 0.0011448213, + -0.9642984271, 0.0018504530, -0.0017363252, -0.0001066190, 0.0006410666, + 0.0004185064, -0.0005608806, -0.0008115665, 0.0012249481, -0.0004303719, + 0.0015710692, 0.0010115942, -0.0013366728, 0.0007468921, -0.0003749043, + -0.0004147496, 0.0007652324, -0.0009456407, -0.0001493334, -0.0003226192, + 0.0001060986, -0.0012351893, 0.0000239126, -0.0011076899, -0.0000351775, + 0.0011717724, 0.0002044374, -0.0004599779, -0.0014208881, 0.0006107101, + -0.0011660261, -0.0005636511, 0.0005760627, -0.0021371527, 0.0014861329, + -0.0009592437, 0.0006277299, 0.0005112221, -0.0014424303, -0.0022469019, + -0.0002401716, -0.0003718315, -0.0019031274, 0.0013579358, -0.0009043659, + 0.0009369343, -0.0014490476, -0.0011613948, 0.0003908231, 0.0003875885, + -0.0004560477, -0.0003153239, -0.0014431619, 1.4576327801, -0.0026623991, + -0.2778962851, 0.0015050105, -0.0013954015, -0.0002542927, 0.1377151310, + 0.0005152472, -0.0000606384, 0.0001441566, -0.0014491980, -0.0003724098, + 0.0013368991, 0.0007405563, -0.0007685991, 0.9243050218, -0.0003642712, + -0.0010171391, 0.0017160128, -0.0008869158, -0.0001511835, -0.0001649018, + 0.0005174112, 0.0000774697, -0.0015777946, 0.0014680114, -0.0010051606, + 0.0015898440, -0.0003816928, 0.0016794326, 0.0001564985, -0.0000891942, + -0.0004860444, -0.0023049840, 0.0003521852, 0.0004862356, 0.0008868721, + -0.0002370612, -0.0003093898, 0.0002059052, 0.0003930409, -0.0004918266, + -0.0000096035, 0.0001590899, -0.0004442381, -0.0009985517, -0.0000046641, + 0.0006325550, -0.0005144002, -0.0000238549, -0.0008779722, 0.0012112404, + 0.0002322048, -0.0016111652, -0.0000522558, -0.0005369082, 0.0004194314, + 0.0004696306, 0.0000221161, 0.0002075837, 0.0004433291, 0.0005292913, + 0.0000895082, 0.0017216244, 0.0017575631, -0.0006521158, 0.0001041588, + 0.0010557952, 0.0004403265, -0.0011337770, 0.0016948800, 0.0006997050, + -0.0000032336, 0.0003349193, -0.0025366223, -0.0004110965, 0.0001712912, + -0.0003094790, -0.0006775676, 0.0003699269, 0.0010002563, -0.0004302985, + -0.0009521786, -0.0006747926, 0.0007221485, 0.0012321570, 0.0003400738, + 0.0000681663, -0.0002975650, -0.0007873089, -0.0014510704, 0.0009645484, + -0.0002311543, 0.0003739744, -0.0002525671, -0.0003692775, -0.0000240700, + -0.0007288205, 0.0005234154, -0.0003933086, -0.0011152900, 0.0004048264, + -0.0001443252, 0.0019246980, -0.0002202494, -0.0005177679, -0.0011719216, + -0.0008140672, -0.0001124907, 0.0004086317, -0.0005510998, 0.0014140155, + -0.0017370083, 0.0005925107, -0.0006433818, 0.0009808368, -0.0010440478, + -0.0008108804, -0.0011496715, 0.0000236323, 0.0000277516, -0.0020430940, + 0.0004930347, 0.0001555171, 0.0011121954, 0.0005290330, -0.0003512464, + -0.0014532972, 0.0008120921, 0.0006211563, -0.0013141851, 0.0016583405, + -0.1833735555, -0.0007141735, -0.0002265447, -0.0007554359, 0.0018709034, + -0.0005463734, -0.0018091390, 0.0005089074, 0.0001731166, -0.0025671832, + 0.0006167255, -0.0008683357, -0.0002299664, -0.0000828486, 0.0005473732, + -0.0002321173, -0.0003695469, -0.0001425277, -0.0007272651, -0.0022852249, + -0.0001557036, -0.7099250555, 0.0015157766, -0.0003802357, 0.0000493450, + -0.0003156397, -0.0004818344, 0.0000210416, -0.0017853538, 0.0009814384, + -0.0001118942, 0.0001507038, 0.0000598892, -0.0001180023, -0.0008035705, + -0.0000402345, -0.0000759917, 0.0003443970, -0.0006493046, -0.0004849974, + -0.0009583446, -0.0003267182, -0.0003470543, -0.0004429915, -0.0005554911, + -0.0003682279, -0.0001992940, -0.0005833590, -0.0000133384, -0.0014577620, + 0.0002414041, -0.0001997426, -0.0010500178, -0.0014164177, -0.0001709396, + 0.0003600806, 0.7487528920, -0.0002065580, 0.0003782199, -0.0005565046, + 0.0002895084, 0.0001502878, -0.0010445553, -0.0001569523, -0.0002363338, + -0.0002625128, 0.0003349903, -0.0010941301, 0.0001076027, 0.0003327993, + 0.0010478022, 0.0002078876, 0.0006359993, -0.0014589494, 0.0012912033, + 0.0008488744, -0.0000405526, -0.0003241552, 0.0002126904, 0.0005278252, + 0.0000720047, -0.0006489470, 0.0010526381, 0.0000427645, 0.0014069832, + 0.0001576258, 0.0018791012, -0.0004567718, 0.0001645555, -0.0010156985, + -0.0000171843, 0.0001019924, 0.0002232585, -0.0003885170, -0.0016056171, + 0.0002298821, -0.0000184998, 0.0002837626, 0.0001329859, -0.0004819314, + 0.0002334514, 0.0007215906, 0.1352308393, 0.0016118295, -0.0000554464}; + +float unet_input_time_embedding_20_0[] = { + 0.0031389827, 0.0028318902, -0.0026160441, 0.0003639215, -0.0023666392, + -0.0065185567, -0.0052222596, -0.0055722040, 0.0038499271, -0.0026677514, + -0.0010000004, 0.0019017304, -0.0011337437, -0.0010233312, -0.0025438676, + -0.0043442203, 0.0022057761, -0.0002826063, -0.0019440154, 0.0058698826, + -0.0001755250, -0.0014430201, -0.0009705088, 0.0152177811, -0.0027564459, + -0.0006176641, -0.0059804674, -0.0040559918, -0.0043772212, 0.0063952543, + 0.0015486707, 0.0026518945, -0.0051965574, 0.0030936920, 0.0018851347, + 0.0026122532, -0.0003578095, 0.0025255366, 0.0074046068, -0.0108125210, + -0.0044777999, -0.0044388440, 0.0018999572, 0.0044029858, 0.0024718596, + 0.0014398971, 0.0000693481, -0.0033945851, 0.0034155305, -0.0086679040, + 0.0004270570, -0.0010602453, -1.4190551043, -0.0013254881, 0.0062917508, + -0.0053772368, 0.0012777065, -0.0069149653, -0.0029297839, 0.0022376899, + -0.0015533406, 0.0012755018, 0.0014666221, -0.0017060596, 0.0021071304, + 0.0005740328, -0.0038468922, 0.0001051993, -0.0031978972, -0.0059491917, + -0.0023682495, 0.0028374060, 0.0011896489, 0.0026611378, -0.0047702240, + 0.0011119666, 0.0063801007, -0.0023740167, -0.0043287245, -0.0054467162, + 0.0014559296, 0.0018031687, 0.0028713988, -0.0009970339, 0.0052240212, + -0.0029397046, -0.0044748522, -0.0083951578, -0.0034527904, 0.0061513190, + 0.0024027408, -0.0043455306, 0.0062490692, -0.0001523421, -0.0299238823, + -0.0021221698, 0.0054948451, -0.0034997296, -0.0032006467, 0.0010955157, + -0.0092151295, 0.0043452769, 0.0027880729, 2.8596169949, -0.0015430884, + -0.0055345623, -0.0010936488, 0.0004577683, 0.0039371955, -0.0035845521, + -0.0043356600, -0.0042905407, -0.4581497014, 0.0014819121, 0.0028387420, + -0.0030011158, 0.0012112674, -0.0003693991, 0.0019303812, -0.0047311550, + -0.0011096043, -0.0055168401, -1.3457406759, 0.0059645842, -0.0055362023, + -0.0027625053, 0.0036871317, -0.0070306542, 0.0067453003, 0.0012832428, + -0.0039123506, -0.0013723634, -0.0012942979, 0.0040173763, -0.0005710893, + 0.0016346856, 0.0015550631, 0.0032399604, -0.0097893570, -0.0028921929, + -0.0024359960, -0.0081672296, 0.0016177339, -0.0069225943, -0.0052704262, + -0.0021138070, 0.0035412624, 0.0028908616, 0.0028109136, 0.0041578664, + -0.0000301669, -0.0025936640, 0.0009803060, 0.0058790687, -0.0032800701, + -0.0088406596, 0.0067599872, -0.0012357077, 0.0034346944, -0.0056268615, + -0.0002451618, -0.0016554344, -0.0021763956, -0.0084726540, 0.0048297248, + 0.0062634703, -0.0031029626, 0.0128282299, -4.2949647903, -0.0091658002, + -0.0028876746, 0.0019843131, 0.0050915610, 0.0012393808, -0.0005609710, + 0.0030434299, -0.0075294534, 0.0006449902, -0.0020670430, -0.0047397013, + 0.0011037900, -0.0042739967, -0.0123892613, 0.0038589826, -0.0041561695, + 0.0066509121, -0.0071139247, -0.0019652047, 0.0026698238, -0.0007413677, + 0.0086181872, -0.0073718638, 0.0010528479, -0.0041754581, 0.0005574371, + -0.0034848633, -0.0006766905, -0.0024586599, -0.0019340116, -0.0003461805, + 0.0023618322, -0.0069397180, -0.0023861490, -0.0075658723, 0.0044309711, + 0.0029912498, -0.0104727224, 0.0013704496, -0.0054989960, -0.0081043541, + -0.0043768180, -0.0045473971, 0.0016784654, 0.0051578367, -0.0034240666, + 0.0078319954, -0.0033816975, -0.0049254089, -0.0083417669, 0.0018515576, + -0.0034916736, -0.0009011765, 0.0057979068, 0.1504157633, -0.0004347779, + -0.0046485323, -0.0033707591, 0.0026833331, -0.0008882352, 0.0061366362, + 0.0062096920, 0.0052905548, 0.0017831605, 0.0044122725, -0.0005300157, + 0.0006497619, 0.0060130623, -0.0036618197, -0.0025440976, 0.0024379138, + -0.0053841490, -0.0012213220, 0.0001486831, -0.0030977800, -1.1859022379, + 0.0004116807, 0.0016936650, 0.0029903546, 0.0047311299, -0.0002418761, + -0.0042243320, 0.0017431467, -0.0025947397, -0.0065094242, -0.0030066986, + 0.0035002085, -0.0011550509, -0.0013171429, -0.0008693284, 0.0010743967, + -0.0040541030, 0.0004706208, -0.0003573387, 0.0205820315, -0.0066352612, + 0.0032071383, -0.0042786491, 0.0033403886, -0.0032182261, 0.0010376503, + 0.0001583612, -0.0096831601, -0.0015298980, 0.0011301981, 0.0014400680, + -0.0031683391, 0.0014457828, 0.0078837508, -0.0005075606, 0.0006411015, + -0.0825618953, -0.0044348706, -0.0009157694, -0.0053182291, 0.0056007267, + 0.0007631434, -0.0009212736, 0.0019693810, 0.0047805579, -0.0028229710, + 0.0089195166, 0.0001103098, -0.0037526076, -0.0009336609, 0.0040060095, + -0.0017026914, 0.0078700818, -0.0022923802, -0.0052773510, 0.0036212653, + -0.0149233090, -0.0045698341, 0.0004155970, -0.0010689865, 0.0009842471, + -0.0036685891, -0.0017687068, -0.0024678935, 0.0007995181, 0.0076114903, + 0.0040746145, -0.0007472173, -0.0031527102, -0.0042441357, 0.0000460767, + 0.0086554773, -0.0026512467, -0.0056228773, 0.0007110164, 0.0022291732, + -0.0039168429, 0.0024964516, 0.0027834824, 0.0032327902, 0.0022498816, + -0.0022999509, -0.0122829787, -0.0015001409, 2.8771052361, -0.0111692622, + 0.0041368762, -0.0024305135, -0.0078735277, 0.0052391859, -0.0047128354, + 0.0002088165, 0.0047104890, -0.0014494240, -0.0040121633, 0.0069867759, + -0.0005559428, 0.0018196751, -0.0060679885, 3.2305996418, -0.0012937242, + 0.0009871656, -0.0003620418, -0.0016501098, -0.0026964732, -0.0014649982, + 0.0031069517, -0.0034839958, 0.0026635733, -0.0021371078, 0.0037883446, + 0.0003107977, -0.0020761041, 0.0060323160, -0.0016432409, 0.0021607350, + 0.0072166752, 0.0031376001, 0.0046572471, -0.0044698673, -0.0040289373, + 0.0009785721, 0.0056534694, -0.0000428921, -0.0030183438, -1.4823269844, + -0.0019069239, -0.0038429513, -0.0037366152, 0.0039283652, -0.0047170678, + 0.0006774068, 0.0045568864, -0.0048058368, -0.0009428600, -0.0022451412, + 0.0010083715, -1.7635017633, 0.0028172308, -0.0071824794, -0.0073636342, + 0.0032595447, -0.0030750907, -0.0007662410, -0.0048151123, 0.0031741057, + -0.0024539488, 0.0040691444, -0.0003017127, -0.0010564907, 0.0031645875, + 0.0023084194, 0.0031404616, -0.0033584519, -0.0030625355, -0.0032336302, + -0.0019930748, 0.0126666548, -0.0000079412, -0.0079887901, 0.0048356866, + 0.0004764884, -0.0025730580, -0.0077443635, -0.0001814007, -0.0000844253, + -0.0005670562, -0.0006158180, -0.0057329233, -0.0040366035, -0.0046953699, + -0.0087805483, -0.0001350986, -0.0026315637, -0.0000556875, 0.0010727420, + 0.0014062778, 0.0019008752, -0.0014390871, 0.0003774764, 0.0003199251, + -0.0052746986, -0.0038565798, 0.0010632479, -0.0016815744, 0.0051284232, + 0.0010417686, -0.0083950385, 0.0021259582, 0.0077012619, 0.0048545757, + -0.0022233257, -0.0024037445, -0.0080676964, -0.0072904378, -0.0014915846, + 0.0038483096, 0.0093793608, 0.0045193597, 0.0016246720, -0.0036984656, + 0.0001576794, -0.0049193893, 0.0008291616, -0.0003299778, -0.0282273404, + 0.0037804903, 0.0016733333, 0.0009979581, -0.0044282665, -0.0048760423, + 0.0078753773, 0.0008590166, 0.0025009913, -0.0019682711, 0.0002134671, + -0.0046374802, -0.0146625619, -0.0060308431, -0.0086533194, -0.0006944900, + -0.0059920950, -0.0000322233, 0.0018176232, -0.0040755635, 0.0059980829, + -0.0036042496, 0.0005633237, -0.0000877017, 0.0027125857, 0.0042180354, + -0.0115570035, -0.0029920824, 0.0040275888, -0.0019745473, -1.4433383942, + -0.0023216517, -0.0019994671, -0.0001174565, 0.0017363864, 0.0040457430, + -0.0012843496, -0.0038782062, 0.0051208371, 0.0027182880, -0.0038064115, + -0.0000941814, 2.7720131874, -0.0062640016, 0.0008422597, -0.0040293750, + -2.8359911442, 0.0033494579, 0.0035268050, 0.0016217334, -0.0016602455, + -0.0041575511, -0.0027599763, 0.0012434190, -0.0063081463, 0.0022496730, + -0.0075879758, 0.0050675473, -0.0018255069, 0.0005486370, -0.0018065176, + -0.0073380638, 0.0000289772, -1.2660400867, 0.0047524991, -0.0016613641, + -0.0010103183, -0.0040539382, -0.0003460301, 0.0005432032, 0.0007841680, + -0.0006598136, 0.0015776590, 0.0070827715, 0.0036782757, -0.0045242077, + -0.0010661394, -0.0000229391, 0.0016944627, -0.0008278717, 0.0033441307, + -0.0015268300, 0.0034918985, -0.0039121979, -0.0104840081, 0.0026851601, + -0.0029347704, 0.0023550780, -0.0016822659, -0.0009988900, -0.0032704379, + 0.0033033295, -0.0055805268, 0.0013202662, -0.0008772877, -0.0003294949, + 0.0013863249, -0.0016282601, 0.0030466681, 0.0049760821, -0.0020407559, + -1.3769617081, -0.0037837513, -0.0010104454, -0.0025854614, -0.0017697760, + 0.0023451312, 0.0043848646, 0.0016639149, 0.0012227674, -0.0001333170, + 0.0017233444, 0.0039821016, -0.0019892766, -0.0028271480, 0.0030353386, + 0.0094237616, -0.0064743329, 0.0024057776, -0.0006974041, 0.0037683407, + -0.0011056387, 0.0038340809, -0.0033279588, 0.0013348332, 0.0010463954, + -0.0063126655, -0.0050148172, -0.0041523403, -0.0031843870, 0.0021742068, + 0.0051730368, 0.0012627128, -0.0049615824, -0.0007058465, -0.0069581987, + -0.0064912383, 0.0007192488, -0.0025759232, -0.0009162836, 0.0030203792, + 0.0010413275, 0.0193117708, -0.0039228471, 0.0019240063, -0.0060629402, + 0.0028617866, -0.0063158455, -0.0026695235, 0.0032078656, -0.0010746731, + -0.0095418449, 0.0021448052, -0.0076479400, 0.0009600583, 0.0031126069, + -0.0010460808, -0.0030217166, 0.0047872821, 0.0004188147, 0.0022911744, + -0.0000472632, -0.0012574969, -0.0010441109, 0.0029678983, -0.0053298874, + 0.0021033688, -0.0057375585, -0.0018538702, 0.0008759093, 0.0003880316, + 0.0063947127, -0.0063002314, -0.0009232559, 0.0000027940, -0.0011853478, + -0.0000689309, 0.0029414112, -0.0014356242, 0.0029292400, -0.0044174134, + -0.0047671823, -0.0009138708, 0.0009789440, -0.0042334432, -0.0017189817, + -0.0014116792, 0.0010515165, -0.0028467360, -0.0023301076, 0.0001292066, + 0.0032693846, -0.0037195112, -0.0014635588, 0.0022223385, -0.0052307374, + -0.0013672226, -0.0008185022, 0.0068178242, -0.0107622091, -0.0023130598, + -0.0066594486, -0.0082887867, -0.0035856918, 0.0046399185, -0.0079745781, + 0.0002479234, 0.0030049700, -0.0020692023, -0.0079075601, -0.0076324106, + -0.0058353832, 0.0028439672, -0.0010452267, 0.0010464900, -0.0042140954, + -0.0026017353, -0.0011452409, -0.0068252105, 0.0000209783, 0.0032465574, + 0.0019885788, 0.0035328127, -0.0030621702, -0.0025549389, 0.0074084774, + -0.0020431457, 0.0008771677, 0.0019442774, -0.0026369584, -0.0022744816, + -0.0008203501, 0.0029853336, 0.0069628330, -0.0002078340, 0.0013582073, + 0.0007886547, -0.0060685901, 0.0019086029, 0.0038252301, 0.0002669906, + 0.0005394313, 0.0037360713, 0.0013746868, -0.0042199912, -0.0042871214, + -0.0024766433, -0.0008235988, -0.0011855001, -0.0014580695, 0.0089996159, + 0.0010954952, 0.0031660483, 0.0043395171, -0.0005029889, 0.0014470774, + 0.0034517399, 0.0049285730, 0.0030006492, -0.0011763035, -0.0070145596, + 0.0024451092, 0.0135611864, -0.0055409726, -0.0066321902, 0.0061169951, + 0.0014799135, -0.0015732911, -0.0054672016, -0.0017142093, -0.0047204765, + -0.0042061266, -0.0014668810, -0.0026349956, -0.0030354783, 0.0058653755, + 0.0001577982, -0.0093165105, 0.0056700488, 0.0019306126, 0.0016297605, + -0.0002100067, 0.0060496870, 0.0054015853, -0.0029677586, 0.0085606594, + 4.5957579613, -0.0015811273, -0.0037537860, 0.0053704227, -0.0033514937, + 0.0016925284, 0.0002283650, 0.0014844083, 0.0010607853, -0.0021986160, + -0.0002805199, -0.0063781315, -0.0042883987, -0.0044490574, -0.0030295942, + 0.0025394808, 0.0032730054, 0.0064586028, 0.0025237803, -0.0020363594, + 0.0070980820, 0.0029044691, 0.0003757583, -0.0058246478, -1.3307288885, + 0.0022586682, 0.0034138781, 0.0002020737, -0.0025016260, 0.0117159877, + -0.0039231358, -0.0026472970, 0.0003825994, -0.0028890828, -0.0007576183, + 0.0020525409, 0.0051732035, -0.0033951374, 0.0035766892, 0.0002916795, + 0.0009909477, 0.0028733183, -0.0000663791, 0.0064300774, -0.0029441668, + -0.0029866435, -0.0023910850, -0.0058320146, -0.0016877442, 0.0029406534, + -0.0062627383, -3.3587765694, -0.0037656566, -0.0057782056, 0.0008546314, + -0.0016612344, 0.0017259263, 0.0068472745, -0.0004143668, -0.0073297247, + -0.0053645181, 0.0001590336, 0.0031949750, -3.8619198799, -0.0030639502, + -0.0054160687, 0.0011497370, -0.0018611649, -0.0022107596, 0.0009390395, + 0.0001649754, -0.0035873742, -0.0068583805, -0.0016356425, 0.0030734907, + 0.0038791080, 0.0081730317, 0.0041555376, -0.0013846736, -0.0034949775, + -0.0002225740, 0.0032978458, -0.0095095867, 0.0050513609, 0.0025943026, + -0.0069577666, 0.0004127239, -0.0022491240, 0.0006623354, -0.3136328459, + 0.0049947361, -0.0000450395, 0.0046683475, -0.0025107048, -0.0011555105, + -0.0090140579, 0.0047272909, -0.0002709371, -0.0043963334, -0.0044097574, + -0.0015786074, -0.0047050379, 0.0050931261, -0.0005454086, 0.0018533416, + -0.0089506879, 0.0004578969, 0.5261310339, 0.0022642217, 0.0042250985, + 0.0001198472, -0.0036213021, -0.0051281122, -0.0047473758, 0.0034144481, + 0.0119400453, 0.0031347896, -0.0039819363, -0.0031290031, 0.0005049286, + 0.0134425685, -0.0045751780, -0.0022032512, 0.0011291583, -0.0001369705, + 0.0042361668, -0.0051436261, 0.0006383592, 0.0032806508, -0.0051358948, + -0.0034868596, 0.0063429805, -0.0032902909, 0.0009132007, 0.0078731691, + 0.0004491704, 0.0076494250, -0.0091268979, 0.0025527424, -0.0028448752, + -0.0016678057, -0.0026489263, -0.0017689755, 0.0011264143, -0.0000339914, + 0.4559807181, 0.0041345949, -0.0024626320, -0.0070224162, 0.0017302472, + 0.0023515944, 0.0012371368, 0.0010695020, -0.0001805534, 0.0023617609, + 0.0013860546, 0.0006105131, -0.0033591674, -0.0067778793, -0.0001656548, + 0.0007921981, -0.0028237330, -0.0043313392, -0.0011096150, 0.0034409147, + -0.0039138943, 0.0005762642, 0.0047445539, 0.0032755462, -0.0014761686, + -0.0054653976, 0.0006874492, 0.0000371727, -0.0066158907, -0.0029305140, + 0.0043725148, -0.0064485222, 0.0013260785, 0.0020193791, -0.0010248749, + 0.0015878926, 0.0003939106, -0.0050840760, 0.0043258159, 0.0053502908, + -0.0065174466, -0.0021970812, -0.0021368479, -0.0018367614, 0.0025210571, + -0.0007421076, -0.0007827641, -0.0027806438, 0.0037709996, -0.0035261312, + 0.0004580151, 0.0053369859, 0.0029929779, 0.0015348177, 2.0297446251, + 0.0011059747, 0.0028483085, 0.0030822642, -0.0053425254, -0.0130210705, + 0.0025776159, -0.0121396082, -0.0004658811, 0.0017690589, -0.0023113010, + 0.0015752245, 0.0035610055, -0.0094305221, 0.0018359085, -0.0056338212, + 0.0023814724, -0.0053279786, 0.0071469191, 0.0001091445, -0.0002946092, + -0.0009284923, -0.0069157085, -0.0066158753, 0.0091199353, 0.0002152771, + -0.0019959677, -0.0004387468, 0.0042601298, 0.0008525127, -0.0048955362, + 0.0005205416, -0.0035576830, 0.0026631663, 0.0026195799, 0.0023067859, + -0.0016040953, -0.0022237399, 0.0011661294, 0.0013438347, -0.0041894289, + -0.0011978126, -0.0015148125, -0.0051693874, -0.0035197954, 0.0024902625, + -0.0010950237, 0.0007048752, -0.0036308337, 0.0021958412, 0.0067796027, + 0.0040570935, 0.0047965599, -0.0067321449, -0.0022737137, 0.0005747611, + 4.3047022820, -0.0069440771, 0.0038979091, -0.0074721640, -0.0002164398, + -0.0004397735, -0.0093827313, -0.0012927763, -0.0066168960, -0.0063148295, + -0.0014001329, 0.0006438447, -0.0035452270, 0.0017052284, -0.0026437351, + 0.0038942965, 0.0052475566, -0.0024020541, 0.0100786109, -0.0032110098, + 0.0041471925, -0.0025075516, 0.0086547006, 0.0008358322, -0.0037965956, + -0.0001395452, -0.0012614750, -0.0030896848, 0.0053948965, 0.0042722113, + -0.0047947601, -0.0076579200, -0.0002507692, -0.0018415407, 0.0058499128, + 0.0039856546, -0.0012304663, -0.0020598765, 0.0029982280, -0.0088460036, + -0.0009638143, 0.0030570477, -0.0016914941, -0.0042306227, 0.0024733709, + 0.0030520814, 0.0033325688, -0.0042132121, 0.0003172582, 0.0041719358, + -0.0015520779, 0.0036547855, -0.0051946319, -1.3847745657, -0.0019684972, + 1.1586902142, 0.0035582909, 0.0019483459, -0.0021473609, -1.8107284307, + 0.0045028054, 0.0003089430, -0.0055143861, -0.0014928919, 0.0005851490, + 0.0043589962, 0.0034668362, 0.0043878676, -1.4822064638, -0.0026256531, + -0.0024463164, 0.0066013001, -0.0053929086, 0.3231140375, -0.0012236945, + 0.0039850194, 0.0088660065, 0.0030791275, 0.0031526999, -0.0001949444, + 0.0045609018, 0.0064830817, 0.0032049851, 0.0107766427, -0.0034897742, + -0.0029938056, 0.0032469288, 0.0012535476, -0.0017848075, 0.0049393252, + -0.0004543480, -0.0020667284, 0.0052022459, -0.0053768712, -0.0035991233, + -0.0034852203, 0.0064593256, 0.0032005468, -0.0042188340, -0.0043373685, + -0.0021744242, -0.0022829371, -0.0027802903, -0.0071920501, 0.0010339422, + 0.0042704931, 0.0032290784, 0.0058801910, 0.0030467038, -0.0031120353, + 0.0051496848, 0.0004677884, 0.0011896391, 0.0036435984, -0.0045474600, + 0.0011751705, 0.0022100159, 0.0039475616, -0.0026344568, 0.0011169045, + 0.0067789066, -0.0065231700, -0.0056531806, 0.0079415720, -0.0070086624, + 0.0026937192, -0.0027818645, -0.0045553190, 0.0047845715, -0.0008246242, + -0.0017393124, 0.0031006960, 0.0018717549, -0.0003299732, 0.0025721234, + -0.0000911001, 0.0009644371, -0.0023166346, 0.0056925532, 0.0002408582, + -0.0026709652, -0.0038759634, -0.0095267631, -0.0020788582, -0.0036515952, + -0.0087849163, -0.0047821002, 0.0026893932, -0.0021055732, -0.0023036990, + 0.0050101196, -0.0032806369, -0.0039009517, -0.0108925421, 0.0010163337, + -0.0060533229, 0.0057043922, -0.0056760320, 0.0023354301, 0.0015820081, + 0.0054136533, 0.0019664122, 0.0073363706, -0.0003722447, -0.0043209195, + 0.0011035996, 0.0029550968, 0.0034733228, -0.0010286262, -0.0002917689, + 0.0046113571, 0.0031904483, -0.0051703523, -0.0050065909, 0.0003392147, + -0.0038254755, 0.0018266966, -0.0009549235, 0.0050583431, 0.0056669782, + -0.0060916999, -0.0030228493, -0.0022680161, -0.0018139496, 0.0001155310, + -1.2740451097, -0.0024544336, -0.0033908524, -0.0036117777, -0.0035137336, + -0.0010786534, -0.0039644605, 0.0030578936, 0.0042940630, 0.0015568505, + -0.0041716835, -0.0051223035, -0.0010930034, -0.0037574805, -0.0064477497, + -0.0008339659, -0.0008808402, -0.0016631661, -0.0097489357, 0.0021082559, + 0.0023211953, -0.6307316422, 0.0015947360, 0.0019814325, 0.0028628402, + -0.0081137475, -0.0064703738, 0.0039039492, -0.0024483800, 0.0024938146, + -0.0019293614, 0.0031615095, 0.0005520317, 0.0028709960, 0.0051577985, + 0.0004841541, 0.0028781598, -0.0010114224, -0.0023970669, 0.0011717100, + -0.0062468359, 0.0011360859, 0.0000801036, 0.0007898309, -0.0030346438, + 0.0032490168, 0.0079995412, 0.0022786274, 0.0038319509, 0.0066161230, + 0.0034123817, 0.0081632398, 0.0040689101, -0.0024946947, 0.0041979970, + 0.0012959192, -1.2137351036, -0.0110932346, 0.0058002216, -0.0019690425, + 0.0046315799, 0.0002579272, -0.0047026062, 0.0007592512, -0.0011148774, + -0.0026802104, 0.0093450686, -0.0071157487, -0.0017184247, -0.0040571797, + -0.0034365752, 0.0008416028, -0.0006191321, 0.0033349278, 0.0043509258, + -0.0009474773, -0.0022674613, 0.0040240223, 0.0075229532, 0.0054431139, + 0.0040885103, -0.0006689313, -0.0042044148, 0.0004620291, -0.0011977807, + -0.0032069697, -0.0002823560, -0.0004508579, 0.0023385100, 0.0024407343, + -0.0011684033, -0.0032812874, -0.0047994163, 0.0028205328, -0.0020050316, + -0.0012976639, -0.0018655956, -0.0029796059, -0.0061723143, 0.0038626315, + 0.0013124952, 0.0010321485, -0.2531158626, 0.0078814263, -0.0067015262}; + +float unet_input_time_embedding_20_1[] = { + -0.0027793078, -0.0042759990, -0.0002051210, 0.0041589537, -0.0017791684, + 0.0027535148, -0.0013257475, 0.0013122740, -0.0002331475, 0.0019825834, + -0.0008912648, 0.0000776681, 0.0050225183, -0.0025580670, 0.0005530128, + 0.0001451327, 0.0005187634, 0.0015211308, 0.0029633774, -0.0007733642, + 0.0003269757, 0.0025573121, 0.0037005842, -0.0241871700, -0.0004442555, + 0.0002461609, -0.0008117538, -0.0015072124, -0.0018046763, 0.0007441211, + -0.0030029966, 0.0009072232, 0.0044144755, 0.0004547439, 0.0019375768, + -0.0019501694, -0.0011375509, 0.0004507597, 0.0007703006, -0.0006990507, + -0.0022240635, 0.0036456524, -0.0041508512, -0.0002142927, -0.0010166997, + -0.0006762466, -0.0008508507, 0.0013411124, -0.0024237894, 0.0028080933, + 0.0017724028, -0.0000285206, -1.4245927334, -0.0007611830, 0.0021653769, + 0.0026429584, 0.0008361831, 0.0032356079, 0.0008625579, -0.0023244338, + -0.0006925564, 0.0007656586, -0.0048067425, 0.0004709759, 0.0010374356, + -0.0015645009, 0.0005651033, 0.0014689973, 0.0011852235, -0.0029190781, + -0.0019689477, 0.0008189776, 0.0001806698, -0.0013554469, -0.0001353547, + -0.0003194632, 0.0000532744, -0.0014758417, -0.0009758534, 0.0015946485, + -0.0004846291, -0.0003523476, -0.0006476520, 0.0021457421, 0.0002566578, + 0.0052998783, -0.0010560192, -0.0006364356, -0.0012982213, -0.0023685875, + -0.0014011195, -0.0010013878, -0.0026625535, -0.0023361100, 0.0242439583, + 0.0022230442, 0.0013058111, -0.0013826555, 0.0037905506, -0.0000010720, + 0.0021764892, -0.0025926349, 0.0012498396, 2.5448362827, 0.0025235447, + 0.0018266300, -0.0000880598, -0.0006552273, -0.0044502788, -0.0005669980, + -0.0014019357, 0.0018498302, -0.2500958741, -0.0011466406, -0.0000595525, + 0.0030280012, -0.0001967619, 0.0010037019, 0.0007182984, 0.0009036798, + -0.0008695112, -0.0030960601, -1.5413811207, 0.0022980520, 0.0028791707, + -0.0010035750, -0.0030626100, 0.0007281308, -0.0018180730, 0.0029683742, + 0.0022268663, -0.0009254031, 0.0007955341, 0.0002125632, -0.0014825370, + 0.0031373373, -0.0020068509, -0.0025291229, 0.0022523571, 0.0016817874, + -0.0007107153, 0.0015600743, 0.0006963587, -0.0001441147, 0.0005160484, + 0.0006712610, 0.0029478217, 0.0009344257, -0.0010988214, 0.0023548463, + -0.0015675239, -0.0027532703, -0.0006686249, 0.0001231628, 0.0025363672, + -0.0003400357, 0.0002438044, 0.0001845052, -0.0025118133, 0.0021132207, + 0.0009793802, 0.0015649068, 0.0014203833, 0.0017472920, -0.0027489089, + -0.0019635397, 0.0034459301, 0.0033939807, -3.6059219837, -0.0001080919, + 0.0021534106, -0.0019841362, 0.0025945865, 0.0028682752, -0.0009032395, + 0.0015567085, 0.0058396822, -0.0021200301, 0.0004995842, 0.0010881666, + -0.0029030815, 0.0016946690, 0.0041887802, -0.0012212442, 0.0014211247, + 0.0029469118, 0.0021707667, 0.0005515902, -0.0014316612, -0.0004389840, + -0.0002110866, -0.0007644580, 0.0014393915, 0.0011613637, 0.0021315543, + 0.0020484631, -0.0000106086, 0.0029366994, 0.0015991823, 0.0000936757, + -0.0017884667, 0.0011429922, 0.0002056956, 0.0029036659, 0.0005273586, + -0.0025510956, 0.0020949619, -0.0012792265, -0.0001700092, 0.0024164920, + 0.0013348549, -0.0013920111, 0.0004677721, -0.0026071996, 0.0014569785, + 0.0000827080, 0.0004036110, -0.0001026229, 0.0000052262, -0.0007730668, + 0.0035954751, 0.0026573120, -0.0019626229, -0.0702077746, 0.0006248651, + 0.0015723887, -0.0057111727, -0.0013972493, 0.0014292232, -0.0031416761, + -0.0001880610, -0.0021758527, -0.0009372421, -0.0022876286, -0.0020218790, + -0.0024373098, 0.0061245193, 0.0004857965, 0.0024801642, 0.0007717219, + 0.0030067645, -0.0024251353, 0.0042363545, -0.0005044136, -1.2530465126, + 0.0008272540, 0.0023179534, -0.0005551096, 0.0003633611, -0.0012341444, + 0.0030742176, -0.0021795505, -0.0006830399, 0.0035500405, 0.0037402506, + 0.0030450488, 0.0008450435, 0.0011203677, 0.0010331215, -0.0038647423, + 0.0020236466, -0.0003746168, -0.0001397564, -0.0252364986, 0.0014063740, + -0.0027400940, 0.0028244616, -0.0028498042, 0.0039901910, -0.0019971901, + 0.0001071040, -0.0002587272, 0.0001241346, 0.0004683556, -0.0022962436, + 0.0019077582, -0.0000918079, 0.0014269771, 0.0010361844, 0.0012262943, + -0.1150053442, 0.0005005924, 0.0002742131, 0.0029727598, 0.0012284699, + 0.0025231931, 0.0001421673, 0.0017895370, -0.0028922614, 0.0017076731, + 0.0001860579, -0.0026938354, -0.0010171307, -0.0018286880, 0.0004262421, + 0.0021356316, -0.0013405378, -0.0008050413, 0.0017947885, -0.0011819052, + 0.0188882723, 0.0014927711, 0.0011744640, -0.0009734738, -0.0002325799, + -0.0010984982, -0.0001168358, 0.0017678710, -0.0004826710, -0.0031235353, + -0.0003294963, 0.0006020237, 0.0000041856, -0.0009604227, 0.0001164530, + -0.0027127094, 0.0012878637, 0.0018549985, -0.0003479980, -0.0001351698, + 0.0017992419, -0.0009661592, -0.0000254374, -0.0019751340, -0.0040822737, + -0.0005226010, 0.0043679364, -0.0047229622, 1.9561864138, 0.0011768257, + 0.0003769409, 0.0014204942, 0.0006412322, -0.0017928015, 0.0019680765, + -0.0003098110, -0.0012621142, -0.0009009904, -0.0001594867, -0.0014714398, + 0.0017503398, -0.0001235923, 0.0019012515, 3.0924444199, 0.0002420715, + -0.0002543610, 0.0000391683, -0.0014981044, 0.0028041638, 0.0012436697, + -0.0008740108, 0.0021475479, -0.0012447219, 0.0034186263, 0.0013042436, + 0.0028100181, -0.0002772676, 0.0001332267, 0.0003856081, -0.0033046496, + -0.0032609776, -0.0016004103, 0.0012453026, -0.0023820042, 0.0027773655, + 0.0014361690, -0.0005380525, 0.0005817739, -0.0007076915, -1.4847577810, + 0.0017697178, -0.0006830036, 0.0000596680, -0.0003274521, -0.0029007669, + 0.0017228937, -0.0001102447, 0.0019098793, -0.0015585481, 0.0011155531, + -0.0016901403, -1.7752751112, 0.0022242893, -0.0010926318, 0.0007514982, + -0.0016997755, 0.0004851990, 0.0026195673, -0.0001767906, 0.0003904724, + 0.0002313731, -0.0000501667, 0.0011049542, 0.0017927561, -0.0014566975, + 0.0009106272, 0.0005580904, -0.0006435587, -0.0003177212, 0.0008270685, + 0.0007227950, -0.0032421499, -0.0024883372, 0.0007528593, -0.0015769498, + -0.0033121654, 0.0009575262, -0.0009934390, -0.0017121970, -0.0015403610, + 0.0015973477, -0.0030718478, -0.0003575976, 0.0011760367, -0.0019578896, + 0.0003205186, 0.0024481034, -0.0006216494, 0.0001516119, 0.0016715275, + -0.0014656696, -0.0008398795, 0.0036149686, -0.0014937164, -0.0024283491, + -0.0001603332, -0.0023888331, -0.0025603941, 0.0007930391, 0.0022725821, + -0.0023060828, -0.0003164434, -0.0018764825, -0.0008860575, 0.0004161411, + 0.0008746804, 0.0005850857, 0.0033820432, 0.0018385258, 0.0009804193, + -0.0001472612, -0.0045012259, 0.0027225013, 0.0019802696, -0.0023957279, + 0.0000899048, 0.0000217259, -0.0023853933, 0.0013272376, 0.0057256361, + 0.0000493326, 0.0004432797, -0.0018586533, 0.0005607596, -0.0003225808, + -0.0024412554, -0.0019644173, -0.0000911960, -0.0023214975, 0.0008013328, + 0.0000002193, 0.0013510678, 0.0032108559, 0.0041281846, 0.0012671137, + 0.0008432260, -0.0016628238, 0.0021653920, 0.0002432045, -0.0014132699, + -0.0007356680, 0.0009327701, 0.0032360787, 0.0011001721, 0.0015497738, + -0.0559516698, -0.0000378126, -0.0039412784, 0.0029471982, -1.4111857414, + -0.0002393357, 0.0007680464, 0.0001307428, -0.0018727474, -0.0006189241, + -0.0002594999, -0.0010220336, 0.0025159447, 0.0000232710, 0.0003664212, + 0.0003751344, 2.5613548756, 0.0019566058, 0.0000133673, -0.0017925692, + -1.7174513340, 0.0030636406, 0.0022087293, 0.0005269460, -0.0011935355, + 0.0032464894, 0.0029088380, -0.0007214854, -0.0001381454, -0.0014807247, + 0.0054257689, -0.0005960693, 0.0019928417, 0.0017161914, 0.0023543877, + -0.0004256123, -0.0028606923, -1.3973947763, 0.0005192282, 0.0022896542, + 0.0010198541, 0.0027849777, 0.0012122700, 0.0009299181, 0.0011850167, + 0.0019340157, -0.0002266127, -0.0016160236, -0.0026898761, -0.0006092330, + 0.0030572028, 0.0038883083, -0.0015883571, 0.0002221856, 0.0015307954, + 0.0025246728, 0.0039581894, -0.0037027583, 0.0014907045, 0.0005675450, + 0.0002137274, -0.0004200668, 0.0013266129, -0.0022169426, 0.0013302239, + 0.0018844390, 0.0001966944, 0.0005737855, -0.0008726572, -0.0018565939, + 0.0020533567, -0.0002061436, -0.0009421371, -0.0000500213, 0.0045966813, + -1.4904665947, -0.0001902319, 0.0017619408, 0.0009271204, 0.0004163780, + -0.0011716656, 0.0023765475, -0.0010723611, 0.0010847370, -0.0026547052, + -0.0005665338, -0.0017981819, 0.0007171785, -0.0027067186, -0.0001714178, + 0.0011127070, 0.0005744807, -0.0019087838, 0.0025053555, -0.0005648863, + 0.0008422895, -0.0006145677, -0.0021253950, 0.0048561995, 0.0024319277, + 0.0007161526, -0.0019821497, -0.0002356819, -0.0005473751, -0.0018045299, + -0.0033922270, -0.0021994575, 0.0035780030, 0.0029090745, 0.0007621965, + -0.0014522464, -0.0005638674, 0.0015348527, 0.0041817911, 0.0028345115, + -0.0012256122, 0.0009552962, 0.0002384111, -0.0000706948, 0.0014007832, + 0.0000721691, -0.0002213448, -0.0000159158, 0.0000207680, 0.0013797306, + -0.0010284134, 0.0021267151, -0.0040767835, 0.0014697623, -0.0021722072, + 0.0024005102, -0.0014521579, 0.0023308054, 0.0017321863, -0.0021638458, + 0.0010343092, 0.0002460098, -0.0016099601, -0.0014122068, 0.0032746224, + 0.0017789463, 0.0028335792, -0.0017079874, 0.0018538837, -0.0007582495, + -0.0003513913, 0.0020932248, 0.0028210240, 0.0009443490, 0.0009008790, + 0.0020556771, -0.0006438014, -0.0009103881, -0.0029600095, 0.0019836989, + 0.0014418652, 0.0048219496, 0.0029915376, -0.0024791772, 0.0014259280, + 0.0012934878, -0.0021367359, 0.0031062462, 0.0016444251, 0.0021249936, + 0.0006697365, -0.0004346154, 0.0001859453, -0.0011905155, 0.0003024596, + -0.0008045660, 0.0016274210, 0.0011299036, 0.0144757302, 0.0017416524, + 0.0004728938, 0.0025779521, 0.0017493719, -0.0024808026, 0.0018632910, + 0.0013155343, -0.0035357922, 0.0030905306, 0.0038016050, 0.0034527662, + -0.0021872777, 0.0000694948, -0.0007901812, -0.0009944990, 0.0010929159, + -0.0006375299, 0.0012645528, 0.0004092822, -0.0017283119, -0.0008785602, + 0.0010607487, 0.0016424085, -0.0023189823, 0.0010888977, 0.0006043576, + 0.0016047405, 0.0010674946, 0.0005801246, -0.0007592663, -0.0012864808, + -0.0023728821, -0.0022331462, 0.0020858021, -0.0012491756, 0.0011675060, + -0.0013395972, 0.0032902835, -0.0025498604, -0.0026188432, 0.0000099586, + -0.0022992482, 0.0026694741, 0.0012121468, 0.0016305468, -0.0013887570, + -0.0018162376, -0.0026545678, 0.0002374863, 0.0010177938, -0.0064135529, + 0.0001994744, -0.0001408723, 0.0029705495, 0.0001323407, -0.0003991635, + 0.0030606301, -0.0015116837, -0.0016943640, -0.0006428829, -0.0004222270, + 0.0009376947, -0.0070945984, -0.0025091665, 0.0024625119, 0.0001621717, + -0.0004408041, -0.0036321720, 0.0047886567, -0.0003276377, 0.0023361091, + -0.0035419213, 0.0008513057, 0.0015577291, -0.0016970211, -0.0009645976, + -0.0022082250, 0.0021634279, -0.0028810170, -0.0032183887, 0.0009766277, + -0.0003456930, 0.0028177258, 0.0012952469, 0.0011449461, -0.0000468348, + 4.4203171730, -0.0013574515, -0.0011085523, 0.0019332017, 0.0034374986, + 0.0029510590, 0.0004989868, -0.0009253649, 0.0011018417, -0.0020952877, + 0.0001996951, -0.0009550989, -0.0011129387, 0.0003059614, -0.0026140828, + -0.0020967845, -0.0001442463, -0.0004561753, 0.0012734048, 0.0014328843, + 0.0007961085, 0.0024897577, -0.0006250214, -0.0034756700, -1.4393225908, + -0.0028109229, 0.0008046736, 0.0007920917, 0.0019623968, -0.0006993697, + 0.0033214157, 0.0015624451, 0.0014058575, -0.0029676429, -0.0018093144, + 0.0012544440, -0.0005256003, -0.0013763057, -0.0013340313, -0.0011292486, + -0.0014690664, 0.0003947821, 0.0011049379, -0.0009857840, 0.0003988715, + 0.0026428113, 0.0012213999, -0.0008169843, 0.0013943058, -0.0026901844, + 0.0031346665, -2.7744979858, -0.0015877550, 0.0017746659, -0.0012912960, + 0.0021048109, 0.0003485584, 0.0009712057, 0.0011806232, 0.0010009727, + 0.0017889519, 0.0025126087, 0.0005421977, -2.7166790962, -0.0003833622, + -0.0005695516, -0.0002649513, -0.0015481577, -0.0033719679, -0.0007487470, + 0.0037273532, 0.0010062447, -0.0000343856, 0.0017852446, 0.0002733913, + -0.0008001156, -0.0013049974, -0.0031901873, 0.0013234299, 0.0014211056, + 0.0009665331, -0.0019323425, 0.0006442862, -0.0018394447, 0.0029318735, + 0.0023241574, 0.0022439538, 0.0022527291, -0.0000466171, 0.3151993454, + -0.0012597125, 0.0007578537, 0.0004608614, 0.0012925356, 0.0041037644, + 0.0030114294, -0.0015039411, 0.0024236715, 0.0019242272, -0.0001818798, + 0.0016758956, -0.0019308161, -0.0022679134, 0.0043109767, -0.0007131469, + 0.0033710194, 0.0000182008, 0.6134655476, -0.0004221736, -0.0024946062, + 0.0025757849, 0.0016129673, -0.0001217932, 0.0008815816, -0.0021835475, + 0.0007420797, 0.0004150893, 0.0029914118, 0.0017065159, -0.0013006730, + -0.0176607016, 0.0029543843, 0.0010975441, -0.0021248641, -0.0007420406, + -0.0014929422, 0.0000910680, -0.0000824286, 0.0002931334, -0.0022975234, + -0.0008983659, -0.0026502479, -0.0081059216, 0.0014395330, -0.0015711776, + -0.0023132018, -0.0038058800, -0.0030514789, -0.0001661940, 0.0000231820, + 0.0011368587, 0.0000336471, -0.0030932175, 0.0000432489, -0.0029119798, + 0.4757951498, -0.0029315390, -0.0004341519, 0.0017277766, 0.0005547802, + -0.0015874158, -0.0006072675, 0.0008459082, -0.0010157998, 0.0005725617, + -0.0022624314, -0.0022264631, -0.0010297042, -0.0015817718, 0.0015021306, + -0.0005265658, 0.0001575609, 0.0013778537, 0.0014877804, -0.0025171582, + -0.0003085565, 0.0002101613, -0.0002641631, -0.0007976340, 0.0009822072, + 0.0035108309, 0.0012340704, 0.0009780348, 0.0013296180, 0.0011789580, + -0.0031394234, -0.0001512010, 0.0032246308, -0.0020567819, 0.0021884877, + 0.0018823107, -0.0023514596, 0.0007288603, 0.0017230292, 0.0005995836, + -0.0025605336, -0.0006446280, 0.0000847569, 0.0011469186, 0.0001148325, + 0.0007985625, 0.0020245644, -0.0014038351, -0.0007166277, -0.0008833992, + 0.0016354062, -0.0032636069, 0.0022674515, -0.0002600607, 1.9679030180, + -0.0002446051, -0.0006940062, 0.0035482123, -0.0012867788, 0.0038003325, + -0.0030139685, 0.0025863708, 0.0009511439, -0.0016158731, 0.0027120723, + 0.0009040273, 0.0003744266, -0.0077181570, 0.0021050286, 0.0038773217, + 0.0006055688, 0.0021822236, -0.0005672034, -0.0036754892, 0.0024483192, + 0.0031313589, 0.0035704770, 0.0023120402, -0.0036936929, -0.0010062028, + -0.0030546319, 0.0002482035, -0.0016877283, -0.0010776641, 0.0042276848, + 0.0044609373, -0.0014863694, -0.0021222318, -0.0040275562, -0.0032093441, + 0.0010884625, 0.0016461549, 0.0007977149, -0.0009574785, 0.0011470569, + 0.0008459506, -0.0001646332, -0.0041343491, 0.0016573818, 0.0041291276, + 0.0008713391, 0.0010537840, 0.0043228138, -0.0023171199, 0.0004681600, + -0.0013613916, 0.0000324696, 0.0002664845, -0.0006426130, 0.0006339494, + 4.1091952324, -0.0000259057, -0.0004210677, 0.0022454232, -0.0023115431, + 0.0009794727, 0.0022691241, 0.0005754382, -0.0000575352, -0.0001316260, + 0.0001383068, 0.0048884442, 0.0021699942, -0.0008959372, 0.0009552577, + 0.0011102473, -0.0034672236, 0.0002512541, -0.0024289025, 0.0013741530, + -0.0020046476, 0.0004910805, 0.0004532933, 0.0007650945, 0.0015997556, + -0.0035609375, 0.0018075905, 0.0022730122, 0.0005943275, 0.0027641868, + -0.0026165475, -0.0001656946, 0.0014820999, 0.0026534356, -0.0010354128, + -0.0002385025, 0.0007233125, 0.0031056893, -0.0044725118, 0.0009969077, + -0.0030443787, -0.0018147286, -0.0026648864, 0.0015268219, 0.0049281958, + -0.0002890341, -0.0007817480, -0.0011372064, -0.0013103081, -0.0000294056, + -0.0017023934, 0.0003189538, -0.0018683202, -1.4826025963, -0.0009593682, + 1.0170319080, 0.0013580860, -0.0002257652, -0.0029862749, -1.8611508608, + 0.0017926260, 0.0018023523, 0.0013342639, 0.0030968329, 0.0001124805, + -0.0007718368, -0.0012480048, 0.0005622404, -1.5697822571, 0.0017086291, + -0.0012933167, 0.0009819854, -0.0026306561, 0.0793065205, 0.0030302173, + -0.0014159344, -0.0046901433, -0.0019103135, 0.0002256201, 0.0007342440, + 0.0010903729, -0.0019287672, 0.0014169721, -0.0010016873, 0.0033597029, + -0.0021870381, -0.0010957371, -0.0022839196, 0.0010768515, -0.0046472102, + 0.0019359165, -0.0004094893, -0.0019003814, 0.0011627455, 0.0038369920, + -0.0006563567, -0.0035672411, 0.0018107751, -0.0019881972, -0.0011485666, + -0.0019517897, 0.0016619368, -0.0000513885, 0.0002445159, -0.0036060158, + -0.0010384265, -0.0002773325, 0.0000425380, 0.0003718913, -0.0013571400, + -0.0016271221, -0.0004257997, 0.0012219485, -0.0005657328, 0.0054156482, + 0.0008066089, 0.0008618537, 0.0007738164, -0.0023394027, -0.0002564088, + -0.0026733517, 0.0010108678, -0.0025828090, -0.0009024185, -0.0001132563, + 0.0073155388, 0.0021645909, 0.0034214328, 0.0047298619, -0.0007518525, + 0.0036154320, -0.0008423413, -0.0014222921, -0.0024664891, -0.0010657758, + -0.0002252068, -0.0007162248, 0.0018626368, -0.0018369048, 0.0013030856, + 0.0012493590, -0.0009265915, -0.0015527518, -0.0008366900, 0.0008548680, + -0.0034124493, -0.0019379510, 0.0024853656, -0.0045857709, -0.0008831508, + 0.0021324968, 0.0000675814, 0.0034834435, 0.0028213547, 0.0004684692, + -0.0011359421, -0.0024000679, -0.0023059857, -0.0039576655, 0.0011283068, + -0.0023861285, -0.0009182571, -0.0007814653, -0.0017458058, 0.0013464246, + 0.0007459451, -0.0004112972, 0.0001501758, -0.0005909121, -0.0018652012, + -0.0051757069, -0.0015796333, 0.0005386663, 0.0004617926, -0.0014462867, + -0.0027829576, 0.0004239758, -0.0004555110, 0.0000683836, -0.0005354448, + -0.0000670673, 0.0010583701, -0.0003513794, 0.0006871237, -0.0008900031, + -1.3364925385, 0.0000231955, 0.0020836219, -0.0004462559, -0.0001130688, + 0.0034170698, 0.0017403283, -0.0000742225, -0.0032509370, 0.0020770240, + 0.0031021126, 0.0028274120, -0.0021397336, 0.0018757395, 0.0015145182, + 0.0014075283, 0.0006371313, 0.0018510120, -0.0005242992, 0.0021268004, + 0.0005604657, -0.5454615355, 0.0012769157, -0.0026549483, -0.0011052301, + -0.0019382723, -0.0003509459, -0.0012363330, 0.0013278872, 0.0033400087, + 0.0009607337, 0.0001036255, -0.0026318398, -0.0003509894, 0.0020400349, + 0.0001903404, -0.0009619645, 0.0005947738, -0.0001593805, -0.0021078456, + -0.0002884606, 0.0003269156, -0.0026493459, 0.0007624174, -0.0004524663, + -0.0013094347, -0.0022735945, 0.0030765366, -0.0003983658, -0.0006773211, + -0.0019734548, -0.0031251879, -0.0022128103, -0.0014693717, 0.0005589174, + 0.0026257080, -1.2052918673, 0.0016385391, 0.0020501404, 0.0001155871, + -0.0016626243, -0.0032031860, 0.0004961558, 0.0003251785, -0.0014506532, + 0.0021759840, 0.0006725324, 0.0017082536, 0.0023134439, -0.0002393811, + 0.0019552489, 0.0033559022, 0.0014068545, -0.0003454313, -0.0017541964, + 0.0021846090, 0.0010512564, 0.0019651661, 0.0007410866, -0.0018171854, + 0.0004319628, -0.0013528666, 0.0009299647, -0.0013313573, -0.0008231376, + 0.0029198923, -0.0004129424, 0.0018624803, -0.0016425176, 0.0008293162, + 0.0019942452, 0.0008907658, -0.0002476349, 0.0001348745, -0.0005538233, + 0.0001987703, -0.0006142128, 0.0016700274, -0.0008036802, 0.0013123145, + -0.0038710581, -0.0013809511, -0.0223955531, 0.0001140113, -0.0005482893}; + +float unet_input_time_embedding_20_2[] = { + -0.0019252216, -0.0004296568, 0.0000833552, 0.0032956058, 0.0027555418, + -0.0025144396, 0.0005057757, -0.0023245588, -0.0006245228, 0.0014452569, + 0.0001329982, 0.0006947783, -0.0051494651, 0.0011336305, -0.0021739164, + -0.0002930677, 0.0001322683, -0.0019142574, -0.0040164385, -0.0013449243, + -0.0019122330, 0.0054374831, 0.0005260241, -0.0109385438, 0.0002630596, + -0.0019261998, 0.0003833827, 0.0015632519, 0.0010282939, 0.0011350699, + -0.0026925174, 0.0021951078, -0.0001093233, -0.0006942926, 0.0005601498, + -0.0032967613, -0.0006126789, 0.0023442255, -0.0011250861, 0.0013351273, + -0.0007817298, 0.0004161200, -0.0005713641, -0.0010367092, 0.0002296707, + -0.0016844107, -0.0010477696, 0.0005195527, 0.0005340036, 0.0014034084, + -0.0025660964, 0.0002552925, -1.3867870569, 0.0008187769, -0.0012697728, + 0.0028783581, -0.0001084406, 0.0014050244, -0.0013540792, -0.0016866929, + -0.0030799361, 0.0012614239, -0.0000199475, -0.0015903036, 0.0015770402, + 0.0016289931, -0.0012415582, -0.0002752702, -0.0029014610, -0.0020345452, + -0.0032821395, -0.0010294584, -0.0002184438, -0.0019257572, 0.0011648014, + 0.0002148896, 0.0005729357, -0.0011090348, 0.0002270447, 0.0017567023, + -0.0007580766, -0.0003790989, -0.0027485071, -0.0031282706, -0.0004646906, + -0.0010275214, 0.0022710487, -0.0007615830, 0.0014873901, -0.0005654427, + 0.0000567318, 0.0008760858, -0.0003379686, 0.0033078082, 0.0287047625, + 0.0016698907, -0.0012692260, -0.0004781652, 0.0014240153, 0.0004186677, + 0.0002972633, -0.0017997348, 0.0022173082, 2.2166149616, -0.0006562327, + -0.0006966991, 0.0000460106, 0.0003652377, 0.0004452760, -0.0005166368, + -0.0011491999, -0.0010848939, -0.0569133535, -0.0010552723, -0.0030572228, + 0.0029402445, 0.0006082025, 0.0013064786, 0.0009973785, 0.0027842268, + 0.0003183219, -0.0020954979, -1.6704438925, 0.0004375023, 0.0003712457, + -0.0028311689, -0.0015025432, 0.0004948680, 0.0022770120, 0.0026250440, + -0.0029286700, -0.0014231764, 0.0016919023, -0.0010932721, 0.0004171859, + -0.0006042623, -0.0006909573, -0.0013772929, 0.0023091082, 0.0014031185, + 0.0009815397, 0.0017057313, -0.0002485528, 0.0007650063, -0.0004401554, + -0.0005573472, 0.0019627190, 0.0006112149, -0.0013605030, -0.0009623915, + 0.0013489975, -0.0009389514, -0.0002033492, 0.0012907106, 0.0021319739, + -0.0002361531, -0.0009308988, -0.0027062939, 0.0010731192, 0.0005054115, + -0.0011393675, -0.0013170886, -0.0036335960, -0.0011142329, -0.0019228184, + -0.0034051405, 0.0001510626, -0.0012938390, -3.0143272877, 0.0002001855, + -0.0025241924, 0.0012773350, 0.0005056169, 0.0008597178, -0.0002677515, + -0.0003758268, 0.0009002212, -0.0007933723, 0.0014571971, 0.0005858075, + -0.0010010921, -0.0017139902, 0.0028181975, -0.0002690880, 0.0026653735, + -0.0014248802, 0.0001371335, 0.0014014593, -0.0007754513, 0.0005039372, + -0.0003174809, -0.0000076727, -0.0015424016, 0.0021499011, 0.0021027960, + 0.0017727227, -0.0024350127, 0.0025823331, -0.0014676201, -0.0007959553, + 0.0000915444, 0.0003998042, -0.0012289602, 0.0008350960, -0.0018050140, + -0.0006532632, -0.0007856402, 0.0004412169, -0.0043707658, -0.0008579302, + -0.0019847681, 0.0009426200, -0.0009541153, -0.0009440512, 0.0005165378, + -0.0010304633, 0.0010071620, 0.0013782186, -0.0028924369, 0.0001691877, + 0.0020530820, 0.0000382793, -0.0012705440, -0.1627023667, -0.0017701329, + -0.0009629973, -0.0018405365, -0.0014794688, 0.0023574873, 0.0011023162, + 0.0058857128, 0.0017095543, -0.0007415339, 0.0019845772, -0.0003567673, + 0.0006733951, 0.0063812905, -0.0023523262, -0.0023472160, 0.0021249894, + 0.0031664295, -0.0019979337, 0.0020235491, -0.0016057082, -1.3277095556, + 0.0006089399, -0.0008520032, 0.0020497886, -0.0002209460, -0.0026567732, + -0.0011121184, 0.0028765700, -0.0010271524, 0.0021487391, -0.0016994947, + 0.0007212909, 0.0015180153, -0.0018981941, 0.0003778839, -0.0006288806, + 0.0000597639, -0.0046223588, -0.0029701961, -0.0296419337, -0.0018161883, + -0.0014356743, 0.0067680846, 0.0008599688, 0.0001391675, -0.0025643357, + -0.0026234593, 0.0019099896, 0.0012714607, 0.0012181597, -0.0019354036, + 0.0018841985, -0.0001581437, 0.0006491849, 0.0019270238, -0.0007900749, + -0.1251849085, -0.0001701312, -0.0019611400, 0.0020667254, 0.0000214284, + 0.0005680854, -0.0016517593, -0.0007796523, 0.0007969318, -0.0006262045, + 0.0001318847, 0.0008332229, 0.0028655364, 0.0000835371, -0.0003641006, + -0.0009746039, -0.0006420757, -0.0020404463, -0.0012670537, -0.0003568297, + 0.0138597330, -0.0019367763, 0.0011328699, -0.0019436772, -0.0005206026, + 0.0007668757, -0.0016944786, 0.0058253948, -0.0002939068, 0.0015590745, + -0.0001802575, 0.0028350116, 0.0020496857, -0.0000372529, 0.0011043535, + -0.0026034596, 0.0030209809, -0.0007837587, 0.0010212883, 0.0001054010, + -0.0006170652, -0.0007566889, 0.0024162347, -0.0013674796, -0.0009166893, + -0.0003355048, 0.0111538675, -0.0022559389, 1.1999210119, 0.0001486926, + 0.0009312143, 0.0004902007, 0.0006731151, 0.0000723032, 0.0004573306, + -0.0014808811, -0.0008599253, -0.0018444239, -0.0001529097, -0.0004516640, + 0.0011360981, 0.0013661194, -0.0018619306, 2.9389841557, -0.0000490898, + 0.0012325742, -0.0026271581, -0.0001294737, 0.0021597035, 0.0022642035, + -0.0004887916, 0.0038005281, -0.0002694707, 0.0020493288, 0.0019337703, + -0.0017560469, 0.0024138785, 0.0004154361, -0.0016778675, 0.0015328084, + 0.0012091547, -0.0010605953, 0.0016353740, -0.0016780482, -0.0005027713, + -0.0008902766, -0.0013258178, 0.0046196962, 0.0000286456, -1.4181202650, + 0.0022570677, 0.0019703754, -0.0019299705, -0.0011074273, 0.0013680134, + 0.0022942442, 0.0018645670, 0.0002852615, -0.0000812693, 0.0015263651, + 0.0005947823, -1.7819455862, 0.0018780031, -0.0012837895, -0.0004687766, + 0.0014697963, 0.0012019998, 0.0003756275, -0.0026183934, 0.0003679995, + -0.0036070393, 0.0007072742, -0.0004501636, 0.0003020095, -0.0014160518, + -0.0004711240, -0.0003193514, -0.0015002248, 0.0007421365, -0.0009750351, + 0.0004061582, -0.0015868638, 0.0026282177, 0.0019866987, -0.0016944846, + 0.0002371161, 0.0006683563, -0.0013412787, -0.0027860231, -0.0022206390, + 0.0024178519, 0.0003983532, 0.0004496989, 0.0015198214, 0.0006307298, + 0.0003820083, 0.0042920178, 0.0010620523, -0.0024023671, -0.0020135771, + 0.0008692343, 0.0007257129, 0.0001619300, -0.0021353231, -0.0000587916, + 0.0014207656, -0.0000128215, -0.0032344593, -0.0005381324, 0.0021325168, + 0.0003956496, 0.0026427894, -0.0008439363, -0.0002527842, 0.0005889657, + -0.0020057908, 0.0023497818, 0.0006377671, -0.0010093339, 0.0022136003, + 0.0000742632, 0.0006494368, 0.0001622034, -0.0000028291, 0.0014158625, + -0.0036863391, -0.0017028581, -0.0012649302, 0.0016202149, 0.0223315172, + -0.0003642156, -0.0004252158, -0.0003903934, -0.0012156172, -0.0031161928, + 0.0012293234, -0.0004659435, -0.0008885534, -0.0012227381, -0.0029639129, + 0.0017796182, 0.0005849153, 0.0019568338, 0.0029326580, 0.0023934422, + 0.0008999771, -0.0000518062, 0.0008622613, 0.0004887088, 0.0002977694, + -0.0022776895, 0.0008685666, 0.0032189051, 0.0004217483, -0.0003003152, + -0.0244394895, -0.0017898055, -0.0019852347, 0.0013942877, -1.3572432995, + -0.0029778047, 0.0006785337, -0.0002904814, 0.0023398332, 0.0023419850, + -0.0033784234, 0.0007034016, -0.0004031686, 0.0002642241, 0.0012457583, + 0.0003515566, 2.3063957691, -0.0002741986, -0.0015559881, -0.0007893634, + -0.7041139603, 0.0024937028, -0.0029886621, 0.0008931672, -0.0009180298, + -0.0005436675, 0.0025334898, -0.0047866935, 0.0008384059, -0.0007358883, + -0.0005422132, -0.0024085348, -0.0004547435, -0.0018358896, -0.0014530546, + 0.0036127346, -0.0016903440, -1.4320186377, -0.0031347172, 0.0003967145, + 0.0035567787, -0.0010073902, 0.0001795953, 0.0007031793, -0.0000725351, + 0.0016052718, -0.0005868576, -0.0016890840, -0.0015736767, -0.0018837256, + 0.0013578120, 0.0002708485, 0.0003727744, -0.0000983765, -0.0036805095, + 0.0018141631, -0.0007112003, 0.0015410162, 0.0019286468, 0.0009254094, + 0.0014628310, 0.0036354477, -0.0030627607, 0.0008027032, 0.0003277371, + -0.0017411029, -0.0012087831, 0.0003240909, 0.0025670822, -0.0013116975, + -0.0024029948, 0.0000079637, 0.0014159959, -0.0020541032, 0.0001902217, + -1.5796155930, -0.0016799867, 0.0015475729, -0.0038570762, 0.0001480370, + 0.0009385959, -0.0002453136, -0.0015148735, -0.0036991537, -0.0025123991, + 0.0018086862, 0.0003648371, -0.0017039510, 0.0010344600, 0.0003801882, + -0.0017351778, 0.0002936451, 0.0021018693, 0.0016784789, 0.0000917064, + -0.0004626890, 0.0003388757, 0.0010275613, 0.0004216095, 0.0004725982, + 0.0026970832, -0.0023213448, -0.0000994941, 0.0025382475, -0.0019513641, + 0.0009290837, -0.0014937292, -0.0015178123, 0.0012823298, -0.0012841776, + 0.0015268514, -0.0009702155, 0.0007536388, 0.0041660406, 0.0030997000, + -0.0003843048, -0.0050322847, 0.0009064693, -0.0026360834, -0.0001993668, + 0.0038019056, 0.0020836620, 0.0016970071, 0.0016088071, -0.0002903878, + 0.0023288834, -0.0004923241, 0.0032686247, -0.0025892467, -0.0003942826, + -0.0002688945, -0.0010976658, 0.0035753169, 0.0015710861, 0.0017011245, + 0.0019763364, -0.0008812407, 0.0017479886, -0.0010245065, 0.0017188364, + 0.0020943424, 0.0016263444, 0.0000789939, -0.0030797939, -0.0007565620, + -0.0008874792, -0.0008712542, 0.0005415766, 0.0021994193, 0.0015239096, + 0.0009674570, -0.0030800167, -0.0006756231, -0.0009651929, -0.0008149697, + 0.0005049864, 0.0007727563, 0.0014494370, -0.0034797348, 0.0008450714, + -0.0017143460, -0.0011787589, -0.0012350451, -0.0007716008, 0.0034147189, + 0.0001473568, 0.0014020635, 0.0004745636, 0.0015703866, -0.0008948022, + -0.0005989858, 0.0034208735, -0.0001706027, 0.0161177553, 0.0009168023, + -0.0000740070, 0.0032159081, 0.0003168352, -0.0006575868, 0.0010055420, + 0.0003592882, -0.0021819267, 0.0033328105, -0.0002319885, 0.0002329308, + -0.0010714359, 0.0014048540, -0.0025504795, -0.0003040171, -0.0025332184, + -0.0005709613, 0.0025053592, 0.0022689952, -0.0010409520, 0.0001532933, + -0.0020876115, -0.0002507076, -0.0024171250, -0.0016699273, 0.0010950454, + -0.0022168485, 0.0047134510, 0.0004517380, 0.0001884047, 0.0006090612, + -0.0031628290, 0.0024831579, 0.0029294891, 0.0028477050, -0.0019452618, + -0.0003234684, -0.0011539822, 0.0001577123, -0.0002728296, -0.0019832300, + -0.0009344355, 0.0020826086, 0.0026052266, 0.0004526700, -0.0011681127, + -0.0008529038, 0.0027251034, -0.0000445535, -0.0010339955, -0.0020672381, + -0.0015273551, 0.0008475655, -0.0009628667, 0.0004531255, 0.0006139618, + -0.0033960952, -0.0009066658, -0.0015196777, -0.0007898358, -0.0001721751, + 0.0002894271, -0.0055118715, -0.0024086311, -0.0011311993, 0.0002670507, + -0.0008854270, 0.0005742703, 0.0002681697, -0.0000350478, -0.0003014538, + -0.0008171732, 0.0009575770, 0.0002754162, 0.0003003203, -0.0001369386, + -0.0027558831, 0.0040622968, -0.0015795133, -0.0047272774, -0.0013946607, + 0.0002891077, 0.0021696780, -0.0000480458, 0.0028638612, 0.0017236131, + 4.1772189140, -0.0010350556, -0.0033584693, -0.0006788443, 0.0010965783, + 0.0003109728, -0.0014741058, -0.0009879139, 0.0006712875, 0.0000255611, + 0.0006016241, -0.0007209877, 0.0014072611, -0.0025504758, -0.0043899138, + -0.0005315247, 0.0003207845, 0.0006385525, -0.0003295336, 0.0018810125, + 0.0002090367, -0.0005375980, -0.0009183685, -0.0027091915, -1.4351389408, + 0.0005812072, 0.0009694768, 0.0006215400, 0.0001986041, 0.0002251277, + -0.0007686727, -0.0020090877, -0.0013646651, -0.0001533940, -0.0001771660, + 0.0001616282, 0.0030261027, 0.0001815213, 0.0001742623, -0.0007763137, + -0.0009804685, -0.0021861177, 0.0012018215, -0.0008441638, 0.0000023572, + 0.0019094003, 0.0005716981, 0.0006995981, 0.0004733508, 0.0007280838, + 0.0005517565, -2.2559006214, 0.0010508569, 0.0008029034, -0.0017516599, + 0.0013907455, 0.0006165963, -0.0023240896, -0.0030455482, 0.0008463908, + -0.0014042365, 0.0063115442, -0.0005727314, -1.7805902958, 0.0007848195, + 0.0015719613, 0.0018094599, 0.0007571889, -0.0003453214, -0.0021581817, + 0.0021849787, -0.0032230194, 0.0024542704, 0.0006937122, -0.0003909323, + -0.0009438858, -0.0013100749, -0.0008346007, 0.0009583849, 0.0030372445, + 0.0026335651, 0.0006791633, -0.0008452339, 0.0010979606, 0.0014771635, + 0.0014822343, 0.0017523979, -0.0009125401, 0.0020458784, 0.8002372980, + 0.0017290311, 0.0005530373, 0.0008673595, 0.0008967987, 0.0012905514, + 0.0013431550, -0.0001367861, 0.0007803845, -0.0034911304, 0.0000151610, + 0.0019336056, 0.0020252671, 0.0003626593, 0.0048827995, 0.0005032601, + 0.0010710922, -0.0014271401, 0.6131101847, -0.0007413053, 0.0004582023, + 0.0005376181, 0.0000738953, 0.0028255801, -0.0007478995, -0.0008468202, + -0.0004216302, -0.0019351926, -0.0001665024, 0.0012407401, -0.0001386702, + -0.0097895684, -0.0023030234, 0.0010481412, -0.0005916203, 0.0006914977, + -0.0008606785, 0.0020842622, -0.0003623273, -0.0004595913, -0.0002024900, + -0.0020974157, -0.0007152092, -0.0048697013, 0.0000255655, -0.0010744022, + -0.0027728910, 0.0119835176, -0.0002203812, -0.0005676455, -0.0018484364, + 0.0021223312, -0.0012912340, -0.0048770485, 0.0013068245, -0.0015294417, + 0.4335600436, 0.0003094905, 0.0030570682, 0.0002639927, -0.0009672169, + 0.0010149509, 0.0010858974, 0.0010322742, 0.0012288813, 0.0005683987, + -0.0015920794, 0.0003393828, -0.0008213562, -0.0022120927, 0.0025149933, + -0.0011296726, -0.0011850821, -0.0017841208, -0.0000401568, 0.0029496374, + -0.0011663288, 0.0001638038, -0.0007919483, -0.0026090275, 0.0002803253, + 0.0021131728, 0.0003471458, 0.0020424491, 0.0005826741, -0.0027758027, + -0.0000078550, 0.0006268189, 0.0013312511, -0.0017787812, 0.0013578390, + -0.0014714382, 0.0008004010, 0.0009163574, 0.0002145148, -0.0027955780, + -0.0017017694, -0.0026858859, -0.0024800571, -0.0011592577, 0.0017456585, + -0.0002364852, 0.0034107282, 0.0023860456, -0.0015052279, 0.0004515400, + 0.0031642532, -0.0007890157, -0.0006605784, -0.0002504457, 1.8957639933, + -0.0003919441, 0.0012224140, 0.0024233311, -0.0011053851, -0.0006829686, + 0.0020375438, 0.0005904610, 0.0016662460, 0.0005475827, 0.0005855667, + -0.0004905203, -0.0003533768, -0.0041912850, -0.0007373102, 0.0003717788, + -0.0021619550, -0.0008258888, 0.0019609816, -0.0004544714, 0.0009956432, + 0.0015430441, -0.0001429669, -0.0007699297, -0.0013806708, 0.0010593813, + -0.0003392063, 0.0026635295, 0.0000738488, -0.0011182763, 0.0014858115, + 0.0021606006, -0.0001226636, -0.0046077128, -0.0013951990, -0.0011216337, + -0.0016851688, -0.0015884886, -0.0024359371, -0.0003028931, 0.0010951059, + 0.0006767106, 0.0012140931, -0.0001790491, -0.0012977299, -0.0015636599, + 0.0008638923, 0.0013576169, 0.0039036465, -0.0018975693, -0.0001549930, + -0.0003577314, -0.0012710802, 0.0053770537, 0.0015775184, -0.0004461994, + 3.8555610180, -0.0004587006, -0.0000905897, 0.0008627779, -0.0001656679, + -0.0000234388, 0.0001689480, -0.0023000543, -0.0011929553, -0.0002385306, + 0.0021700317, 0.0011385391, 0.0013580690, -0.0005280520, -0.0006799087, + -0.0000615725, -0.0000098376, -0.0006538797, 0.0017833954, 0.0003714706, + -0.0023623612, 0.0001257925, 0.0033321902, 0.0019581113, 0.0014972878, + -0.0008013467, 0.0015242831, 0.0000196567, -0.0014824227, 0.0011866046, + -0.0009282646, -0.0027018974, -0.0003339820, -0.0015258149, -0.0003590886, + -0.0008565226, 0.0010452782, 0.0014924244, -0.0013300090, 0.0001836750, + 0.0013097080, -0.0004766192, 0.0007574959, -0.0004021763, 0.0018521284, + -0.0003171675, -0.0017695907, 0.0021257568, -0.0016575983, 0.0006732456, + -0.0008766786, 0.0012366250, 0.0003130832, -1.5003974438, 0.0015954098, + 0.8576883674, -0.0013704954, 0.0007236307, 0.0021234045, -1.9063991308, + 0.0015394031, -0.0002001924, -0.0010810951, 0.0017831898, 0.0011765091, + -0.0017099497, -0.0018931879, 0.0010123802, -1.6122661829, 0.0018030689, + -0.0011569450, 0.0005074285, -0.0012924738, -0.0993950367, 0.0000693239, + -0.0017195782, -0.0001066108, 0.0032724787, -0.0015744215, 0.0019271527, + 0.0011384198, 0.0027528927, -0.0015705926, 0.0007094429, 0.0006455290, + -0.0027930199, -0.0031675694, -0.0005901246, -0.0015523094, -0.0002957788, + -0.0009127525, -0.0012112267, 0.0017880416, -0.0006708181, 0.0024477418, + 0.0006647038, 0.0003074463, 0.0034136148, 0.0018641776, 0.0025034286, + 0.0017661245, 0.0001403233, 0.0028824881, -0.0009960374, -0.0003659120, + 0.0020971857, -0.0007989923, -0.0012797203, 0.0006467674, 0.0017076740, + -0.0018001162, -0.0023929998, 0.0015610505, -0.0003343709, 0.0048216032, + -0.0004768150, -0.0009971276, -0.0041256715, 0.0010858676, -0.0004326942, + -0.0021357923, 0.0006561745, -0.0019085323, 0.0017465134, -0.0007904265, + -0.0061486345, 0.0017283631, 0.0030597239, 0.0006739204, -0.0005895044, + -0.0008134129, -0.0004680875, 0.0038897390, -0.0022224197, 0.0002838748, + 0.0014737435, 0.0037411232, -0.0000149040, 0.0010061163, 0.0017803716, + 0.0018109428, -0.0013959631, 0.0015316191, 0.0020073298, 0.0002175844, + -0.0017702538, -0.0014666012, 0.0001578146, -0.0019759331, -0.0006047506, + 0.0013436461, -0.0039632795, 0.0022354880, 0.0004379819, 0.0017965110, + -0.0000650131, 0.0005506191, 0.0016524377, 0.0021067569, -0.0015703139, + -0.0024629273, 0.0028642220, -0.0004425542, 0.0032592148, -0.0007440097, + 0.0012853350, -0.0006577610, 0.0027249027, 0.0016019410, -0.0019433186, + 0.0017058707, -0.0016832318, -0.0014243512, -0.0026853476, 0.0002944046, + -0.0018640282, -0.0006138603, 0.0003801051, 0.0000346213, 0.0025591026, + -0.0000629211, 0.0003640011, -0.0007893012, 0.0023211609, 0.0012769573, + -1.4631085396, 0.0015675742, -0.0006545706, 0.0043523549, 0.0015368008, + 0.0003812432, -0.0009198708, 0.0003060365, -0.0019897232, 0.0038736905, + -0.0007198313, 0.0023025475, 0.0016607628, -0.0004194938, 0.0004197485, + 0.0026173787, 0.0017107427, -0.0012140004, -0.0025481377, 0.0046413639, + -0.0001363172, -0.4033468366, 0.0022352196, -0.0003403435, 0.0036071588, + 0.0016270224, -0.0021406163, -0.0009849393, 0.0002175570, 0.0021004761, + 0.0014825091, 0.0002004365, -0.0006557894, -0.0009158761, -0.0003629795, + 0.0003008056, 0.0021692743, 0.0007461947, -0.0013855794, -0.0011994559, + -0.0013726812, 0.0007396517, 0.0003079423, 0.0010989192, -0.0007304940, + -0.0006457798, -0.0018857485, 0.0006940765, 0.0017733183, -0.0001690537, + -0.0019895276, -0.0006574430, 0.0004525641, 0.0020813793, -0.0001657736, + 0.0009358121, -1.1882821321, 0.0022344501, 0.0015442674, 0.0008897928, + -0.0012527083, -0.0029564470, -0.0009679764, -0.0011526851, -0.0006159837, + -0.0002908688, 0.0025679017, 0.0022548097, -0.0013783560, -0.0016612462, + 0.0005415189, 0.0024201334, -0.0005306215, 0.0013103085, -0.0018454334, + 0.0005696025, -0.0009000171, 0.0001509441, 0.0015633196, -0.0000761794, + -0.0003658584, -0.0008324659, -0.0012517953, -0.0007012519, 0.0026514574, + -0.0011675745, 0.0010944107, 0.0013483772, -0.0024244417, -0.0029730164, + -0.0012000273, 0.0015084487, 0.0013365848, -0.0020567770, 0.0002037936, + -0.0009249225, 0.0028069653, 0.0028946067, 0.0020036399, -0.0016422989, + 0.0007142955, -0.0013038935, 0.1437297761, 0.0014501025, 0.0001621235}; + +float unet_input_time_embedding_20_3[] = { + 0.0051200287, -0.0012144605, -0.0006141216, 0.0006627372, 0.0027890434, + -0.0027665766, 0.0005265498, -0.0031308897, -0.0010116382, -0.0000265485, + 0.0008687207, -0.0005556080, -0.0029254155, 0.0036827712, -0.0007784264, + 0.0008324487, -0.0008337926, -0.0003516434, -0.0064502601, 0.0004623705, + -0.0003398764, 0.0037174718, -0.0017526130, 0.0036850013, 0.0000078140, + -0.0007090305, 0.0013875775, 0.0015560202, -0.0015784729, 0.0029983316, + 0.0005063978, -0.0007981681, -0.0025002835, 0.0001308168, -0.0007710117, + 0.0016015596, -0.0016027801, 0.0016816461, 0.0010493398, 0.0003124308, + 0.0004160292, -0.0011051358, 0.0031864592, 0.0017347569, 0.0013191411, + -0.0022229350, 0.0012412332, -0.0008980995, 0.0021961904, 0.0015167918, + -0.0020853085, -0.0008735198, -1.2697589397, 0.0038249968, 0.0002545042, + 0.0004683785, -0.0004015241, -0.0078502987, -0.0016665584, 0.0001243206, + -0.0025175090, 0.0005868353, 0.0024011708, -0.0018438096, -0.0020500030, + 0.0024001813, -0.0005177697, -0.0010422954, -0.0032586046, 0.0009871644, + -0.0034406031, -0.0005092355, 0.0015913665, 0.0025116219, 0.0008429121, + -0.0030003432, 0.0000493964, 0.0013000509, 0.0005982234, 0.0006474375, + -0.0006112424, -0.0058087432, 0.0015324792, 0.0000315430, -0.0003379916, + -0.0011244130, 0.0002652649, -0.0031563933, 0.0022743512, 0.0038246927, + -0.0000161665, -0.0010418016, 0.0001806943, 0.0020403089, 0.0164809413, + 0.0003406680, 0.0013037072, -0.0014700266, -0.0015246517, 0.0025930228, + -0.0004539513, 0.0019310969, 0.0015240242, 1.8688881397, -0.0020942218, + 0.0005583959, -0.0012028259, 0.0032667173, -0.0006102403, -0.0004554470, + -0.0018350100, -0.0002653683, 0.0877559632, -0.0004950035, -0.0019390732, + -0.0004433463, -0.0008369102, 0.0006729669, 0.0010664379, -0.0007445330, + -0.0006942856, -0.0009730465, -1.8202002048, -0.0007173074, 0.0013171397, + 0.0017307592, 0.0000178418, 0.0012956527, 0.0009869477, 0.0021813563, + -0.0032540639, -0.0006981250, -0.0021867992, 0.0012266897, 0.0001250822, + -0.0026262400, 0.0041958541, -0.0000894042, 0.0011417922, -0.0042218161, + 0.0009257712, -0.0005247267, -0.0020009652, 0.0011923620, -0.0020652723, + 0.0006647715, 0.0007151379, 0.0021470962, 0.0014548460, -0.0032403823, + -0.0008919965, 0.0010553697, 0.0011303048, 0.0026015500, -0.0006551412, + -0.0022272193, 0.0007326645, 0.0009089056, 0.0022884849, 0.0005065352, + 0.0017061369, -0.0019443288, -0.0035159085, -0.0038271016, -0.0016105832, + -0.0012022431, -0.0002931196, -0.0023734709, -2.4650685787, -0.0011082068, + -0.0028906292, 0.0017102659, -0.0014127288, -0.0016002972, 0.0014406387, + -0.0000329008, -0.0019001522, 0.0039070593, 0.0017938730, 0.0007103328, + 0.0014987611, -0.0023062890, -0.0018101493, 0.0008672345, 0.0009355908, + -0.0006786776, -0.0040374901, -0.0016598166, 0.0022372059, 0.0019484186, + 0.0002776566, 0.0001606266, -0.0002301821, -0.0013623184, -0.0003442150, + -0.0035714279, -0.0003027067, -0.0013330271, -0.0049135936, -0.0002419208, + -0.0008540791, -0.0004784609, -0.0015068557, -0.0029255268, -0.0008605411, + 0.0014264788, -0.0048123291, 0.0010012006, -0.0032929014, -0.0019754185, + -0.0034700097, 0.0005777706, 0.0001329561, 0.0004437014, -0.0015658461, + -0.0000162451, -0.0007738955, 0.0012384853, -0.0005648754, 0.0009569338, + -0.0022070743, 0.0015366357, 0.0009449327, -0.1600154936, 0.0016484440, + -0.0021213242, -0.0022459486, 0.0006507495, 0.0027331829, 0.0029341923, + 0.0063916370, 0.0026733465, 0.0009246729, 0.0009979135, -0.0019796756, + 0.0026605059, 0.0020390046, -0.0017651413, -0.0030402839, 0.0014149863, + -0.0022102718, -0.0004920654, -0.0004569951, -0.0024677757, -1.3794554472, + -0.0014800916, -0.0024126428, -0.0010474281, -0.0015690494, -0.0015926403, + -0.0023969589, 0.0056055165, -0.0000514076, -0.0018076114, -0.0062366379, + -0.0005032921, 0.0020433445, 0.0000251239, -0.0030068608, 0.0004497046, + -0.0036592577, -0.0001922667, -0.0040396061, -0.0165357627, -0.0042826836, + 0.0001013563, 0.0057930988, 0.0023229993, -0.0031264005, 0.0000540926, + -0.0040408280, 0.0005527863, 0.0008873125, 0.0016910518, -0.0010509163, + -0.0001703117, -0.0021487447, -0.0004576026, 0.0013643461, -0.0028013024, + -0.0955349207, 0.0008753520, 0.0005940880, -0.0008924142, -0.0039365157, + -0.0029080370, -0.0026399926, -0.0007823513, -0.0006219605, -0.0014109686, + 0.0035194997, 0.0037251285, 0.0037902857, 0.0006579880, 0.0002029333, + -0.0023155157, 0.0021067220, -0.0015501077, -0.0010183170, -0.0002870127, + 0.0042078672, -0.0017172487, -0.0015266082, -0.0008535716, 0.0020461169, + 0.0038936255, -0.0038425191, 0.0043536848, 0.0028916746, 0.0012050732, + 0.0028954181, 0.0018898556, 0.0016570811, -0.0000500698, 0.0024243263, + 0.0026176483, 0.0017691721, -0.0009181988, 0.0003225692, 0.0015984033, + 0.0017405574, 0.0002923752, 0.0007221855, 0.0006682035, 0.0042458982, + 0.0003659665, 0.0056003090, -0.0000349209, 0.6200141311, -0.0020774673, + 0.0001605963, 0.0025317725, 0.0002896636, 0.0022832514, -0.0019097445, + 0.0001699226, 0.0034943691, 0.0013441107, 0.0019946829, 0.0001782565, + 0.0010720426, 0.0017683629, 0.0003580975, 2.7883667946, -0.0006872581, + 0.0024471125, 0.0006737678, 0.0013437524, -0.0014713919, -0.0023566457, + 0.0011503808, 0.0020218240, 0.0014603194, -0.0014515836, 0.0018143178, + -0.0029088845, -0.0011290147, 0.0016141135, -0.0016578962, 0.0007008286, + 0.0059848428, 0.0008495967, 0.0018651350, -0.0010051732, -0.0017384315, + -0.0023484395, -0.0002976260, 0.0033440217, -0.0016023898, -1.3915200233, + -0.0004397761, 0.0016197306, -0.0022705216, 0.0010749316, 0.0050087860, + -0.0011548307, 0.0013455503, -0.0012284911, 0.0009972414, 0.0031519253, + -0.0002008056, -1.6968113184, 0.0018262765, -0.0027510100, -0.0010165069, + 0.0018876130, 0.0015880647, 0.0017385678, 0.0009445050, 0.0036641858, + -0.0017642723, -0.0007539327, -0.0010267957, 0.0002805965, 0.0026544379, + -0.0028530373, 0.0014678938, -0.0015228526, -0.0001717093, 0.0003367821, + 0.0022766800, 0.0032239035, 0.0023796281, 0.0000051376, -0.0013485951, + 0.0015626638, -0.0010183622, -0.0020286776, -0.0017487234, 0.0016718488, + 0.0003015492, 0.0024108286, 0.0003473968, 0.0044852104, 0.0046351561, + -0.0009063927, 0.0022341916, -0.0017567584, -0.0009041410, -0.0015465105, + 0.0012986579, 0.0024965971, -0.0019101179, 0.0014467754, 0.0036244700, + 0.0029682624, -0.0014232611, -0.0012304450, -0.0036506809, 0.0007248190, + 0.0003668498, -0.0025381721, -0.0007625406, 0.0002122754, -0.0012287264, + 0.0007332346, 0.0040844930, 0.0005700972, -0.0043329638, -0.0007686343, + 0.0018246248, 0.0031056467, -0.0008584600, 0.0001672155, -0.0009178084, + -0.0019964003, -0.0002504848, 0.0014597843, 0.0006578187, 0.0292598046, + 0.0003747684, -0.0025533549, 0.0004292196, 0.0010159081, -0.0031091110, + 0.0042367065, 0.0039650025, 0.0010721339, 0.0007186821, -0.0023533879, + 0.0012549781, -0.0000287294, 0.0026044159, -0.0020109476, 0.0008778898, + 0.0017132470, 0.0014262307, -0.0010642316, 0.0010137741, 0.0001420197, + 0.0017461632, 0.0000207389, 0.0010553375, 0.0021112903, -0.0038038176, + 0.0046629924, -0.0025188802, 0.0022050575, -0.0011975737, -1.3326514959, + -0.0024061697, 0.0004618173, 0.0005766274, 0.0013285761, 0.0036686633, + -0.0018413084, 0.0015995873, 0.0006214222, -0.0003269869, -0.0042165238, + -0.0015520006, 2.0252256393, 0.0001695030, -0.0000476451, -0.0022216742, + -0.0686745495, -0.0009631021, -0.0036000032, 0.0018983250, 0.0002087699, + -0.0037050438, 0.0003953287, -0.0020967564, -0.0034347833, 0.0024205800, + -0.0053731380, 0.0024701427, -0.0001055113, -0.0019184682, -0.0035105771, + 0.0035602415, -0.0017877165, -1.4990557432, 0.0026680417, -0.0012056058, + -0.0003099283, -0.0002524322, -0.0015980648, 0.0031923747, -0.0023319032, + -0.0001056870, -0.0010224669, 0.0007054581, 0.0000541867, 0.0034103924, + -0.0016116849, -0.0017213419, 0.0007485743, -0.0008587572, -0.0038762791, + 0.0010685611, -0.0034508347, -0.0012215828, -0.0002844974, -0.0010154501, + 0.0006185245, -0.0002366456, -0.0010784140, -0.0010007527, 0.0010519577, + -0.0010665590, 0.0007828726, 0.0001590060, 0.0004278733, 0.0026916708, + -0.0008691680, 0.0034281341, 0.0011215666, 0.0011818372, -0.0031376593, + -1.6323592663, -0.0015830826, -0.0001149082, -0.0044297781, 0.0000571883, + 0.0015416496, -0.0020835255, -0.0006433940, -0.0031398395, 0.0003080647, + -0.0021931902, 0.0035622893, -0.0028506671, 0.0016706111, -0.0010366314, + 0.0004416863, -0.0034807250, 0.0005269973, -0.0037873127, -0.0021397909, + -0.0024053161, 0.0037811929, -0.0001836219, -0.0014768767, -0.0005676332, + 0.0003380151, -0.0004041074, -0.0010608253, -0.0013683788, -0.0005430256, + 0.0037067812, 0.0005715606, -0.0033890740, 0.0014813786, -0.0019402422, + -0.0005521157, 0.0005929084, -0.0000827932, 0.0007760823, 0.0008468530, + 0.0004145995, -0.0015441631, 0.0009498056, 0.0001116348, -0.0013634232, + -0.0005211621, -0.0003368198, 0.0026598577, -0.0019858223, 0.0022093928, + 0.0015813499, -0.0006905105, 0.0059469333, -0.0024870171, -0.0001662241, + -0.0033741563, 0.0021572080, -0.0016427438, -0.0004231866, 0.0004853676, + -0.0005777716, -0.0007311711, 0.0007183584, -0.0011948622, -0.0010727914, + 0.0018386263, 0.0004809438, 0.0011771424, -0.0020291875, -0.0024553130, + 0.0016984367, -0.0018365645, 0.0000778153, -0.0000284053, -0.0019884803, + 0.0002763001, -0.0003343921, -0.0006247654, 0.0024980926, 0.0009239097, + 0.0023387643, -0.0013725499, 0.0012208280, 0.0001327030, 0.0017402922, + 0.0027468475, 0.0012889740, -0.0016669236, -0.0013447786, 0.0002445416, + -0.0002072923, 0.0019921747, -0.0007300437, 0.0040882416, 0.0000539185, + 0.0002403388, 0.0004405538, 0.0004522677, 0.0082713710, 0.0026487121, + -0.0007855549, -0.0019897381, 0.0000958915, 0.0010437225, -0.0013368875, + 0.0000176893, -0.0008774092, 0.0013844054, -0.0016214296, -0.0040136292, + 0.0002645012, 0.0028885803, -0.0002181983, -0.0000918953, -0.0013812208, + 0.0008979244, -0.0004730672, 0.0012921458, 0.0015425470, -0.0006351928, + -0.0004663437, -0.0005349799, 0.0025382114, -0.0018568814, -0.0015946850, + -0.0003119372, 0.0023396476, 0.0034358450, 0.0010114773, 0.0010387935, + 0.0004512586, 0.0018503317, 0.0019646874, -0.0002683746, -0.0008477522, + 0.0037697363, -0.0017316500, 0.0013998437, 0.0015916452, -0.0020884434, + 0.0037107971, -0.0018546712, 0.0028662093, 0.0000996108, 0.0000416148, + -0.0001560128, 0.0046585570, 0.0012127543, -0.0006218341, 0.0022909064, + -0.0001690448, 0.0005584466, -0.0018766138, 0.0005643887, 0.0009137918, + -0.0012700721, -0.0010320470, 0.0004757405, -0.0004622745, -0.0015757030, + -0.0010383315, -0.0070357258, -0.0016164416, -0.0009705769, 0.0010618274, + -0.0012118530, -0.0002170326, -0.0038478812, -0.0008619225, -0.0002368577, + 0.0007988485, 0.0007678228, -0.0008615322, -0.0008775020, -0.0038241528, + 0.0005282531, -0.0015771296, 0.0026685307, -0.0005588839, -0.0015294421, + 0.0023053242, -0.0035995003, 0.0011821722, -0.0006742091, 0.0017889705, + 3.9050559998, -0.0007710480, 0.0003744075, -0.0006416566, -0.0025135968, + 0.0004484323, -0.0006351648, 0.0013140407, 0.0003258726, 0.0004895497, + -0.0020609321, 0.0002690008, 0.0007889747, -0.0028422228, -0.0016527884, + 0.0011805857, -0.0007216691, -0.0000990741, -0.0015422227, -0.0002471602, + -0.0000253646, -0.0004692199, 0.0017635630, -0.0004475287, -1.5227032900, + 0.0022604824, 0.0016816107, 0.0009823237, -0.0049522188, 0.0031754379, + -0.0030246708, -0.0018755285, -0.0029291036, 0.0006141630, 0.0029024403, + 0.0000298405, 0.0040637637, 0.0029051593, 0.0006613757, -0.0002350407, + 0.0014521424, -0.0015312880, 0.0032050591, 0.0034346236, 0.0029659187, + -0.0010317881, -0.0030002743, 0.0000766905, -0.0018834337, 0.0038985820, + -0.0008970322, -1.7376784086, 0.0011700587, -0.0003347527, 0.0004441119, + -0.0023151040, 0.0003808106, -0.0004174237, -0.0036425926, -0.0004146856, + -0.0007364615, 0.0029420527, -0.0009621062, -1.0432457924, 0.0012789988, + 0.0007059487, -0.0005976663, 0.0025055357, 0.0006281342, 0.0024749716, + -0.0044748662, -0.0022168397, 0.0014549054, -0.0001383822, -0.0009762760, + 0.0005281925, -0.0010073988, 0.0016420599, -0.0017098151, -0.0011373698, + 0.0004631719, 0.0024452070, -0.0019771950, 0.0008012516, 0.0012352450, + -0.0011830116, 0.0003697377, -0.0039247186, 0.0039149346, 1.2103275061, + 0.0043786867, 0.0008127012, 0.0021787044, -0.0031064369, -0.0021209265, + -0.0016615132, 0.0023211152, -0.0020748568, -0.0041127177, -0.0024525896, + 0.0005944755, 0.0000241473, 0.0022721128, 0.0024043117, -0.0003549886, + -0.0010638083, -0.0020354241, 0.5584877729, -0.0008132285, -0.0002023457, + -0.0019532014, -0.0017213202, -0.0010196553, -0.0016623940, 0.0003321560, + -0.0017863046, -0.0010002453, -0.0007406214, -0.0010607890, 0.0010638693, + 0.0019433518, -0.0003420813, 0.0001551677, 0.0011565168, 0.0035352204, + -0.0005407133, -0.0007264228, 0.0000933474, -0.0043429504, 0.0004287502, + 0.0005203588, 0.0004646698, 0.0004925858, 0.0012212989, -0.0021860092, + -0.0003785826, 0.0198117010, 0.0008177864, 0.0002211996, 0.0005352567, + 0.0003358878, -0.0017908881, -0.0010482715, 0.0008696915, 0.0012805732, + 0.3525579572, 0.0023830784, 0.0055649914, -0.0022117104, -0.0020427231, + 0.0042213248, 0.0034748870, -0.0004010163, 0.0019306603, -0.0003966103, + 0.0001654176, 0.0028193719, -0.0012546894, 0.0018071006, 0.0012914971, + 0.0010435788, -0.0021245445, -0.0030158544, -0.0014305320, 0.0019824477, + 0.0006475672, 0.0001868624, 0.0007069036, -0.0021801665, 0.0038481131, + -0.0020472081, 0.0013743946, 0.0037018689, -0.0034566126, -0.0053983661, + 0.0036183035, -0.0020537372, -0.0014263839, -0.0014108841, 0.0004636953, + -0.0047380989, 0.0032875086, 0.0009029554, 0.0004901462, -0.0019945730, + -0.0029001897, 0.0010928717, -0.0033693230, -0.0009050812, 0.0012823367, + -0.0004137810, 0.0019488432, 0.0017476776, 0.0012027201, -0.0001022430, + 0.0008667866, 0.0026499860, -0.0057102335, -0.0002247877, 1.8311867714, + -0.0006566003, 0.0005214028, -0.0010787360, -0.0003487703, -0.0016895700, + 0.0049994942, 0.0001896886, 0.0031113019, 0.0014306395, -0.0021039662, + 0.0023612306, 0.0010009669, -0.0022233296, -0.0012363752, -0.0027212999, + -0.0030467133, -0.0019940429, 0.0038616601, 0.0003791247, 0.0003436261, + 0.0007403307, -0.0036294921, -0.0043594688, -0.0002742060, -0.0005706995, + 0.0025063828, -0.0000650522, 0.0015008985, 0.0004056091, -0.0014857482, + 0.0017493733, -0.0015393561, -0.0005302392, 0.0009438512, 0.0015752288, + -0.0023613258, -0.0012972789, -0.0012711590, 0.0028894320, -0.0018568235, + 0.0003436226, 0.0006673490, 0.0029968265, -0.0022010463, -0.0036714142, + 0.0015284021, 0.0002408121, -0.0014164122, 0.0001303037, 0.0005065645, + -0.0002383675, 0.0000889059, 0.0043649697, 0.0001357011, -0.0032467642, + 3.5718066692, -0.0007378533, 0.0026848298, 0.0012250950, 0.0026889793, + -0.0010302153, -0.0021996675, -0.0049509108, -0.0021051858, 0.0004668345, + 0.0015015674, -0.0022590207, -0.0004015663, 0.0003118864, -0.0028299163, + 0.0003731372, 0.0034312615, -0.0006407443, 0.0034964599, -0.0004990497, + -0.0004769247, -0.0027683098, 0.0023489483, 0.0018101428, -0.0005957368, + 0.0020361436, 0.0015881942, -0.0033541021, 0.0017029808, 0.0010934407, + -0.0004306738, -0.0031528764, -0.0009281797, -0.0019279134, 0.0018948209, + 0.0007700770, -0.0000091727, 0.0001093638, 0.0011691495, -0.0014272523, + 0.0030383386, 0.0009584799, 0.0015987381, -0.0018754541, 0.0017991138, + 0.0009187977, 0.0032855184, 0.0024294797, 0.0004150731, 0.0008787364, + -0.0022714376, 0.0002713464, -0.0001363684, -1.5351685286, 0.0005121457, + 0.6848987937, -0.0021081625, -0.0000475431, 0.0051817624, -1.9689954519, + -0.0010836348, -0.0035106754, -0.0014911899, 0.0004440784, 0.0001025563, + -0.0021520252, -0.0006904518, 0.0016345391, -1.6811083555, -0.0005249330, + 0.0002924351, 0.0012833287, -0.0002412844, -0.1625006646, -0.0007326081, + -0.0002011135, 0.0009221155, 0.0022336387, 0.0007375737, 0.0003637695, + 0.0011479659, 0.0029589916, -0.0022362443, 0.0014092629, -0.0019633253, + 0.0008030243, -0.0034233450, -0.0014120080, -0.0010887752, 0.0036632712, + 0.0008611283, -0.0045784470, 0.0034411708, 0.0005036914, -0.0033111211, + -0.0008087844, 0.0027560219, 0.0019806521, -0.0014765733, 0.0025551515, + 0.0010528842, -0.0043767886, 0.0037517715, -0.0006358782, 0.0002290457, + 0.0029120455, 0.0019054641, 0.0020142409, 0.0023533695, 0.0029915264, + -0.0001327191, -0.0012439038, -0.0021623771, -0.0024475316, 0.0021510089, + -0.0009934048, -0.0004689904, -0.0003994675, 0.0042486279, -0.0035826592, + 0.0028620320, 0.0020547258, 0.0002406845, 0.0015441882, 0.0003650170, + -0.0117604341, 0.0013489255, 0.0107516646, -0.0026712022, 0.0018829391, + -0.0037588715, -0.0012492678, 0.0032353154, -0.0018520998, 0.0029013543, + 0.0007119011, 0.0042613368, -0.0030373367, 0.0013170931, -0.0000258549, + -0.0008931560, 0.0006191880, 0.0022745556, 0.0025973422, -0.0017334283, + -0.0016695219, 0.0016691033, -0.0007635000, 0.0007211138, 0.0015956173, + -0.0000429330, -0.0033571711, -0.0001032873, -0.0025053537, -0.0016743289, + 0.0022962093, 0.0028294947, 0.0028128247, 0.0034487965, 0.0001114656, + -0.0001137014, 0.0056191683, 0.0026677521, 0.0001257530, -0.0013748066, + 0.0028917501, -0.0001260876, 0.0028419271, -0.0015936778, 0.0031322683, + 0.0016867637, -0.0021055725, 0.0028370586, -0.0007210020, 0.0022089384, + -0.0005574943, -0.0013620998, 0.0013014886, -0.0032040584, 0.0009158244, + -0.0024328288, -0.0005955535, 0.0009207970, 0.0002568900, 0.0025944416, + -1.5192071199, 0.0002369750, -0.0018210540, 0.0008527184, 0.0024713178, + -0.0015320221, -0.0009119778, -0.0010402796, 0.0002100961, -0.0013067652, + -0.0034824014, -0.0023200964, 0.0016375710, -0.0032601506, 0.0006454173, + 0.0009706644, 0.0015845918, 0.0002965489, -0.0068351459, 0.0022817501, + 0.0006446284, -0.2520629764, 0.0009180016, 0.0021295575, 0.0019988029, + 0.0011884850, -0.0027204698, 0.0009926572, 0.0001575220, 0.0006294698, + 0.0025577787, 0.0011018468, 0.0032961066, -0.0007220842, 0.0007934158, + -0.0011982764, 0.0028094193, 0.0025971341, -0.0017451546, -0.0000277814, + -0.0004438131, 0.0051228208, 0.0018706233, -0.0020365510, -0.0003554579, + 0.0012373209, -0.0005261126, -0.0037967444, 0.0017432105, -0.0009822920, + 0.0003869542, 0.0015218938, 0.0011311332, 0.0066867303, -0.0030631581, + -0.0006017102, -1.1975146532, -0.0017874353, -0.0024994449, 0.0004800211, + -0.0019062397, 0.0001211755, -0.0000904088, -0.0012718935, 0.0014518639, + -0.0017519298, 0.0021339660, -0.0003404148, -0.0004788232, -0.0012670164, + -0.0025019269, 0.0013192358, 0.0020756279, 0.0016334890, 0.0018173577, + -0.0003658049, -0.0036430564, 0.0017486932, 0.0036705039, 0.0002469076, + 0.0035196436, -0.0014544828, 0.0003935611, -0.0010998901, -0.0005215139, + 0.0009791743, 0.0001485371, 0.0008905204, -0.0002181114, -0.0027618632, + -0.0033610924, -0.0011511422, 0.0005467543, -0.0009958484, 0.0013222906, + -0.0015883092, 0.0004744660, 0.0009632737, 0.0014987430, -0.0017454615, + 0.0035375301, 0.0013147928, 0.2130329758, -0.0011732730, -0.0016011280}; + +float unet_input_time_embedding_20_4[] = { + -0.0025420533, -0.0027923691, -0.0018891683, -0.0036292935, -0.0035085897, + 0.0017656442, 0.0016839334, 0.0008155534, -0.0026904552, -0.0037500628, + 0.0018805254, -0.0060876696, -0.0031488780, -0.0019024438, 0.0001707654, + 0.0028276965, -0.0024731057, -0.0008368327, 0.0008727633, -0.0030906382, + 0.0044207484, -0.0001746332, -0.0014933281, 0.0363975540, 0.0017594311, + 0.0000183054, -0.0028890315, 0.0013250709, -0.0023590829, -0.0000234242, + 0.0021675392, 0.0012058839, 0.0008599311, -0.0013454813, -0.0026087002, + 0.0030569877, -0.0013239617, -0.0022277192, -0.0005532987, -0.0025366275, + -0.0028544627, -0.0026564919, 0.0003700801, -0.0002732435, -0.0027416004, + 0.0011282170, -0.0032206178, -0.0031685242, -0.0020455159, -0.0015949539, + -0.0014081029, -0.0025307972, -1.0530881882, -0.0008577565, -0.0015528054, + -0.0029361127, 0.0028375143, -0.0000930061, -0.0025610398, 0.0005509753, + 0.0000031928, -0.0004176501, -0.0005113115, 0.0002370472, -0.0010730941, + -0.0030172085, 0.0025184089, -0.0001088056, 0.0033095106, -0.0019891451, + 0.0002964544, 0.0019835182, 0.0013354912, 0.0008702371, -0.0001316098, + 0.0015299805, 0.0026675723, -0.0004093507, -0.0006535375, -0.0003424578, + 0.0044894223, 0.0019103080, -0.0002720328, 0.0008465210, -0.0001975072, + -0.0023106846, 0.0009030849, 0.0024103634, -0.0011186018, -0.0006336789, + -0.0010190407, -0.0013822652, -0.0005087154, -0.0031996528, -0.0011799266, + -0.0003021113, 0.0009765029, -0.0007415414, 0.0015550388, -0.0033720722, + -0.0001075771, -0.0019029356, -0.0022526702, 1.5292785168, -0.0001653559, + -0.0008659922, 0.0022812518, 0.0004649172, 0.0009626658, 0.0015601318, + -0.0006734254, 0.0003853338, 0.1983956844, -0.0036469130, 0.0018535443, + -0.0019759932, 0.0010363203, -0.0034729217, 0.0014131078, 0.0002371378, + -0.0040994431, 0.0001373223, -2.0098745823, -0.0018688217, -0.0018235436, + 0.0008499348, 0.0025618346, -0.0006574797, -0.0032048421, 0.0020577470, + -0.0013328348, -0.0028476994, -0.0002451146, 0.0011097146, -0.0022156099, + 0.0004106986, -0.0011965742, -0.0022999207, -0.0016767206, 0.0002648411, + 0.0014928367, -0.0025426839, -0.0004769287, -0.0000311527, 0.0013591934, + -0.0003323006, 0.0027394737, -0.0004809895, 0.0005706633, 0.0000809580, + -0.0021576611, 0.0004456170, -0.0041085077, -0.0029760385, -0.0036382456, + 0.0018631467, 0.0001974804, 0.0027048616, -0.0006298805, 0.0007862854, + -0.0010218252, 0.0017425047, -0.0003127838, 0.0005405927, -0.0042580054, + -0.0018445540, -0.0027939992, 0.0004671728, -1.9223465919, -0.0006156329, + -0.0019926457, -0.0028143870, -0.0003579920, 0.0010388419, -0.0052431319, + -0.0000243029, 0.0012320607, 0.0034864368, -0.0029431335, 0.0013546925, + -0.0010275026, -0.0019735964, -0.0016072360, -0.0019426001, -0.0029778397, + 0.0027096812, 0.0012672180, 0.0018277145, -0.0031146579, -0.0015478102, + 0.0001626550, -0.0014589452, -0.0007178333, -0.0005382991, -0.0032389255, + -0.0006231866, 0.0076418882, 0.0022110897, 0.0012057506, -0.0018270821, + -0.0011399221, 0.0025618509, 0.0043733986, -0.0005230787, -0.0031822734, + -0.0007667327, 0.0006653892, 0.0001843842, 0.0013414826, 0.0004177862, + 0.0010177190, -0.0005901405, -0.0010812371, 0.0008369412, 0.0009932276, + -0.0027879141, 0.0012029903, -0.0017421176, 0.0010926739, -0.0035538115, + -0.0014276123, -0.0016689727, -0.0001855588, -0.0294604711, -0.0001595954, + 0.0017448948, -0.0018429020, 0.0009500801, 0.0029087036, 0.0025771344, + -0.0008620387, 0.0002782922, -0.0017647669, 0.0003382354, 0.0041746898, + 0.0009772372, 0.0022817557, -0.0018354664, 0.0004025195, -0.0028089457, + -0.0010707749, -0.0032945389, -0.0022553473, -0.0012799706, -1.4048134089, + 0.0001132449, -0.0008247080, -0.0005573820, -0.0002330290, 0.0000617239, + -0.0017041191, -0.0032857941, -0.0012327260, -0.0016857646, 0.0024678851, + 0.0022675975, -0.0020820140, 0.0039233831, -0.0001723731, -0.0023020278, + 0.0021194159, -0.0021702957, -0.0009271319, 0.0062506250, 0.0015868651, + -0.0009503546, -0.0023543271, 0.0004003104, -0.0005737459, 0.0021401432, + -0.0009968430, -0.0005618150, -0.0002621762, 0.0014413660, 0.0000863115, + -0.0017318896, 0.0023779946, -0.0010658009, -0.0030117193, -0.0014449558, + -0.0169241652, -0.0019365773, 0.0011277591, -0.0011882316, -0.0035178731, + -0.0042264136, -0.0011269944, -0.0006743998, -0.0015727826, -0.0002773525, + -0.0015501323, 0.0024070528, -0.0051066689, 0.0008718756, -0.0011782367, + -0.0021753535, 0.0002354593, 0.0009475448, -0.0024404996, -0.0003263061, + 0.0053859865, -0.0011764888, 0.0017807421, 0.0019990471, 0.0037869283, + -0.0021891571, 0.0024237684, -0.0017641596, -0.0012754332, -0.0044819280, + 0.0004455633, -0.0033782972, -0.0033565082, -0.0030794106, -0.0001011244, + 0.0018631290, -0.0010361342, 0.0012408285, 0.0019299127, 0.0025049062, + -0.0024018779, 0.0009370190, 0.0012239960, -0.0026714597, 0.0021083294, + 0.0006135725, -0.0013161283, 0.0011085086, 0.1860974133, -0.0015113610, + -0.0008117021, -0.0015171673, 0.0006611970, -0.0013858734, -0.0011900016, + 0.0006702933, 0.0022782956, -0.0000459367, -0.0012856531, -0.0004968536, + -0.0014986154, 0.0015366378, 0.0023038129, 2.6156821251, 0.0014939925, + 0.0003645075, 0.0024698465, -0.0018389997, -0.0035707299, -0.0012896591, + -0.0013229828, -0.0009906236, -0.0000570212, 0.0017921124, 0.0018444896, + 0.0005278187, -0.0032691115, -0.0000272327, -0.0002473542, -0.0066461512, + -0.0023626825, -0.0014452296, -0.0013849474, -0.0027163741, -0.0017961791, + 0.0025628500, 0.0018223855, -0.0016937624, 0.0004368927, -1.3932359219, + -0.0004588412, -0.0004176940, 0.0008217636, 0.0006938726, -0.0005325943, + -0.0030687265, -0.0003248047, -0.0030454455, -0.0019402525, 0.0003738999, + 0.0012207754, -1.5548011065, -0.0001709233, 0.0022461866, 0.0000760546, + -0.0025032158, -0.0010073693, 0.0015688436, -0.0007264963, 0.0010273927, + 0.0047562504, -0.0020166114, -0.0016278103, -0.0004861953, -0.0021572229, + 0.0000670752, 0.0021394999, -0.0006692178, -0.0007956107, -0.0021667015, + -0.0003790444, -0.0014947616, 0.0024829556, -0.0013635061, -0.0024467912, + -0.0010704757, 0.0023717596, -0.0036348710, 0.0016137627, -0.0013113059, + -0.0011414760, -0.0013297950, -0.0017713862, -0.0013509283, -0.0012603761, + 0.0016323666, -0.0021504611, -0.0004404420, -0.0000305558, 0.0012734681, + -0.0032216392, -0.0011383567, -0.0004017120, 0.0003963744, -0.0004710178, + 0.0019991319, -0.0015254701, -0.0017619452, 0.0027690942, -0.0016892827, + -0.0012046206, -0.0011046850, -0.0015018431, 0.0027152402, 0.0009511524, + 0.0011640678, -0.0009860480, -0.0002826925, -0.0001144111, -0.0006036840, + 0.0034075668, -0.0007866840, -0.0013982434, 0.0020050651, -0.0017285880, + 0.0053995564, -0.0004837960, 0.0012540142, 0.0003240360, 0.0239797495, + -0.0010132450, 0.0008916799, -0.0004885634, -0.0002125204, -0.0039043953, + -0.0021376070, -0.0000779321, 0.0005609738, -0.0014503868, 0.0014301520, + 0.0019039842, -0.0039175116, -0.0045812819, 0.0024872846, -0.0023571448, + 0.0020365994, 0.0009659785, -0.0024643559, -0.0001951606, 0.0000402839, + -0.0033894521, -0.0003091709, 0.0018221019, -0.0010407337, -0.0003161961, + 0.0183137860, 0.0031030220, -0.0002012694, -0.0025256043, -1.3119469881, + 0.0031087617, -0.0033744457, -0.0007571289, 0.0011960629, -0.0000737390, + 0.0021994039, 0.0003440173, -0.0003888356, -0.0026681493, -0.0003883864, + 0.0006706552, 1.7144387960, -0.0006804024, -0.0030125421, -0.0027571754, + 0.1043504030, -0.0005742302, -0.0003625844, 0.0016050069, -0.0009388784, + 0.0022161393, -0.0002458720, 0.0027505876, -0.0010305517, 0.0026702592, + 0.0019714879, 0.0009188880, -0.0021103611, -0.0018403628, -0.0005537062, + -0.0008908377, 0.0007689111, -1.5820146799, 0.0002463488, 0.0000027487, + -0.0019299127, 0.0019140365, -0.0004475741, 0.0031237807, 0.0016647540, + -0.0026839967, 0.0025590737, 0.0000652782, 0.0010717525, 0.0008212691, + -0.0036280570, -0.0006907766, -0.0007949169, -0.0005539600, -0.0012380863, + -0.0044630989, -0.0016007773, 0.0013256767, -0.0016281859, 0.0026668597, + -0.0012882629, -0.0001510393, 0.0027519192, -0.0016371943, -0.0000600102, + 0.0051072678, 0.0000308612, 0.0026726057, -0.0061447467, -0.0019356678, + 0.0020712968, -0.0009329887, 0.0006053010, -0.0013071029, -0.0019761408, + -1.6738005877, 0.0028526057, 0.0007544383, 0.0003736224, -0.0005433797, + -0.0011404011, -0.0014657918, 0.0016795835, 0.0036269217, 0.0018946966, + 0.0014332859, -0.0029221699, -0.0007748003, 0.0024656933, 0.0017015133, + -0.0017632795, -0.0029209014, -0.0017364230, -0.0014644591, 0.0029920158, + -0.0021932949, 0.0009816093, 0.0015405705, 0.0009075899, -0.0002316027, + 0.0018236460, 0.0016277255, 0.0002730004, -0.0012660665, 0.0016324248, + -0.0002220776, 0.0000748984, -0.0040914421, -0.0006904296, -0.0005021372, + -0.0003859147, 0.0012640688, 0.0025647138, -0.0002689399, -0.0027704458, + -0.0007496403, 0.0009803730, 0.0023892568, 0.0014158678, 0.0008916832, + -0.0021637725, -0.0016105511, 0.0003230702, 0.0021715197, 0.0003705970, + -0.0017138091, -0.0004947553, -0.0089968825, 0.0013145697, 0.0010182450, + 0.0005579826, 0.0024056290, -0.0022626303, -0.0023872675, -0.0029448529, + 0.0005758360, 0.0012394311, 0.0012816852, 0.0027598036, -0.0014781663, + 0.0009403750, -0.0023043668, -0.0011013895, 0.0020583631, 0.0005525870, + 0.0009662746, -0.0012084731, -0.0017997460, -0.0027313554, -0.0020571616, + 0.0001137750, 0.0006833684, -0.0009434412, -0.0001620059, 0.0011985824, + -0.0020328527, -0.0024443434, -0.0003769099, 0.0024241672, -0.0002645096, + 0.0015077498, -0.0030546288, 0.0022660852, 0.0001499001, -0.0017736009, + -0.0034171143, -0.0005466916, 0.0010957757, -0.0018416049, 0.0015510875, + 0.0006936867, -0.0028908700, 0.0018562272, -0.0067724008, 0.0009419201, + -0.0006550654, 0.0034773266, -0.0019568868, -0.0024584145, -0.0005147741, + -0.0003859715, -0.0033388389, -0.0024225181, 0.0008180796, -0.0011026175, + 0.0004894417, -0.0006134766, -0.0009628205, -0.0025288071, -0.0003262335, + -0.0008193441, 0.0001173904, -0.0015770169, -0.0026683316, 0.0045793359, + -0.0002628674, -0.0018714473, 0.0001762600, 0.0005414614, 0.0012328736, + -0.0027413266, -0.0018892497, -0.0011617225, 0.0026068282, -0.0034000943, + 0.0041090641, 0.0004256680, -0.0020677093, 0.0001075370, 0.0032577533, + -0.0008906508, 0.0013334034, 0.0005218235, 0.0024393485, -0.0015980238, + 0.0004763086, -0.0000223164, -0.0022730248, -0.0024799083, -0.0001380923, + 0.0022362066, 0.0006818133, -0.0020177271, -0.0000291842, 0.0002358072, + 0.0000388208, 0.0025674463, 0.0003444168, -0.0040707104, -0.0020851730, + -0.0000669947, 0.0016334187, 0.0011112415, 0.0005364900, -0.0012822000, + -0.0013246965, -0.0108997123, -0.0016853563, -0.0000890270, -0.0033623599, + 0.0012978781, -0.0019504246, 0.0018534372, -0.0019742784, 0.0009194259, + 0.0001044311, -0.0037908084, -0.0025731153, -0.0006143409, -0.0016792424, + 0.0012412029, -0.0004850710, 0.0020216787, 0.0019558757, -0.0006673448, + -0.0010518255, -0.0004270021, -0.0006441392, -0.0010122261, -0.0011179564, + 3.6111803055, -0.0011884258, -0.0030266466, 0.0007772883, -0.0031827877, + -0.0017826604, 0.0006188108, 0.0016655945, 0.0002092550, -0.0011268500, + 0.0011069095, -0.0004717904, -0.0002163224, 0.0027701282, -0.0008629411, + 0.0009460596, 0.0006583517, -0.0028116349, -0.0007453905, -0.0007262214, + -0.0012329456, 0.0007816334, 0.0011119939, -0.0003467242, -1.7040845156, + -0.0004777457, -0.0027513320, -0.0032425120, 0.0001162379, -0.0004373197, + -0.0031268429, 0.0004680181, -0.0005567680, 0.0022235201, -0.0005438856, + -0.0028878665, -0.0022297995, -0.0005943002, 0.0022476690, -0.0005405606, + 0.0023786966, 0.0002735555, -0.0021859240, -0.0004637858, 0.0016665896, + 0.0007426031, 0.0017281455, -0.0011487736, 0.0003442322, 0.0000836127, + 0.0013615494, -1.1809145212, 0.0015574256, 0.0010291962, -0.0014345632, + -0.0054807374, -0.0006281796, 0.0019833467, -0.0000039847, 0.0001599525, + -0.0022411537, -0.0047594896, -0.0015974283, -0.4611025155, -0.0006419064, + -0.0016466187, -0.0026250866, -0.0021846429, 0.0015237899, 0.0016519628, + -0.0012933891, -0.0031957570, -0.0010840597, 0.0025234430, 0.0001784774, + -0.0008466743, 0.0031739192, -0.0036220807, 0.0003256630, -0.0004872284, + -0.0021095625, 0.0022849953, 0.0014332598, -0.0034946559, -0.0005423238, + -0.0008197622, -0.0038100043, 0.0011820490, -0.0044412138, 1.5549029112, + -0.0010184096, -0.0026451356, -0.0019522136, -0.0005528615, -0.0017846641, + -0.0023519814, -0.0016128891, -0.0006323033, 0.0045332992, 0.0004407973, + 0.0028786238, 0.0010031518, 0.0013668225, 0.0000419840, -0.0025786581, + -0.0055998894, 0.0009746766, 0.4497989416, -0.0012857332, 0.0022608461, + 0.0003616237, 0.0029089977, -0.0018916656, 0.0006329096, 0.0008574517, + 0.0025535915, 0.0027881402, 0.0018221383, -0.0018094718, 0.0002089860, + 0.0119814537, -0.0038511241, 0.0004933192, -0.0016580275, 0.0018410599, + 0.0001799609, 0.0009645852, -0.0014154641, -0.0029151929, 0.0010738838, + 0.0008115014, 0.0030207976, 0.0014136126, -0.0006566436, -0.0020683603, + 0.0002628723, 0.0037858612, -0.0006250297, 0.0014820613, 0.0002951953, + 0.0003788199, 0.0020617605, 0.0019165399, -0.0007857921, -0.0016764794, + 0.2698279321, -0.0001177775, -0.0009390600, 0.0006793002, -0.0023266592, + 0.0000037972, -0.0025325981, -0.0043304795, -0.0027583514, 0.0011783801, + 0.0004226530, 0.0023489087, -0.0002420736, 0.0008232440, -0.0032967418, + 0.0004373176, -0.0012320785, -0.0002810793, 0.0018628980, -0.0017575137, + -0.0027721301, -0.0023374604, 0.0038555767, 0.0020469930, -0.0001507830, + -0.0022879131, -0.0007670708, 0.0012253058, 0.0014235843, 0.0024028537, + 0.0004225343, -0.0013627229, 0.0039328942, -0.0009009156, -0.0025689323, + -0.0037590240, -0.0019788668, 0.0006133758, 0.0044221710, -0.0000174348, + 0.0027391277, 0.0015835501, -0.0010924675, -0.0029653735, 0.0010384773, + 0.0001298059, -0.0027121594, -0.0003768322, 0.0002059465, -0.0006167652, + -0.0032134438, -0.0011490724, -0.0007848522, 0.0021657180, 1.7804399729, + 0.0004426464, 0.0002098521, -0.0013778172, 0.0012691829, -0.0020873621, + -0.0015341546, 0.0040915753, -0.0009852536, 0.0002959440, -0.0013608877, + -0.0022372934, 0.0025598393, -0.0036808830, 0.0025717060, 0.0022385330, + -0.0007169279, 0.0010161080, 0.0027187597, 0.0006314213, 0.0012966010, + -0.0009420272, -0.0014871317, -0.0010872220, 0.0013028518, -0.0001367870, + -0.0037098275, -0.0010164443, -0.0006372151, 0.0018871566, -0.0006832201, + 0.0011129857, 0.0003403528, -0.0019712718, -0.0013937498, 0.0026612971, + -0.0004243462, -0.0003439231, -0.0028400954, 0.0021617175, -0.0012872545, + 0.0008620569, 0.0001422404, -0.0024746931, -0.0001363623, 0.0014032209, + 0.0002129145, 0.0026663654, -0.0029254025, 0.0016668900, -0.0007279655, + -0.0000380717, 0.0007240605, 0.0004787676, 0.0002561659, -0.0015320913, + 3.2610383034, 0.0000031851, 0.0020265747, 0.0003617543, -0.0002244101, + 0.0016864871, -0.0019696560, 0.0017400365, -0.0014654770, -0.0018196928, + -0.0028558208, -0.0006537167, 0.0006766259, 0.0010480599, 0.0009190744, + 0.0005333750, 0.0002322020, -0.0011450611, -0.0043319445, 0.0008983542, + -0.0020110663, -0.0036917748, -0.0021388661, -0.0022941045, 0.0012211525, + 0.0020810333, 0.0000322158, -0.0001797897, 0.0016103878, 0.0001257984, + -0.0021533254, 0.0023785711, 0.0005335765, 0.0015582123, 0.0025241161, + 0.0013740089, -0.0010916443, -0.0045196018, -0.0001923398, -0.0027809809, + -0.0024469174, 0.0012530871, -0.0031088302, 0.0007930831, -0.0020691475, + 0.0004269849, 0.0018054829, -0.0006770549, -0.0021519428, -0.0027048448, + -0.0028351527, 0.0017913096, -0.0014163260, -1.5701527596, -0.0006247310, + 0.5009222627, -0.0013095670, -0.0027893218, 0.0011489328, -2.0307114124, + -0.0011157556, -0.0031208219, -0.0012624310, -0.0021709362, -0.0024411520, + 0.0018569021, -0.0020938264, -0.0000966964, -1.7948529720, -0.0009271135, + 0.0016224550, -0.0012995333, -0.0001982983, -0.0792995021, -0.0035554087, + 0.0016016196, -0.0022006137, -0.0018103933, 0.0022411791, -0.0007758630, + -0.0010455698, -0.0009441348, 0.0015837802, -0.0023687608, -0.0018680380, + 0.0000968517, 0.0002168084, 0.0007573706, 0.0031636064, 0.0013643438, + -0.0004652352, -0.0013335876, -0.0010150643, -0.0006099124, 0.0025792203, + -0.0013026586, -0.0008221501, -0.0038144412, -0.0005569221, -0.0018160064, + -0.0009132235, 0.0002171686, -0.0001707822, 0.0004570717, 0.0018795831, + 0.0003449135, -0.0007218192, 0.0013883978, 0.0009032108, -0.0010441113, + 0.0039759669, 0.0002243901, 0.0013518494, 0.0019749301, 0.0023425811, + 0.0001247318, -0.0009348929, 0.0034320513, -0.0026410543, -0.0001732790, + 0.0006113178, 0.0004705936, 0.0003554365, -0.0012687687, 0.0013253801, + -0.0038154209, -0.0011669828, 0.0016369666, 0.0022640307, -0.0014282367, + -0.0023131543, 0.0006431619, -0.0032522534, 0.0033286894, 0.0000593744, + -0.0010275953, -0.0037202307, -0.0009800517, -0.0001368308, -0.0017085676, + -0.0017348314, 0.0028853603, -0.0015359833, -0.0044584600, 0.0011727228, + 0.0002223854, -0.0025505750, 0.0004997040, -0.0015267283, 0.0004450893, + -0.0041141566, 0.0006302977, -0.0009150900, 0.0007143663, 0.0001375582, + -0.0002172755, 0.0009402081, -0.0008943360, -0.0039650528, -0.0045459783, + -0.0009586718, -0.0000614617, 0.0029636612, 0.0001216584, 0.0004287927, + 0.0002595799, 0.0010102973, -0.0029094559, -0.0044636526, 0.0005804464, + 0.0010412603, 0.0018561227, 0.0013963724, -0.0011351872, -0.0019738772, + 0.0011780886, 0.0009934180, 0.0010521838, 0.0003443084, -0.0038306033, + -0.0021342831, 0.0000750317, 0.0010780746, -0.0015757689, -0.0004575620, + -1.5054907799, -0.0047338959, 0.0008089292, -0.0027942441, 0.0024752144, + -0.0012247583, -0.0010698994, -0.0025870388, 0.0002524746, 0.0002849991, + -0.0016626990, -0.0020438768, 0.0011103828, 0.0009847917, -0.0013640248, + -0.0032197116, 0.0002030861, 0.0008199150, 0.0030307621, -0.0030992455, + -0.0006611240, -0.1153507084, -0.0027195823, -0.0016670013, -0.0006464124, + -0.0022010393, -0.0007827266, -0.0028709122, -0.0032509891, -0.0008035246, + -0.0019863732, 0.0006956887, -0.0016125296, -0.0014518886, 0.0025270933, + 0.0008116285, 0.0000433507, -0.0019393670, 0.0020369873, -0.0006357227, + -0.0002092453, -0.0005140183, -0.0024269628, -0.0016552284, 0.0009037890, + -0.0012934401, 0.0020337070, -0.0004423484, -0.0020919126, 0.0022515599, + 0.0017926515, 0.0010624593, 0.0018569035, -0.0004932767, -0.0018252721, + -0.0000027934, -1.2334353924, 0.0031554885, 0.0005165432, 0.0013023515, + 0.0011549189, -0.0021657355, -0.0006383944, 0.0012554398, -0.0003554102, + 0.0005809292, 0.0010122150, -0.0007642239, -0.0011607124, 0.0041510840, + -0.0021926383, -0.0007968893, -0.0018890589, -0.0004327665, 0.0028434666, + -0.0012260433, 0.0035748035, 0.0011927341, -0.0029120231, 0.0002410077, + -0.0006468012, 0.0017762794, 0.0019724914, 0.0015084618, 0.0014043364, + -0.0014140304, 0.0001125648, -0.0026486358, 0.0025102668, 0.0024144095, + -0.0008968241, -0.0008358262, 0.0006573079, 0.0022139605, -0.0008189243, + 0.0009590127, 0.0001950106, 0.0016098220, -0.0021614498, 0.0015523927, + 0.0007564910, -0.0002633408, 0.1880540997, -0.0050618257, 0.0027122090}; + +float unet_input_time_embedding_20_5[] = { + -0.0006209100, -0.0023361752, 0.0016899090, -0.0012345018, -0.0011656727, + -0.0017009759, 0.0007017264, 0.0001906299, 0.0018910745, 0.0002912578, + -0.0026403714, 0.0035816659, -0.0011289231, -0.0052985619, -0.0006928109, + 0.0016438356, 0.0038902974, -0.0003179333, 0.0016618312, -0.0000634440, + 0.0010437057, 0.0059229415, 0.0013492970, 0.0281324144, -0.0011304745, + -0.0036378184, 0.0006101048, -0.0020268271, -0.0049388446, -0.0041907551, + 0.0021660016, 0.0038084961, 0.0025256975, -0.0006012237, 0.0027353985, + 0.0007157191, -0.0005067666, -0.0002186056, -0.0023776665, -0.0002600867, + -0.0019512940, -0.0009468240, -0.0001108819, 0.0015202351, -0.0035290821, + 0.0017449779, 0.0024703415, -0.0033834269, 0.0002334872, 0.0014577892, + 0.0006732065, -0.0017315170, -0.7576141953, -0.0032236651, -0.0009823871, + 0.0030823108, 0.0018705683, 0.0036406717, 0.0047912817, -0.0020712807, + 0.0028047536, 0.0017256435, -0.0026654233, 0.0000827159, 0.0002945140, + -0.0003996473, 0.0001473795, 0.0020975657, -0.0001911391, 0.0002369394, + -0.0004658625, 0.0022587739, 0.0014364950, 0.0018545957, -0.0033912044, + 0.0035142945, -0.0007924661, -0.0023531774, 0.0008488229, -0.0009660360, + 0.0009591640, -0.0014643691, -0.0042279577, -0.0017306972, 0.0022366329, + -0.0014576025, -0.0026116036, 0.0002854198, -0.0000072177, -0.0023086327, + 0.0013590393, -0.0001759622, 0.0007092319, -0.0014121068, 0.0103832427, + 0.0002550045, 0.0014385451, -0.0006389040, 0.0011959590, -0.0030233162, + -0.0011685472, -0.0038065873, -0.0013295743, 1.1822000742, 0.0018835170, + -0.0007592700, -0.0014374382, 0.0003774101, -0.0024122740, -0.0026695291, + 0.0026233750, -0.0021185922, 0.2727846503, -0.0025528595, -0.0010046447, + -0.0011958978, -0.0008873013, -0.0000456416, -0.0013533263, 0.0031187783, + 0.0011379230, -0.0025204374, -2.1344618797, -0.0019152155, 0.0029930603, + 0.0012918781, -0.0003837519, 0.0008300976, -0.0029149083, -0.0015201797, + 0.0015691142, 0.0028364807, 0.0000733968, 0.0021242481, -0.0036828863, + -0.0009575735, -0.0024429539, -0.0031972555, 0.0006522294, 0.0034495182, + 0.0039950926, 0.0027206284, 0.0018046466, -0.0013995953, -0.0007815503, + 0.0001768311, -0.0022962377, 0.0002497733, 0.0010514311, 0.0007046857, + -0.0019620443, -0.0009209736, -0.0023168200, -0.0043437574, 0.0018723547, + 0.0044210036, 0.0001964644, 0.0020889156, -0.0026772562, 0.0022316556, + -0.0012824447, 0.0028630220, 0.0009034155, 0.0016337140, 0.0027850657, + -0.0007161589, -0.0008083687, -0.0011611460, -1.3890153170, 0.0001922075, + -0.0019299722, -0.0044861473, 0.0000418294, -0.0011639439, -0.0003337553, + 0.0003234334, 0.0003478198, -0.0027623922, 0.0035850038, 0.0016585290, + 0.0014208588, 0.0033642957, 0.0037480420, -0.0017514075, -0.0014658703, + -0.0011118189, 0.0040270286, 0.0008139438, 0.0007602596, -0.0034970473, + -0.0006291703, -0.0011231150, -0.0000083708, -0.0036956028, 0.0013783034, + 0.0015346208, 0.0007236657, 0.0017779507, 0.0048111212, 0.0007697088, + -0.0016029747, 0.0043118228, 0.0007517389, -0.0010276062, -0.0007710899, + -0.0016347766, 0.0028021198, 0.0006081779, 0.0003611054, 0.0031505008, + 0.0032854197, -0.0025583948, 0.0029456443, 0.0005528915, -0.0023417633, + 0.0001147212, 0.0000479766, 0.0019275169, 0.0027115014, -0.0009522123, + 0.0018977998, 0.0007660315, -0.0006752892, 0.0467296541, -0.0019998730, + 0.0021812173, 0.0073368279, -0.0010159870, 0.0031962886, -0.0032428754, + -0.0066849170, 0.0031302925, -0.0003807433, 0.0014215559, 0.0045683561, + 0.0000138679, -0.0003603469, -0.0017142831, -0.0026202621, -0.0052843173, + -0.0002301342, -0.0023972502, -0.0014202574, 0.0026922626, -1.4434850216, + 0.0010633178, 0.0001619770, 0.0006004205, -0.0021127635, 0.0004412509, + 0.0007515494, -0.0057370295, -0.0003582179, 0.0026375353, 0.0019495613, + 0.0015014859, -0.0004261648, 0.0027003409, -0.0011437985, -0.0013943663, + 0.0023091435, -0.0024343852, 0.0031565630, 0.0000035440, 0.0038706162, + 0.0033327709, 0.0030327239, -0.0009360779, -0.0009163907, 0.0024062376, + 0.0012918054, 0.0007301399, 0.0006964752, -0.0027227355, -0.0018583790, + -0.0021748806, 0.0025064729, -0.0048070801, -0.0031706663, 0.0014757249, + 0.0653744638, -0.0015201615, 0.0015599522, -0.0009694463, 0.0006946339, + -0.0004089745, -0.0008813483, -0.0017883417, -0.0038626564, 0.0020377608, + -0.0035903715, -0.0028712477, -0.0021198352, 0.0024761802, 0.0029406808, + 0.0016560312, 0.0020521362, 0.0005266997, 0.0032983939, -0.0034006070, + 0.0068774140, -0.0018223578, -0.0002786351, -0.0008039898, 0.0006474454, + 0.0007531778, -0.0021692510, -0.0010134843, -0.0001803264, 0.0013627247, + 0.0017172350, 0.0028391494, -0.0032405059, -0.0008681612, -0.0024158661, + -0.0021819482, 0.0015599331, 0.0018125637, 0.0019626562, 0.0039649718, + -0.0005197439, -0.0013462636, 0.0004051214, -0.0036419630, 0.0002078960, + 0.0006782752, 0.0004789736, 0.0003549810, -0.0875070170, -0.0000355258, + -0.0033628149, 0.0007251510, 0.0004233530, -0.0016440032, 0.0001830405, + 0.0023625419, 0.0005674430, -0.0048285006, 0.0031070183, -0.0016044485, + -0.0014722627, 0.0038241802, -0.0000224577, 2.4541678429, -0.0022677833, + 0.0012169615, 0.0009879662, -0.0000186580, -0.0004155934, 0.0006948357, + 0.0020132246, 0.0051126983, -0.0013783621, -0.0004387442, 0.0002499429, + -0.0015469361, -0.0012684176, -0.0031516468, 0.0000837739, -0.0044627129, + -0.0021467884, 0.0012623393, -0.0014604451, -0.0001069303, 0.0002674138, + -0.0017840068, 0.0014601280, -0.0012352560, 0.0030002631, -1.4514667988, + 0.0010152571, -0.0024958854, 0.0004013749, -0.0002056593, -0.0011850714, + -0.0019393954, 0.0006156524, 0.0019271018, -0.0015089337, 0.0004419349, + -0.0012748267, -1.2322415113, -0.0031219423, -0.0002332474, -0.0007388522, + -0.0010634377, -0.0015774742, 0.0050464449, -0.0016961130, -0.0012797243, + 0.0009915913, 0.0017005539, 0.0004597222, 0.0004781589, -0.0024731234, + -0.0014654011, -0.0018032026, 0.0010167557, 0.0005677207, 0.0052980538, + 0.0022265692, -0.0002713185, 0.0017679010, 0.0014887298, -0.0003380217, + -0.0019355887, -0.0005123048, -0.0004964825, 0.0017843177, 0.0005250098, + 0.0011220239, -0.0067073735, 0.0005198349, 0.0000795348, -0.0004142616, + 0.0012180565, 0.0002910770, 0.0009804564, 0.0018077288, -0.0007222500, + -0.0044178385, -0.0035740293, 0.0002241615, -0.0022326119, -0.0003562858, + 0.0006381744, -0.0004488165, 0.0008334235, 0.0043806331, -0.0017005294, + -0.0000200723, 0.0026917993, -0.0024559924, 0.0009556320, -0.0006365356, + 0.0006707878, 0.0011300594, -0.0000423759, 0.0047513749, 0.0031375492, + 0.0008131694, -0.0006298125, -0.0003158295, -0.0015345549, -0.0005589176, + 0.0016564885, 0.0042599374, -0.0008687642, -0.0003056000, 0.0147130024, + 0.0023964033, 0.0007493664, -0.0026895527, 0.0015042825, -0.0032461775, + -0.0034211725, -0.0017080652, -0.0016341982, 0.0023801727, 0.0003749731, + 0.0022810879, -0.0016681002, 0.0015858966, 0.0036855671, -0.0035049729, + -0.0007333574, 0.0004520831, 0.0006711194, -0.0014978816, -0.0011369218, + 0.0014913944, -0.0030857583, -0.0001881598, 0.0021012283, -0.0008028718, + 0.0134732779, 0.0003277520, 0.0019654757, 0.0012127040, -1.2905758619, + 0.0012940457, 0.0016083014, -0.0039324732, 0.0018670529, -0.0015057724, + 0.0010303549, 0.0013596478, -0.0028973687, -0.0013244976, -0.0012913274, + 0.0018065711, 1.4107059240, 0.0001352029, -0.0042710179, -0.0003008363, + 0.1120507121, 0.0001940858, 0.0008350033, 0.0000397777, -0.0004537823, + -0.0001237695, -0.0011651823, 0.0013422621, -0.0009849160, 0.0009442233, + 0.0010516355, -0.0008474658, 0.0016368096, -0.0030820961, 0.0005115974, + -0.0029038594, 0.0012113899, -1.7417334318, -0.0034132423, 0.0026310827, + -0.0000315062, 0.0008574282, 0.0000808435, -0.0013802140, 0.0008826046, + -0.0024817339, -0.0024972926, 0.0026862500, -0.0024652099, -0.0010855296, + 0.0021953848, 0.0015107349, -0.0053474470, 0.0040684398, 0.0013944367, + -0.0024853528, 0.0000659963, 0.0002338211, 0.0017280343, -0.0018418648, + -0.0007070673, -0.0009564359, -0.0011000850, 0.0019625807, 0.0017128433, + 0.0029328419, -0.0003550677, 0.0030649337, -0.0029333360, -0.0020215721, + -0.0014164960, 0.0019091964, -0.0040185926, -0.0034730667, -0.0022516670, + -1.7096329927, 0.0053965487, -0.0019837273, 0.0036076931, -0.0010203517, + 0.0002821047, 0.0014889545, -0.0047144825, 0.0040528397, -0.0004527317, + -0.0008736844, -0.0026055677, 0.0020866650, -0.0035422910, 0.0002279209, + -0.0020802496, 0.0008112257, -0.0013056239, 0.0000875061, -0.0030804975, + 0.0019887234, 0.0015850989, -0.0020454237, -0.0005683161, 0.0003560833, + -0.0007813601, 0.0053646667, 0.0004796237, 0.0003360822, -0.0014475149, + -0.0019958410, 0.0040222681, -0.0010725711, 0.0019745179, 0.0012099827, + 0.0031900725, -0.0007087220, 0.0000089505, 0.0031888839, 0.0003177142, + -0.0014387482, -0.0055806790, -0.0021795565, -0.0006045252, 0.0021559983, + 0.0024580499, 0.0022369083, 0.0020114477, -0.0023620599, -0.0029148129, + 0.0018494562, 0.0010113260, -0.0015014270, 0.0009723653, -0.0021522257, + 0.0033943907, -0.0006823145, 0.0022875064, 0.0023569474, -0.0009852017, + 0.0009872296, -0.0045797350, -0.0014707698, 0.0019507795, -0.0016990397, + -0.0036330642, -0.0000394600, -0.0048310128, 0.0034211562, 0.0003792879, + 0.0001409347, 0.0015356558, -0.0003095088, 0.0007698936, -0.0013153092, + -0.0006760377, -0.0011902850, -0.0017013669, -0.0016126675, -0.0006928393, + -0.0007814700, 0.0005035670, -0.0031822985, 0.0007840318, 0.0012024273, + 0.0006731534, 0.0015518789, -0.0027260198, -0.0018017907, 0.0005432698, + 0.0000535963, -0.0007644224, -0.0034142369, 0.0006603457, 0.0000827811, + 0.0019851676, -0.0026281830, -0.0005248107, 0.0036633490, -0.0005469192, + -0.0003645906, 0.0062869852, -0.0041885003, -0.0009733010, -0.0013948302, + -0.0003490679, -0.0005581658, -0.0004140427, 0.0015187080, 0.0002212673, + -0.0004303078, -0.0012836298, 0.0022910158, -0.0018937032, 0.0002219132, + 0.0005540680, -0.0000327065, -0.0005470431, 0.0010797943, 0.0010867716, + 0.0011954217, 0.0018706627, -0.0042258725, 0.0006466333, -0.0047375839, + 0.0007971367, -0.0013526886, -0.0051112035, -0.0022012792, 0.0000554128, + -0.0027769988, -0.0000740434, 0.0034607789, -0.0010352737, 0.0013632951, + -0.0019208346, 0.0010597748, -0.0006961727, -0.0016305353, 0.0012273481, + -0.0019298559, -0.0001670681, 0.0013376696, -0.0006866043, 0.0022786697, + 0.0000825799, -0.0045709726, 0.0015996853, 0.0018980361, 0.0043389481, + 0.0008849399, 0.0035839151, 0.0006350852, -0.0013916886, -0.0012633540, + 0.0017772862, -0.0000352385, -0.0022619455, 0.0023121911, -0.0010399919, + -0.0026964359, -0.0143038994, -0.0020338492, -0.0005984465, 0.0008157114, + 0.0010941229, 0.0004004985, 0.0027054893, -0.0006950928, -0.0001261476, + -0.0000527939, -0.0015989146, -0.0004324644, -0.0017317412, 0.0043696826, + -0.0046879263, 0.0040704394, 0.0011884472, -0.0004399051, 0.0019174512, + 0.0037055528, -0.0012341719, -0.0023634180, 0.0007820004, 0.0007694238, + 3.2944822311, 0.0018362431, -0.0023314236, 0.0034018075, 0.0000185855, + 0.0003894153, -0.0020238557, 0.0003210055, -0.0011423917, 0.0013653692, + 0.0024495190, -0.0022088843, 0.0018135385, 0.0024721404, -0.0037632193, + -0.0017152547, 0.0018428590, 0.0010015527, 0.0002552443, -0.0023104225, + -0.0025808662, -0.0006400384, -0.0007356718, 0.0018814399, -1.9562937021, + 0.0021612332, -0.0030340443, 0.0004309788, -0.0001231949, -0.0050175441, + 0.0004813410, 0.0006652685, 0.0019384334, 0.0005806303, 0.0031142514, + 0.0008622631, 0.0039731003, -0.0042909244, -0.0009144798, 0.0006103185, + -0.0039250636, 0.0001987610, -0.0022320729, 0.0004383195, -0.0012888694, + 0.0000414345, -0.0008865035, -0.0005907717, -0.0041592061, -0.0002625515, + 0.0000954098, -0.6902384162, 0.0028122766, -0.0011643842, -0.0021428284, + 0.0005652878, -0.0009876026, 0.0005366376, 0.0032563065, 0.0021583622, + -0.0008715326, 0.0013106586, -0.0009519277, -0.0933557525, -0.0022033667, + 0.0004922996, -0.0023390122, 0.0010987133, 0.0050913626, -0.0008098530, + 0.0013716219, 0.0042885123, -0.0027100870, -0.0028657687, -0.0038967058, + 0.0006267022, 0.0000586526, -0.0020229458, -0.0013825847, 0.0004910300, + 0.0037465342, -0.0005513509, 0.0002814415, -0.0046816887, 0.0007080191, + -0.0028439173, 0.0002261725, -0.0001297476, -0.0027220983, 1.8377488852, + 0.0003672964, -0.0023175080, -0.0003931791, -0.0013043096, 0.0012967340, + -0.0018285539, -0.0022696638, 0.0015045446, 0.0034199229, 0.0027414411, + -0.0039579291, -0.0010954151, 0.0005625351, 0.0031803902, -0.0058894153, + 0.0006121960, -0.0036016526, 0.3204255998, 0.0007266179, 0.0006808680, + 0.0019675749, 0.0048267855, 0.0003073285, 0.0010583783, -0.0013395196, + -0.0019190405, -0.0031451371, -0.0014828967, -0.0000147126, -0.0003258549, + 0.0321191363, -0.0022507710, -0.0022249217, -0.0017875279, 0.0015714271, + 0.0003865543, 0.0013371953, 0.0014884891, -0.0008618532, 0.0024827006, + 0.0006306106, 0.0004299082, 0.0080353403, -0.0017791123, -0.0028503058, + 0.0024069939, 0.0001489078, 0.0009805351, 0.0011767338, 0.0041787601, + 0.0007916510, 0.0014311601, -0.0010698242, -0.0037306226, -0.0033910023, + 0.1646806449, 0.0004054954, 0.0035733795, -0.0006778138, -0.0031399832, + -0.0018925918, -0.0014200290, -0.0026308326, 0.0000707791, -0.0013114933, + -0.0017120016, -0.0000678836, -0.0006907438, 0.0015239171, -0.0022358857, + -0.0011085791, 0.0012670492, -0.0008682505, 0.0031562578, -0.0028029494, + -0.0009201318, -0.0018221831, -0.0011462141, 0.0011919038, -0.0040824171, + 0.0021811277, 0.0033905441, -0.0031676227, 0.0027130400, -0.0027609034, + 0.0007892761, 0.0019684434, 0.0000335714, 0.0002704163, 0.0026091444, + 0.0014217126, -0.0020449166, 0.0016334227, -0.0021205698, 0.0003138934, + 0.0029614568, 0.0046364572, 0.0000315700, -0.0008758004, -0.0003178562, + 0.0035596015, -0.0019753473, -0.0006628754, -0.0022552111, 0.0042753560, + -0.0018197037, -0.0031870671, 0.0002659255, 0.0026268475, 1.7330290079, + -0.0025740338, 0.0011734562, 0.0008525262, 0.0003665702, -0.0007247748, + -0.0033772113, 0.0012477130, 0.0000193175, -0.0034020883, 0.0009439765, + 0.0001566451, -0.0020351247, -0.0018550456, 0.0003305322, 0.0008487892, + 0.0008271681, -0.0012668123, 0.0046897363, 0.0014391397, 0.0012444297, + -0.0011104457, 0.0014899443, 0.0004156178, -0.0015828488, 0.0003779168, + -0.0013533756, -0.0001370511, -0.0002734913, 0.0031921593, 0.0014562365, + 0.0004666348, -0.0026566936, -0.0003726734, 0.0001727515, 0.0015403968, + 0.0016864089, -0.0000025124, -0.0008266807, -0.0005971896, -0.0008391617, + 0.0006699772, 0.0009644264, 0.0023165070, -0.0025611692, 0.0021563629, + -0.0036053832, 0.0005281400, 0.0006288383, -0.0020784489, 0.0034808414, + 0.0008894535, 0.0029830281, 0.0011833259, 0.0031119653, 0.0020414144, + 2.9249393940, -0.0000295229, 0.0007899674, -0.0016590108, -0.0004555089, + -0.0025065795, 0.0001744702, -0.0013018206, -0.0018308852, -0.0004291239, + -0.0033122308, -0.0024685599, -0.0055016880, -0.0002984232, -0.0020562140, + 0.0031039109, -0.0038531516, 0.0037964117, -0.0009591260, 0.0018238304, + 0.0011645537, -0.0032280013, -0.0027960725, -0.0021099467, -0.0017091888, + -0.0012010499, 0.0013391958, 0.0010556832, 0.0019718169, 0.0005744882, + -0.0005125790, -0.0006659797, 0.0016738997, 0.0053465934, -0.0012375596, + -0.0002014722, -0.0020289582, 0.0004879949, -0.0000686769, -0.0000610123, + -0.0006519256, 0.0011637546, -0.0009567067, 0.0035132137, 0.0006911175, + 0.0032181977, 0.0011610598, 0.0035980437, -0.0025172811, -0.0012391843, + -0.0040033241, 0.0019544829, -0.0004017632, -1.6438808441, 0.0000367120, + 0.3273173571, 0.0010547896, -0.0004920610, 0.0030245082, -2.1181941032, + -0.0038946243, -0.0010570101, 0.0005078679, 0.0017004306, -0.0000629229, + -0.0013130333, 0.0008283206, -0.0011279127, -1.8293162584, -0.0011935686, + 0.0016558596, -0.0027040641, 0.0005204183, -0.0069345622, 0.0002931869, + 0.0010324768, -0.0029429155, -0.0009009084, -0.0019885835, -0.0001441757, + -0.0005901931, -0.0019185445, -0.0010000870, -0.0045927553, 0.0001496994, + -0.0005696111, 0.0040447675, -0.0033015464, 0.0003672554, -0.0004360965, + -0.0017077946, -0.0021130776, -0.0002735602, 0.0016945847, 0.0005552943, + -0.0008904866, -0.0024763742, -0.0019259797, 0.0001059971, 0.0008031167, + 0.0003450958, 0.0022589890, 0.0006064395, 0.0025271447, 0.0011846158, + -0.0032601394, 0.0040976857, 0.0001804166, -0.0003864921, -0.0001580711, + 0.0010524467, 0.0011368603, 0.0008364704, -0.0036327909, 0.0054360544, + 0.0035993073, -0.0027006003, 0.0003663702, -0.0023757056, 0.0019302435, + -0.0003846665, -0.0002665985, 0.0003830586, -0.0033055660, -0.0001575984, + -0.0035786107, -0.0009665323, 0.0053977217, 0.0043631098, -0.0022741142, + -0.0017853291, 0.0005411728, -0.0024756757, 0.0028465269, -0.0004466453, + -0.0004806817, 0.0014884886, -0.0010891496, -0.0034041521, 0.0008196975, + -0.0007359730, 0.0015813634, 0.0006291438, -0.0007992871, 0.0021772548, + -0.0010527917, -0.0027963193, 0.0003794275, -0.0013567973, 0.0038371421, + -0.0035468815, 0.0001629898, 0.0038947510, 0.0019910405, -0.0002236599, + 0.0013066381, -0.0011821708, 0.0004797201, 0.0013201954, -0.0002836490, + -0.0040766597, -0.0013977527, 0.0016896632, 0.0007264098, 0.0000157660, + -0.0010584895, -0.0025424678, 0.0003944414, -0.0031564361, 0.0001956127, + -0.0002175581, -0.0011350351, -0.0012285183, -0.0043168645, 0.0027550482, + 0.0035572508, 0.0001748377, 0.0012110928, -0.0010082383, -0.0001841797, + 0.0055930456, -0.0003399446, -0.0006719870, 0.0001868473, -0.0003186311, + -1.3567130566, -0.0047822613, 0.0043189656, 0.0011623244, 0.0050197155, + 0.0040209587, 0.0029777328, 0.0032805635, 0.0001061093, 0.0029330025, + 0.0003791442, 0.0003650604, 0.0025476892, -0.0018417444, -0.0049161785, + -0.0008650814, 0.0026335581, -0.0006661890, 0.0030311178, 0.0039537591, + -0.0016199029, 0.0282975174, -0.0028184911, -0.0031338353, -0.0003559424, + -0.0019927155, 0.0001727324, -0.0001198226, 0.0001762551, -0.0009906292, + -0.0012265597, -0.0010132212, -0.0024632630, -0.0045054718, 0.0006167104, + -0.0010614013, 0.0029660556, -0.0013709837, -0.0013572304, 0.0014686678, + 0.0009035690, 0.0003712624, -0.0001452169, -0.0002540383, 0.0009690244, + 0.0011010880, 0.0009696499, -0.0004363153, 0.0002615284, 0.0021866728, + -0.0012880975, -0.0003363732, -0.0023896927, 0.0034461115, 0.0022249743, + -0.0018756873, -1.3084617853, 0.0035871733, 0.0041104611, 0.0008901486, + -0.0045039244, -0.0018278218, 0.0007909497, -0.0013404407, 0.0002363097, + 0.0000288608, -0.0016757784, -0.0016075262, -0.0022451929, 0.0008990807, + -0.0018966137, 0.0016488583, -0.0010531647, -0.0024709613, 0.0036547827, + 0.0024979897, -0.0023533124, -0.0011687884, -0.0039638882, 0.0030900668, + -0.0020580650, 0.0041281614, 0.0029985737, 0.0003062906, 0.0010555459, + -0.0009060201, -0.0016536838, 0.0015798165, -0.0020394982, 0.0057509588, + 0.0009243083, -0.0039385161, -0.0005628057, 0.0007153441, -0.0021745742, + 0.0027784575, -0.0004515937, 0.0019129242, -0.0011178711, 0.0020728214, + 0.0023024026, 0.0022118585, 0.0962331295, -0.0030113461, -0.0009386397}; + +float unet_input_time_embedding_20_6[] = { + -0.0043082647, -0.0018808797, 0.0049144868, -0.0001711774, 0.0017973131, + -0.0019570328, 0.0003772613, 0.0007381190, 0.0037933595, 0.0019877737, + -0.0027042043, 0.0055392436, -0.0013301801, -0.0024207109, -0.0015329560, + -0.0023256070, 0.0042871735, -0.0020495451, 0.0030501760, -0.0015310822, + 0.0017983299, 0.0062857261, 0.0007922469, 0.0204787273, 0.0000053023, + -0.0011063202, -0.0008641817, -0.0040211561, -0.0018375145, -0.0007281657, + 0.0015912633, -0.0005513337, 0.0015574554, 0.0007226975, 0.0024514575, + -0.0022406136, -0.0004786295, 0.0018687968, -0.0037034564, -0.0003227768, + 0.0013054162, 0.0004071007, -0.0020584590, 0.0002965340, -0.0020822170, + -0.0002819488, 0.0036673034, 0.0023144376, -0.0007281117, -0.0004098453, + -0.0003555948, 0.0019058536, -0.4625823796, -0.0003738399, -0.0017226666, + 0.0034349915, -0.0023014594, 0.0042012581, 0.0018534181, -0.0012913623, + 0.0015159587, 0.0033100876, 0.0004203976, 0.0012314287, 0.0025955113, + 0.0008557346, 0.0001599379, 0.0003059589, 0.0034434274, -0.0021866972, + 0.0009590145, -0.0000772136, -0.0025015960, 0.0000932505, -0.0006410070, + 0.0017069615, 0.0002199486, -0.0037190011, -0.0001111557, -0.0008900987, + -0.0010137311, 0.0010387838, -0.0019656196, -0.0007721391, 0.0003743547, + 0.0023918806, 0.0015546530, -0.0008865646, 0.0014863526, -0.0020559873, + 0.0027514764, 0.0000961400, -0.0001109969, -0.0008994314, 0.0045916918, + 0.0022551161, -0.0028581861, -0.0019306019, 0.0016492880, -0.0004191156, + -0.0007284977, -0.0001772247, 0.0006652400, 0.8617781401, -0.0005326262, + -0.0017282730, -0.0023698132, 0.0008322569, 0.0018464774, 0.0012814794, + 0.0002627186, -0.0014800876, 0.3375933468, 0.0009664688, -0.0000697989, + 0.0012104632, -0.0005514529, -0.0009115536, 0.0007703388, 0.0016271749, + 0.0001299866, 0.0017286434, -2.1843941212, 0.0004268545, -0.0002789441, + 0.0017613755, -0.0016211173, -0.0016859337, -0.0018181880, -0.0022682301, + -0.0043450850, 0.0021116193, -0.0010986326, 0.0010274258, 0.0006623806, + -0.0012046730, 0.0004474141, 0.0004151193, 0.0033205617, 0.0014444795, + 0.0015504637, 0.0025709751, -0.0014709181, -0.0000256035, -0.0008149662, + -0.0005803546, -0.0007382357, 0.0005022446, 0.0016504677, 0.0003666193, + 0.0011345660, -0.0009141130, 0.0008114842, 0.0002065850, 0.0032204012, + 0.0021657837, 0.0017161202, -0.0022504348, 0.0001381272, -0.0003760536, + -0.0013478226, 0.0014733918, 0.0028767372, 0.0022394611, 0.0007447633, + 0.0007569056, -0.0009036111, -0.0005943063, -0.9115108848, -0.0003137176, + 0.0027436223, -0.0009556655, 0.0007344978, 0.0002635605, -0.0016155951, + -0.0007068431, -0.0004648616, -0.0035750698, -0.0016363957, -0.0000440944, + -0.0019592340, 0.0013472522, 0.0047219540, -0.0000363686, 0.0004799808, + -0.0006039185, 0.0028002728, 0.0030731387, -0.0000958270, -0.0031877737, + -0.0000905343, 0.0004980434, -0.0024566981, 0.0017131537, 0.0022823140, + 0.0036315271, -0.0012623806, 0.0014175088, 0.0007304793, -0.0017435518, + 0.0013075257, 0.0038655247, -0.0007765107, -0.0002278499, -0.0006539803, + -0.0000688573, 0.0007252332, -0.0011072555, 0.0000367165, 0.0050311917, + -0.0006074491, 0.0000132411, -0.0021454017, 0.0014605047, -0.0007767449, + -0.0009528915, 0.0019886924, 0.0003164653, -0.0023973961, -0.0002123668, + 0.0028958838, 0.0010435330, -0.0008828093, 0.0724353716, -0.0010165118, + 0.0006550052, 0.0089440336, -0.0022808579, 0.0025541752, -0.0026318906, + 0.0010336372, 0.0006222473, 0.0011833217, 0.0016734279, 0.0009260615, + 0.0005937885, 0.0018735030, 0.0016926462, -0.0001245243, -0.0034835101, + 0.0072058719, 0.0011068236, -0.0017453998, 0.0002121609, -1.4668586254, + -0.0016782854, 0.0020159618, 0.0007721145, -0.0016750535, -0.0033627828, + 0.0009540627, -0.0005207886, 0.0008634087, 0.0019217590, -0.0001788787, + 0.0006439362, 0.0020338004, 0.0008754070, 0.0030574759, -0.0010225297, + 0.0013008229, -0.0021897249, 0.0018697425, -0.0002559709, 0.0016818474, + 0.0036503370, 0.0012037409, -0.0012405314, -0.0010739686, -0.0000025495, + 0.0033926796, -0.0039675673, -0.0036196145, -0.0009308206, -0.0015274573, + -0.0012634082, 0.0021996524, -0.0036984626, 0.0007511927, -0.0000772676, + 0.1409558505, 0.0002194280, 0.0006182204, -0.0010456885, 0.0017807423, + 0.0018956098, 0.0008475860, -0.0026316599, -0.0013835332, 0.0030600186, + -0.0015676188, -0.0016018578, 0.0003289480, -0.0020116635, 0.0016338490, + 0.0022358065, -0.0033594030, -0.0000884724, 0.0013721935, 0.0010861708, + 0.0004330361, -0.0007973535, 0.0008837740, -0.0022252682, -0.0041810526, + -0.0012135520, -0.0004658788, 0.0009769080, -0.0006266581, 0.0044938214, + 0.0000488370, 0.0004367121, 0.0003181857, -0.0004799617, 0.0005147201, + -0.0001274669, 0.0029901024, -0.0004495373, -0.0013180412, 0.0012754784, + 0.0004592428, 0.0004743473, -0.0006009315, -0.0019447543, 0.0003961282, + -0.0017757188, 0.0043832567, -0.0028565857, -0.1930459738, 0.0002598339, + -0.0012028986, 0.0009646318, 0.0013461190, 0.0004220502, -0.0002387227, + 0.0012195511, 0.0026010659, -0.0034161219, 0.0026626079, -0.0021375581, + 0.0000218637, -0.0015172157, -0.0013452682, 2.2851600647, -0.0018320249, + -0.0013926122, -0.0003826147, 0.0006082865, 0.0006776713, 0.0022548907, + -0.0004836423, 0.0025908863, -0.0002386095, 0.0006130449, 0.0007308951, + 0.0012658238, 0.0034582198, -0.0009312079, -0.0000244970, 0.0014152476, + 0.0009515667, -0.0010475232, -0.0000375495, 0.0019898508, 0.0000243852, + -0.0013011009, -0.0000738655, -0.0003289394, -0.0021394696, -1.5318075418, + -0.0000383630, 0.0003076228, -0.0000380897, 0.0011240551, -0.0019181881, + 0.0013850122, 0.0003903170, 0.0031739797, -0.0001688593, 0.0004045963, + 0.0008823416, -0.8461186290, -0.0016511274, 0.0022921469, -0.0011893725, + 0.0004133568, -0.0017969194, 0.0016601542, 0.0016770964, -0.0003696266, + -0.0010596453, 0.0012566886, -0.0003469693, 0.0007067325, -0.0017326847, + -0.0003944044, -0.0007587560, 0.0019810307, 0.0000999304, 0.0003706245, + -0.0007651390, 0.0002514850, -0.0009454226, 0.0013951124, -0.0007983940, + -0.0032963720, 0.0021107858, 0.0042633275, -0.0006023799, 0.0003598984, + 0.0018420573, -0.0014578700, -0.0019825683, -0.0000225931, -0.0002297992, + 0.0020182498, 0.0038306136, 0.0007688302, -0.0012530889, 0.0002642772, + -0.0002470741, 0.0007150702, -0.0018564726, -0.0015898130, -0.0006285533, + 0.0018009557, -0.0004135342, 0.0022108329, 0.0002909992, 0.0007221684, + -0.0004755966, 0.0006193663, -0.0012650106, 0.0027962555, 0.0011273791, + -0.0013578157, 0.0005293321, -0.0018052941, 0.0025782427, -0.0014307445, + -0.0013475325, -0.0000026303, -0.0013094408, -0.0004711680, -0.0000207231, + 0.0000283872, 0.0019863299, 0.0000912077, 0.0026041386, 0.0120187234, + 0.0002101404, 0.0004264731, -0.0002526694, 0.0007126443, -0.0022997824, + -0.0008354653, -0.0017637601, -0.0009613475, 0.0016700337, -0.0008522039, + -0.0012971009, 0.0025736652, 0.0001206382, -0.0000033382, 0.0012348755, + 0.0016853483, 0.0001789639, 0.0019780491, -0.0020433855, 0.0002524494, + 0.0004488728, -0.0002336607, -0.0018775752, -0.0007900663, 0.0001501832, + 0.0165684130, -0.0010056058, 0.0008978337, 0.0007369230, -1.2720378637, + -0.0010613562, 0.0008700825, -0.0007235818, 0.0011975744, 0.0015211010, + 0.0004954013, 0.0001562405, 0.0005267216, -0.0011525671, -0.0018912249, + 0.0007918691, 1.1190305948, 0.0040603220, -0.0001147995, -0.0021706265, + 0.0578013174, -0.0023153750, -0.0025631725, -0.0000390345, 0.0041766390, + 0.0003981241, 0.0002856841, -0.0006787712, 0.0015737130, -0.0008294214, + 0.0007320242, -0.0004369980, -0.0004914637, -0.0011363947, 0.0006463197, + -0.0037044443, 0.0004841145, -1.9042589664, -0.0038782209, -0.0005963218, + 0.0024269819, 0.0003533475, -0.0010539228, -0.0026564025, 0.0014061327, + -0.0005029682, -0.0013689003, 0.0031241290, -0.0007128469, -0.0026589097, + -0.0003611134, 0.0002251741, -0.0023188428, 0.0011514910, 0.0025573196, + 0.0010189691, 0.0015541506, 0.0003718175, -0.0027910445, -0.0026965507, + -0.0005754258, 0.0012142861, -0.0014145684, 0.0012255250, -0.0000437442, + -0.0015787296, -0.0006413562, -0.0015562163, -0.0000945670, 0.0021211854, + -0.0005654474, 0.0012775771, -0.0020128833, -0.0013558241, -0.0002996698, + -1.6929426193, -0.0003638435, 0.0016258955, 0.0003341832, 0.0004529404, + 0.0001091004, 0.0000209063, -0.0000794865, 0.0000475566, -0.0010682009, + 0.0012157457, -0.0019946918, 0.0007803286, 0.0007762257, -0.0008479133, + -0.0002253763, 0.0006718338, 0.0004129380, 0.0021273755, -0.0045083761, + 0.0017127632, 0.0008185720, -0.0001392507, -0.0014074508, -0.0004564510, + 0.0018657083, 0.0010191882, -0.0000180057, 0.0031830096, -0.0029507338, + 0.0001746528, 0.0027078851, 0.0005443739, -0.0019019943, 0.0017687972, + 0.0027674458, -0.0016792561, 0.0012636115, 0.0000235895, 0.0006713234, + 0.0019016167, -0.0003066272, -0.0027824435, -0.0009357184, -0.0049501886, + 0.0030552223, 0.0027141671, -0.0005662525, 0.0016693673, -0.0030684713, + 0.0009686123, -0.0004104851, -0.0018947991, 0.0001832173, -0.0009447427, + 0.0011630387, 0.0000875558, 0.0028843044, 0.0009671570, 0.0016414288, + -0.0002267184, -0.0036715893, -0.0016589388, 0.0015787978, 0.0001221295, + -0.0014711348, 0.0010760382, -0.0018202462, 0.0002778112, 0.0010981972, + -0.0001114528, 0.0007442537, 0.0030264794, 0.0023554638, 0.0000187350, + 0.0004094988, -0.0023368506, 0.0009518650, -0.0008585756, -0.0014429342, + -0.0007696804, 0.0006635762, -0.0040127793, -0.0014682685, 0.0004715326, + -0.0021587526, -0.0023200742, -0.0014763275, 0.0011531636, 0.0015495424, + 0.0003068630, 0.0024625466, -0.0018894698, 0.0001135420, -0.0020314367, + 0.0016930219, -0.0021402109, 0.0004012946, 0.0096337348, -0.0016509048, + -0.0020695806, 0.0079915235, 0.0008960075, 0.0013431129, -0.0006788620, + -0.0006939725, 0.0017009880, 0.0016463958, -0.0000915460, -0.0004991400, + -0.0006396798, 0.0004607206, 0.0013943262, 0.0002468828, -0.0020794268, + 0.0010971678, -0.0017959424, 0.0022634519, 0.0001824808, -0.0009987255, + -0.0012481322, 0.0039634630, -0.0026617537, -0.0016409664, 0.0008163564, + -0.0029384503, -0.0004251249, -0.0016134121, -0.0026305774, -0.0005978527, + -0.0015451334, 0.0020259540, 0.0014641611, 0.0010718005, -0.0013099322, + -0.0014336980, 0.0007727845, -0.0002930018, -0.0009657547, 0.0016625552, + -0.0013474459, 0.0008958308, -0.0016931996, 0.0014382678, 0.0006800271, + -0.0027147741, -0.0026738406, 0.0029795896, 0.0000384988, 0.0050302697, + -0.0001556552, 0.0009814356, -0.0001914077, -0.0022484765, -0.0020563081, + 0.0007109391, 0.0008631889, -0.0021754648, 0.0018753335, 0.0003057375, + -0.0014281217, 0.0038373610, -0.0001444960, -0.0021679671, -0.0003968463, + 0.0010807109, 0.0017487425, 0.0008561249, -0.0005390367, 0.0013044979, + 0.0007979190, 0.0010626991, 0.0006270999, -0.0004104486, -0.0008071240, + -0.0003019613, 0.0046651792, -0.0031667042, 0.0010533943, -0.0002266075, + 0.0017572483, 0.0010576267, 0.0004607441, 0.0021541021, -0.0041371840, + 2.9956164360, -0.0001417259, -0.0016261758, 0.0008312898, 0.0043691453, + -0.0024224767, -0.0042124367, -0.0020305635, 0.0014349530, -0.0015048180, + 0.0037058638, 0.0003944159, 0.0001584050, 0.0029273117, -0.0066195596, + -0.0013328332, 0.0008068837, 0.0013421134, -0.0003682575, -0.0041252584, + -0.0021161800, 0.0002233610, -0.0003593412, -0.0026665151, -2.1606271267, + -0.0002198829, 0.0006704440, 0.0013965764, 0.0010187835, -0.0009222836, + -0.0001199241, -0.0016798744, 0.0005534784, -0.0006857207, 0.0007284624, + 0.0014293310, 0.0043322509, -0.0015705945, -0.0019474037, 0.0009590127, + -0.0040803254, 0.0011250251, -0.0005521365, 0.0022299029, -0.0002870997, + 0.0025621355, -0.0002087372, -0.0011005255, -0.0022157049, -0.0025155584, + -0.0016946401, -0.3004606068, -0.0010383977, -0.0021401206, -0.0002892301, + 0.0052629579, 0.0016422223, -0.0015296394, 0.0003794846, 0.0025033737, + 0.0007251087, 0.0042378297, 0.0011317645, 0.0691001937, -0.0014561815, + 0.0025723926, 0.0002396058, -0.0002830183, -0.0005580313, -0.0006202841, + 0.0012217355, 0.0045132963, -0.0024639496, -0.0002663803, -0.0010267360, + 0.0000574066, 0.0005949528, -0.0018724628, -0.0009228238, -0.0001343838, + 0.0020432030, 0.0026132269, -0.0018859953, 0.0016588254, -0.0004608396, + -0.0017411197, -0.0005171458, 0.0005467223, -0.0012379948, 2.0527522564, + -0.0004281318, -0.0015468064, -0.0000250650, 0.0032552865, -0.0018051569, + -0.0004790502, 0.0010029697, 0.0019023330, 0.0006841084, -0.0018060217, + -0.0023719796, 0.0017163763, -0.0021049427, 0.0035743676, -0.0004485972, + 0.0016103243, -0.0017510667, 0.2016895562, -0.0004599835, -0.0022170381, + 0.0019865646, 0.0006867177, 0.0012226491, 0.0001659100, -0.0032288928, + 0.0008191140, -0.0037421344, -0.0023578550, -0.0011326340, -0.0022553373, + 0.0283627864, 0.0000610380, -0.0007123258, -0.0047280057, -0.0008339179, + -0.0012137131, 0.0009588334, -0.0005987873, 0.0024012649, 0.0005084630, + -0.0016290704, -0.0007504281, 0.0064880075, 0.0004638548, -0.0009998401, + 0.0023610517, 0.0031630634, -0.0020566047, -0.0012592075, -0.0012614285, + -0.0014359963, 0.0011363509, -0.0009047948, 0.0004638017, -0.0031595877, + 0.0946839750, 0.0004322877, 0.0017969888, -0.0019551790, -0.0014655443, + -0.0030009781, -0.0005396283, 0.0028090887, 0.0024756931, -0.0022081779, + 0.0007099276, -0.0007110792, -0.0000605206, -0.0050788973, 0.0009326339, + -0.0019385458, 0.0013685531, 0.0009931797, 0.0008408618, 0.0000257837, + -0.0010220595, 0.0012228671, -0.0001175962, -0.0017686253, -0.0030100448, + 0.0023794807, -0.0015664352, -0.0010208533, -0.0008346853, -0.0032084961, + -0.0018192413, 0.0008368116, 0.0027526813, 0.0009082037, 0.0014877017, + 0.0031517607, 0.0011804327, 0.0013325124, -0.0026533701, 0.0020125045, + -0.0009968281, 0.0020211637, -0.0016745608, 0.0008786791, 0.0008210731, + 0.0000583790, -0.0009362586, -0.0011804993, -0.0015527835, 0.0011992644, + -0.0012520868, -0.0033828013, 0.0027057319, 0.0031184684, 1.6636861563, + -0.0026034943, 0.0015991004, -0.0002075853, -0.0005114179, -0.0011050338, + -0.0009066109, -0.0000932472, -0.0008109058, 0.0027114120, -0.0000272994, + 0.0006602014, -0.0013703196, -0.0005805138, -0.0008662853, 0.0047348249, + -0.0001861989, 0.0010829695, 0.0008150577, 0.0003726180, -0.0013386800, + 0.0014928719, -0.0001602881, 0.0007595012, 0.0000722823, 0.0015471717, + 0.0020359848, 0.0026401686, -0.0021522068, -0.0000584871, 0.0021339450, + -0.0026644373, 0.0015933830, 0.0027717473, -0.0019494030, 0.0003198646, + -0.0010025075, 0.0000523975, 0.0007662688, -0.0009566904, 0.0006180452, + -0.0008859667, -0.0014446233, -0.0005151602, -0.0012585394, 0.0004018387, + -0.0001644208, 0.0002819486, 0.0029948121, -0.0017668945, 0.0009060889, + 0.0013914121, 0.0017509330, -0.0002086679, 0.0009810091, 0.0006843545, + 2.5779008865, -0.0001736693, -0.0012585744, -0.0004346902, -0.0011542263, + -0.0022036356, -0.0001292923, 0.0009260984, -0.0016419878, -0.0014072696, + -0.0002051971, 0.0010651476, -0.0017713620, 0.0005949610, -0.0027157785, + 0.0004861671, 0.0004682387, 0.0003088256, 0.0009868254, -0.0010810229, + 0.0002823658, 0.0029974622, 0.0002190275, 0.0003361953, 0.0012356839, + 0.0016042176, 0.0021275985, 0.0014537487, -0.0014036961, -0.0009129494, + -0.0014039329, -0.0007684331, 0.0007955391, -0.0021874872, -0.0009970833, + -0.0002080902, 0.0012326826, 0.0000576903, -0.0017328744, -0.0009942050, + -0.0000523736, 0.0005394220, -0.0008100793, -0.0002177260, 0.0018068904, + 0.0014244304, -0.0006414442, 0.0016480972, 0.0009504611, 0.0031023994, + 0.0008906908, 0.0022002868, 0.0018839883, -1.7065594196, 0.0010514094, + 0.1874959469, 0.0033427009, 0.0028670542, -0.0023243052, -2.2254946232, + -0.0007803063, 0.0032263473, 0.0017697439, 0.0008104774, -0.0016625300, + -0.0009245628, 0.0015919553, -0.0018716399, -1.7686158419, 0.0012963498, + -0.0018117933, 0.0029097716, -0.0020553768, -0.0002740785, 0.0015278803, + -0.0002025808, -0.0001508635, 0.0010951657, 0.0005982814, 0.0007568165, + 0.0021215258, -0.0014669695, -0.0028831637, -0.0022878773, 0.0028099141, + -0.0037987710, 0.0022753121, 0.0027510589, 0.0006980780, -0.0015378743, + -0.0010837903, -0.0004336371, -0.0018363437, 0.0033482644, -0.0006734480, + 0.0018345960, 0.0012470265, 0.0018514423, -0.0015665912, 0.0019174162, + 0.0019018145, 0.0017614430, 0.0018961560, -0.0008894382, 0.0012185173, + -0.0012020003, -0.0012129494, -0.0002920378, 0.0024722277, 0.0030437149, + -0.0027069021, 0.0023485832, -0.0008949160, -0.0004615951, 0.0020546804, + 0.0014461975, -0.0012906311, -0.0023347205, -0.0010436983, 0.0014801138, + -0.0015730001, 0.0024822187, 0.0013190131, 0.0016712388, -0.0003571888, + -0.0004056059, -0.0001345046, -0.0027321693, 0.0000869646, -0.0006572134, + -0.0012850524, 0.0011896399, 0.0022294144, -0.0012872671, 0.0013568646, + -0.0019554589, -0.0003962545, 0.0003427169, -0.0009649019, 0.0001386409, + 0.0035505099, -0.0029921569, 0.0012210417, 0.0001361533, -0.0004308135, + 0.0012136507, 0.0006432701, 0.0008853051, -0.0029469552, 0.0001747608, + -0.0021484932, 0.0008114306, 0.0013934580, 0.0031536585, -0.0009138850, + 0.0024716160, -0.0013296159, -0.0023127254, 0.0009550760, 0.0017823626, + -0.0014629494, -0.0027167178, -0.0024945717, -0.0007324438, 0.0011603633, + -0.0013618274, -0.0024227928, -0.0008752844, 0.0010651308, -0.0048611988, + -0.0001367806, -0.0004276166, -0.0003277999, -0.0014281292, 0.0025266740, + 0.0000429228, -0.0000809613, 0.0014413449, -0.0003715524, 0.0017275380, + 0.0011685574, -0.0000743016, -0.0010139281, -0.0019823681, -0.0024376824, + -1.1348395348, 0.0040992089, -0.0014746952, 0.0008824625, 0.0026496018, + 0.0016263227, 0.0003822867, -0.0012825967, 0.0002511931, 0.0016395352, + -0.0026371982, 0.0003713899, 0.0024088905, 0.0004617181, 0.0011731139, + 0.0028232308, -0.0005582199, 0.0013789488, 0.0005065762, 0.0006848429, + 0.0006590788, 0.1705099344, -0.0001343929, -0.0010659080, 0.0005417896, + 0.0003504697, -0.0003874854, 0.0003397181, 0.0009656849, 0.0012532668, + 0.0002946472, -0.0001942599, -0.0013385559, 0.0003718263, -0.0014547592, + -0.0025000875, 0.0006421267, 0.0000187261, -0.0014893259, -0.0018753447, + 0.0017603918, -0.0004135231, -0.0025696945, -0.0002289265, -0.0019607004, + -0.0014521691, 0.0002394765, -0.0019525574, 0.0011300305, -0.0014897846, + -0.0014073123, -0.0009013787, 0.0000398410, 0.0013877229, 0.0047533354, + -0.0011843055, -1.3832061291, 0.0021590507, 0.0033180905, -0.0024075489, + 0.0019245108, -0.0025472890, 0.0001253269, 0.0002744279, -0.0011443393, + -0.0022181082, 0.0002106085, 0.0002572968, -0.0022049970, 0.0009784070, + -0.0000975314, 0.0016610831, 0.0005347785, 0.0014198250, 0.0007785363, + 0.0022268333, -0.0023708288, -0.0029586072, 0.0005493682, 0.0003069444, + -0.0006910306, 0.0018617730, 0.0020091576, 0.0019195965, -0.0005497993, + -0.0008789009, -0.0003928090, -0.0011863755, -0.0009239119, -0.0009443676, + -0.0021636044, 0.0014161770, 0.0010237806, 0.0000043222, -0.0031170400, + 0.0003301082, 0.0012243502, 0.0013440896, -0.0002129106, -0.0027806917, + -0.0010844870, 0.0002985601, 0.0111175645, 0.0021789123, -0.0005006485}; + +float unet_input_time_embedding_20_7[] = { + -0.0003974838, -0.0025246916, -0.0004289290, 0.0008820046, -0.0003646577, + 0.0000607749, -0.0006566010, -0.0003940102, 0.0003343124, -0.0020302359, + -0.0022553543, -0.0028957827, 0.0017330348, 0.0014538360, -0.0009837360, + -0.0029941881, -0.0012668427, 0.0016173886, -0.0000810061, -0.0006594830, + -0.0019418329, 0.0024600672, -0.0030569611, -0.0010451786, -0.0003994599, + -0.0015289320, 0.0015386622, -0.0013876483, 0.0026216097, 0.0002299608, + 0.0005153329, -0.0037232363, -0.0016776547, 0.0013395338, 0.0013989084, + -0.0007714038, 0.0015141107, 0.0017121888, 0.0004126830, 0.0016712211, + 0.0027610119, -0.0008658674, -0.0007022801, -0.0035241758, 0.0014271126, + 0.0002113457, 0.0003067981, 0.0030651828, -0.0016592373, 0.0001652052, + 0.0015328806, 0.0023604461, -0.2057297677, -0.0003654156, 0.0025561962, + 0.0012069974, 0.0006224253, -0.0014717879, 0.0017447439, 0.0007490928, + 0.0000991668, -0.0026319479, -0.0003569261, 0.0023891130, 0.0014279932, + -0.0016949838, -0.0000848435, -0.0017405302, 0.0003318125, 0.0024289952, + 0.0000667148, 0.0012236927, -0.0012839257, -0.0003516478, 0.0030119796, + -0.0000710227, -0.0011931788, 0.0026598023, -0.0023626045, -0.0007536535, + 0.0024276250, -0.0000468408, 0.0011797678, -0.0010731104, 0.0012570706, + 0.0002028497, -0.0007465645, 0.0001793964, 0.0005172403, 0.0013249028, + 0.0025003350, -0.0003571045, -0.0009738565, 0.0005085053, -0.0037108953, + 0.0017670132, -0.0020066854, 0.0010860753, -0.0028237910, -0.0002420223, + 0.0003283650, -0.0006141486, 0.0014466504, 0.6005002260, 0.0005975054, + -0.0005700057, 0.0020361701, 0.0007638717, 0.0027382458, 0.0001164875, + 0.0010847175, 0.0005727531, 0.3711043000, -0.0004146080, -0.0008918559, + 0.0019178172, 0.0001426782, 0.0012030054, -0.0000353456, -0.0011881005, + -0.0025158250, 0.0007731442, -2.1611943245, -0.0014214623, 0.0018430483, + 0.0024616476, 0.0019196114, 0.0013994365, 0.0012158933, -0.0016463925, + 0.0026678885, 0.0025677960, 0.0011057390, -0.0021811863, 0.0015939127, + 0.0000989542, 0.0006916749, 0.0000715926, 0.0025536660, 0.0011088867, + -0.0017281361, -0.0002066272, 0.0014658384, -0.0002883971, 0.0011208823, + 0.0041221017, -0.0010854672, -0.0001399070, 0.0006708505, -0.0004095053, + 0.0013904013, -0.0010123634, -0.0008666464, -0.0001358078, -0.0024531507, + -0.0014037048, -0.0023286594, -0.0013915319, 0.0018533589, -0.0016946369, + 0.0001882701, 0.0008561081, -0.0033023115, 0.0007380894, 0.0001686369, + -0.0017549808, 0.0019625332, 0.0047770673, -0.5180436373, -0.0010941818, + 0.0016939846, 0.0005370858, -0.0006979126, 0.0015990674, 0.0010079597, + 0.0001385207, -0.0011795562, 0.0016075596, -0.0002198257, -0.0001640627, + -0.0017815223, 0.0003073411, 0.0036385623, -0.0001036976, 0.0007204162, + 0.0007351930, -0.0005291943, 0.0029697823, 0.0007420424, -0.0004168393, + 0.0008342150, -0.0010771374, 0.0003852571, 0.0024184047, -0.0017997622, + 0.0017254385, 0.0017960543, -0.0019999184, -0.0010501187, -0.0000585658, + 0.0015910715, -0.0024315761, -0.0018644631, 0.0001606261, -0.0017044120, + 0.0009555714, 0.0008685796, 0.0003475519, 0.0034404136, 0.0001630902, + -0.0017857449, -0.0009857710, 0.0027190426, -0.0007169002, 0.0030309113, + 0.0009903731, -0.0012133089, 0.0003591161, 0.0005252097, -0.0006254044, + -0.0023423694, -0.0009395321, 0.0010095441, 0.0475088507, 0.0005132577, + -0.0021476704, -0.0007730452, -0.0017429786, 0.0010406671, 0.0005587963, + 0.0000827275, 0.0005131410, 0.0007207994, 0.0014139367, 0.0004634131, + -0.0014687548, -0.0006600111, 0.0026912633, 0.0012977272, 0.0032366491, + 0.0006527980, -0.0015120823, -0.0024843561, -0.0001080176, -1.5217007399, + -0.0015852826, 0.0000620936, -0.0020172307, 0.0018523959, -0.0003513950, + -0.0005540932, 0.0024540969, -0.0013570725, 0.0016405089, 0.0000073337, + -0.0001005095, -0.0006372263, -0.0010427128, -0.0003490278, 0.0015521304, + 0.0004190188, -0.0004478821, 0.0002182939, 0.0099088261, 0.0009293786, + -0.0006111739, -0.0000860842, 0.0006725769, 0.0016645310, -0.0000230954, + 0.0016849549, 0.0021886190, -0.0009000981, -0.0010319287, -0.0008873930, + -0.0002790520, -0.0016523255, -0.0008928105, 0.0024461704, -0.0012758854, + 0.1971054226, -0.0003541540, 0.0006509797, 0.0010578423, 0.0013123746, + 0.0000975505, 0.0018717046, 0.0007415336, 0.0016157208, -0.0004379544, + 0.0001403774, 0.0009143457, 0.0026087614, 0.0009846957, -0.0005400702, + 0.0016405759, -0.0010465072, -0.0008358918, 0.0022528176, 0.0025859424, + 0.0042844703, 0.0038492929, 0.0010747862, 0.0003087907, -0.0027413431, + 0.0004399107, 0.0025781915, 0.0024209325, -0.0011880016, 0.0038674092, + -0.0007430633, 0.0007870467, -0.0006852199, 0.0000614226, 0.0013695308, + -0.0000955644, -0.0015098822, -0.0017724060, 0.0005929470, -0.0019598813, + 0.0006183602, -0.0007733074, 0.0002188652, 0.0007290719, -0.0015426589, + -0.0014511929, 0.0002368558, -0.0000053586, -0.1836223006, 0.0028274837, + 0.0019968739, -0.0012695305, 0.0010256841, -0.0010164231, -0.0000014626, + 0.0003262353, 0.0002734524, 0.0012677180, 0.0004201154, 0.0004718774, + -0.0000720611, -0.0008044338, 0.0023463320, 2.1066100597, -0.0033507568, + 0.0012458656, -0.0012875543, 0.0000436880, 0.0037009437, 0.0006761086, + -0.0006597596, 0.0006675841, 0.0004987516, 0.0007189838, -0.0012855375, + 0.0003296300, -0.0008170584, 0.0020630667, 0.0024123820, 0.0041257935, + -0.0019480130, 0.0013743490, -0.0005377913, 0.0009287335, -0.0001673537, + -0.0000774243, -0.0020709699, 0.0002985429, -0.0026667952, -1.5949139595, + -0.0001267004, -0.0017063064, 0.0002036667, 0.0013605142, 0.0000539450, + -0.0011161461, -0.0033483345, 0.0017620416, 0.0003335173, -0.0002229246, + 0.0029350352, -0.4206819534, 0.0019525143, -0.0000325083, 0.0026590396, + -0.0007154006, 0.0002928097, -0.0025007483, -0.0014251410, -0.0027723801, + 0.0012744619, 0.0008429735, 0.0016058073, -0.0013972674, -0.0006054169, + 0.0014931378, 0.0017720265, -0.0012374948, -0.0024538334, -0.0008503376, + -0.0005728586, 0.0005819262, -0.0012675577, 0.0004918734, 0.0010126950, + 0.0016725319, -0.0022397866, 0.0025718366, -0.0013542431, -0.0004932107, + 0.0023958157, 0.0013243747, 0.0000998280, 0.0007340152, -0.0009057126, + 0.0002509768, 0.0004689144, -0.0003602374, -0.0035992917, -0.0021483982, + 0.0048674075, 0.0012111741, -0.0003214296, 0.0006582572, -0.0004226984, + -0.0008351714, 0.0020823078, 0.0007651864, -0.0047064768, -0.0001784997, + -0.0007745284, -0.0013707872, 0.0002365678, -0.0012341756, -0.0014127466, + -0.0007516272, -0.0006318642, -0.0008605446, 0.0009921370, -0.0004369456, + -0.0012191990, 0.0016681631, 0.0003397606, -0.0025975013, 0.0020481839, + -0.0002812648, -0.0001778631, 0.0014162008, 0.0001592236, 0.0109185083, + -0.0002742088, 0.0009949571, 0.0001657137, -0.0035699001, 0.0035154135, + 0.0013327058, 0.0009212634, -0.0018643262, 0.0000433354, -0.0017983951, + -0.0018514614, 0.0029076822, -0.0009018005, -0.0023183064, 0.0002621170, + -0.0000060694, -0.0010581301, -0.0005289055, 0.0008259251, 0.0012177024, + -0.0014634740, 0.0008295057, -0.0000792928, -0.0006060482, 0.0003368389, + 0.0141457599, 0.0011881795, 0.0009726912, 0.0010042042, -1.2295404673, + -0.0012805192, 0.0008690869, 0.0019699996, -0.0006246695, 0.0007763350, + 0.0011654665, -0.0000879574, 0.0004094308, -0.0006043534, -0.0003783789, + 0.0010731588, 0.8531570435, 0.0000059227, 0.0014018952, 0.0016049379, + 0.0145566901, -0.0017292080, -0.0006406032, -0.0029033264, -0.0028394326, + 0.0011252910, 0.0001623277, -0.0003419537, -0.0002300898, -0.0027425825, + 0.0008384229, 0.0010323423, -0.0000349794, -0.0022701076, 0.0032327627, + 0.0018523647, -0.0038631512, -2.0425319672, 0.0007092059, 0.0001140257, + -0.0002895677, -0.0020462545, -0.0008222284, -0.0022373465, 0.0019755107, + 0.0018604426, -0.0011228598, 0.0013298535, 0.0012106239, -0.0023824768, + 0.0004226304, 0.0009074791, -0.0017916113, 0.0003501996, -0.0015150076, + 0.0002341268, 0.0003454993, -0.0001271321, 0.0004605686, -0.0024345748, + 0.0031852548, -0.0024874241, -0.0010734084, -0.0013565300, 0.0003599478, + -0.0005107112, -0.0010992954, 0.0005326969, 0.0011681812, 0.0006713304, + 0.0023539201, -0.0003518583, -0.0003606719, 0.0027631754, 0.0022618724, + -1.6723244190, -0.0032924660, -0.0004138844, -0.0015838146, -0.0005534259, + -0.0005673481, -0.0002062712, 0.0007612007, 0.0008854019, 0.0002462459, + 0.0021499889, 0.0001998249, 0.0004670625, 0.0016533760, 0.0006766329, + 0.0012144782, 0.0022596614, 0.0005228599, 0.0016286615, 0.0000382657, + 0.0004467326, -0.0023669405, 0.0001913349, -0.0002362962, -0.0022715060, + 0.0010461910, 0.0004057533, -0.0021029396, 0.0011689770, -0.0000072897, + 0.0028560776, -0.0004321486, 0.0014522439, -0.0003340015, -0.0033564784, + 0.0023485131, -0.0005933749, -0.0027626576, -0.0016911365, 0.0005983477, + 0.0010176772, 0.0017819456, 0.0021928195, -0.0001441222, 0.0006845994, + -0.0019930378, 0.0018465956, 0.0002666577, -0.0017411555, -0.0002432973, + 0.0040339804, -0.0000787498, 0.0067057079, 0.0009414287, -0.0001569714, + -0.0021972868, 0.0002883727, 0.0017093511, 0.0016153146, 0.0013547323, + 0.0009897591, 0.0020367000, 0.0004359176, 0.0007625315, 0.0036383434, + 0.0008418974, -0.0003746746, 0.0012493427, -0.0018921820, 0.0009415916, + -0.0001005111, -0.0014108758, -0.0025022845, -0.0003718743, 0.0005131019, + -0.0021476084, -0.0004976506, 0.0008078178, -0.0008997102, -0.0000081197, + -0.0017049243, 0.0011401656, -0.0009326021, 0.0001487967, -0.0027038520, + 0.0003214171, 0.0018284370, -0.0003851854, -0.0009714835, -0.0003099670, + -0.0007249470, -0.0013313813, 0.0005806063, 0.0016592296, 0.0018180734, + 0.0002376268, 0.0018089972, 0.0021336167, -0.0002095578, -0.0016830815, + -0.0004539594, -0.0020198626, 0.0001884110, 0.0002835817, 0.0017749513, + 0.0000006936, 0.0016967319, -0.0000637285, -0.0009257805, 0.0024758016, + 0.0024400465, 0.0018275944, -0.0007042923, -0.0006007979, 0.0009478792, + 0.0020861588, -0.0016301670, 0.0002469448, -0.0001910799, 0.0008045105, + -0.0008413938, 0.0002220520, 0.0016434134, 0.0021420072, -0.0011665821, + -0.0004269741, 0.0014008839, 0.0015795175, -0.0019862414, 0.0000837022, + 0.0020829893, 0.0006440808, 0.0013065841, 0.0010315977, 0.0014410922, + 0.0013771649, -0.0006685094, -0.0011540547, -0.0007419058, -0.0001700849, + -0.0007061316, -0.0003032424, 0.0003392946, 0.0003343823, 0.0010794690, + 0.0000085144, 0.0039354446, 0.0017889570, -0.0021659390, -0.0012230948, + 0.0028989222, 0.0005734810, -0.0005534783, 0.0023550226, -0.0000632084, + 0.0000191615, -0.0006178874, -0.0019721347, 0.0016110872, 0.0004711265, + -0.0011251578, 0.0018813638, 0.0030592238, -0.0009074546, -0.0014395048, + -0.0029127016, -0.0003583226, 0.0009093583, 0.0008973742, -0.0014277878, + -0.0017350679, -0.0011286242, 0.0014390865, 0.0036896085, 0.0010820909, + 0.0003369381, 0.0030994387, 0.0001493997, 0.0023265048, 0.0015195559, + 0.0032227775, 0.0002007456, -0.0005919072, 0.0018490301, 0.0000397693, + 2.7009234428, 0.0022178553, 0.0000915062, 0.0013313389, 0.0004113102, + -0.0010607690, -0.0013447637, -0.0007904570, 0.0004370614, 0.0019797422, + -0.0000548973, 0.0025212383, -0.0015772124, -0.0002970914, 0.0008771447, + -0.0005355112, -0.0023419722, -0.0005470673, 0.0026215860, 0.0021966181, + 0.0001517879, 0.0008775955, -0.0005202737, -0.0017648744, -2.3211300373, + 0.0015015467, 0.0026151387, 0.0012240326, 0.0017735932, 0.0016733003, + 0.0041015209, -0.0005755465, -0.0002128697, -0.0013082763, 0.0004009083, + -0.0001584459, -0.0031096553, 0.0031319549, -0.0011700087, 0.0015367204, + 0.0019871518, -0.0025824569, 0.0018256316, 0.0011795158, 0.0001109382, + 0.0009684479, -0.0019219279, 0.0006268497, -0.0009136465, -0.0005827867, + 0.0025766813, -0.0610466748, 0.0027612383, 0.0022914177, 0.0047529037, + 0.0002304382, 0.0018122860, 0.0002672178, -0.0011675027, 0.0001915623, + -0.0001000329, -0.0003355825, 0.0009803799, 0.1194641739, 0.0022821426, + 0.0027626846, 0.0025475535, -0.0023511518, 0.0003951089, -0.0003347029, + 0.0034907949, 0.0000974061, 0.0009188377, -0.0021198259, -0.0012933806, + 0.0017392043, -0.0005260252, 0.0027446263, -0.0015744972, -0.0001847297, + -0.0002974528, -0.0016902685, -0.0027144281, 0.0030067565, 0.0015584591, + -0.0001345314, 0.0010978979, 0.0000187550, 0.0012066702, 2.2000691891, + -0.0019439245, -0.0011180283, -0.0020417306, 0.0013363615, 0.0006024879, + 0.0010466736, -0.0003511440, 0.0000337996, -0.0006453688, 0.0011742441, + -0.0008242151, 0.0019907402, 0.0019655037, 0.0010314584, 0.0027276338, + 0.0017999099, 0.0012653773, 0.1100948229, 0.0009987052, 0.0034048250, + 0.0009330316, -0.0019274130, 0.0033894875, 0.0006947983, 0.0015059665, + -0.0005578566, 0.0008537043, 0.0018726831, 0.0029190755, 0.0005450565, + 0.0081619676, -0.0002126419, -0.0007779584, 0.0010558995, -0.0005099569, + -0.0010149372, -0.0001716879, -0.0000790670, 0.0013499936, -0.0010958938, + 0.0027996330, -0.0008072360, 0.0089181280, -0.0005873858, 0.0005308188, + 0.0003353371, -0.0006635259, 0.0027244943, -0.0032787023, -0.0013344255, + 0.0016856573, -0.0009287023, 0.0009490028, -0.0003952327, 0.0003551780, + 0.0399153419, 0.0014586936, -0.0005586343, 0.0008801160, 0.0043083075, + -0.0039374540, -0.0001525916, 0.0030540396, -0.0011498616, -0.0008679890, + -0.0004965868, -0.0013005848, -0.0003049062, -0.0005139788, 0.0003123353, + -0.0029411947, 0.0025477812, 0.0008482077, 0.0004272456, 0.0017472282, + 0.0020332653, 0.0007756227, -0.0020994917, -0.0002349420, 0.0000381989, + -0.0002913391, 0.0024021650, 0.0034129713, -0.0002564215, -0.0025354153, + -0.0029586796, -0.0007077215, -0.0009886734, 0.0019654019, -0.0003414620, + -0.0000876230, -0.0024483814, 0.0009359934, 0.0012389934, -0.0005241300, + -0.0006010318, -0.0001751073, 0.0021081930, 0.0020056604, 0.0004111580, + 0.0002149791, -0.0001632257, -0.0004604228, -0.0020986013, -0.0003533397, + 0.0007789987, 0.0013288584, -0.0001933925, 0.0007732688, 1.5559794903, + 0.0045412974, 0.0026218956, -0.0003260742, -0.0004910380, 0.0014898903, + 0.0005170293, 0.0010046154, 0.0003705439, -0.0005719429, 0.0001600347, + 0.0013526442, 0.0018445109, 0.0109695178, 0.0016744973, 0.0040885811, + -0.0018886109, 0.0003631028, -0.0033855403, 0.0026563746, 0.0000348510, + 0.0014585154, -0.0005293819, -0.0007916579, -0.0009015966, -0.0002241136, + 0.0003351700, 0.0007008174, 0.0007137698, -0.0021282062, -0.0011043334, + -0.0001504428, 0.0000964971, 0.0032101925, 0.0013465728, -0.0005519185, + -0.0017556760, 0.0002065519, 0.0009867520, -0.0006413460, 0.0002989313, + -0.0006460645, -0.0011066101, -0.0015047626, 0.0006077082, -0.0013652509, + 0.0009600888, 0.0032653622, 0.0004256968, 0.0016834852, -0.0014079725, + 0.0009505431, -0.0008451813, -0.0009440514, 0.0014841107, 0.0003195158, + 2.2304055691, 0.0008172113, -0.0029104664, 0.0012821720, -0.0011198954, + 0.0022340927, -0.0002460117, 0.0000349347, 0.0027473988, 0.0029668033, + 0.0016287740, 0.0005801851, 0.0023721964, 0.0035271482, 0.0020989329, + 0.0014069825, 0.0006020777, -0.0006301627, 0.0012354171, -0.0002383483, + 0.0005604215, -0.0001528574, 0.0010420633, -0.0004879385, -0.0008884449, + 0.0009655398, -0.0015472136, 0.0001396204, -0.0013557205, -0.0014967574, + -0.0017218855, -0.0016399554, -0.0024541677, -0.0034201299, -0.0011116802, + 0.0005922740, 0.0013073069, 0.0010710550, 0.0011285671, -0.0001360201, + 0.0003138206, -0.0006372118, 0.0006294008, -0.0002862900, 0.0006403925, + -0.0019744863, 0.0000474188, 0.0014809974, -0.0010088446, -0.0007225135, + -0.0001919568, -0.0016385312, 0.0011753258, -1.7203147411, -0.0013467546, + 0.0804735497, -0.0012120639, 0.0021637999, -0.0018305939, -2.3150913715, + 0.0023675649, -0.0013449891, 0.0024100980, -0.0023405589, 0.0002380018, + -0.0005846759, -0.0004943260, 0.0014994992, -1.6565246582, 0.0003137924, + 0.0000049060, 0.0006619671, -0.0014333419, 0.0094103049, -0.0008967463, + 0.0006159181, 0.0011477182, 0.0004093763, -0.0010496189, -0.0011263876, + 0.0006841016, 0.0013998318, -0.0007223537, 0.0057355179, 0.0011035660, + 0.0013069569, -0.0039206184, 0.0009312483, -0.0003512725, -0.0036591426, + -0.0012463559, -0.0003231394, 0.0028874390, -0.0017461912, 0.0008855157, + 0.0014704864, -0.0000281478, -0.0009565419, -0.0027406109, 0.0020075897, + -0.0007457968, -0.0016675247, 0.0015214384, 0.0010427786, -0.0023295851, + 0.0031649917, -0.0024291985, -0.0018570686, 0.0018463957, -0.0008055144, + -0.0005390327, 0.0017047189, -0.0024684786, 0.0022696438, 0.0016529902, + -0.0019145466, -0.0006121426, 0.0019442597, 0.0021939459, -0.0003249598, + 0.0024039582, -0.0014319485, -0.0011280323, 0.0011599106, -0.0008510360, + 0.0011832397, -0.0005248424, -0.0079371110, -0.0031181187, 0.0014316724, + -0.0010476350, -0.0015463802, 0.0013271146, 0.0021682074, 0.0015830277, + -0.0008521434, 0.0004849271, -0.0003204225, 0.0030656080, 0.0011638994, + -0.0007459624, 0.0003046505, -0.0017019426, 0.0013460852, -0.0002376609, + 0.0012804563, 0.0032970300, -0.0005027148, -0.0001985498, 0.0016216310, + 0.0004726620, 0.0003322307, -0.0007236932, 0.0010748464, 0.0022357134, + 0.0009685764, 0.0003651788, -0.0013939789, 0.0039375788, -0.0031363724, + -0.0006268974, 0.0015237078, 0.0010125963, -0.0006283238, 0.0016202849, + 0.0005107028, 0.0050193174, 0.0006168396, 0.0018180613, 0.0010286681, + 0.0024918646, -0.0000835944, 0.0005324981, 0.0025593573, -0.0039310656, + 0.0019834805, -0.0001678234, -0.0007326794, 0.0019216220, 0.0004230626, + 0.0000860812, 0.0031055284, -0.0019983447, 0.0003425167, 0.0016164635, + -0.8628613949, 0.0013222853, -0.0006368289, -0.0000149362, -0.0007859931, + -0.0007952689, -0.0026501368, -0.0000196349, 0.0013193409, -0.0011328566, + 0.0003163428, 0.0017569123, -0.0022689695, 0.0000326638, 0.0002746354, + -0.0015669880, -0.0023969146, -0.0007117270, 0.0008105319, 0.0010067993, + 0.0007480443, 0.2928184271, 0.0002126291, -0.0010700952, -0.0001105648, + 0.0030829310, 0.0005109312, -0.0003612912, 0.0030811157, -0.0009486945, + 0.0018257508, -0.0006297384, -0.0010442608, 0.0018982831, -0.0027837066, + 0.0014830576, 0.0004240819, 0.0022852863, -0.0009486326, 0.0003000582, + -0.0008039807, -0.0006125318, -0.0021908781, 0.0020183395, 0.0018649697, + -0.0008031304, 0.0000330186, 0.0002974588, -0.0014740061, 0.0019890405, + -0.0008704799, 0.0007666610, 0.0010794085, 0.0017668606, 0.0008629221, + 0.0015721471, -1.4557769299, 0.0013799034, -0.0016784584, -0.0017204001, + 0.0007957853, 0.0032602262, 0.0013109727, 0.0033305360, -0.0011601360, + 0.0014866944, 0.0001216902, 0.0024882224, 0.0018731665, 0.0007203114, + 0.0017167726, -0.0020041429, 0.0029090180, 0.0020787865, -0.0030499743, + 0.0037342208, 0.0001300354, 0.0002439441, 0.0029936484, -0.0028797775, + -0.0003321138, 0.0005125254, -0.0013540280, 0.0000916934, -0.0009831442, + 0.0001105484, 0.0001387424, 0.0000487203, 0.0004556478, 0.0001213122, + -0.0012971093, 0.0017832709, -0.0002668803, -0.0020163525, 0.0020496857, + 0.0009710332, 0.0000495436, -0.0017960556, 0.0023658546, 0.0023584403, + 0.0004259646, -0.0009385874, -0.0308315177, 0.0020264417, 0.0013904249}; + +float unet_input_time_embedding_20_8[] = { + -0.0007704999, 0.0011999658, -0.0009204466, 0.0023156556, -0.0002590783, + 0.0015274808, -0.0001042588, 0.0019972366, -0.0027260487, 0.0012426961, + 0.0018154925, -0.0029528323, 0.0020515169, 0.0013416479, -0.0003917022, + 0.0024013715, -0.0028023226, 0.0006231421, -0.0002336180, -0.0015315728, + -0.0014889077, 0.0004558275, -0.0033355183, 0.0040677376, -0.0010667958, + -0.0008890131, -0.0017932951, 0.0016494663, 0.0002720134, -0.0002268478, + -0.0013163192, 0.0016018456, 0.0017555533, -0.0027695177, -0.0013791076, + -0.0020496477, 0.0009963624, -0.0005251397, 0.0016843015, 0.0002644779, + 0.0018461654, 0.0008279150, -0.0005262177, 0.0002060849, 0.0014261780, + -0.0026590887, -0.0011421661, -0.0000230088, -0.0012778866, 0.0034771005, + -0.0003494518, -0.0012685528, -0.0273159910, 0.0005289312, -0.0035415858, + -0.0016871187, 0.0022092501, -0.0023480169, -0.0007233559, -0.0027154123, + -0.0021459945, -0.0010900495, -0.0016891970, 0.0014218516, -0.0003115213, + 0.0001808451, 0.0007973048, 0.0019524022, 0.0003794301, 0.0005739566, + -0.0004405524, -0.0012939861, 0.0024403993, -0.0008864580, 0.0001623221, + 0.0009028669, 0.0020196927, -0.0024503116, -0.0003012140, -0.0013873952, + -0.0009788480, -0.0006596028, -0.0016913605, 0.0003720568, -0.0011493915, + 0.0009992487, 0.0002043757, -0.0004426809, -0.0009320867, -0.0030277953, + -0.0014039032, 0.0018008403, 0.0002492825, -0.0009939304, 0.0042754360, + -0.0003154385, -0.0014190944, 0.0017558024, -0.0005101480, 0.0009387881, + 0.0015296447, 0.0028519782, 0.0002288613, 0.3882071674, 0.0004298408, + 0.0016397256, 0.0004705382, -0.0001660958, 0.0032846108, 0.0014079325, + 0.0000534989, -0.0016923193, 0.3871320188, 0.0000743000, 0.0012119412, + 0.0008818856, 0.0036108401, -0.0013639831, 0.0003806180, 0.0018976468, + -0.0019569010, -0.0002769118, -2.0071194172, 0.0015449449, -0.0026215678, + -0.0021312693, -0.0015240218, -0.0007692403, 0.0023805359, -0.0010992982, + 0.0004867832, 0.0000616070, 0.0028345373, -0.0028992044, -0.0001024285, + -0.0036819705, -0.0007851443, 0.0009339517, -0.0019890089, 0.0023144176, + 0.0023163918, -0.0030172062, -0.0001848754, 0.0001209099, 0.0013654649, + -0.0036493815, 0.0015738336, -0.0011291099, 0.0003061835, 0.0003287501, + 0.0000585343, 0.0003093729, -0.0005241237, 0.0017930076, 0.0010740287, + -0.0002678144, 0.0000240160, -0.0029227687, -0.0023807567, -0.0010697842, + 0.0008292329, 0.0006921467, 0.0015228391, -0.0021732082, -0.0012876014, + -0.0006669827, 0.0002146255, 0.0003049648, -0.2327538431, -0.0007557010, + 0.0000127481, 0.0023172116, -0.0009194831, 0.0004372013, 0.0005695056, + -0.0037443973, 0.0001544418, 0.0003408948, -0.0032470706, -0.0011214260, + 0.0004338641, -0.0043715788, -0.0011045132, -0.0027170009, -0.0011851098, + -0.0002609240, -0.0017966591, 0.0004422194, -0.0017546774, 0.0022990592, + 0.0008009076, 0.0002090647, -0.0000359142, -0.0008357007, 0.0008129207, + -0.0013465923, 0.0009232761, 0.0023881937, 0.0008491605, -0.0003706510, + 0.0007814849, -0.0027133850, -0.0014249319, -0.0011478732, 0.0001553958, + 0.0025854083, -0.0007969646, -0.0026014075, -0.0025042128, -0.0010092882, + 0.0002662078, 0.0032779379, 0.0001831737, -0.0000158239, -0.0003846101, + -0.0009455876, -0.0015058895, 0.0030737580, -0.0003312429, 0.0005435207, + -0.0009353701, -0.0008944545, -0.0002120992, 0.0244049057, -0.0022313411, + 0.0001968821, -0.0003108326, 0.0013440093, -0.0048399195, -0.0000397442, + 0.0010973243, -0.0006550578, -0.0006835656, -0.0024322760, -0.0009470703, + -0.0000098920, 0.0008054799, -0.0001217062, 0.0004512565, 0.0009428706, + -0.0009414845, 0.0005783811, 0.0032012665, -0.0001278771, -1.5240640640, + -0.0011895134, 0.0006643459, 0.0002145474, -0.0000908347, 0.0011046077, + -0.0003654864, 0.0012584352, 0.0008786763, 0.0012537306, -0.0006707823, + 0.0006027075, 0.0001819581, 0.0004258606, 0.0019575038, -0.0009296736, + -0.0002668230, -0.0008459522, -0.0005612832, 0.0041857115, -0.0000301105, + -0.0028012781, 0.0036631553, 0.0005823225, 0.0018858360, -0.0003648400, + -0.0018585157, 0.0013506503, 0.0012700143, 0.0011751852, 0.0017254918, + 0.0013983133, -0.0017588446, 0.0003399416, 0.0018449482, -0.0005857861, + 0.2214017063, 0.0033359923, -0.0005823727, 0.0017899233, -0.0003095553, + -0.0005476708, 0.0021599773, 0.0020728733, 0.0004898924, -0.0017277300, + -0.0008655692, 0.0011693146, 0.0003699476, 0.0010602942, -0.0031260969, + -0.0026542484, 0.0013903724, 0.0003045811, -0.0024688845, -0.0003016139, + 0.0020575095, 0.0002393478, 0.0027358173, 0.0014185058, 0.0011201764, + -0.0003723893, 0.0000081772, 0.0017524259, 0.0005390365, -0.0005600941, + -0.0012894616, 0.0005854457, -0.0012431790, 0.0002951873, -0.0019889357, + -0.0023045135, -0.0010943826, -0.0027982970, 0.0007785605, -0.0002899934, + 0.0008627062, 0.0000417070, -0.0011753666, -0.0011148988, -0.0022786944, + 0.0014350668, 0.0012709107, 0.0008270084, -0.1111635491, -0.0004633269, + 0.0026127514, -0.0014134157, -0.0011112565, -0.0016177145, 0.0007403002, + -0.0008555758, -0.0007970210, 0.0000132880, -0.0031655931, 0.0000823545, + -0.0004711300, 0.0008516107, -0.0007248272, 1.9207859039, 0.0037301516, + -0.0000298270, 0.0015131425, 0.0011436032, 0.0003723977, -0.0002306130, + 0.0016730269, 0.0028874446, 0.0015525268, -0.0004426995, -0.0007478961, + 0.0001135720, -0.0002316551, 0.0019678986, -0.0000777678, -0.0033161258, + -0.0007401351, -0.0003573075, 0.0014097360, -0.0008060760, 0.0006034722, + -0.0007213627, 0.0014462327, -0.0005464908, 0.0024125194, -1.5798840523, + 0.0036397073, 0.0006225696, 0.0020645824, -0.0012865681, 0.0036754308, + 0.0004712011, -0.0000348485, -0.0011109186, 0.0034022138, -0.0001306678, + -0.0018181804, 0.0358120203, 0.0016480298, -0.0007259916, 0.0018747523, + 0.0013387343, 0.0008362452, -0.0027075065, 0.0022440231, -0.0002410184, + 0.0010315236, -0.0029679444, -0.0006557652, -0.0015323584, 0.0001614301, + -0.0014420734, 0.0004908089, -0.0003171825, -0.0002299496, -0.0000622561, + -0.0016093056, 0.0011527473, 0.0006324416, 0.0011023558, 0.0010089809, + 0.0013593524, -0.0008797568, -0.0001587151, -0.0016593877, -0.0005848547, + -0.0001628113, 0.0015929349, -0.0028474717, -0.0018340892, 0.0015821056, + 0.0009731839, 0.0015836013, 0.0007135464, 0.0013002604, 0.0019181413, + -0.0000907423, -0.0024436282, 0.0010608155, 0.0011240977, -0.0006603552, + 0.0014299368, 0.0026016003, -0.0016549344, 0.0014401509, 0.0012607498, + -0.0029896712, 0.0018141135, 0.0006360153, 0.0015139906, 0.0015767367, + -0.0019218270, 0.0013634679, 0.0034780428, -0.0031409534, 0.0009766512, + -0.0000354550, 0.0020936015, -0.0028691040, -0.0005834152, 0.0003324708, + 0.0010127313, -0.0016948723, -0.0017690053, 0.0017745593, 0.0120033529, + -0.0011004661, 0.0007762499, -0.0012391622, -0.0006264960, -0.0014778210, + -0.0005134009, -0.0020116838, 0.0029254970, -0.0016534235, 0.0016246596, + 0.0019662115, -0.0001633838, 0.0005425980, 0.0019686371, 0.0013656383, + -0.0013289009, -0.0007133861, -0.0027071685, 0.0030526593, 0.0010329797, + -0.0003891259, -0.0002421734, 0.0010427027, -0.0011055388, 0.0007650862, + 0.0036410969, -0.0013448596, -0.0006091412, 0.0007142927, -1.1428781748, + -0.0007360075, -0.0018989358, 0.0040449724, -0.0002999909, -0.0015663775, + -0.0020897435, -0.0015693947, 0.0039623510, 0.0025164853, 0.0006079159, + -0.0008674157, 0.6395570040, 0.0016586822, -0.0013573193, 0.0012701834, + -0.0112511637, 0.0016514296, -0.0005652974, -0.0004584598, 0.0006740658, + 0.0009801988, 0.0029764241, -0.0005625691, -0.0014618342, 0.0028536478, + 0.0004643693, -0.0000591725, -0.0015190217, 0.0031145494, -0.0021166098, + 0.0028289577, 0.0019288687, -2.1345417500, 0.0002100626, 0.0008325538, + 0.0030497853, -0.0008890843, -0.0008644336, 0.0034640227, -0.0035001813, + -0.0022304649, 0.0021251137, -0.0024849405, 0.0019089491, -0.0004909872, + -0.0002449039, -0.0001677374, 0.0006049206, -0.0003438219, -0.0020936867, + -0.0024082821, -0.0009346716, -0.0015414222, 0.0013719222, 0.0006321089, + -0.0000194509, 0.0019520523, 0.0022057486, -0.0016457774, -0.0006099609, + 0.0009416761, -0.0010100985, 0.0005484558, 0.0007909429, 0.0004252293, + 0.0002998123, -0.0011892458, 0.0010100217, -0.0002633394, 0.0002231356, + -1.6420599222, -0.0005129157, 0.0019564694, -0.0006268835, 0.0001768889, + -0.0010031800, -0.0022363891, 0.0041186903, -0.0022261008, -0.0018456271, + -0.0007675411, -0.0001511687, 0.0019409815, 0.0018124888, 0.0018943051, + 0.0003301194, 0.0007475470, 0.0006056209, -0.0018005585, 0.0024150754, + -0.0044679181, -0.0005519264, -0.0004465873, 0.0041253413, -0.0005710614, + 0.0019311318, -0.0009326340, 0.0033632792, -0.0017046309, 0.0015187950, + -0.0016784039, -0.0022476071, 0.0021811198, 0.0008827130, -0.0001313367, + -0.0021723562, 0.0017821230, -0.0012396574, 0.0022047381, -0.0004053987, + 0.0004135118, -0.0007880856, 0.0017450778, 0.0000427915, 0.0021096035, + 0.0003471681, 0.0010307011, 0.0020085690, 0.0031800927, 0.0012834896, + 0.0014543794, 0.0003789845, -0.0034309737, 0.0009536620, 0.0009356777, + -0.0006295368, 0.0011995394, -0.0006042949, -0.0008412275, 0.0022047304, + 0.0006795521, 0.0034165056, 0.0009010392, 0.0006666142, 0.0001300471, + 0.0002113213, 0.0014978200, 0.0013998761, 0.0015745922, -0.0001371640, + 0.0005536107, -0.0030653761, 0.0021385509, -0.0008774465, 0.0005205213, + -0.0011389526, 0.0012881095, -0.0000598079, 0.0007242938, -0.0002119998, + 0.0004303653, -0.0020431133, -0.0016281930, 0.0005082593, -0.0016517350, + -0.0008157464, -0.0022332554, 0.0019028903, 0.0000533285, -0.0013361168, + -0.0027164123, 0.0009862327, 0.0015339942, 0.0005396102, -0.0004349677, + 0.0002464649, 0.0007783975, 0.0005550052, -0.0011964105, -0.0000829492, + 0.0017446809, -0.0005576955, 0.0025959497, -0.0003136401, 0.0035119732, + -0.0021423420, -0.0022421279, -0.0008384530, 0.0014919981, -0.0005473089, + 0.0024675541, -0.0002533901, -0.0007098635, -0.0010133045, -0.0005164896, + 0.0006969273, 0.0004709592, -0.0019349647, -0.0025099886, -0.0010290615, + -0.0018882186, -0.0016343675, -0.0001807117, -0.0002685599, 0.0003833007, + -0.0010617925, 0.0009853725, 0.0006011520, 0.0017553847, 0.0025781333, + 0.0015866954, -0.0005195383, -0.0019791760, -0.0010618080, -0.0029761698, + -0.0012150872, 0.0006530737, 0.0029671967, 0.0045817364, -0.0023910822, + 0.0006703376, 0.0027996469, 0.0010999145, -0.0022692697, -0.0031139455, + 0.0026921118, -0.0002448480, -0.0026295655, 0.0010691031, -0.0006785896, + 0.0008971847, 0.0008349854, -0.0018382615, 0.0020759802, -0.0001722863, + -0.0015429934, -0.0006759837, 0.0030977488, -0.0038745461, -0.0006170292, + 0.0007624067, -0.0129747940, 0.0005325024, 0.0013948502, -0.0000874242, + 0.0004426111, 0.0015160218, 0.0006803135, 0.0021303857, -0.0018390887, + 0.0010232227, 0.0010169684, -0.0023496454, 0.0028485544, -0.0035446878, + 0.0004821578, -0.0041520568, -0.0004709256, -0.0001487345, 0.0001847271, + -0.0030691903, -0.0009795697, -0.0015954002, -0.0020172889, 0.0001098984, + 2.4015460014, -0.0042432011, 0.0010558479, -0.0008884751, -0.0015384767, + 0.0013598539, 0.0018714294, 0.0007458562, -0.0013700798, -0.0006089043, + -0.0023889313, -0.0006578878, 0.0015851307, 0.0004765070, 0.0015484197, + 0.0023631481, 0.0003452434, -0.0002675978, -0.0022161491, -0.0006235435, + 0.0017402950, 0.0010632239, 0.0036743144, 0.0012479466, -2.4006395340, + 0.0007700832, -0.0032633890, -0.0020917184, -0.0010455591, -0.0009170067, + -0.0019683181, -0.0008221794, -0.0022128634, -0.0001490135, -0.0012213355, + -0.0016752463, -0.0025921008, -0.0008525494, 0.0000387093, 0.0008547031, + 0.0012295595, -0.0016061421, 0.0014673565, -0.0017065690, -0.0004212493, + -0.0010955329, 0.0007360474, 0.0001451999, 0.0049924492, 0.0019660029, + 0.0035094260, 0.0622355677, -0.0006973292, 0.0031410912, 0.0001679067, + -0.0026643262, 0.0000949332, -0.0010479339, -0.0011573238, 0.0002731636, + 0.0003838520, -0.0020309947, -0.0014894927, 0.0906296074, 0.0013715706, + -0.0007035689, 0.0000300519, -0.0001619529, 0.0000061961, 0.0009683277, + -0.0001565723, -0.0029134476, 0.0032221978, 0.0030710085, -0.0010994732, + -0.0020898962, 0.0002869130, 0.0010793820, 0.0015500325, 0.0017189933, + -0.0016639116, -0.0025936347, -0.0013950933, 0.0006037681, -0.0009026972, + 0.0002984703, -0.0022455817, 0.0025159481, 0.0002812941, 2.2661964893, + -0.0006233724, -0.0002014383, 0.0004759423, 0.0013099948, 0.0010274982, + 0.0020725930, -0.0011645444, 0.0017187679, -0.0000729703, 0.0007869676, + 0.0014839291, -0.0005936655, 0.0018964414, 0.0006683902, 0.0012665744, + -0.0019938932, 0.0010929352, 0.0410460085, -0.0005837609, -0.0003254747, + -0.0007515624, 0.0030478430, 0.0004582343, 0.0004482148, -0.0004329870, + 0.0034700092, 0.0021585932, 0.0015173688, -0.0022146101, 0.0060458714, + -0.0068015996, -0.0000364212, 0.0008717766, 0.0008630250, -0.0004933407, + 0.0014387763, 0.0021113153, -0.0000132807, -0.0006342659, 0.0011555008, + -0.0018644426, 0.0005947505, 0.0041143741, 0.0004203904, -0.0003170857, + -0.0016937428, 0.0024373201, 0.0004983437, 0.0030414641, -0.0021191086, + -0.0007382086, -0.0000329395, -0.0012211553, -0.0005789058, -0.0000935649, + 0.0164472461, -0.0019428703, -0.0012476742, 0.0021721125, -0.0001069794, + 0.0031730460, 0.0018661339, -0.0037098480, 0.0005514484, -0.0007025051, + 0.0018969774, -0.0000406671, 0.0014627317, 0.0003364470, -0.0007642037, + 0.0014716696, -0.0008249388, 0.0004449774, -0.0002154461, 0.0020008460, + -0.0010442934, -0.0000000075, -0.0004604375, 0.0002407227, -0.0007892586, + 0.0000456828, -0.0010818252, -0.0005866407, 0.0002075620, 0.0047862846, + -0.0000334445, -0.0032227230, 0.0021841507, -0.0032719120, -0.0010811980, + -0.0010827167, 0.0004443116, 0.0002808857, 0.0011362801, -0.0001637500, + 0.0006037131, -0.0031254757, 0.0013459092, -0.0036025746, 0.0010124953, + -0.0018673157, -0.0009494140, 0.0017274804, 0.0011901978, 0.0002801194, + 0.0012633065, -0.0005246086, -0.0004991964, -0.0030827438, 1.4358909130, + 0.0033087011, 0.0002261857, -0.0005721264, -0.0005393547, 0.0003847517, + -0.0021104664, -0.0000293419, 0.0010356270, 0.0016464205, -0.0017950363, + -0.0023215837, 0.0002167788, -0.0000271928, 0.0005820021, 0.0001684274, + 0.0016556487, 0.0004601517, -0.0012741499, -0.0014896295, -0.0031006054, + -0.0010997066, -0.0009348751, 0.0003087369, -0.0017154531, -0.0013540541, + -0.0008342490, -0.0014375787, 0.0007003858, -0.0051834527, 0.0009466717, + 0.0032985040, 0.0018612696, -0.0027575484, -0.0024845251, -0.0005135080, + 0.0008382092, 0.0004041152, -0.0007963093, -0.0011023469, 0.0015621893, + -0.0004811715, -0.0010350121, -0.0011252309, 0.0001233601, 0.0006192999, + -0.0001381107, -0.0003656158, -0.0011899886, 0.0002685725, 0.0011420310, + 0.0005657672, -0.0019891490, -0.0001390423, -0.0025697416, 0.0012971940, + 1.8822691441, 0.0003717472, -0.0002348367, 0.0032116331, 0.0005058222, + 0.0024080728, 0.0005630264, 0.0007536188, 0.0005369363, 0.0019251972, + 0.0016624958, 0.0000980515, 0.0015542279, 0.0006109760, 0.0023861038, + 0.0005376311, 0.0021201526, -0.0010214085, -0.0017893014, -0.0012693792, + -0.0022344128, 0.0005631911, -0.0025537983, 0.0019157585, -0.0007484276, + -0.0003366652, -0.0009106118, -0.0023705040, -0.0006975520, 0.0013534348, + 0.0002383138, 0.0009406630, -0.0032743970, 0.0007690091, -0.0014856919, + -0.0000097833, -0.0007459699, 0.0002561877, -0.0003456729, 0.0009752493, + 0.0020573211, 0.0018670876, -0.0010523852, -0.0010719798, 0.0002628944, + 0.0004945728, -0.0006413613, 0.0002658557, 0.0007497881, -0.0013351063, + 0.0008378262, -0.0037462946, 0.0003620810, -1.6954530478, -0.0008534656, + 0.0097770635, -0.0026022240, -0.0012275237, 0.0024696637, -2.3209295273, + 0.0009794957, -0.0017541777, 0.0007654130, -0.0004818393, -0.0002798147, + -0.0006307615, 0.0004024003, 0.0020834194, -1.4802647829, 0.0001585218, + 0.0012964450, -0.0006970938, 0.0022255466, -0.0016968488, -0.0008869460, + -0.0019574561, 0.0016383585, -0.0015083617, 0.0016181599, -0.0007790658, + 0.0013550287, 0.0004599183, 0.0015313271, -0.0021309997, -0.0006860062, + 0.0003948524, -0.0023839872, -0.0010129097, -0.0038242261, 0.0025952328, + 0.0018461044, -0.0000341993, 0.0018396191, -0.0005760822, 0.0016200959, + -0.0004100997, 0.0011914248, 0.0020598881, 0.0033072317, -0.0002753157, + 0.0007331108, 0.0002455795, -0.0013224166, 0.0000334103, -0.0031690691, + 0.0008550119, -0.0004995209, 0.0008005661, -0.0004911267, -0.0012944844, + 0.0029699327, -0.0034619682, 0.0024385271, 0.0007353364, -0.0006145255, + -0.0013303601, 0.0006980720, -0.0006995667, 0.0007649576, -0.0002659516, + 0.0017922781, -0.0014207121, 0.0002968486, -0.0017713709, -0.0006439830, + 0.0004345579, 0.0007632913, -0.0007801488, -0.0008991356, 0.0016121119, + -0.0009459420, -0.0011094968, 0.0009541395, 0.0008958308, -0.0009424933, + 0.0017497931, -0.0012550124, 0.0008550400, -0.0005117436, 0.0014067353, + -0.0006526848, 0.0004728492, -0.0005999161, -0.0009830948, 0.0011399379, + 0.0014047858, 0.0004258091, -0.0003525474, -0.0002751304, -0.0008442965, + 0.0024011356, -0.0022633737, -0.0041409386, 0.0014954756, 0.0002332474, + -0.0021666232, 0.0020687948, 0.0026696748, -0.0021614085, -0.0000613721, + -0.0011304724, -0.0007843241, 0.0010638321, -0.0000165541, -0.0000944439, + 0.0002227970, -0.0000816477, -0.0003574908, -0.0016064392, 0.0009733218, + -0.0011812116, 0.0001069928, 0.0021790978, -0.0010641757, -0.0033823135, + 0.0006986745, 0.0014521810, -0.0025366324, -0.0003399608, -0.0014947541, + 0.0004362492, -0.0003206967, 0.0017534595, -0.0004878384, 0.0002967454, + -0.5766999722, -0.0014839489, 0.0006207331, -0.0001677178, 0.0016745131, + -0.0001606964, -0.0005449748, -0.0031242559, 0.0013106177, 0.0017433646, + 0.0000525280, -0.0004580842, -0.0003637252, 0.0008291120, 0.0016983249, + -0.0008086560, 0.0009957487, 0.0011592014, -0.0000728639, -0.0015900019, + 0.0008160551, 0.3917968869, 0.0020217465, -0.0021570101, -0.0006825582, + -0.0007997430, 0.0015728225, 0.0002821069, -0.0012921505, 0.0013524471, + 0.0015491098, 0.0008273907, -0.0009110165, 0.0009590224, 0.0025606107, + 0.0003504823, -0.0007778057, 0.0018767719, 0.0004804069, 0.0008169618, + -0.0015869278, -0.0023448709, -0.0013796063, -0.0000967388, 0.0018377705, + -0.0013809085, -0.0022224677, 0.0033163968, -0.0001993096, 0.0022667069, + -0.0010011793, -0.0002461700, 0.0008892980, -0.0000893081, -0.0024623685, + 0.0008517733, -1.4898587465, 0.0019646976, -0.0016062777, 0.0011376480, + -0.0004856910, -0.0004982601, -0.0008387554, -0.0014526804, 0.0008080357, + -0.0025769132, 0.0003588708, 0.0001699621, 0.0012878417, 0.0016233921, + -0.0001184084, 0.0004211577, -0.0017410074, -0.0001977463, -0.0017250599, + -0.0024030916, 0.0021358142, 0.0020091697, -0.0021179761, -0.0014639371, + 0.0016613891, 0.0005573048, 0.0004726802, -0.0026586363, 0.0002498161, + 0.0004469859, -0.0003704219, -0.0010355511, -0.0011712228, -0.0012635984, + 0.0019138926, 0.0008332259, -0.0026692678, 0.0001381332, -0.0005561912, + -0.0006044586, 0.0015936699, -0.0003357703, 0.0014140811, 0.0007219855, + 0.0013491632, -0.0001604799, -0.0307675432, -0.0023926694, 0.0012761211}; + +float unet_input_time_embedding_20_9[] = { + -0.0016819444, -0.0011273227, 0.0006279387, 0.0000403504, 0.0005147250, + -0.0012462600, 0.0017412205, -0.0014232881, 0.0003412929, -0.0019801811, + -0.0005654313, 0.0009863796, -0.0006417036, 0.0002674707, 0.0016231667, + 0.0026711933, 0.0024897465, 0.0005721690, 0.0014295900, 0.0001319060, + 0.0020920727, -0.0004043253, 0.0032185782, 0.0116398558, 0.0012346816, + 0.0006802597, -0.0004615150, -0.0002097245, -0.0021261778, 0.0005509257, + -0.0011098067, 0.0008957318, 0.0009073876, 0.0022176346, -0.0007977723, + 0.0019872091, 0.0001471369, -0.0032194525, 0.0012524659, 0.0013158983, + -0.0016754083, -0.0006757141, 0.0001313486, 0.0045456337, 0.0008810940, + 0.0002673839, -0.0040758899, -0.0024886914, 0.0007693088, -0.0013981655, + 0.0016570520, -0.0016493172, 0.0802135170, 0.0002439446, 0.0016774752, + -0.0022869948, 0.0006259306, 0.0014385064, -0.0009518815, -0.0031739413, + 0.0008945328, 0.0014657277, 0.0003632731, 0.0003769067, -0.0021708894, + -0.0012340597, 0.0003389898, -0.0000482794, -0.0007753940, 0.0013402139, + 0.0001728446, -0.0017537724, 0.0016069110, 0.0000318084, -0.0008247555, + -0.0019261581, -0.0022335160, -0.0015304359, 0.0027935442, 0.0003157558, + 0.0002713834, 0.0024482124, 0.0012560440, 0.0002436382, -0.0013823824, + -0.0018139612, 0.0029459456, 0.0001722511, 0.0018219920, 0.0017477381, + -0.0017607756, 0.0018432927, 0.0018210215, -0.0011517048, 0.0017647385, + -0.0012878315, -0.0012703366, 0.0013940372, 0.0018983262, -0.0014300263, + -0.0003125039, -0.0011008475, -0.0003028694, 0.2284902632, -0.0022985470, + 0.0015146369, 0.0006223614, -0.0016284762, -0.0053213690, 0.0000654832, + 0.0004628873, -0.0000429004, 0.3765920103, 0.0020479131, -0.0000351239, + -0.0006629513, 0.0030543115, -0.0017199928, 0.0002800878, 0.0013448789, + 0.0004336927, -0.0003248805, -1.7479285002, -0.0001536268, 0.0000078399, + -0.0017335091, 0.0016282215, 0.0016183667, -0.0011375775, 0.0007564914, + -0.0010876372, -0.0024706451, -0.0024061862, -0.0007998776, 0.0018212934, + 0.0027927223, -0.0013907892, 0.0003657574, -0.0019806717, -0.0034264112, + -0.0010815265, 0.0020696428, 0.0008420567, 0.0013784380, 0.0010226003, + -0.0001737648, 0.0016115077, -0.0013390621, -0.0018794676, -0.0016167401, + -0.0002192138, 0.0008744692, -0.0007729516, 0.0011425070, -0.0008806852, + 0.0012575283, 0.0011518495, 0.0014704214, -0.0009076204, -0.0000791694, + -0.0003186979, 0.0004290055, -0.0015750621, -0.0022285758, 0.0005597142, + 0.0006274944, -0.0000660948, -0.0033775698, -0.0840614364, -0.0018575394, + -0.0003167250, -0.0014141533, -0.0004624063, -0.0004847873, -0.0030743564, + 0.0003501014, 0.0024962989, -0.0011068853, -0.0017422871, -0.0010696929, + 0.0014455258, -0.0030624755, -0.0054421164, 0.0022031998, 0.0004513403, + -0.0018485491, 0.0007818779, 0.0014700140, -0.0008068681, -0.0012184770, + -0.0006137074, 0.0017377916, 0.0019833914, -0.0013595710, 0.0011259764, + 0.0010704226, -0.0018485571, -0.0011292882, -0.0001668291, -0.0021882532, + 0.0002647750, -0.0011603255, -0.0003778003, 0.0005269649, -0.0024495707, + -0.0032585105, -0.0008865946, -0.0003533149, -0.0010843719, 0.0028610895, + 0.0002161753, -0.0005022590, -0.0011286021, 0.0009659490, 0.0001363559, + 0.0013754070, 0.0014035171, -0.0014853363, 0.0028442275, 0.0000018323, + -0.0017782068, -0.0013229128, -0.0018371881, -0.0103090210, 0.0012923845, + 0.0002719923, 0.0022006156, -0.0001338774, 0.0014694866, -0.0001003547, + -0.0008800840, -0.0001560189, 0.0009320816, -0.0000802628, -0.0003294665, + -0.0000791056, -0.0010710317, -0.0018385686, 0.0005994253, -0.0023826538, + -0.0033730080, -0.0002381403, 0.0002429329, 0.0002216566, -1.5064824820, + -0.0000981779, 0.0002444689, -0.0013227715, 0.0005902513, 0.0009221551, + 0.0010267226, -0.0014405870, 0.0013226005, -0.0023018857, 0.0011846218, + 0.0001417773, 0.0002919086, -0.0003290320, -0.0005151380, -0.0023059798, + 0.0007311348, 0.0008501101, -0.0013376053, 0.0058682826, -0.0013264682, + 0.0009695250, -0.0003177430, -0.0017346363, 0.0001393473, -0.0025048102, + 0.0007275427, -0.0031155595, 0.0032637627, -0.0018780320, -0.0000697861, + 0.0027323039, 0.0001042616, 0.0021018628, -0.0006566280, 0.0001294329, + 0.2274864167, -0.0018755514, -0.0021771686, 0.0004107486, -0.0021394021, + -0.0007294966, -0.0018315148, -0.0020164966, -0.0007688100, 0.0006297054, + 0.0017717463, 0.0005921891, -0.0000691947, -0.0018419635, 0.0009374241, + 0.0028135772, 0.0003737742, 0.0021044305, 0.0001128456, -0.0015734248, + 0.0051470846, 0.0000396774, 0.0004257545, -0.0018065760, 0.0028597817, + -0.0014592265, 0.0018665893, -0.0015474865, 0.0001171213, 0.0009043640, + -0.0000000669, 0.0006009254, 0.0019395344, -0.0017369385, 0.0016938369, + -0.0001545693, 0.0003750125, 0.0013342421, -0.0002888069, -0.0018555527, + -0.0012290764, 0.0009812845, 0.0023117673, -0.0012148833, 0.0002057560, + 0.0007562223, -0.0015119873, -0.0023608492, -0.0242088996, -0.0010676035, + -0.0007308701, 0.0002638548, 0.0022267583, 0.0006999127, 0.0012816316, + -0.0017943648, -0.0019584128, 0.0006721684, 0.0020981929, 0.0005831816, + 0.0038808696, -0.0004889630, -0.0034807099, 1.7288337946, -0.0006221810, + -0.0014172099, 0.0021787505, 0.0003690097, -0.0017272010, -0.0005953718, + 0.0006344691, -0.0008829366, -0.0008151317, 0.0024400447, 0.0013430218, + 0.0017472813, 0.0004533792, -0.0026730578, 0.0007447582, 0.0030495604, + 0.0019524638, -0.0011041309, -0.0018126904, 0.0007512518, 0.0006015379, + -0.0000879772, 0.0036754352, -0.0011864351, 0.0001837909, -1.5099741220, + 0.0000453256, -0.0004416481, 0.0015234707, -0.0002019312, 0.0004271821, + -0.0006872124, 0.0024191167, -0.0005397543, -0.0011430026, -0.0002225488, + -0.0024911822, 0.4835434258, -0.0011069507, 0.0004960457, -0.0019120937, + 0.0004580431, 0.0015268908, -0.0020872508, 0.0020662802, 0.0009091389, + -0.0003663567, 0.0023202617, 0.0025428864, 0.0007894265, 0.0004261944, + 0.0012235441, -0.0024823705, -0.0004183558, -0.0020571933, -0.0000241250, + 0.0035602564, 0.0016853572, 0.0000378296, 0.0011054887, -0.0010239100, + -0.0020250040, 0.0030678469, -0.0037968541, -0.0009348791, -0.0026011849, + -0.0018322165, 0.0013556684, -0.0009098791, -0.0029712054, -0.0018532402, + 0.0002246837, -0.0010489458, 0.0003937412, 0.0032156100, 0.0009610760, + -0.0012786919, -0.0005731394, -0.0016844198, -0.0007408643, 0.0000312869, + 0.0003828569, 0.0002697529, -0.0009187682, 0.0031433275, 0.0015426087, + 0.0005222461, -0.0006700731, -0.0009642860, 0.0012306401, -0.0004633869, + -0.0015939344, -0.0005594315, 0.0007286123, 0.0010432322, 0.0006069944, + -0.0010877331, -0.0025566167, 0.0028458340, 0.0017679923, 0.0027841670, + -0.0000442415, -0.0007234146, -0.0008283728, 0.0012505306, 0.0080298474, + 0.0004340871, 0.0012965146, 0.0008222240, 0.0030624019, -0.0006344586, + -0.0000629690, 0.0012513688, 0.0008077882, 0.0005415687, 0.0005970583, + -0.0022886042, -0.0035856972, 0.0013485153, 0.0012333043, -0.0001929058, + 0.0008060820, 0.0003404282, 0.0012326604, -0.0035568872, 0.0000433587, + -0.0009519106, 0.0026931930, 0.0012561795, -0.0021816914, -0.0021139048, + -0.0025981851, 0.0000844495, -0.0012090203, -0.0006150315, -0.9860816002, + -0.0012363880, 0.0005400255, 0.0008030068, -0.0015776281, -0.0012340045, + 0.0009922121, 0.0008238347, -0.0004492896, 0.0015949472, 0.0008501199, + 0.0006050072, 0.4683673084, 0.0006898828, -0.0004812931, 0.0007765363, + -0.0076266010, 0.0000875359, 0.0013718293, -0.0006305273, -0.0002756938, + -0.0007957048, 0.0004452225, 0.0021467004, -0.0020278939, 0.0021427376, + -0.0010603524, -0.0010995129, -0.0003225567, 0.0001459611, 0.0001284289, + -0.0031973885, 0.0009392481, -2.2340805531, -0.0005920120, -0.0020790254, + -0.0016018315, -0.0009206352, -0.0011847299, 0.0016352856, 0.0015282598, + -0.0007446031, 0.0000272579, 0.0013187100, -0.0019250689, -0.0001571700, + -0.0005989485, -0.0002780731, 0.0004705884, -0.0026460928, 0.0020933989, + -0.0001586538, 0.0016769990, -0.0013989806, -0.0022081730, 0.0022963362, + -0.0013249300, -0.0008367368, 0.0011437749, 0.0010247296, -0.0020947489, + 0.0026113051, 0.0006316151, -0.0015178677, 0.0007762443, 0.0002953443, + -0.0018879459, -0.0014180117, 0.0002382984, -0.0002215747, -0.0001634983, + -1.6308507919, 0.0026423186, -0.0022056997, -0.0015080832, 0.0016538850, + 0.0007302208, 0.0042657237, 0.0001124172, 0.0037406362, -0.0009224662, + -0.0012755860, 0.0010617449, -0.0031165141, -0.0007984927, -0.0024533686, + -0.0009432593, -0.0009664553, 0.0004766905, -0.0001621656, 0.0028455947, + 0.0019137403, -0.0007222421, -0.0027208175, -0.0013771795, 0.0011823101, + -0.0005707452, -0.0007054699, 0.0036727963, 0.0054429672, 0.0007453477, + 0.0008411976, -0.0011530083, 0.0022568326, -0.0011456202, 0.0007807703, + -0.0020552219, -0.0003093230, 0.0013839421, -0.0000006543, 0.0006754822, + -0.0002351213, 0.0028513619, -0.0046591386, 0.0000071498, -0.0031698481, + 0.0006271693, -0.0003266133, -0.0016729757, -0.0006799153, -0.0001675296, + 0.0010163612, 0.0000798777, -0.0030696271, -0.0001504671, -0.0001357703, + 0.0019664175, 0.0001044254, 0.0029615166, 0.0000983019, -0.0008043898, + -0.0036014542, -0.0025432855, 0.0001787115, -0.0020779050, -0.0001499699, + -0.0012374423, 0.0021369606, -0.0024695373, -0.0002162470, 0.0008321654, + 0.0016049361, 0.0020518396, 0.0029045013, -0.0025194678, 0.0003325916, + 0.0015495191, -0.0007646859, -0.0008173615, 0.0022649528, 0.0001688353, + -0.0006253636, 0.0015459058, 0.0023016795, 0.0008282925, 0.0012535271, + 0.0004607989, -0.0000421533, 0.0020534629, -0.0010132128, 0.0005832084, + 0.0002132073, 0.0012809874, -0.0017309769, -0.0003482990, -0.0004596356, + -0.0031785765, 0.0011634612, -0.0011189023, -0.0001745601, 0.0016527735, + -0.0014590045, -0.0003774688, -0.0000715493, -0.0005175560, -0.0006091525, + -0.0000370508, 0.0005181183, 0.0005448190, -0.0012866927, -0.0013446547, + -0.0001784270, -0.0038991459, -0.0016123703, 0.0004167800, 0.0019699647, + -0.0024591773, -0.0001045517, -0.0016117450, 0.0006078847, 0.0005629963, + 0.0035480822, 0.0018193515, 0.0000169624, 0.0011796711, 0.0016160998, + 0.0009952737, 0.0010259898, 0.0012366055, 0.0003469656, -0.0002063774, + -0.0028524010, -0.0008963551, -0.0009244471, 0.0020216089, -0.0016209418, + -0.0013830978, 0.0022093076, -0.0010131323, -0.0006082160, -0.0025811326, + -0.0011742965, 0.0007797983, 0.0006655001, -0.0002062945, 0.0007711509, + 0.0018397965, -0.0019203098, -0.0010013850, 0.0007095460, 0.0032497644, + -0.0029853727, -0.0017212029, 0.0011406925, -0.0044032661, -0.0009183674, + 0.0003532809, -0.0011261133, 0.0002745544, -0.0009876147, -0.0014352638, + 0.0016986029, -0.0099359332, -0.0015482057, 0.0001113657, 0.0028189723, + -0.0008224347, -0.0030316967, 0.0005196082, -0.0004302992, 0.0011967542, + 0.0008287979, 0.0001330734, 0.0006503583, -0.0032189600, -0.0024954074, + -0.0014336566, -0.0007376671, -0.0010045313, -0.0029312174, -0.0002707653, + -0.0007860418, -0.0017422629, 0.0006880392, 0.0004238239, -0.0007075898, + 2.1249189377, 0.0006986475, 0.0000923630, 0.0011924745, 0.0006665504, + 0.0014717951, 0.0011566831, 0.0001091673, 0.0020366467, -0.0023862645, + 0.0025294935, -0.0026572864, 0.0015915931, -0.0003227377, 0.0007144813, + -0.0015569215, 0.0001851798, 0.0002873344, -0.0017018132, -0.0046643480, + -0.0001858589, 0.0010556132, 0.0009220788, 0.0009525372, -2.4623267651, + -0.0024564383, -0.0027309803, -0.0001707016, -0.0011773007, -0.0008579567, + -0.0027087107, 0.0031346013, -0.0013628791, -0.0009004464, -0.0017136424, + -0.0009744426, 0.0005002823, -0.0003628619, -0.0003987316, 0.0011631497, + -0.0006611752, -0.0010223743, -0.0019841189, 0.0001437836, -0.0011731670, + 0.0005210256, 0.0005859708, 0.0011510684, 0.0022157263, -0.0005116342, + -0.0033767219, 0.1233723983, -0.0022809356, -0.0008590431, -0.0019500856, + 0.0004327170, -0.0036265079, 0.0043618004, 0.0017554867, -0.0017531512, + -0.0019939872, 0.0013943436, 0.0002305464, 0.0420422330, -0.0001790803, + -0.0014122274, 0.0005164852, -0.0005623583, -0.0021085762, -0.0013200291, + 0.0006445581, -0.0021543973, -0.0018684019, 0.0024178673, 0.0008243687, + -0.0007663897, -0.0002188820, 0.0001920116, -0.0008201501, -0.0011581532, + 0.0004611691, 0.0018255636, 0.0013727592, -0.0009962707, -0.0022153331, + 0.0028890548, -0.0003333749, -0.0010736356, -0.0012031102, 2.2047803402, + 0.0009437574, 0.0022317597, 0.0001481749, 0.0008585167, 0.0013841246, + 0.0011468735, 0.0010047355, 0.0015102474, 0.0028938374, 0.0014892174, + 0.0017275030, -0.0019936538, -0.0007967209, -0.0017863135, 0.0008777849, + -0.0000231322, 0.0008122604, -0.0082670394, -0.0024869484, -0.0000763876, + 0.0012493031, -0.0012391312, -0.0002083096, -0.0005574133, 0.0011517392, + -0.0022777133, 0.0027457851, -0.0009204546, -0.0016843281, -0.0019184062, + -0.0153877623, 0.0028701760, -0.0002572432, 0.0000076313, 0.0009975443, + 0.0020252641, -0.0002481481, -0.0024903393, -0.0004356921, -0.0010373415, + 0.0011219494, -0.0008257377, 0.0020695580, 0.0013157630, 0.0008788387, + 0.0016653039, -0.0068868841, -0.0016781143, 0.0027056665, 0.0020689161, + 0.0006482083, -0.0011751959, 0.0027250955, 0.0004719250, -0.0002984880, + -0.0039993012, -0.0000975776, 0.0017584572, -0.0019209497, -0.0007298246, + 0.0003058596, -0.0021446100, 0.0012588380, 0.0003705851, 0.0010812965, + 0.0001187499, 0.0014920328, 0.0007458644, -0.0007520204, -0.0004427661, + 0.0000665772, -0.0029953618, -0.0004617156, -0.0013125879, 0.0000643460, + 0.0005414905, 0.0006630616, 0.0003324505, -0.0007557501, 0.0010972135, + 0.0017757434, -0.0000945814, 0.0007064472, 0.0013816659, 0.0018189987, + 0.0003705772, 0.0013999018, -0.0013231980, -0.0011403833, 0.0003048843, + -0.0022926687, -0.0009184987, -0.0001773231, 0.0010007564, -0.0005519092, + -0.0006607296, 0.0017214129, 0.0010928223, 0.0027174824, -0.0035556722, + 0.0006034318, 0.0020060670, -0.0004469627, 0.0026236195, 0.0001418036, + -0.0008557052, -0.0005076539, 0.0018686190, -0.0009634928, 1.3120853901, + -0.0012288957, -0.0020841584, 0.0021898411, 0.0001553281, -0.0004229415, + 0.0002384260, -0.0019253130, 0.0010924404, 0.0006886371, 0.0012953631, + 0.0017196945, 0.0012789243, -0.0038780179, -0.0004645898, -0.0015763254, + 0.0016327610, 0.0005793093, 0.0028533768, -0.0027589903, -0.0000484542, + 0.0003024060, -0.0005926769, 0.0016267195, -0.0001835483, 0.0001069378, + -0.0005150121, -0.0023337775, -0.0020568636, -0.0006481418, -0.0016787797, + -0.0028408344, -0.0028150911, 0.0015129680, -0.0014465530, -0.0000888854, + 0.0007998585, 0.0037795152, -0.0025111216, -0.0006971620, -0.0023984713, + -0.0009835614, 0.0032141984, -0.0004911642, -0.0005474050, -0.0006128587, + 0.0009748808, -0.0006141337, 0.0013231575, 0.0005396469, 0.0000018468, + 0.0005415891, 0.0011298456, -0.0042063561, -0.0032216827, -0.0010209223, + 1.5707509518, -0.0010807728, 0.0013213716, 0.0001675191, -0.0010454105, + -0.0000454974, -0.0004649013, 0.0013562758, -0.0017214837, -0.0019700795, + -0.0011766965, -0.0034424840, 0.0004324554, -0.0012361801, 0.0006232642, + -0.0020798994, 0.0004391409, -0.0021895035, -0.0000026503, -0.0020814161, + 0.0041139666, 0.0008725348, 0.0002737930, -0.0016255877, -0.0001169001, + -0.0014615613, 0.0023121657, 0.0022679369, 0.0010041338, 0.0035387669, + 0.0028057110, 0.0004252235, 0.0011677061, 0.0016430381, -0.0005083270, + -0.0013626254, -0.0019410612, -0.0006328505, -0.0019641530, -0.0012205192, + 0.0008971335, 0.0006871754, -0.0010828730, -0.0011540749, 0.0014976438, + 0.0016310182, 0.0007004659, -0.0039238040, -0.0008613359, 0.0021784548, + -0.0019507813, 0.0009284830, -0.0026606848, -1.6896343231, 0.0031216091, + -0.0371518731, 0.0016848866, -0.0021883785, -0.0014371595, -2.2759122849, + -0.0008984562, -0.0006459788, -0.0006407006, 0.0018984494, -0.0003902442, + 0.0013863943, 0.0000887101, -0.0002895212, -1.2625383139, 0.0003755656, + -0.0000877681, 0.0022077344, -0.0042450903, 0.0026763887, 0.0026770001, + -0.0011896519, -0.0015855674, 0.0022460965, 0.0005946609, 0.0022725887, + 0.0037838155, 0.0021257317, 0.0016603768, -0.0012873108, -0.0000292170, + -0.0012828133, 0.0024512748, -0.0005385184, 0.0001349798, 0.0016467911, + 0.0020388826, 0.0018877697, -0.0023354907, -0.0003204229, -0.0009434165, + 0.0006075587, -0.0028951177, 0.0008814987, 0.0000552041, 0.0001213010, + 0.0009156005, 0.0002077380, -0.0004148940, -0.0024764212, -0.0004798919, + -0.0017621182, -0.0010426980, -0.0008817349, -0.0011708403, -0.0008054711, + -0.0035372730, 0.0013882266, 0.0014790487, 0.0006834166, -0.0006478843, + 0.0021977383, -0.0003479711, 0.0000286577, -0.0022532283, 0.0009337504, + -0.0013405704, -0.0007580929, 0.0016623349, 0.0002122261, -0.0023638546, + 0.0009719357, 0.0022718373, -0.0041315830, -0.0008072364, -0.0033527385, + 0.0026441433, 0.0003572552, -0.0003703083, 0.0009379592, -0.0010454189, + 0.0019919388, 0.0012227003, 0.0022766988, 0.0005799173, 0.0024181907, + -0.0010289233, -0.0007301494, 0.0005902839, -0.0023638962, -0.0018350100, + 0.0003321664, 0.0018837499, -0.0002690059, -0.0005158656, -0.0014394922, + -0.0016191807, 0.0021587866, 0.0039539952, -0.0008182246, 0.0007751356, + -0.0038603984, 0.0002131140, -0.0013438636, 0.0004219348, 0.0010184033, + 0.0014861319, -0.0023060171, -0.0005479474, 0.0012306210, -0.0004670126, + -0.0009524697, -0.0001374362, -0.0003521979, 0.0007924587, 0.0008538636, + -0.0018733640, -0.0025713623, -0.0001987764, 0.0001812130, 0.0025342121, + 0.0023677996, 0.0000228710, -0.0014986999, -0.0002774430, 0.0019006375, + 0.0032690726, -0.0002908653, 0.0009649422, -0.0023715873, -0.0010432112, + -0.2873674035, -0.0001101962, -0.0001544984, -0.0007143148, -0.0023274082, + 0.0002534511, 0.0016010383, 0.0032791130, 0.0014586542, 0.0013745041, + 0.0002981909, 0.0001802003, -0.0018642046, -0.0015192349, -0.0013679531, + -0.0007661121, -0.0006402368, -0.0003653569, -0.0039665820, 0.0022584298, + -0.0020717424, 0.4416533709, 0.0002910846, -0.0015899581, 0.0014127434, + -0.0001560049, 0.0003362237, 0.0031417659, 0.0013955841, 0.0008597430, + -0.0019603695, 0.0020873519, -0.0001801369, 0.0011336647, 0.0022911606, + -0.0021352400, -0.0031559533, 0.0014171093, 0.0000272174, 0.0011358671, + -0.0013562215, -0.0002538329, 0.0013486217, 0.0010636919, -0.0023325961, + -0.0017871035, 0.0002262475, -0.0006538294, 0.0017499318, -0.0022589723, + 0.0022738245, -0.0012158137, -0.0024207784, 0.0010694397, 0.0018770241, + 0.0018987457, -1.5139032602, -0.0008915991, 0.0016275202, -0.0018280426, + 0.0013302041, -0.0008085214, 0.0002453574, 0.0006168492, -0.0002987138, + 0.0008383784, 0.0002351609, 0.0004354039, 0.0014186318, -0.0007819836, + -0.0006593973, -0.0008291038, -0.0031290115, -0.0018320167, -0.0000133286, + -0.0003662612, 0.0016352944, -0.0006971257, -0.0012025310, -0.0002851821, + 0.0007842672, -0.0019008485, 0.0015855106, -0.0008445652, 0.0013702021, + -0.0002367390, 0.0005650739, 0.0006264674, 0.0020560874, -0.0003368235, + 0.0018757549, -0.0007504579, -0.0008370806, -0.0007914618, -0.0026350061, + 0.0019727871, 0.0000196719, -0.0005192054, -0.0007613101, -0.0008616908, + -0.0015720231, -0.0009779548, -0.0042015933, 0.0025569291, 0.0006808481}; + +float unet_input_time_embedding_20_10[] = { + 0.0009614043, -0.0000898065, 0.0013158936, -0.0032785649, 0.0012130318, + 0.0009036576, -0.0008777143, -0.0017790538, 0.0012831271, -0.0004001719, + 0.0010462538, 0.0004342920, -0.0017930875, -0.0002287431, 0.0003723660, + 0.0011944440, 0.0001892713, -0.0019122867, 0.0012096012, 0.0002463101, + 0.0020789723, 0.0024688453, -0.0028084572, 0.0354457274, -0.0002546802, + 0.0012414483, -0.0010760315, 0.0006404174, -0.0019155088, -0.0008501280, + 0.0030405400, -0.0003224290, -0.0023430092, -0.0022342261, -0.0023534303, + 0.0009693056, -0.0012632739, -0.0026855113, -0.0027862336, -0.0017689401, + -0.0029632663, -0.0018405579, 0.0015890156, -0.0018587345, 0.0011990911, + -0.0005999738, 0.0009818245, -0.0009810049, 0.0003789887, -0.0005563654, + 0.0003483309, 0.0004202921, 0.1220565736, -0.0009118244, 0.0026057519, + -0.0001139221, 0.0013784607, -0.0002007233, 0.0003226823, 0.0017658898, + 0.0021868108, -0.0019098817, 0.0004145880, 0.0004754979, 0.0006984104, + -0.0024829344, 0.0001536729, 0.0004203640, 0.0023480388, -0.0005698053, + -0.0000755615, 0.0002136831, -0.0005414935, 0.0015598224, -0.0001838421, + -0.0000590002, 0.0026793387, 0.0002980987, -0.0008521113, 0.0014868320, + 0.0014984173, 0.0010065591, 0.0003770252, 0.0004301330, 0.0011217666, + -0.0022965544, -0.0013184589, 0.0024899063, -0.0012863046, 0.0022729437, + -0.0013582214, -0.0004683761, -0.0002565980, -0.0011481136, -0.0014491309, + 0.0008428423, -0.0005048551, -0.0018771915, 0.0005480817, -0.0031966809, + -0.0005834685, -0.0007407838, -0.0003075108, 0.1288376004, -0.0001724004, + -0.0019262638, 0.0004953733, 0.0008930312, 0.0016224987, -0.0012655510, + -0.0020420495, 0.0007056715, 0.3499953747, -0.0013020486, 0.0018732138, + -0.0026478074, -0.0009182352, -0.0005140209, -0.0005634301, -0.0003465277, + 0.0003764024, 0.0004184369, -1.3123955727, -0.0036180923, -0.0009510601, + 0.0018293415, -0.0005570995, 0.0008036206, -0.0020212582, 0.0012359745, + -0.0011508926, -0.0015149694, -0.0001690036, 0.0028846217, 0.0008297777, + 0.0011934966, 0.0011461524, -0.0007061940, -0.0005645044, 0.0003178818, + -0.0010371634, 0.0025684019, 0.0001842384, 0.0023886291, -0.0013112978, + 0.0004294713, 0.0018344577, -0.0005987263, 0.0007481028, -0.0012884336, + -0.0023471746, -0.0015508119, -0.0016576373, -0.0000026108, -0.0008290177, + -0.0007771146, -0.0000528698, 0.0014129477, 0.0008707661, 0.0009668553, + 0.0002026134, 0.0032244385, 0.0016458686, 0.0002584076, 0.0011143121, + -0.0012151317, 0.0015360846, -0.0005900552, -0.0082895560, 0.0005863940, + 0.0004241803, -0.0007979157, 0.0018263957, 0.0002723397, -0.0035582064, + 0.0011186134, -0.0002906118, 0.0002960004, 0.0008207595, 0.0002541719, + -0.0011813818, 0.0015904126, -0.0016605370, -0.0011146534, 0.0001060478, + -0.0000943653, 0.0005230946, 0.0000267494, -0.0009148461, -0.0002088861, + -0.0002654397, -0.0019648853, 0.0007711333, 0.0008197257, -0.0008104797, + 0.0013585235, 0.0022319639, -0.0003046463, 0.0011010559, -0.0009416002, + 0.0006530834, 0.0023649405, -0.0002637422, 0.0003136729, -0.0007163086, + 0.0007573189, -0.0033603068, 0.0019827262, 0.0009137038, -0.0002740112, + -0.0026361104, 0.0004305593, 0.0002869898, 0.0012085852, 0.0009386727, + -0.0002091071, 0.0002491246, -0.0008509364, -0.0006249727, 0.0013902971, + 0.0007470455, -0.0005464997, -0.0003094692, -0.0080562690, 0.0007660429, + 0.0001091124, -0.0004094085, -0.0010833708, 0.0000010172, -0.0009793597, + -0.0009768037, -0.0020343298, 0.0002540695, 0.0007000207, -0.0000702217, + -0.0008541835, -0.0002355012, 0.0001474964, 0.0009451117, -0.0004542586, + -0.0026324245, 0.0009816575, -0.0012649307, -0.0012920080, -1.4543480873, + -0.0000691584, -0.0009698737, -0.0011746270, -0.0008514109, -0.0011915364, + 0.0008305600, -0.0009374828, 0.0013452531, 0.0004637679, -0.0007127996, + -0.0006635489, -0.0007343530, -0.0001265990, 0.0001372425, 0.0004359427, + 0.0006011929, -0.0001556484, -0.0019813839, 0.0091115115, -0.0021256981, + 0.0004660632, 0.0004064424, 0.0008323309, -0.0007946016, 0.0028891312, + -0.0004747706, -0.0004650222, -0.0004601317, 0.0009185504, -0.0019370585, + 0.0000562591, 0.0011947001, -0.0007812404, -0.0009202352, 0.0011819240, + 0.2167880535, 0.0005450267, 0.0009700923, -0.0012742835, 0.0008924752, + 0.0006380826, 0.0004671905, -0.0011548304, 0.0003669709, 0.0008322233, + -0.0002293208, 0.0019021807, -0.0026579711, 0.0011721372, 0.0010938980, + -0.0002138228, -0.0013728999, 0.0013172892, -0.0003036927, -0.0008417126, + 0.0041516349, 0.0015316573, 0.0002507671, 0.0005277351, 0.0002799148, + -0.0005021035, -0.0001639067, -0.0000243981, 0.0002920302, -0.0005059275, + 0.0007067756, -0.0008847776, 0.0015090446, -0.0001053670, -0.0004777703, + 0.0034946878, -0.0009727272, 0.0012745545, 0.0022937283, 0.0013759038, + -0.0002793132, -0.0025528497, 0.0006092303, -0.0012522908, 0.0010980967, + -0.0010210038, -0.0026648026, 0.0004377533, 0.0178612061, -0.0000000694, + 0.0004128129, -0.0009621661, -0.0001700731, -0.0004162986, -0.0002700104, + -0.0002378840, 0.0018705197, -0.0002510307, 0.0000478053, 0.0000564437, + 0.0009321151, -0.0007008512, 0.0014024810, 1.5236196518, 0.0005379629, + 0.0004738409, 0.0014837711, -0.0009378468, -0.0000096522, -0.0000162660, + -0.0004455233, 0.0023043714, 0.0004426567, 0.0000367351, 0.0024435292, + 0.0023692464, 0.0010637289, -0.0013176625, 0.0011513052, 0.0016091396, + 0.0008109370, -0.0006936602, -0.0016131853, 0.0013536173, -0.0010536645, + -0.0008896713, -0.0010009785, -0.0009583319, -0.0026213219, -1.3451907635, + 0.0018306812, -0.0000585080, 0.0009432328, 0.0025554569, -0.0014418291, + -0.0006512984, -0.0003479741, -0.0000560472, -0.0007418694, 0.0023328103, + -0.0006173238, 0.9059943557, -0.0011367258, 0.0024260231, 0.0003073458, + 0.0010312342, 0.0002858532, 0.0017264187, -0.0014812858, 0.0000085132, + 0.0011016699, -0.0007818427, 0.0002616099, -0.0007871678, -0.0000252039, + -0.0004491671, 0.0006849591, 0.0006334322, -0.0016957284, -0.0014457572, + -0.0012759781, -0.0000502430, 0.0018416087, 0.0005040839, 0.0003814166, + -0.0015705642, -0.0005900146, -0.0031025391, 0.0009162501, -0.0005902089, + -0.0014387271, -0.0008547227, 0.0007216632, -0.0004421172, -0.0007639471, + 0.0009054593, 0.0001873644, -0.0012735436, -0.0013776198, 0.0004391898, + -0.0022159831, 0.0000832493, -0.0009617409, -0.0016498177, -0.0017859610, + 0.0005196035, 0.0004548365, -0.0009361830, -0.0008110993, -0.0004501138, + 0.0005346881, 0.0010784022, -0.0013157895, 0.0004918263, -0.0000903656, + 0.0001442525, -0.0001478745, -0.0014403462, 0.0002126750, -0.0007194860, + 0.0005544894, 0.0004452575, -0.0000616388, 0.0018305790, 0.0015561299, + 0.0021782289, 0.0005831574, 0.0012361053, 0.0000107093, -0.0022524940, + 0.0003409567, -0.0002440605, 0.0013950632, 0.0004309891, -0.0022549694, + -0.0023338702, 0.0007870672, -0.0001202580, -0.0006553242, -0.0010669404, + -0.0008966532, -0.0011993032, 0.0002705802, -0.0009648389, -0.0019225487, + 0.0010147346, 0.0002025641, 0.0008829613, -0.0022491668, -0.0003772122, + -0.0000375869, 0.0015353919, -0.0005484940, -0.0019835245, -0.0011826348, + -0.0245856494, -0.0003238916, -0.0014801626, -0.0002578599, -0.7123687267, + 0.0004928494, 0.0002914241, -0.0021243994, -0.0002734314, 0.0007203932, + 0.0006607495, 0.0008947293, 0.0003709868, -0.0012373175, 0.0009366411, + -0.0010720911, 0.3670994937, -0.0001932560, -0.0007676757, 0.0003970612, + -0.0101447338, -0.0004356373, 0.0002224809, 0.0018668238, 0.0005992407, + 0.0018475680, -0.0004582568, 0.0011508851, -0.0011067544, 0.0008401247, + 0.0012567220, -0.0003893187, 0.0018403566, -0.0012392532, -0.0002293489, + -0.0037826418, -0.0013439939, -2.2846090794, 0.0037002061, -0.0007611775, + 0.0004739370, -0.0002398752, 0.0006450983, -0.0005574943, 0.0013388353, + 0.0003800709, 0.0018647551, 0.0006270277, -0.0004771063, -0.0020861076, + -0.0028123758, 0.0008399177, 0.0009417930, -0.0023484984, 0.0009499974, + 0.0002245835, 0.0000703549, -0.0004801541, -0.0002911875, 0.0018006589, + -0.0024555803, -0.0004423074, 0.0014494804, 0.0004162453, -0.0009651564, + 0.0016075894, -0.0009808689, -0.0005403711, -0.0027377829, -0.0001098388, + -0.0001809532, 0.0007905574, 0.0008855872, -0.0019429117, -0.0017248001, + -1.6035399437, 0.0004973700, -0.0016822298, -0.0003154818, 0.0002203598, + -0.0001723248, -0.0000322368, -0.0011796011, 0.0014107106, 0.0010667485, + 0.0011470625, 0.0004422012, -0.0004436248, 0.0020640483, -0.0003798534, + -0.0011149757, -0.0007079449, -0.0003778753, -0.0012874091, -0.0006604912, + -0.0008028276, -0.0007696832, 0.0007450902, -0.0005373654, 0.0012917183, + -0.0005822405, -0.0007437838, -0.0012470637, -0.0000978974, -0.0009791141, + -0.0009099587, 0.0018228726, 0.0006280537, -0.0013853231, -0.0011279492, + -0.0011902743, -0.0004053200, 0.0006047320, -0.0007903799, 0.0009178328, + 0.0000645545, -0.0001105960, -0.0031151902, 0.0026025390, -0.0045019481, + -0.0005635130, 0.0000046544, -0.0000662082, 0.0019071337, -0.0018246723, + 0.0012242808, -0.0015353169, -0.0020855311, -0.0008262534, -0.0005161390, + -0.0013489986, 0.0013756723, -0.0001045640, 0.0012148757, -0.0011673283, + 0.0010020141, -0.0007024021, -0.0011223310, 0.0007949718, -0.0015842188, + 0.0000931211, 0.0021237521, 0.0007869616, -0.0025258930, -0.0019445961, + 0.0015053242, 0.0010033952, 0.0008734565, 0.0006461544, -0.0010842048, + 0.0016679545, -0.0015644098, 0.0022345749, -0.0013000634, -0.0012680530, + -0.0002392107, -0.0007950466, 0.0004658849, -0.0002770990, 0.0007231836, + -0.0006211521, -0.0005410917, 0.0013124895, 0.0005052034, 0.0002419620, + -0.0003507327, 0.0001139443, -0.0010922824, -0.0019855555, 0.0012593265, + -0.0005165715, -0.0006870460, 0.0010776047, -0.0016385848, 0.0016972609, + 0.0005889226, -0.0006557442, -0.0025290039, 0.0016975370, -0.0019333088, + -0.0000191587, 0.0007203021, 0.0000598356, 0.0012719315, -0.0008975393, + 0.0002064700, 0.0012170370, -0.0001942551, -0.0017801764, -0.0010727006, + -0.0008913795, -0.0012671463, 0.0007442519, 0.0018142418, 0.0002212516, + -0.0005157089, 0.0020961964, -0.0026845571, -0.0003593515, -0.0008074678, + -0.0008275416, 0.0004758282, 0.0007161088, 0.0012301346, -0.0011356063, + -0.0033464245, 0.0005257856, -0.0013509835, -0.0020270920, -0.0006444743, + -0.0000572451, -0.0019202123, -0.0007481512, -0.0021146364, 0.0013194024, + -0.0006885380, -0.0011257492, -0.0021262786, -0.0021649937, -0.0009781416, + 0.0003325583, 0.0012006810, 0.0010514045, 0.0007202541, 0.0008119922, + -0.0001648124, -0.0010095513, -0.0003336156, -0.0043501016, -0.0007767347, + 0.0022682599, -0.0007710415, 0.0003930447, 0.0002950903, -0.0000179868, + -0.0000572037, -0.0001847586, -0.0005362409, 0.0008462798, -0.0006898949, + -0.0019818405, -0.0006797686, -0.0028451961, -0.0005410500, -0.0005589379, + 0.0006904257, -0.0017344239, 0.0001591943, -0.0017905878, 0.0003557948, + 0.0012686425, 0.0002920590, -0.0019423841, 0.0005033365, 0.0007445880, + 0.0004832624, -0.0010559405, 0.0004547560, -0.0007207058, -0.0031900892, + 1.8349784613, 0.0008826964, -0.0014902805, 0.0005578956, 0.0017743036, + -0.0002283435, -0.0003113719, 0.0010483339, 0.0005445341, -0.0025503272, + 0.0017050789, 0.0015006711, 0.0000514077, 0.0009074500, -0.0009901798, + 0.0009403971, -0.0008596631, -0.0003075907, 0.0019093794, -0.0030001805, + -0.0004267185, -0.0003137481, -0.0026914491, -0.0005405087, -2.4682264328, + 0.0009996123, 0.0006196110, -0.0004308764, 0.0005397978, 0.0010509188, + -0.0019578002, -0.0016545960, -0.0011530814, 0.0019206107, 0.0001146854, + 0.0013558092, 0.0015979782, -0.0012528729, 0.0017762135, -0.0012065680, + 0.0020874897, -0.0005375538, -0.0001702509, -0.0001517963, -0.0007972969, + -0.0009493278, -0.0006262941, -0.0006911827, -0.0032880879, 0.0003091828, + -0.0003355886, 0.0785805136, -0.0006787851, -0.0011698799, 0.0010173158, + 0.0021529170, -0.0002780345, 0.0008104683, -0.0014588581, -0.0003119482, + -0.0022416511, -0.0000230712, -0.0006655842, 0.0144496011, -0.0010815521, + 0.0003905987, -0.0024626830, -0.0008960167, 0.0008058064, -0.0012169816, + -0.0006371918, 0.0014034333, -0.0021183689, 0.0002518271, 0.0011398370, + 0.0024620020, 0.0016695163, -0.0013022017, -0.0011007637, -0.0014840327, + 0.0008776281, 0.0032764389, 0.0023379899, -0.0006615321, -0.0000049439, + 0.0031651631, 0.0007388402, -0.0009174039, -0.0014869610, 2.0704224110, + 0.0002249291, -0.0030250621, 0.0008916176, -0.0000258249, -0.0008288522, + -0.0000821545, 0.0006761216, -0.0026277127, 0.0007832372, -0.0026392965, + 0.0001873618, 0.0012383866, -0.0011408986, 0.0005718190, -0.0011432195, + -0.0005987906, -0.0018720441, -0.0290817525, 0.0006400254, 0.0016014415, + -0.0023069065, -0.0004296647, -0.0006023115, 0.0007818229, 0.0022047102, + 0.0001302622, -0.0007842390, -0.0011213103, 0.0015931004, -0.0021824511, + -0.0237499420, -0.0003510849, -0.0027874338, 0.0017433204, 0.0000883499, + 0.0007202330, -0.0015360168, -0.0001870869, 0.0009013304, 0.0002198424, + 0.0001151823, -0.0030225804, 0.0008880692, 0.0011319506, -0.0001257010, + 0.0000454700, 0.0008724970, -0.0002473961, -0.0003756674, -0.0009018625, + -0.0001545185, 0.0001706313, 0.0026796795, -0.0003138488, -0.0002394293, + -0.0123807462, 0.0028174520, 0.0013240324, -0.0015651896, 0.0015820807, + -0.0005110733, -0.0030524675, -0.0001720125, 0.0030716558, -0.0006856335, + -0.0005151345, 0.0001626075, 0.0012906762, 0.0011286070, -0.0004135701, + -0.0011911083, -0.0010690910, 0.0022537913, -0.0000235692, -0.0004773019, + -0.0025057318, -0.0017174021, 0.0011303779, -0.0002641100, -0.0006245261, + -0.0003495272, 0.0009160331, 0.0003465869, 0.0013746694, -0.0023150225, + 0.0008768050, -0.0005599597, 0.0004019691, 0.0024573726, -0.0019020014, + 0.0002542960, 0.0006738303, 0.0005817020, 0.0012966413, 0.0004923923, + 0.0010019215, 0.0007832854, 0.0008236933, 0.0014224122, -0.0016484237, + 0.0005432721, 0.0014976121, -0.0012981081, 0.0006366504, -0.0019137718, + 0.0015794616, -0.0013049446, 0.0007782582, 0.0021251887, 1.1715474129, + -0.0023390909, 0.0007341942, 0.0008040695, -0.0012159639, 0.0004411098, + -0.0010369271, 0.0002676294, -0.0008384152, 0.0000913693, 0.0007277834, + -0.0007872573, -0.0002408386, -0.0026875399, 0.0006983867, -0.0001060786, + 0.0000334843, -0.0005654468, 0.0036640074, -0.0005322727, 0.0018893280, + 0.0005538194, -0.0013689678, -0.0005523290, -0.0003025341, 0.0002658871, + 0.0027787951, -0.0016099236, -0.0006776764, 0.0023802742, 0.0002757078, + -0.0000016305, -0.0011488302, 0.0007495452, -0.0008765818, 0.0005892068, + -0.0006298155, 0.0012638191, -0.0008292572, 0.0021831770, 0.0001083571, + -0.0013110870, 0.0002811414, 0.0016160044, -0.0016852448, -0.0012082011, + 0.0002199262, -0.0010838909, 0.0012021088, 0.0000992338, -0.0021006265, + 0.0006169731, 0.0003577177, 0.0005895658, 0.0002275198, 0.0026674042, + 1.3066205978, 0.0009489197, 0.0000759410, -0.0001091992, -0.0009110293, + -0.0005489880, 0.0007062051, 0.0005964907, 0.0008089794, -0.0009895670, + -0.0002345045, -0.0022967486, -0.0010354207, 0.0008094609, -0.0014816275, + 0.0016049100, 0.0004967377, -0.0003706897, -0.0007163386, 0.0012761201, + 0.0000430488, -0.0006857099, 0.0003159540, -0.0004558358, 0.0016348511, + 0.0017040032, 0.0008263183, 0.0000443920, -0.0001244443, -0.0012157392, + -0.0008470928, 0.0002836327, 0.0000545619, -0.0009458533, 0.0035157399, + -0.0007204013, -0.0000872651, -0.0004470977, -0.0013351871, -0.0005607323, + -0.0013238403, 0.0025902269, -0.0010474119, 0.0001333500, -0.0017718971, + 0.0019179941, 0.0002351045, 0.0001794760, 0.0006945293, 0.0028822664, + 0.0004852773, 0.0026597884, -0.0005445760, -1.6467275620, 0.0012261856, + -0.0580161922, 0.0019084585, -0.0017967406, -0.0015975873, -2.1344916821, + -0.0021394514, -0.0003348757, 0.0006504552, -0.0011449563, -0.0004399633, + 0.0020088390, -0.0015125242, -0.0037301006, -0.8515177369, -0.0002021939, + -0.0021365054, -0.0002997119, 0.0011134626, 0.0063810018, 0.0008099843, + -0.0005102488, -0.0008197199, -0.0003181538, 0.0019310571, 0.0016827150, + -0.0006215381, -0.0003131526, -0.0009272530, -0.0001756703, -0.0021242201, + 0.0008308603, 0.0009937410, -0.0003800639, 0.0011510300, 0.0012898096, + -0.0000471873, 0.0004256198, -0.0000572121, 0.0015272968, 0.0017280111, + -0.0004642913, 0.0005724500, -0.0006212695, -0.0009338686, -0.0008897269, + 0.0005808617, 0.0002587764, 0.0000662468, -0.0022075302, 0.0011543189, + -0.0009324364, -0.0021395069, 0.0018243836, 0.0005337831, 0.0010114303, + 0.0008127019, 0.0010891934, 0.0001225933, -0.0031425683, -0.0002732754, + -0.0017544355, 0.0014677119, 0.0003705770, -0.0003312319, -0.0001092387, + -0.0010376005, 0.0013956549, -0.0001030033, -0.0003464008, -0.0000522519, + -0.0060129464, 0.0001668970, -0.0158057977, -0.0005596415, -0.0019609663, + -0.0015623053, 0.0013466434, -0.0007003900, 0.0009543924, -0.0006948917, + -0.0007703118, 0.0020604930, 0.0004733629, 0.0026418688, -0.0019318392, + 0.0011837110, -0.0020918623, -0.0000474299, -0.0002876353, -0.0000316133, + -0.0016978548, -0.0000697360, 0.0010226640, -0.0010834257, 0.0005619209, + -0.0012126705, 0.0001079040, 0.0010579849, -0.0019221115, 0.0011882130, + 0.0008076569, 0.0009291484, -0.0002532220, -0.0007545829, -0.0009349792, + 0.0004531341, -0.0018628578, 0.0002982151, 0.0012216588, 0.0009376126, + -0.0020099110, 0.0005497579, 0.0019221045, -0.0008462560, -0.0008613662, + -0.0008717880, -0.0000822827, -0.0000253650, -0.0010861792, 0.0026637227, + 0.0035005615, -0.0003987276, 0.0022327271, -0.0015582974, 0.0003832835, + 0.0020085212, -0.0010387476, 0.0000242590, 0.0005245986, -0.0004395093, + -0.0401877984, 0.0004148930, 0.0017920375, -0.0028747080, -0.0008578713, + 0.0001327254, 0.0014064470, 0.0002726530, 0.0008277963, 0.0009042476, + -0.0017578118, -0.0011687101, 0.0020318343, -0.0006725728, -0.0008748360, + -0.0008923547, 0.0009629373, -0.0016580317, -0.0011706036, 0.0012208470, + -0.0001321952, 0.4517194629, -0.0005734444, -0.0001163380, 0.0021335601, + 0.0003202502, -0.0015844556, 0.0012199411, 0.0001231544, -0.0008308189, + -0.0007669732, -0.0001919605, -0.0014914819, -0.0004230267, 0.0002180242, + -0.0005776342, -0.0000078715, -0.0006169798, -0.0014939145, 0.0001760621, + -0.0005604897, 0.0013148296, 0.0011200134, -0.0021979380, 0.0003534015, + 0.0023711638, 0.0012062620, -0.0013535079, 0.0018112250, -0.0002400829, + -0.0002646194, 0.0004598554, 0.0019621239, 0.0009701439, -0.0004717195, + 0.0000430603, -1.4940202236, 0.0013384502, 0.0018262137, -0.0006613403, + -0.0002064451, 0.0005433897, -0.0010834136, 0.0011839245, 0.0000028337, + 0.0001359703, -0.0000945391, 0.0017724024, 0.0003214716, -0.0008465634, + -0.0017493325, -0.0012190997, 0.0008558598, 0.0009149718, 0.0024823281, + -0.0000183163, 0.0008051461, -0.0003768406, 0.0006293695, 0.0031392407, + -0.0020736251, 0.0002307366, 0.0017667776, 0.0011211978, -0.0001930087, + -0.0003970178, -0.0000991453, -0.0006033070, 0.0007561465, -0.0010808846, + -0.0026227902, -0.0012292219, 0.0012438828, 0.0005235103, 0.0000569902, + -0.0007827738, -0.0020615039, 0.0015118418, 0.0001706900, 0.0006958736, + 0.0007946589, 0.0011266228, 0.0215538498, -0.0011793945, -0.0008884554}; + +float unet_input_time_embedding_20_11[] = { + -0.0015899073, -0.0015705184, 0.0021115933, 0.0045004915, 0.0010164428, + -0.0030582594, 0.0020212086, -0.0002775997, -0.0009405627, -0.0006696964, + -0.0027794733, -0.0007688100, -0.0006573144, -0.0003625015, -0.0004768665, + 0.0019724967, -0.0007734587, 0.0011409728, -0.0006786842, -0.0009703217, + -0.0031261384, -0.0048333965, 0.0003079931, 0.0382141285, -0.0001189115, + -0.0039223330, -0.0017888742, -0.0005164910, 0.0001799703, -0.0009374907, + -0.0005948180, -0.0006334668, 0.0030791294, 0.0008067512, 0.0017768699, + -0.0005695415, -0.0017654742, 0.0003970275, 0.0021453551, 0.0026390078, + -0.0017179660, 0.0017019340, -0.0005857130, 0.0017911913, -0.0023667160, + -0.0005447489, 0.0005672313, 0.0003215536, -0.0004457380, 0.0027312569, + 0.0021737250, -0.0019150700, 0.1234477609, -0.0010165703, -0.0001870420, + 0.0018230575, 0.0033516237, -0.0025252933, 0.0020876485, -0.0021268451, + -0.0002497721, -0.0015561095, -0.0005280250, -0.0020070709, -0.0000111759, + -0.0001519183, 0.0001016506, 0.0002555441, -0.0007114764, 0.0005556045, + -0.0009991680, 0.0000135782, -0.0010295033, 0.0010417905, 0.0014988123, + 0.0001321435, 0.0004028915, -0.0006818864, -0.0013532846, -0.0009403054, + -0.0019241131, -0.0021219994, -0.0025265682, -0.0009729024, 0.0033350831, + -0.0001434656, 0.0008987654, -0.0004892822, 0.0005031181, 0.0000476679, + -0.0014268424, 0.0020284397, 0.0021077674, 0.0016133467, -0.0002094624, + 0.0019540126, -0.0013113357, -0.0011529839, 0.0021409509, 0.0014802441, + 0.0000699032, -0.0038039386, 0.0017281803, 0.0641904026, -0.0015486660, + -0.0033523845, 0.0038174717, 0.0019182917, -0.0007671565, 0.0019139978, + 0.0012287926, -0.0019853050, 0.3337935209, -0.0009150170, -0.0033983840, + 0.0020695967, 0.0031712302, -0.0015875488, -0.0013672435, 0.0002989981, + -0.0027532005, -0.0018762287, -0.7930213809, 0.0001967861, -0.0030964445, + 0.0011223671, -0.0009227158, 0.0027379999, 0.0008801976, 0.0023091519, + 0.0012274920, 0.0020857807, -0.0008164488, -0.0025184751, -0.0015005982, + -0.0006790936, -0.0009804873, -0.0011201929, -0.0003916621, 0.0009449995, + 0.0027481990, -0.0025529149, -0.0002216590, 0.0000167345, 0.0003541119, + 0.0027536899, 0.0010935888, 0.0009760465, 0.0003684729, -0.0001823111, + -0.0022975970, -0.0006445401, -0.0028286292, -0.0015192635, 0.0006787535, + 0.0028847461, 0.0015650457, -0.0012035491, -0.0015301900, -0.0013915808, + 0.0000771633, 0.0004755611, -0.0017197262, -0.0024596336, -0.0031360602, + 0.0008941884, -0.0002018178, -0.0012938385, 0.0307334512, 0.0004232468, + -0.0013145556, -0.0022523114, -0.0010543065, 0.0002644443, -0.0002940712, + -0.0007003560, 0.0004684083, 0.0015469743, 0.0015424802, -0.0023024566, + -0.0011353432, 0.0005255793, 0.0031510065, 0.0001133215, -0.0005456423, + 0.0010195053, 0.0011952762, 0.0049623656, -0.0039513498, 0.0021334165, + -0.0031904289, -0.0019093398, -0.0016678182, -0.0033405239, -0.0012408514, + -0.0011985651, -0.0010780446, 0.0020000767, 0.0016490185, 0.0014148005, + 0.0017235316, 0.0006508399, -0.0000274051, 0.0023382683, 0.0005853819, + 0.0013274392, 0.0041186474, -0.0006939620, 0.0008570105, 0.0019213682, + -0.0032592420, -0.0026313220, 0.0006775674, -0.0035160335, 0.0002792864, + -0.0005089901, -0.0012134053, 0.0025477870, 0.0008101977, 0.0034545362, + 0.0034469143, -0.0007619149, 0.0007037648, -0.0127180303, -0.0026111309, + 0.0013515134, -0.0009756377, -0.0002691399, 0.0009890848, -0.0013249777, + 0.0013807742, 0.0051302994, -0.0013788515, 0.0010974947, 0.0047169551, + -0.0022715232, -0.0015416984, 0.0019773999, -0.0029060515, 0.0015478274, + -0.0023543809, -0.0032123120, 0.0020559845, 0.0015239380, -1.3734393120, + -0.0026122157, 0.0012830242, -0.0010385459, 0.0005518040, -0.0011038342, + -0.0021585217, 0.0012226405, -0.0022394820, 0.0054966202, -0.0015318315, + 0.0001478114, -0.0020697452, 0.0010543627, 0.0010456021, -0.0009406895, + 0.0013862355, -0.0048208619, 0.0000345882, 0.0023870426, 0.0017479399, + 0.0016825688, -0.0006920041, 0.0016998539, 0.0023103473, 0.0016491446, + 0.0014157859, 0.0004979901, 0.0008496982, -0.0028819060, -0.0016217090, + -0.0000209690, 0.0008977791, -0.0016185977, 0.0007347194, -0.0037420262, + 0.2129075378, -0.0003295690, -0.0016498099, 0.0015065386, -0.0015796879, + -0.0016225642, 0.0001093121, -0.0023960026, -0.0008191783, -0.0008531064, + 0.0016492045, 0.0010269715, 0.0031300602, -0.0001553718, -0.0004114648, + 0.0009721515, -0.0006181453, -0.0001181131, -0.0017687962, -0.0027435999, + -0.0002377005, -0.0002620828, 0.0035995203, -0.0015999151, -0.0010658323, + -0.0012087938, -0.0002773290, -0.0001548395, 0.0000309460, 0.0002659499, + 0.0003605073, 0.0028741970, -0.0033327858, -0.0018344631, -0.0007429761, + -0.0025069541, 0.0018344886, -0.0029145018, 0.0020783236, -0.0016299947, + 0.0032627925, 0.0001852480, -0.0010249747, -0.0000032508, -0.0020992309, + 0.0008098856, -0.0034101270, -0.0010388494, 0.0382519476, 0.0019237460, + 0.0015085095, -0.0011249678, -0.0015973555, -0.0006458741, 0.0008497394, + 0.0004742136, 0.0013709187, -0.0031986157, 0.0030896771, -0.0002822108, + -0.0003485330, 0.0018879552, 0.0002155940, 1.2928144932, -0.0024226725, + 0.0015094110, -0.0012470897, -0.0012296301, 0.0009011193, 0.0022419780, + -0.0016113971, 0.0009506363, -0.0017168545, -0.0003495282, -0.0011479891, + -0.0004498577, -0.0018960161, -0.0016195286, 0.0026209555, -0.0026783026, + -0.0016844729, 0.0002564420, 0.0008862363, 0.0013671904, 0.0042440277, + -0.0018053453, -0.0025972971, -0.0002417089, 0.0015847944, -1.0545164347, + 0.0018488150, -0.0007670536, 0.0010618917, 0.0008395920, 0.0004242787, + -0.0010052833, -0.0003441006, -0.0008844102, -0.0021052791, -0.0018215654, + -0.0021196958, 1.2253150940, 0.0018428254, -0.0030677649, 0.0001854901, + -0.0017872951, -0.0018407614, 0.0014486364, -0.0019196155, -0.0010005892, + 0.0010610661, -0.0021591610, 0.0006293077, 0.0029741602, -0.0024254275, + -0.0005979282, 0.0004920701, 0.0009410394, -0.0014014421, 0.0018904051, + 0.0002153150, 0.0001683421, -0.0005789069, 0.0018788395, -0.0027910983, + 0.0006617361, -0.0005808329, -0.0013092100, -0.0026102087, -0.0023311037, + 0.0032576653, -0.0003268658, -0.0017631671, 0.0007979947, -0.0037812581, + -0.0023663060, -0.0023176121, -0.0007020198, -0.0041339267, -0.0040358985, + 0.0013280122, -0.0019143734, 0.0016811630, -0.0017603224, -0.0001181788, + -0.0004016829, 0.0029059714, -0.0008181574, -0.0005125110, 0.0006554492, + -0.0007720315, -0.0000942138, -0.0002765661, -0.0015263341, -0.0010492223, + -0.0005881303, 0.0012803734, 0.0007392676, 0.0023706220, 0.0023937726, + 0.0017306702, 0.0014722697, -0.0007343350, -0.0016730663, -0.0009125944, + -0.0002575917, 0.0012443382, -0.0001682038, 0.0019418579, -0.0048226947, + 0.0024891752, 0.0021593925, -0.0001055927, -0.0006977515, -0.0032793721, + -0.0004215837, -0.0005219867, -0.0012909425, 0.0009329394, 0.0000131647, + -0.0005770484, -0.0063506672, 0.0013522150, 0.0033133472, -0.0014245873, + 0.0003687791, -0.0005930397, 0.0015440155, 0.0006007197, -0.0001018955, + -0.0021991027, -0.0018507668, 0.0031615859, 0.0006940335, -0.0006258460, + -0.0288414229, 0.0003720131, 0.0025342831, -0.0000679884, -0.3639035225, + -0.0058594993, 0.0033681507, 0.0010742417, 0.0003355651, -0.0035795278, + -0.0017080923, 0.0015104001, 0.0007603383, -0.0010861279, -0.0010271592, + -0.0019673393, 0.3006534874, 0.0014556539, -0.0005865651, -0.0028287116, + -0.0053891880, 0.0014562821, -0.0005844911, -0.0014130436, -0.0007229340, + -0.0012395154, -0.0012180512, 0.0003142436, -0.0002293726, 0.0002696514, + -0.0004992784, 0.0008832166, -0.0008953636, -0.0042480431, 0.0020627421, + 0.0008427508, -0.0023260950, -2.2187974453, 0.0027489970, 0.0017296382, + 0.0037297439, -0.0001036664, -0.0022426923, -0.0005980227, -0.0006865449, + -0.0007148520, -0.0001460719, -0.0047008581, -0.0004602047, -0.0011223131, + 0.0007202777, -0.0002920322, -0.0021953145, 0.0031533204, -0.0025618691, + 0.0030636757, -0.0026202090, 0.0006888784, 0.0048586391, -0.0031344157, + -0.0008108842, -0.0016776168, -0.0018366708, 0.0002379557, 0.0008427470, + 0.0007203710, 0.0018665567, 0.0027379235, -0.0023097268, -0.0042781848, + 0.0010139700, -0.0003315206, 0.0004524016, 0.0023511113, -0.0010005562, + -1.5158600807, -0.0012064744, 0.0011396252, -0.0012461939, 0.0010144762, + -0.0007014204, -0.0001311928, 0.0003585583, -0.0001352476, -0.0012384644, + -0.0018873406, 0.0001901014, -0.0000087549, 0.0002468601, 0.0029494148, + 0.0013083220, 0.0021033362, 0.0000662024, 0.0016850596, -0.0019613048, + 0.0019769117, -0.0013278308, -0.0005513434, 0.0037395034, -0.0019128532, + 0.0003079167, -0.0002747916, 0.0015669395, -0.0003958293, -0.0002102311, + 0.0007084867, -0.0011684059, -0.0012482209, 0.0009130017, -0.0010966824, + 0.0022269269, 0.0002040197, -0.0010068454, 0.0001479215, 0.0033187284, + -0.0000179793, -0.0025237328, 0.0011463389, 0.0010550823, 0.0023789664, + 0.0011282479, 0.0026897239, 0.0016925246, 0.0005029161, -0.0012547162, + 0.0007593385, -0.0006647073, -0.0044374503, -0.0006590059, -0.0030342739, + -0.0006678612, -0.0027110022, 0.0020943133, -0.0013298179, -0.0009719303, + 0.0013061953, 0.0002125767, -0.0008857208, 0.0011378028, 0.0007985281, + -0.0013334891, 0.0016718474, -0.0012629037, 0.0035065473, 0.0001945340, + 0.0012315740, -0.0027375570, -0.0008427086, -0.0000378108, -0.0004842086, + -0.0004118951, -0.0023765115, -0.0033232619, 0.0017255235, 0.0018449076, + -0.0035984376, 0.0001808286, -0.0012872390, 0.0019813578, 0.0021806750, + 0.0024009282, 0.0005252964, -0.0041522584, -0.0008830554, 0.0020707990, + -0.0011489027, 0.0000900410, -0.0005041335, 0.0022429775, -0.0001676790, + 0.0000952414, -0.0005030371, 0.0010027301, -0.0024206047, -0.0006450717, + -0.0018253747, -0.0019546254, -0.0014248299, -0.0005282061, -0.0004294156, + -0.0005803390, -0.0002993592, 0.0017862385, -0.0010346936, 0.0017040079, + 0.0003708908, -0.0005634092, -0.0008794359, -0.0005299079, 0.0001703124, + -0.0016522759, -0.0005740971, -0.0022438178, -0.0011906314, 0.0032162680, + -0.0003389290, 0.0003444969, -0.0019905532, 0.0011379109, -0.0008318704, + 0.0014919536, 0.0026479196, 0.0016758814, -0.0023321589, -0.0000148411, + -0.0008543534, 0.0010195915, 0.0041466719, -0.0008298738, 0.0002889037, + 0.0001101755, 0.0002302246, 0.0007084224, -0.0009477721, -0.0025837612, + 0.0012515653, -0.0007993281, 0.0037798102, -0.0006751735, -0.0004199338, + 0.0003254893, 0.0007751603, 0.0031235674, -0.0012483576, 0.0014740592, + 0.0008662366, 0.0017925324, -0.0015870577, 0.0032684568, -0.0002533379, + -0.0004772549, 0.0002495367, -0.0008032206, -0.0001106968, 0.0010784070, + -0.0016594231, 0.0105551127, -0.0004721737, -0.0007699500, -0.0028905268, + -0.0040709628, -0.0000710040, 0.0045037293, 0.0026142530, -0.0009535989, + -0.0015216330, 0.0021275110, 0.0010215704, -0.0010471446, 0.0013094486, + 0.0006263261, 0.0032109283, -0.0013413592, -0.0021090806, 0.0003737626, + 0.0030924478, 0.0002014171, -0.0020517355, -0.0001607141, 0.0023951135, + 1.5414779186, 0.0014093043, -0.0022611585, 0.0005919770, -0.0016213499, + -0.0006938160, -0.0014312263, -0.0002140424, 0.0005031310, 0.0013537691, + 0.0034037558, -0.0008240679, -0.0000291019, 0.0015737778, 0.0003883853, + -0.0017876087, 0.0017759015, 0.0026555122, -0.0012299838, 0.0017178149, + 0.0006872858, -0.0002147611, 0.0021287883, -0.0000430736, -2.2927832603, + 0.0050717704, 0.0012328341, 0.0000799675, 0.0008609868, -0.0002806610, + 0.0000810809, -0.0001884835, -0.0003611603, -0.0012307116, -0.0010255850, + 0.0042461427, -0.0005917028, -0.0004071025, -0.0026664156, 0.0010251626, + -0.0030489136, -0.0043557994, 0.0072116982, 0.0018327092, 0.0011285823, + 0.0019286480, -0.0001271319, 0.0010300528, -0.0007615150, 0.0002203300, + 0.0022636126, 0.0372714102, -0.0005629258, 0.0014726790, -0.0021038377, + 0.0008323231, -0.0000607313, -0.0012515301, -0.0002544913, 0.0018343825, + 0.0001067910, -0.0018808204, -0.0007983349, 0.0123742698, 0.0003556835, + 0.0014465385, -0.0002478384, -0.0001100415, 0.0021398319, 0.0006749677, + 0.0017129029, 0.0023167455, 0.0026852530, 0.0025621883, 0.0010539341, + -0.0005321518, -0.0021412533, 0.0015171609, -0.0003894214, -0.0000846838, + 0.0009299186, -0.0009422153, 0.0001467424, 0.0008292071, 0.0000855476, + -0.0045445841, 0.0009395530, -0.0033859746, 0.0004850584, 1.8887239695, + 0.0035761476, -0.0008892633, -0.0013815704, 0.0005212899, -0.0000964121, + 0.0031606862, -0.0024202471, 0.0008199411, 0.0013607407, 0.0015647467, + 0.0004716401, -0.0004731819, 0.0012626318, 0.0018479419, 0.0009732301, + -0.0018689693, 0.0001754281, -0.0239938591, -0.0003452981, -0.0015516109, + -0.0008995296, 0.0017549531, 0.0006064083, -0.0008467287, -0.0006245545, + 0.0013772473, -0.0000767428, -0.0009025467, 0.0014593056, 0.0008999659, + -0.0130102951, -0.0004030815, -0.0018451908, 0.0006465493, 0.0007854626, + -0.0001238701, 0.0024301768, -0.0003985628, -0.0029010037, -0.0031922301, + 0.0002446258, 0.0003668651, 0.0060692029, -0.0016618327, -0.0036380980, + 0.0018707858, -0.0031343685, 0.0004269248, 0.0000823173, -0.0013427720, + -0.0008854999, -0.0011728241, -0.0021767635, -0.0024052504, -0.0026073977, + -0.0147627825, -0.0028999718, -0.0008562170, 0.0029115072, 0.0003898442, + -0.0012618736, 0.0009526601, -0.0016024364, -0.0007754136, 0.0012288128, + -0.0033961267, -0.0025606984, -0.0013154468, 0.0003456390, -0.0012789420, + -0.0024362013, 0.0013393185, -0.0005461437, 0.0026888866, 0.0009369683, + -0.0017806287, 0.0002828948, 0.0001000129, 0.0003069239, -0.0010542232, + -0.0000060890, 0.0002295934, -0.0000206773, 0.0043134252, -0.0024077175, + -0.0031733571, -0.0000624090, 0.0018266225, -0.0024703925, 0.0010217698, + -0.0000777275, -0.0033602896, 0.0016381161, -0.0014908523, -0.0026526372, + 0.0004102215, 0.0022639814, 0.0007645944, -0.0003141272, -0.0010387814, + -0.0003516879, -0.0015105954, 0.0027693072, -0.0012351003, 0.0034551537, + 0.0018641734, -0.0016971863, -0.0011480340, 0.0014576549, 1.0253665447, + -0.0005294925, 0.0004645390, 0.0013738787, 0.0000720206, -0.0015229937, + -0.0011536479, 0.0019327146, 0.0000357395, -0.0013435506, 0.0031921593, + 0.0026027621, 0.0017524096, -0.0020711496, 0.0003205242, 0.0019237818, + -0.0021325652, -0.0028750815, -0.0008123419, 0.0015039793, -0.0009526119, + 0.0018968023, -0.0012846161, 0.0003312908, -0.0028677697, 0.0010264581, + 0.0002748431, -0.0013950176, -0.0029615262, -0.0012929328, 0.0005775765, + 0.0040328130, -0.0031859279, -0.0020737913, -0.0012276773, -0.0007998170, + -0.0022515191, -0.0012891657, -0.0025904092, -0.0002258071, -0.0019997354, + 0.0004873434, -0.0002306188, 0.0008926499, -0.0012678179, -0.0001554431, + 0.0020438728, -0.0004244829, 0.0016442696, -0.0010260860, 0.0024141530, + 0.0019734278, -0.0034007505, -0.0005180645, -0.0011402504, -0.0003914395, + 1.0591481924, 0.0003939201, -0.0005112546, -0.0007616815, 0.0003155605, + -0.0001902526, -0.0016044863, -0.0014021904, 0.0005704938, 0.0018598216, + -0.0005459602, 0.0010950211, -0.0000429214, 0.0004125794, -0.0008738419, + 0.0027186247, 0.0012302650, -0.0001545036, 0.0012478877, -0.0009881398, + -0.0015495501, -0.0008152461, -0.0018281136, 0.0026708134, -0.0010555554, + 0.0000642813, 0.0008279863, -0.0023039631, 0.0000495214, 0.0018333928, + -0.0008279807, -0.0003849438, -0.0006247236, 0.0018865832, 0.0008443943, + 0.0023063056, -0.0002920366, 0.0011317874, -0.0018483570, -0.0031984691, + 0.0011233434, -0.0001043864, 0.0006988896, 0.0000355649, -0.0002414563, + -0.0001923479, 0.0020777383, 0.0000482787, -0.0034169736, 0.0006637555, + -0.0048537995, -0.0001453115, -0.0003988219, -1.4826686382, -0.0013594206, + -0.0406456813, -0.0002853673, 0.0011627995, 0.0029792429, -1.8689950705, + 0.0025747609, -0.0025353162, 0.0017571663, 0.0003226232, -0.0008897767, + -0.0011066527, -0.0002694144, 0.0008890918, -0.3397381306, 0.0022841289, + 0.0002185961, 0.0008032706, 0.0019440003, 0.0049089552, -0.0008349065, + -0.0005281367, -0.0035643619, 0.0011755461, -0.0023491264, -0.0000270517, + -0.0000479375, 0.0016413666, -0.0004785859, -0.0000672354, 0.0009134114, + 0.0005971200, -0.0002489968, -0.0025197729, -0.0020758859, -0.0018065898, + 0.0009210329, -0.0038079282, 0.0020686584, 0.0004934012, 0.0034854684, + 0.0019181501, -0.0008685254, -0.0004759887, -0.0026105321, 0.0031063845, + -0.0046588881, 0.0012779860, -0.0020020371, -0.0000460637, -0.0018697158, + -0.0000609513, 0.0010775747, -0.0052198959, 0.0013249919, 0.0011847741, + 0.0001267400, 0.0001898883, -0.0004294643, -0.0018843645, -0.0001745939, + -0.0016203832, -0.0006384532, -0.0006406503, 0.0013477807, 0.0027504535, + -0.0037186369, -0.0015740120, -0.0043890341, -0.0040476560, 0.0002452638, + -0.0035144556, -0.0017211228, -0.0070556984, -0.0011725398, 0.0000867578, + -0.0036586034, -0.0018048376, 0.0004618685, 0.0017257994, -0.0005196456, + 0.0011511063, 0.0005301535, -0.0035001440, -0.0037366780, 0.0008412548, + -0.0004086238, 0.0015955940, 0.0013157646, -0.0003827212, 0.0006172266, + -0.0010778354, 0.0017433800, 0.0006965512, -0.0007678811, 0.0032355916, + -0.0005177611, -0.0000901958, 0.0008046335, 0.0023732805, 0.0021774280, + -0.0007096594, 0.0018923183, -0.0012759450, 0.0015254421, -0.0041250512, + -0.0029473267, 0.0006558769, 0.0030497685, 0.0021709611, 0.0020353720, + 0.0006035352, 0.0005180673, 0.0028467723, -0.0013239416, 0.0016821371, + 0.0012271402, -0.0025255664, -0.0019940236, 0.0004028091, -0.0004545492, + -0.0013392791, 0.0032056249, 0.0000657998, 0.0002470867, 0.0009687738, + -0.0023340695, 0.0001204365, -0.0012464272, 0.0014847191, 0.0015064580, + 0.0968484581, -0.0022224006, 0.0020473269, 0.0035343443, 0.0013361119, + 0.0003925426, 0.0010598036, 0.0006771550, -0.0019777301, -0.0008667889, + 0.0004180735, 0.0022162050, -0.0014460054, -0.0023508305, -0.0029872102, + 0.0025408529, 0.0000999747, -0.0001479471, 0.0007715411, 0.0033532181, + -0.0012213378, 0.4534741938, 0.0004215387, -0.0013223093, 0.0004249518, + 0.0013725339, -0.0000178462, -0.0016422877, 0.0011037872, 0.0001758467, + 0.0009636804, -0.0010904465, 0.0020572231, 0.0010950956, 0.0012647356, + -0.0002026767, 0.0014864905, 0.0014771591, -0.0010948554, 0.0001301677, + -0.0009145245, 0.0000186823, -0.0029986862, 0.0018456443, 0.0020082165, + 0.0022636426, -0.0008950600, 0.0006307499, -0.0013189372, -0.0002437634, + 0.0013853275, -0.0002587922, -0.0008080946, 0.0018989026, 0.0022598286, + 0.0001792513, -1.4191812277, 0.0042427219, 0.0023387033, 0.0001628427, + -0.0035517861, 0.0008299572, -0.0032843340, 0.0020872767, -0.0000606519, + 0.0000838288, 0.0031216242, -0.0001399389, -0.0003910423, 0.0003009122, + 0.0029833629, -0.0003145154, -0.0016083773, 0.0004429626, -0.0007521082, + -0.0003695497, -0.0000494439, 0.0022440469, 0.0003974329, -0.0000995724, + -0.0002111471, 0.0034768810, 0.0015460779, 0.0015797531, 0.0013937347, + -0.0022142152, 0.0000437032, 0.0011007050, -0.0020939829, 0.0015449957, + -0.0005896543, -0.0003045523, -0.0023230221, -0.0006825887, -0.0019003751, + 0.0024412810, 0.0034561865, -0.0006566049, 0.0014881687, 0.0027732318, + 0.0013656840, -0.0002570893, 0.0499451421, -0.0014102214, 0.0005090503}; + +float unet_input_time_embedding_20_12[] = { + -0.0019839909, -0.0000359018, -0.0008313837, -0.0010388654, 0.0013247749, + -0.0017511831, 0.0017189492, 0.0001556958, 0.0009500971, -0.0012503428, + 0.0005337161, -0.0017721341, -0.0033090208, 0.0002661920, 0.0010077190, + 0.0007821154, -0.0016379524, 0.0002308853, 0.0005399707, 0.0008884966, + -0.0007959111, -0.0052022552, -0.0000022746, 0.0248142146, -0.0002890418, + 0.0008325151, 0.0009295866, 0.0005820608, 0.0011954840, 0.0011029849, + -0.0006589422, -0.0004681810, -0.0011770115, 0.0005453220, 0.0008147904, + 0.0004952126, 0.0018225685, 0.0015905735, -0.0019457012, -0.0015756125, + 0.0002433192, 0.0003022398, -0.0013653846, -0.0008986434, 0.0016967338, + -0.0014568737, -0.0006454648, -0.0017426158, -0.0018983465, -0.0006411705, + 0.0000436390, 0.0002134421, 0.1214337423, 0.0002916902, -0.0007108536, + 0.0002874060, -0.0015862413, -0.0004768874, -0.0008362839, -0.0003832143, + 0.0002294949, 0.0015428740, 0.0018936596, -0.0001767306, 0.0008199224, + -0.0014614221, -0.0004694751, -0.0013087731, -0.0008937409, 0.0017293750, + 0.0021104016, -0.0001179557, -0.0009428014, 0.0004403424, 0.0018693144, + 0.0001698993, 0.0006493619, -0.0008564387, 0.0007990753, -0.0007001760, + 0.0017086559, -0.0001217838, 0.0002614094, -0.0003814448, -0.0013843866, + -0.0010122659, 0.0002947631, -0.0013953694, 0.0015163952, 0.0000514174, + -0.0005717973, -0.0009111892, 0.0012633642, -0.0015327336, -0.0044306503, + -0.0011395100, -0.0025498474, 0.0011142585, -0.0009665941, 0.0008822237, + -0.0009304821, -0.0002432461, -0.0006371529, 0.0224606786, -0.0027422891, + 0.0016787881, -0.0000952254, 0.0005393922, 0.0001524584, 0.0030011469, + -0.0019666608, 0.0002462016, 0.3278816938, -0.0010779565, 0.0000455817, + -0.0003348594, -0.0019787285, 0.0013212911, -0.0012974606, -0.0008262920, + 0.0000569290, 0.0014725274, -0.3499638736, -0.0001444863, -0.0005013980, + 0.0001157760, -0.0010143965, 0.0015248063, 0.0010427395, -0.0007259217, + -0.0019379691, -0.0006938512, 0.0002104363, 0.0008641491, -0.0009054649, + -0.0017411311, -0.0009627875, 0.0000793869, -0.0010395655, 0.0000502951, + 0.0014839128, -0.0011721523, 0.0010510401, 0.0016987342, -0.0014616656, + -0.0000063661, -0.0010809181, -0.0002332130, 0.0010528781, -0.0003648940, + 0.0004590813, 0.0016678696, 0.0000211173, 0.0010214662, 0.0012487131, + 0.0004415023, 0.0018348088, -0.0010141013, -0.0004235469, -0.0010700743, + 0.0000706543, -0.0014154512, -0.0013195677, 0.0010915357, -0.0011602216, + 0.0006884597, -0.0020020518, 0.0006392868, 0.0371084027, 0.0005157548, + 0.0000839341, -0.0012621358, -0.0025658961, 0.0020446540, -0.0014949008, + -0.0011235718, 0.0007424668, 0.0016632974, -0.0013963376, 0.0015929816, + -0.0006109695, -0.0003048936, -0.0022895290, 0.0018858269, -0.0007009762, + -0.0001977929, 0.0004194779, 0.0005668057, 0.0001230589, -0.0015771298, + -0.0011109477, 0.0033582845, -0.0030270508, 0.0000735770, -0.0020055640, + -0.0047220071, 0.0000901691, -0.0014806353, 0.0009635061, 0.0001573851, + 0.0010827035, -0.0016487818, -0.0012053782, -0.0011855203, -0.0000562146, + 0.0001071887, -0.0005070087, 0.0013365028, -0.0001706202, -0.0003454925, + -0.0016512293, 0.0019407133, -0.0042661298, 0.0005810566, -0.0008398644, + 0.0008007605, 0.0004340345, 0.0005179816, -0.0002439324, -0.0014724348, + -0.0006932169, 0.0000458439, -0.0009880352, -0.0184286311, -0.0005764116, + 0.0001491592, -0.0024387976, -0.0002939873, 0.0014734475, 0.0000110716, + 0.0017504264, 0.0011395821, 0.0008758083, -0.0021590316, 0.0012656357, + -0.0001054429, -0.0028384654, 0.0015138732, -0.0010726564, -0.0012351479, + 0.0010832332, -0.0034899379, -0.0018919036, 0.0012915293, -1.2277530432, + -0.0020882564, -0.0018199650, 0.0002153394, 0.0009521041, 0.0017786372, + -0.0005946690, 0.0017769285, -0.0011094729, -0.0008305786, -0.0022135733, + -0.0003257764, -0.0010322710, 0.0013019237, 0.0000712336, 0.0007789404, + 0.0001278613, 0.0029612498, -0.0008380918, -0.0007553051, -0.0002650031, + -0.0010266877, -0.0013426151, 0.0011028899, 0.0004389910, 0.0000890731, + -0.0008882480, 0.0001958746, 0.0010211996, -0.0005638981, 0.0015485652, + -0.0012497676, 0.0016077841, 0.0004809815, 0.0003306288, -0.0021282928, + 0.2180872858, -0.0018464904, 0.0005554255, -0.0018683160, -0.0026831320, + -0.0011435142, -0.0006412971, -0.0006220218, 0.0006686384, -0.0005060849, + -0.0005510171, 0.0018546784, 0.0012448090, 0.0000461813, -0.0016165632, + 0.0003488641, -0.0017760671, -0.0018524113, -0.0004511699, 0.0031223395, + -0.0054072486, -0.0017981662, 0.0006795273, 0.0000310342, -0.0007513848, + 0.0008499050, 0.0016257246, -0.0005227227, 0.0016086772, -0.0029225689, + 0.0001293817, -0.0019659540, 0.0000891776, -0.0003205468, -0.0001991629, + 0.0002086293, 0.0006064853, -0.0007404634, 0.0001397766, 0.0001781322, + -0.0000991782, 0.0004702997, -0.0012254233, 0.0014674254, 0.0035455693, + 0.0001437059, -0.0038270634, -0.0002893058, 0.0533861034, 0.0000111391, + -0.0004504793, 0.0026583145, 0.0008874488, -0.0003180290, -0.0001313309, + 0.0006372905, 0.0014483181, 0.0002884512, 0.0005856534, -0.0041261492, + 0.0004608445, -0.0011850458, 0.0009087871, 1.0684039593, -0.0012045756, + -0.0017291000, -0.0020751404, 0.0006957158, -0.0017712777, -0.0008761195, + 0.0018800553, -0.0016349489, 0.0005658898, -0.0013278145, 0.0001842930, + 0.0000528251, -0.0009136002, -0.0009500569, -0.0011305404, -0.0016113608, + 0.0025236877, 0.0006837645, -0.0002930765, -0.0009386367, -0.0001484399, + 0.0001711946, 0.0004007625, 0.0026971614, -0.0001883116, -0.6695592403, + 0.0002455167, -0.0006275126, 0.0004866470, 0.0003908826, 0.0010186408, + 0.0006022030, -0.0000121939, 0.0004091787, 0.0007738795, 0.0001963712, + -0.0008241817, 1.3987438679, 0.0005847438, 0.0009072856, 0.0004554437, + -0.0001015109, 0.0003485275, -0.0004748637, -0.0002544941, -0.0027306494, + -0.0012102453, -0.0016889292, 0.0002182997, 0.0005299132, -0.0000615844, + -0.0004935577, 0.0003125705, 0.0014759918, -0.0014693812, -0.0011664750, + -0.0012303477, -0.0022501983, -0.0003950351, 0.0013673608, -0.0022125402, + 0.0013022765, 0.0015417698, -0.0014576600, 0.0010612789, -0.0002480419, + 0.0004129193, 0.0003942447, 0.0000614454, 0.0008790417, 0.0020788545, + 0.0004281697, -0.0005370965, -0.0006685425, -0.0001579598, 0.0017490257, + -0.0006237922, 0.0004583884, -0.0004776046, 0.0002037997, 0.0003640591, + -0.0007834176, 0.0007853461, 0.0000830746, 0.0005857940, 0.0010950679, + -0.0001121387, -0.0015424881, -0.0001306671, -0.0005447536, 0.0002965803, + -0.0021785693, -0.0013457285, -0.0002313310, -0.0020115655, 0.0005126710, + 0.0023399731, -0.0015129803, -0.0000996819, 0.0003801284, -0.0010249040, + -0.0006091804, -0.0005185218, 0.0011312403, 0.0014825943, -0.0013179835, + -0.0009654914, -0.0002605096, 0.0000587401, 0.0008260342, 0.0002583335, + 0.0000924999, 0.0020623179, 0.0004096250, -0.0008393610, 0.0014745612, + -0.0000734611, -0.0022156369, 0.0001140007, -0.0011503863, -0.0025355546, + -0.0019264459, 0.0022940356, -0.0008596797, 0.0013354825, 0.0004404914, + -0.0004710748, -0.0006478170, 0.0003419383, -0.0000796046, -0.0023396332, + -0.0017244536, -0.0011095833, 0.0025963341, 0.0015606619, -0.0584813021, + 0.0019397864, -0.0015153616, 0.0010123462, 0.0005487807, 0.0008881379, + -0.0000501762, -0.0002166575, 0.0024794918, -0.0011364315, -0.0004892424, + -0.0020511267, 0.2423097044, 0.0006443230, -0.0017366302, -0.0012619367, + -0.0095053678, -0.0030629802, -0.0002950476, 0.0004342212, 0.0008880786, + -0.0011307346, -0.0011916985, -0.0003922894, -0.0003232197, -0.0004061470, + 0.0019624569, 0.0018154497, 0.0006634976, 0.0009848070, -0.0009855353, + 0.0001943177, 0.0005929954, -1.9763970375, -0.0008037919, -0.0005949909, + 0.0004034252, 0.0017536404, -0.0016265865, -0.0000339001, -0.0024014143, + 0.0001555476, 0.0010774839, -0.0003213180, -0.0004683160, 0.0012717540, + 0.0013847684, -0.0017647601, 0.0000708145, -0.0015710248, 0.0020492433, + 0.0009461145, -0.0025981930, -0.0001769485, -0.0011295902, -0.0025755696, + -0.0019080497, 0.0013011650, 0.0015656513, -0.0021939632, -0.0020221733, + -0.0000965344, 0.0015158653, -0.0003298084, 0.0014347318, -0.0005014153, + -0.0004700003, -0.0005194466, 0.0014938861, 0.0001979060, -0.0005706763, + -1.3170924187, 0.0003896258, 0.0021861084, 0.0008218049, -0.0002597407, + -0.0009567154, -0.0018387195, -0.0001643864, -0.0000648354, 0.0008423105, + 0.0004936056, -0.0010025772, 0.0007136599, -0.0008008434, -0.0009840718, + -0.0005506752, -0.0013056942, 0.0002774312, 0.0008353805, -0.0001309677, + 0.0000422116, 0.0011664480, 0.0007647867, 0.0004477347, -0.0020578695, + 0.0002996884, -0.0006526469, 0.0009301184, 0.0000863359, 0.0015868349, + 0.0014520092, -0.0004111528, -0.0057039303, -0.0008893322, 0.0004058795, + 0.0013196646, 0.0006805663, 0.0021856525, -0.0025415663, 0.0013111909, + 0.0022050142, 0.0024308679, -0.0001481529, 0.0006931750, -0.0018566004, + 0.0010177247, 0.0002765839, 0.0003527347, -0.0005014744, 0.0004037828, + -0.0003482318, -0.0012702020, -0.0022701332, -0.0017376409, 0.0023501341, + -0.0016394560, 0.0026498591, -0.0010904905, -0.0029944144, -0.0001678094, + -0.0014122110, -0.0013853004, -0.0003915241, 0.0007564463, -0.0016017482, + 0.0003550649, -0.0011235378, 0.0009573277, 0.0014032824, -0.0011231143, + -0.0006592094, 0.0013007511, 0.0018774094, 0.0010655578, -0.0026647304, + -0.0011033332, -0.0000831399, -0.0003482425, 0.0010387548, -0.0002664179, + 0.0001165431, -0.0007074066, -0.0001494227, -0.0000869620, -0.0001061484, + -0.0005132826, -0.0015418970, -0.0023338012, 0.0011344803, -0.0013431632, + -0.0007043557, 0.0016310809, 0.0000674513, 0.0012788347, 0.0007914286, + -0.0020374032, 0.0000044564, -0.0012541937, -0.0013027135, -0.0018625255, + 0.0002808514, 0.0013053659, 0.0025711197, 0.0012805783, -0.0008843499, + 0.0004786272, 0.0002756098, -0.0003563841, -0.0012554831, -0.0012874468, + 0.0011988971, 0.0001341738, -0.0001654894, 0.0009041125, 0.0002452661, + 0.0006429194, 0.0000885452, 0.0007128319, -0.0016577893, -0.0016645364, + 0.0002640618, -0.0014046477, 0.0005918515, -0.0011851992, -0.0020754896, + 0.0009711767, 0.0002236422, 0.0023726188, -0.0013081364, 0.0014249757, + 0.0017524676, 0.0005679224, 0.0012684008, 0.0014277551, -0.0015843147, + -0.0017205360, -0.0017356470, 0.0013135502, 0.0016203257, 0.0000735926, + 0.0004377705, -0.0020075478, -0.0013468612, 0.0010979061, -0.0001305770, + 0.0013827742, 0.0017635771, 0.0009482857, 0.0008022857, -0.0017224830, + -0.0011975798, -0.0026387321, -0.0000357877, -0.0005151471, -0.0004980187, + -0.0010182974, -0.0001342632, 0.0003690640, -0.0029917343, -0.0002880494, + 0.0007367861, -0.0056323158, 0.0012021482, 0.0018732937, -0.0000417908, + 0.0000612494, 0.0001902599, 0.0005213996, 0.0000750294, -0.0002817926, + -0.0003267480, -0.0022670324, -0.0003260678, 0.0024872022, -0.0012116309, + 0.0025815475, -0.0005462756, 0.0002535703, 0.0018213992, -0.0002555228, + -0.0010872618, -0.0005784491, -0.0009005989, -0.0031485190, -0.0024022614, + 1.2429070473, -0.0007544304, 0.0000790097, 0.0006481460, 0.0004316643, + -0.0001794097, 0.0010182997, 0.0013564061, 0.0004747557, 0.0004914885, + 0.0021230243, -0.0004696926, 0.0002245664, 0.0007160832, -0.0019115712, + 0.0013339829, -0.0012736304, -0.0001548750, -0.0002947967, -0.0026779310, + -0.0015152558, 0.0004612198, 0.0015649161, 0.0016501562, -1.8543995619, + 0.0011661015, -0.0013220741, 0.0004943912, -0.0000564400, 0.0005527074, + -0.0011457205, -0.0013105160, -0.0012024487, 0.0026223110, -0.0000705756, + -0.0011708061, -0.0009228373, 0.0003571846, 0.0003504285, -0.0003856379, + -0.0002774454, -0.0003892872, 0.0006393613, -0.0003269422, 0.0007299669, + -0.0016898476, 0.0002295902, 0.0007400934, -0.0001569134, 0.0009953738, + -0.0002859407, 0.0189428125, -0.0015372504, -0.0004087426, -0.0006710081, + 0.0000130638, -0.0002107553, -0.0011306477, -0.0016597286, 0.0004422729, + 0.0007985462, 0.0001018031, 0.0005762718, -0.0013430463, -0.0010723888, + 0.0012889508, -0.0009529896, -0.0000780501, -0.0012693657, 0.0008593621, + -0.0025355413, -0.0013124018, -0.0013482643, 0.0016393259, 0.0003027177, + 0.0007279495, 0.0012160132, -0.0000438286, -0.0000190712, -0.0006484385, + -0.0007326007, 0.0006517312, 0.0003500152, 0.0034467063, -0.0002453902, + -0.0011364836, 0.0016531906, -0.0022869124, 0.0016602010, 1.6454699039, + -0.0005747664, 0.0002315955, -0.0008460992, 0.0024962006, -0.0019855895, + 0.0008208933, 0.0014590761, -0.0012463001, 0.0011531876, 0.0001075692, + 0.0018775261, 0.0014111036, -0.0012899588, -0.0034820782, -0.0006322936, + -0.0010906348, 0.0012501938, -0.0031888909, -0.0009915945, -0.0022457012, + -0.0004319381, 0.0011073747, -0.0011706427, -0.0016397284, 0.0000774574, + 0.0017848406, -0.0017561291, -0.0011865295, -0.0016410663, 0.0011627777, + -0.0044648983, -0.0018207235, 0.0016908525, -0.0001161695, -0.0002324693, + 0.0018477542, -0.0003075623, -0.0001621433, 0.0013771228, -0.0007521650, + 0.0007056138, 0.0007132533, -0.0010954114, 0.0010745504, 0.0010309216, + 0.0004600715, 0.0037272437, 0.0012789527, 0.0006070333, -0.0036421572, + -0.0020631424, 0.0007581031, -0.0001403810, 0.0007516661, -0.0008862312, + 0.0132757267, -0.0007802026, -0.0000379691, -0.0015815413, -0.0005617000, + 0.0015637951, -0.0002016770, -0.0008055400, -0.0001470640, 0.0008724499, + 0.0007522136, 0.0022817454, -0.0013980973, -0.0010339122, -0.0007524765, + 0.0003773987, 0.0003539061, -0.0005447586, -0.0016548124, 0.0003482196, + -0.0010365252, 0.0009047318, 0.0019006077, -0.0006955117, 0.0004335232, + -0.0019219522, -0.0007597143, 0.0001387101, -0.0010513249, -0.0000933143, + -0.0002729290, 0.0009984785, 0.0010345466, -0.0017377192, -0.0002810452, + 0.0016663268, -0.0010553929, 0.0003532760, 0.0003962899, -0.0001798985, + 0.0000708476, 0.0014812278, -0.0017495258, -0.0009314138, -0.0024040001, + -0.0000867713, 0.0013545024, -0.0003330102, 0.0017158630, 0.0002346447, + -0.0017697983, 0.0005409383, -0.0005196152, -0.0001395531, 0.8966620564, + -0.0010525656, -0.0007301131, -0.0003671022, 0.0005408693, 0.0010977876, + 0.0004917402, 0.0005347772, 0.0000908948, -0.0005001547, -0.0009983005, + 0.0003942557, -0.0011344585, -0.0039196350, -0.0014113465, -0.0012942809, + -0.0028289170, 0.0009028382, -0.0010949797, 0.0002059308, -0.0003788467, + 0.0003496082, -0.0014036349, 0.0000847916, 0.0009702020, -0.0013186350, + -0.0011476164, 0.0000919909, -0.0018701064, -0.0020618504, -0.0014840607, + -0.0000257383, 0.0025571836, -0.0008957358, -0.0006906535, -0.0005488507, + 0.0000816372, -0.0002782826, 0.0004207663, 0.0016184924, -0.0007029048, + -0.0017051590, -0.0002012001, -0.0013847579, -0.0009221368, 0.0003133358, + 0.0001979894, -0.0003291983, 0.0000964259, 0.0019315039, -0.0012224950, + 0.0014419396, 0.0004728716, 0.0002289140, -0.0007476322, -0.0009563952, + 0.8310549259, -0.0020605098, 0.0009898376, -0.0007577047, -0.0004451368, + 0.0002369811, -0.0020428523, 0.0007525255, 0.0014234995, 0.0002465343, + 0.0011393430, -0.0004832991, 0.0014373674, -0.0003639101, 0.0002822283, + -0.0014734296, 0.0007155640, 0.0002292516, 0.0005080227, 0.0000748001, + -0.0011723777, -0.0002224440, -0.0031667296, 0.0007355623, -0.0010670624, + -0.0002594423, 0.0004114052, -0.0007683618, -0.0016791080, -0.0005554948, + -0.0004626624, -0.0009555940, 0.0000827087, -0.0010666570, 0.0024201744, + 0.0007185120, 0.0018230724, -0.0017037555, 0.0011740900, 0.0003760927, + 0.0012379142, 0.0009714379, -0.0003656074, -0.0002429206, -0.0018477470, + 0.0009398297, 0.0011232819, 0.0001688347, 0.0014038262, -0.0003678519, + -0.0001275768, 0.0009872997, -0.0015500956, -1.1681423187, -0.0001221846, + -0.0146120619, 0.0005614373, -0.0001068665, -0.0006457225, -1.4879640341, + 0.0009649950, -0.0002691108, 0.0005986700, -0.0019728597, 0.0000928070, + 0.0030814512, 0.0016298504, -0.0008926606, 0.1473575979, -0.0009127306, + 0.0010170456, 0.0016864853, -0.0015843605, 0.0082562827, -0.0019569807, + -0.0006365930, 0.0009598676, -0.0016617640, -0.0014883971, 0.0020205844, + 0.0026370147, 0.0001167478, 0.0004261306, -0.0021961709, 0.0002311170, + 0.0001549243, 0.0008784756, 0.0020767888, -0.0005505071, 0.0018506362, + 0.0005008061, 0.0008652161, -0.0005463925, 0.0020767325, 0.0014328815, + 0.0008903064, -0.0003113248, -0.0022090804, -0.0007735356, -0.0007735305, + 0.0004821091, 0.0004007444, 0.0001765373, 0.0016509513, -0.0012054900, + -0.0002953652, 0.0004822938, -0.0006410520, -0.0007123740, 0.0021059988, + 0.0007476676, -0.0005389065, -0.0012963384, 0.0028844639, -0.0030338408, + 0.0002306083, 0.0007311375, -0.0011008428, -0.0009744756, -0.0014096057, + 0.0002828832, 0.0004818346, 0.0002119411, 0.0000795028, -0.0002282285, + -0.0017853109, -0.0034293875, -0.0013166601, -0.0006417413, 0.0006428515, + -0.0011809557, -0.0013664981, 0.0032047760, -0.0006638323, 0.0020494007, + -0.0010169353, -0.0004261972, 0.0016822862, 0.0005681277, -0.0015104916, + 0.0021996624, -0.0006338581, 0.0002076221, -0.0005864962, -0.0011695167, + 0.0011977633, 0.0022855615, 0.0005409174, 0.0008606536, 0.0017411336, + -0.0010294965, 0.0018624002, -0.0008889221, -0.0018445840, 0.0004940424, + 0.0005029184, -0.0014407553, -0.0011977451, -0.0014959318, -0.0031508652, + -0.0000844966, -0.0012066602, -0.0004966520, -0.0015478979, 0.0015416249, + -0.0000976510, 0.0006204308, -0.0006856881, 0.0001076809, -0.0005129956, + 0.0022808488, 0.0010398111, 0.0002485854, 0.0001449492, 0.0001923139, + 0.0003136247, -0.0010640151, 0.0025945259, -0.0005799717, -0.0002316921, + -0.0020263512, 0.0005715012, 0.0018365108, -0.0023590410, 0.0006450280, + 0.1496019512, 0.0001566587, -0.0009183603, -0.0008208443, 0.0008985018, + 0.0006540898, 0.0002494685, -0.0016157103, 0.0010647597, -0.0001661945, + -0.0003819806, -0.0005047576, -0.0005846680, 0.0019647246, -0.0003606216, + 0.0014681802, -0.0014751186, 0.0020244615, 0.0006673355, 0.0003147149, + -0.0004144353, 0.4682790339, -0.0006287296, 0.0003751800, -0.0006472545, + 0.0005639843, 0.0007346140, -0.0001128737, -0.0017559957, -0.0010687746, + -0.0011300328, -0.0002198517, 0.0022664354, -0.0009549605, 0.0000972566, + 0.0003507161, -0.0001924932, 0.0012649870, 0.0001229313, -0.0029857676, + 0.0001205260, 0.0027208675, -0.0023026359, -0.0010907738, -0.0006076433, + -0.0006448647, 0.0006034758, -0.0029476134, -0.0008074241, -0.0020310576, + 0.0005068976, 0.0017406372, -0.0002848699, 0.0018193034, -0.0015802365, + -0.0014570890, -1.2647298574, 0.0015861089, 0.0003496858, 0.0014347506, + 0.0012678737, -0.0004954755, 0.0005970409, -0.0004221068, 0.0004171210, + -0.0001928490, -0.0003920743, 0.0000111469, -0.0006485931, -0.0006419104, + 0.0008307681, -0.0013290226, 0.0003933343, -0.0000472199, 0.0015604733, + -0.0000331164, -0.0007141023, 0.0012652772, -0.0002372374, -0.0008462844, + 0.0009181392, -0.0005632914, -0.0001561712, 0.0008345218, -0.0005729941, + 0.0009768460, 0.0014226795, -0.0024226110, 0.0018166333, -0.0012499266, + -0.0011725836, -0.0013357182, 0.0017830324, -0.0000552399, -0.0015299262, + 0.0014936160, 0.0012017624, -0.0008056504, 0.0008296631, -0.0014474660, + 0.0001926953, 0.0014170366, 0.0529083647, 0.0002840382, 0.0026041772}; + +float unet_input_time_embedding_20_13[] = { + 0.0000799494, -0.0018389067, -0.0022668694, -0.0010798662, -0.0012394423, + 0.0007874849, 0.0000300708, 0.0001664167, -0.0012460246, -0.0009573097, + 0.0005805872, 0.0009131678, 0.0010925625, 0.0002281028, 0.0015664082, + 0.0016871181, -0.0015023164, 0.0009049599, -0.0021496587, 0.0021874714, + 0.0006625839, -0.0011813333, 0.0022846991, 0.0193842761, -0.0005578131, + -0.0013183670, -0.0000394313, -0.0010390226, 0.0008308686, -0.0014102245, + 0.0007329875, -0.0018984708, 0.0007069269, 0.0002027084, 0.0005877293, + -0.0008231825, -0.0005373936, -0.0001979305, -0.0011436185, -0.0013967706, + -0.0001869397, -0.0000902899, -0.0000966638, 0.0004093172, -0.0005448720, + -0.0013260422, 0.0015453366, -0.0007653590, -0.0015422478, 0.0009675128, + 0.0001960169, 0.0009390123, 0.1211774349, 0.0001171650, 0.0000175804, + 0.0023398094, 0.0007634623, -0.0001711879, 0.0003893333, -0.0001341582, + 0.0000501671, 0.0019094601, 0.0010143700, 0.0001957386, -0.0003266400, + 0.0017581023, -0.0004555243, 0.0000162787, -0.0009161215, -0.0003966813, + -0.0032619857, 0.0014649415, -0.0019913253, -0.0000245026, 0.0005486403, + 0.0013650507, -0.0015475629, 0.0006433977, 0.0014947124, 0.0002374358, + 0.0000363615, 0.0008653799, -0.0009936574, -0.0003037192, -0.0006321417, + -0.0011114741, -0.0009211390, -0.0019166251, 0.0005825534, 0.0002637547, + 0.0004934313, -0.0010589808, -0.0004186276, -0.0000576588, -0.0017996696, + -0.0014354137, 0.0012435475, 0.0018104217, -0.0004184558, -0.0005538338, + -0.0022744457, 0.0024405965, -0.0026133573, 0.0047383453, 0.0021324474, + 0.0028172256, -0.0020240950, 0.0010736659, -0.0001395750, -0.0014952593, + 0.0006382908, 0.0031158887, 0.3137565553, -0.0020751692, -0.0019128826, + -0.0002611293, -0.0004600822, 0.0025682703, -0.0003561412, -0.0013107413, + -0.0002248073, -0.0010877377, -0.0768326744, 0.0013033384, -0.0004206169, + -0.0004885481, 0.0016198270, 0.0003408794, -0.0013652770, 0.0003972747, + 0.0020017582, -0.0018335087, -0.0005015747, 0.0032613608, 0.0001452374, + -0.0006382016, 0.0018705439, -0.0012571411, -0.0006150827, -0.0013479833, + 0.0003508052, 0.0001338124, 0.0004071225, -0.0007626396, -0.0016265167, + 0.0022828544, -0.0031556347, -0.0013382509, -0.0002214871, 0.0000626827, + 0.0003047783, -0.0008813316, -0.0009261414, 0.0017455451, -0.0010567312, + -0.0003352091, 0.0006196015, -0.0009020483, -0.0002076835, 0.0009037717, + 0.0010340721, -0.0015675196, -0.0022974489, 0.0003798628, 0.0022032480, + -0.0025378938, -0.0002425832, 0.0013834410, 0.0127890566, -0.0022174534, + -0.0019007266, -0.0005713957, -0.0012189508, 0.0008506560, 0.0004380769, + -0.0006951620, 0.0004195113, 0.0026010862, 0.0011894819, 0.0003690198, + 0.0017654179, 0.0016897526, 0.0033527301, 0.0006537668, 0.0002765255, + -0.0009120884, -0.0000500306, -0.0007206020, 0.0000467291, -0.0032288060, + 0.0005706926, -0.0004810821, 0.0006672292, 0.0014777787, -0.0007623145, + -0.0011075488, 0.0011847293, -0.0006635608, -0.0005450147, -0.0023293276, + -0.0018472155, -0.0000590589, -0.0009605009, 0.0014192150, -0.0005340441, + -0.0014905455, -0.0000106718, 0.0014949953, 0.0011117035, -0.0015676538, + 0.0017646165, -0.0002205879, -0.0003519170, 0.0015168397, -0.0020123932, + 0.0009040390, 0.0003018808, -0.0004912266, 0.0020549260, -0.0004552325, + 0.0000246763, 0.0019492933, -0.0019116041, -0.0323814154, 0.0002457442, + -0.0018777386, -0.0014903899, -0.0005406206, 0.0021963224, 0.0005574087, + 0.0020302366, -0.0009796144, -0.0009335848, -0.0011154222, -0.0001603793, + 0.0011371886, -0.0033259536, 0.0004053200, 0.0008385098, -0.0004122336, + 0.0004200607, -0.0012346541, -0.0005300438, 0.0014411453, -1.0674436092, + 0.0002875060, -0.0028285449, -0.0015634050, 0.0018577706, -0.0005273311, + 0.0000060573, -0.0018433864, -0.0004676408, -0.0009009913, 0.0009935293, + 0.0010857948, 0.0017077702, 0.0016489987, -0.0012264044, 0.0003482286, + -0.0017926944, 0.0020452233, -0.0012198465, -0.0047281454, 0.0016609250, + 0.0001938581, -0.0022841725, 0.0004071337, -0.0001844689, -0.0009336355, + -0.0015176884, 0.0006946148, 0.0006570560, 0.0002660158, -0.0017417963, + 0.0004432537, -0.0022288612, 0.0019544414, 0.0004655346, 0.0003781160, + 0.2299138159, -0.0001164861, 0.0007344633, -0.0021424461, -0.0037432616, + -0.0009595053, -0.0002092859, 0.0024832601, -0.0002805642, -0.0002638726, + 0.0005442869, 0.0012627493, 0.0000914040, -0.0009260495, -0.0026085153, + 0.0013506431, 0.0007013180, -0.0004224549, 0.0028361180, 0.0022597783, + -0.0033835387, 0.0000227585, -0.0014773951, 0.0018129307, 0.0002339457, + 0.0019233841, 0.0007332712, -0.0010863405, 0.0000907509, 0.0001145098, + -0.0011616476, 0.0011626806, 0.0021782208, -0.0002693487, -0.0016369845, + 0.0000251546, -0.0008546835, 0.0020633237, -0.0012082043, 0.0014300440, + -0.0005361878, -0.0001909253, 0.0004414239, 0.0019288436, 0.0003685037, + -0.0003157016, -0.0014630221, 0.0007913949, 0.0493760556, -0.0009128368, + -0.0016820761, 0.0013566990, -0.0000989732, -0.0006240476, -0.0022001774, + -0.0013195509, 0.0009574022, -0.0002197867, 0.0021466059, 0.0014119083, + -0.0014023678, 0.0018354838, -0.0002778473, 0.8398938775, 0.0008220419, + 0.0027006159, -0.0008670922, 0.0011412447, -0.0000482677, -0.0005266248, + 0.0011308873, -0.0028442396, -0.0003356766, -0.0005762968, -0.0013866028, + -0.0012632180, -0.0000354152, -0.0005827645, -0.0005339202, 0.0026857643, + -0.0008407980, 0.0013941242, -0.0015731039, -0.0009008716, 0.0019822656, + 0.0014970975, 0.0015803357, 0.0003401153, -0.0004801843, -0.2872158885, + -0.0000618268, 0.0020422721, 0.0009434167, -0.0014535347, -0.0011844493, + 0.0000168000, 0.0011905899, -0.0012835206, -0.0004130311, 0.0018928144, + 0.0001594416, 1.4848409891, -0.0019329309, 0.0004685535, 0.0021281657, + -0.0010475069, -0.0001332513, 0.0009568827, 0.0000441675, 0.0009661657, + -0.0024958444, -0.0016233778, 0.0001732996, 0.0017351143, -0.0009695161, + -0.0009313039, 0.0010430072, -0.0006796127, 0.0017670426, 0.0017562369, + 0.0023768649, 0.0010069949, 0.0013281379, 0.0013377122, -0.0012303451, + -0.0003068007, -0.0011300844, 0.0022787449, 0.0011400101, 0.0001890585, + 0.0016410486, 0.0007746798, -0.0002374542, 0.0007844777, 0.0019478253, + -0.0005752787, -0.0006597834, 0.0011069910, 0.0000303322, 0.0012717368, + -0.0003820106, 0.0014857103, -0.0011811252, -0.0001177343, 0.0013943291, + -0.0003254018, 0.0001509432, 0.0000370538, -0.0004394983, -0.0008955752, + 0.0016906592, -0.0001729794, -0.0014196171, -0.0012855958, -0.0009245317, + -0.0019333903, 0.0001263637, 0.0007087418, -0.0010343026, 0.0008926478, + -0.0004357556, -0.0020313635, -0.0003956266, 0.0001103163, 0.0003215743, + 0.0008685966, 0.0001968555, -0.0000072895, -0.0008559977, -0.0024282122, + 0.0006842450, 0.0002990039, 0.0000862868, 0.0000226744, -0.0006916805, + 0.0004206612, 0.0017945990, 0.0001745513, 0.0005163690, -0.0000906107, + -0.0020096216, 0.0007243063, 0.0002580679, -0.0025101430, -0.0004579853, + 0.0009187500, 0.0010139411, -0.0018950338, 0.0011950055, -0.0002884190, + 0.0007277182, -0.0000577169, 0.0010547605, 0.0019592696, -0.0000436329, + 0.0051429179, -0.0002495078, 0.0003411006, -0.0016521346, 0.1488115042, + 0.0013446661, -0.0001086118, 0.0002698328, 0.0017353941, 0.0006833978, + 0.0022839424, 0.0005866732, 0.0015957197, 0.0013425904, 0.0000063193, + -0.0009073401, 0.1843423992, -0.0009398428, 0.0024415124, -0.0002832054, + 0.0008518341, 0.0010776548, -0.0011323430, -0.0015116697, -0.0009828357, + 0.0015198574, -0.0006577224, -0.0021913648, 0.0014416147, -0.0001153292, + -0.0001719320, 0.0015382851, -0.0017004664, 0.0008580671, 0.0007875026, + 0.0020584459, -0.0005596178, -1.6255638599, -0.0012334837, -0.0000488436, + -0.0012746402, 0.0007750117, 0.0008006059, -0.0001127115, 0.0019758220, + -0.0000152024, 0.0006397883, -0.0024544075, 0.0000732136, 0.0014544716, + 0.0017392123, -0.0010000449, 0.0003090487, -0.0004724674, -0.0015348098, + -0.0002571880, -0.0006519454, -0.0020268862, -0.0014357485, -0.0005571535, + -0.0010386386, -0.0019044988, 0.0017398170, 0.0013127681, 0.0000666790, + -0.0000172295, 0.0014780322, -0.0002207431, 0.0002015699, -0.0008262566, + -0.0009294041, 0.0026524118, -0.0004828689, -0.0003282605, -0.0018772529, + -1.0844995975, -0.0002615219, -0.0011470988, 0.0003171922, -0.0008874298, + 0.0011344579, -0.0012318827, -0.0004015840, 0.0008932413, -0.0010559154, + -0.0019523525, -0.0000519127, 0.0015419475, 0.0024462123, 0.0009779735, + -0.0009703608, 0.0007140064, 0.0000263082, -0.0003518844, -0.0019345293, + 0.0002810244, 0.0016199797, 0.0005524915, -0.0012990659, 0.0006778971, + 0.0005537048, 0.0002497830, -0.0000189631, 0.0002498911, 0.0003087355, + -0.0001450554, 0.0000447249, 0.0021558809, 0.0002210675, 0.0001488181, + -0.0010087769, 0.0004425268, -0.0001436081, -0.0009046160, 0.0016983612, + 0.0001576579, 0.0008433280, 0.0007054228, -0.0013823016, 0.0014153455, + -0.0034177867, -0.0013723582, 0.0024808156, -0.0028873920, -0.0005028620, + -0.0000186833, -0.0001886254, -0.0038667331, -0.0011053735, 0.0014911389, + 0.0000071935, 0.0030999845, 0.0003950361, -0.0009869860, -0.0011421007, + 0.0000543487, -0.0000081875, 0.0012425929, 0.0000393605, -0.0004203273, + -0.0024678358, -0.0000732777, -0.0019629644, 0.0011681793, -0.0004999477, + 0.0003603310, -0.0016135342, -0.0012878187, 0.0000318754, 0.0005231411, + 0.0013097269, 0.0009899323, -0.0016533781, 0.0007817578, 0.0002256068, + -0.0001165518, 0.0016500680, -0.0019651586, 0.0003965965, 0.0018538246, + -0.0000176411, -0.0001387422, 0.0000765066, -0.0015618955, -0.0000009395, + 0.0004391543, -0.0018924123, -0.0012061282, 0.0029544232, -0.0011994909, + 0.0000014635, 0.0008257870, 0.0001129915, -0.0021332223, 0.0011751754, + -0.0009684503, -0.0024138736, 0.0001488032, 0.0003804988, 0.0019453415, + 0.0007740741, -0.0000382047, -0.0012106504, 0.0000672062, -0.0003720084, + 0.0003413120, 0.0011246479, -0.0001799759, 0.0004796054, 0.0000215550, + 0.0019091014, 0.0008440725, 0.0000698463, 0.0009082851, -0.0011647145, + 0.0004702068, -0.0015685537, -0.0003193619, -0.0001869122, -0.0009763446, + 0.0008287868, 0.0006054910, -0.0005958043, 0.0018307902, -0.0000457042, + 0.0006135013, -0.0009493562, 0.0001044879, 0.0024156070, 0.0018674135, + -0.0000995272, -0.0005897218, -0.0013144528, 0.0017352579, 0.0018531904, + 0.0001366846, -0.0017370861, 0.0006172701, 0.0009690141, -0.0005488582, + 0.0008151243, 0.0006587869, -0.0003500851, -0.0012354085, -0.0015731491, + 0.0018902209, -0.0002228050, -0.0001618885, -0.0004441928, 0.0010657706, + 0.0006657657, -0.0010050614, -0.0000112737, -0.0008781564, -0.0002791477, + 0.0008754293, -0.0061442982, -0.0020831411, 0.0005005589, -0.0009217574, + 0.0022556819, -0.0015826700, -0.0006269798, -0.0019020757, 0.0024825875, + 0.0007548267, -0.0010324991, 0.0008479005, 0.0009558787, 0.0010432678, + -0.0017732056, 0.0021946961, 0.0001586552, -0.0014129044, -0.0010731486, + -0.0001118612, -0.0012878720, -0.0002777779, 0.0003745756, 0.0012398162, + 0.9506810308, 0.0013920120, 0.0005853549, 0.0017736387, -0.0007569464, + 0.0001462516, -0.0004358450, 0.0003922232, -0.0008785918, 0.0005360493, + -0.0017836280, 0.0018586906, 0.0003397687, -0.0001830151, -0.0011955276, + 0.0001567190, -0.0021154082, -0.0028086896, -0.0005374528, 0.0013163926, + -0.0015604510, 0.0001387675, -0.0001221077, 0.0008151520, -1.3020459414, + -0.0027252589, -0.0014455586, 0.0013031396, -0.0000286484, -0.0008447128, + 0.0007364606, 0.0006380080, 0.0012177941, 0.0038047037, 0.0010063299, + -0.0006291261, 0.0003660619, 0.0004154863, 0.0008652357, 0.0003757323, + 0.0022913199, 0.0012269169, -0.0010017911, 0.0012237690, -0.0011699470, + 0.0003589583, -0.0011877556, -0.0005116586, -0.0019440642, -0.0003371607, + 0.0007246644, 0.0091595072, 0.0017597852, -0.0007011550, 0.0016676183, + -0.0009906742, 0.0023228948, 0.0002536625, 0.0000065113, -0.0003524987, + -0.0004806407, -0.0008632569, -0.0000645521, 0.0007704063, 0.0000987516, + 0.0004677532, 0.0004137564, 0.0018223961, -0.0018784460, -0.0003153468, + -0.0009604022, 0.0021023643, 0.0002220420, -0.0006605999, -0.0019912603, + 0.0020200294, -0.0018815667, -0.0006984348, 0.0012905081, 0.0016194112, + 0.0000059609, -0.0012817848, -0.0020912802, -0.0006840964, 0.0018484539, + -0.0007984634, 0.0015314250, 0.0000400288, -0.0010256951, 1.3712226152, + -0.0000254815, 0.0007364380, -0.0004519037, -0.0004892051, 0.0015635178, + -0.0015952184, 0.0008966038, -0.0003193635, -0.0014681735, 0.0018654540, + -0.0004794572, -0.0007369707, 0.0003847205, -0.0003165724, -0.0016884619, + 0.0004319331, 0.0013765948, 0.0207071844, -0.0006463765, -0.0010645101, + 0.0006741881, 0.0009174333, -0.0009118435, 0.0006054332, -0.0015937064, + -0.0009046011, -0.0005224135, 0.0002246712, -0.0022221673, -0.0014066556, + 0.0058380384, -0.0002134321, -0.0019292438, 0.0007680911, -0.0000019213, + 0.0007122220, -0.0004728832, 0.0016009826, -0.0008997655, -0.0018305257, + 0.0017682584, 0.0022621974, -0.0018116115, -0.0003093525, -0.0005501156, + -0.0006386945, 0.0036699786, -0.0013271533, 0.0004968767, 0.0016185632, + -0.0008939744, -0.0003858292, -0.0031174375, -0.0012100568, -0.0004438520, + 0.0500542596, -0.0010461080, -0.0027061757, -0.0007180527, 0.0004063991, + 0.0000179233, 0.0020242934, 0.0011753477, -0.0008938306, 0.0014617001, + -0.0004902920, 0.0004399274, -0.0016607475, 0.0003835771, -0.0003847210, + -0.0000439307, 0.0009424284, 0.0005641103, -0.0016023776, -0.0012354115, + 0.0019587486, -0.0014591038, 0.0008200537, -0.0021529878, 0.0016389266, + -0.0013234382, 0.0003137719, 0.0015139690, -0.0030477257, -0.0006409078, + 0.0007890484, 0.0018808075, 0.0014175558, 0.0010077849, 0.0011208341, + -0.0037936301, -0.0011135223, 0.0006807249, -0.0002616993, 0.0008255120, + -0.0006233957, -0.0003331997, 0.0004959879, 0.0013874313, 0.0014224504, + -0.0011594188, 0.0016569966, 0.0002829849, -0.0002639472, 0.0005413162, + -0.0026654685, 0.0028519279, -0.0004070179, -0.0015750057, 0.7597764730, + -0.0017932639, 0.0002405783, 0.0014495365, -0.0001930988, 0.0001672339, + -0.0002407255, 0.0023961507, -0.0012225835, 0.0003482173, -0.0007481035, + -0.0009285448, 0.0009875800, -0.0034702774, -0.0000512557, -0.0004859385, + 0.0006692512, 0.0013274598, -0.0010999953, 0.0007814239, 0.0009872850, + 0.0004716171, 0.0016718688, -0.0004560940, -0.0003517284, 0.0005968256, + 0.0006226087, 0.0014502356, 0.0017706435, -0.0011011707, -0.0002067704, + 0.0001056236, 0.0003848495, 0.0017101699, -0.0001324634, 0.0008413768, + 0.0009693438, -0.0017758523, 0.0005596279, 0.0004424183, 0.0002118698, + 0.0001509297, -0.0005699284, -0.0007748539, -0.0017518124, 0.0005540918, + 0.0009264115, -0.0009410568, -0.0007988245, 0.0010878849, 0.0014212010, + -0.0019454696, 0.0017104559, 0.0008889143, 0.0006067571, -0.0033094059, + 0.6399618387, 0.0007470048, -0.0002869144, -0.0019677368, -0.0016079587, + 0.0000009032, -0.0012245756, 0.0002504537, -0.0005429070, 0.0008977926, + 0.0011820814, -0.0015107524, 0.0009328253, -0.0003689078, -0.0011953817, + -0.0010284875, -0.0009132926, 0.0000390126, -0.0003595403, 0.0010729241, + 0.0018451519, -0.0012141456, -0.0008285847, -0.0035849465, -0.0002670004, + 0.0008656927, -0.0009010935, 0.0016809262, 0.0001253244, -0.0007708292, + -0.0030106371, -0.0015247834, 0.0008517891, 0.0012387361, -0.0013572925, + 0.0008652526, -0.0018145713, 0.0005248529, 0.0009378414, 0.0017251931, + -0.0006635340, -0.0004530030, -0.0007720306, 0.0025370712, 0.0015799205, + 0.0001266990, 0.0004217532, 0.0012270211, -0.0015698414, -0.0028937366, + 0.0001434169, -0.0002402267, 0.0000618272, -0.7714576721, -0.0006269196, + 0.0216691513, -0.0022509845, 0.0012808307, 0.0013115548, -1.0024977922, + -0.0028340085, -0.0013543218, 0.0005810587, -0.0003055264, -0.0001177173, + -0.0016694181, -0.0014895420, -0.0007088054, 0.4830795527, -0.0006460832, + -0.0001456093, 0.0013977012, -0.0009928105, 0.0017985986, -0.0003427304, + 0.0006795106, -0.0007934486, -0.0007398771, -0.0023674865, 0.0004232167, + -0.0002894187, 0.0009443862, -0.0003129654, 0.0013350132, -0.0020787711, + 0.0001770151, 0.0006982731, 0.0009025200, 0.0007115654, -0.0010040728, + -0.0008838703, 0.0005683459, 0.0025474210, 0.0010898933, 0.0005528056, + 0.0003950343, -0.0007133356, -0.0002379348, 0.0009587179, -0.0009205602, + -0.0029515990, -0.0019124290, 0.0025981287, 0.0012798216, 0.0002743378, + 0.0008521536, 0.0011480874, 0.0013091417, 0.0002720624, 0.0001914529, + -0.0004418502, -0.0004285937, -0.0012507907, -0.0017933655, -0.0014753358, + 0.0006025489, 0.0002948967, -0.0006688340, -0.0026696804, 0.0005867867, + 0.0021677478, -0.0009453143, -0.0002934677, 0.0005102702, -0.0002909238, + 0.0000322480, 0.0016654849, 0.0099860616, -0.0001766961, 0.0000939164, + 0.0003170581, -0.0006471454, -0.0011980403, -0.0005530901, 0.0000217138, + 0.0000793105, 0.0014387439, -0.0017977378, -0.0016187504, -0.0002478338, + -0.0000530829, 0.0011594407, 0.0011001150, 0.0001546144, -0.0000675169, + -0.0004276684, -0.0009648453, 0.0002416895, -0.0005207306, -0.0013953550, + -0.0006423516, -0.0010483833, 0.0019775219, -0.0021413635, 0.0002649399, + 0.0011329828, -0.0012558331, -0.0015871576, -0.0000838717, 0.0009629247, + 0.0003351225, -0.0001023612, 0.0016076490, -0.0004649779, 0.0007024704, + 0.0001862741, -0.0010234886, -0.0003115700, 0.0026334971, 0.0030123920, + 0.0002450065, 0.0001752681, -0.0016475450, -0.0009748731, -0.0003497056, + -0.0002987366, -0.0027744079, -0.0012138339, -0.0023995168, 0.0008357530, + -0.0016544354, -0.0017581659, 0.0009349443, 0.0003792129, -0.0009774026, + 0.2015811354, 0.0017734682, 0.0008533533, -0.0004395979, 0.0018762618, + -0.0000910792, 0.0002089015, 0.0001549355, 0.0007010102, -0.0016113492, + -0.0006206650, 0.0003719513, 0.0007820274, 0.0011321078, 0.0002423818, + -0.0012767585, 0.0008278824, -0.0009514233, 0.0014009550, 0.0007056692, + -0.0012111547, 0.4751980901, 0.0009909885, -0.0016338364, -0.0010007708, + 0.0003773929, 0.0007368226, -0.0001021884, 0.0006204532, -0.0004285206, + 0.0000977912, 0.0010307464, -0.0016280152, -0.0010300116, -0.0013447569, + -0.0012041826, 0.0008429457, -0.0022163768, -0.0012054085, -0.0012420765, + 0.0004662350, 0.0013156519, 0.0009662971, -0.0012616329, -0.0022056634, + 0.0001324794, 0.0004529864, 0.0001454344, -0.0008480642, -0.0000128308, + -0.0003246259, 0.0026069602, -0.0009060865, 0.0011960865, -0.0015116944, + -0.0023495620, -1.0896179676, -0.0011243927, -0.0002855910, 0.0000145005, + -0.0001430062, -0.0001597267, 0.0006644747, -0.0007182702, -0.0000372749, + 0.0012895130, -0.0004281135, 0.0001918719, -0.0007027555, -0.0010268013, + -0.0005676174, 0.0020965398, -0.0020322432, -0.0008742246, 0.0014354228, + 0.0024440871, -0.0008486258, -0.0014483540, 0.0010060440, -0.0013577007, + 0.0007911981, -0.0007642102, -0.0009957827, -0.0003801943, -0.0008470530, + 0.0018527968, 0.0003693667, 0.0015748967, 0.0008359571, 0.0011077728, + 0.0013313275, 0.0008043959, -0.0007954412, 0.0008092205, 0.0004528735, + 0.0012630634, -0.0009906734, -0.0003000732, -0.0000791103, -0.0000472539, + 0.0009247884, -0.0015088599, 0.0276355315, 0.0002487969, -0.0010792940}; + +float unet_input_time_embedding_20_14[] = { + -0.0004140036, 0.0002222641, 0.0006625485, 0.0001552880, 0.0001186864, + -0.0011977013, 0.0003460316, -0.0001048049, -0.0005810049, -0.0009092898, + -0.0013054342, 0.0010987287, 0.0032020165, -0.0006335690, -0.0003222954, + -0.0004375107, 0.0023043444, -0.0012849431, 0.0000019085, -0.0003535887, + -0.0007162956, 0.0023328019, -0.0021496331, -0.0180551782, 0.0014263655, + 0.0007854791, 0.0012174537, -0.0010541882, 0.0005040414, 0.0007390995, + -0.0016388693, -0.0008626101, 0.0018633911, 0.0005923943, 0.0010183898, + -0.0011742734, -0.0011793613, -0.0021634386, 0.0014065346, 0.0009661000, + -0.0012093419, -0.0000061216, -0.0000617229, -0.0009543179, 0.0003137994, + 0.0025823857, -0.0015737293, 0.0006917801, -0.0001800607, 0.0001474860, + 0.0001684069, -0.0017815630, 0.1629237384, -0.0007430138, 0.0011818490, + 0.0009604988, 0.0018814878, -0.0008983831, 0.0019568861, 0.0002370176, + 0.0004002571, -0.0015215046, 0.0000185943, 0.0016263425, -0.0001406465, + -0.0031685457, 0.0004773294, 0.0013567809, -0.0003464129, 0.0011736457, + -0.0006565209, -0.0012460044, 0.0018362498, 0.0009648292, 0.0004485813, + 0.0001644297, -0.0004045796, -0.0005482184, 0.0007607010, 0.0016075668, + -0.0005316630, 0.0010041563, -0.0011352797, -0.0005490263, -0.0008801550, + 0.0018438706, 0.0000312905, 0.0011106571, -0.0000364957, -0.0015688394, + -0.0004504568, 0.0032332013, -0.0012534037, 0.0013317008, -0.0022184295, + 0.0002106782, -0.0012798216, -0.0018349485, -0.0011677435, -0.0001124740, + 0.0001460104, -0.0015903213, 0.0007044934, -0.0163189229, -0.0025230390, + 0.0003730943, -0.0004454921, -0.0038081622, -0.0014235007, -0.0011431836, + 0.0027228515, -0.0002265433, 0.2771358490, 0.0006498629, 0.0000648480, + -0.0007614174, 0.0021258509, -0.0010630743, 0.0025012232, -0.0004177270, + 0.0005734949, -0.0002301082, 0.1035432220, 0.0006076074, 0.0005777683, + 0.0002978873, -0.0019161571, -0.0011909558, 0.0006278660, 0.0012241267, + -0.0005651624, -0.0001972634, 0.0006338705, -0.0017061997, 0.0012362634, + 0.0025560337, -0.0024316960, 0.0001082178, 0.0022597108, 0.0010562791, + -0.0008130118, 0.0007004417, -0.0002409224, 0.0019000247, 0.0021839605, + 0.0004258140, -0.0004601879, 0.0002350910, -0.0000756457, -0.0006412389, + 0.0003378115, 0.0010384183, 0.0007386340, 0.0002107400, 0.0002939408, + 0.0023902501, 0.0010661972, -0.0020317631, 0.0001720698, -0.0026220563, + 0.0009842617, 0.0034104921, 0.0009621540, -0.0004826344, 0.0003407975, + -0.0002714775, 0.0013021871, 0.0025378149, 0.0136350030, 0.0008551644, + 0.0011482880, 0.0019803466, 0.0011508712, 0.0022084191, -0.0033715302, + -0.0021013794, 0.0019108508, -0.0026057418, -0.0000758744, -0.0009617340, + -0.0003651953, -0.0007783081, 0.0056059514, 0.0003670442, -0.0014647099, + 0.0000719861, -0.0006029028, -0.0001010415, -0.0010404112, 0.0003992757, + 0.0004383167, -0.0017094840, -0.0016264553, 0.0002348421, 0.0009654239, + -0.0029547946, 0.0008746126, 0.0007178281, 0.0020199360, 0.0014612139, + -0.0003781724, 0.0003096093, 0.0002389350, 0.0002787190, 0.0002348665, + 0.0010971641, 0.0020921605, -0.0018686159, -0.0009824594, 0.0009120656, + 0.0025554071, -0.0008207993, -0.0012236105, -0.0011984019, 0.0004465240, + -0.0007166713, -0.0014063204, 0.0012139250, 0.0002772185, -0.0005465933, + 0.0015710397, -0.0015629544, 0.0010007129, -0.0020491714, 0.0011929709, + 0.0010031653, -0.0006797835, 0.0002176915, 0.0030076455, -0.0028506476, + -0.0012848834, 0.0010367101, 0.0012973500, -0.0021366444, -0.0000614515, + -0.0004993058, 0.0018852009, -0.0002930695, 0.0017566942, 0.0015150602, + 0.0019818705, -0.0008654536, 0.0012835085, -0.0022640554, -0.7704418302, + 0.0001396455, 0.0022564554, -0.0005186953, 0.0005805041, -0.0000791207, + 0.0017302036, 0.0013563284, 0.0002998603, 0.0005255332, 0.0006037517, + -0.0006778657, -0.0005038013, -0.0015682782, 0.0007078748, -0.0012101642, + 0.0001437375, -0.0018010524, 0.0019108036, 0.0016798315, -0.0026158434, + -0.0011181901, 0.0024291412, -0.0004664930, -0.0003823480, 0.0003672205, + 0.0013558702, 0.0015137915, 0.0019928780, -0.0026564021, -0.0001006608, + 0.0014501433, -0.0000880794, 0.0009307512, 0.0014586756, 0.0002876099, + 0.2377954274, 0.0004732991, 0.0000632213, 0.0010657534, -0.0007532667, + -0.0006506164, 0.0008347631, -0.0022368343, -0.0018848460, -0.0000986308, + -0.0001768245, -0.0001805183, -0.0008056511, -0.0008903013, -0.0011045374, + -0.0004648091, -0.0002671108, -0.0001566596, 0.0002597668, -0.0021746377, + -0.0002656020, 0.0031800519, 0.0024465369, 0.0004926827, -0.0014938405, + -0.0008292054, 0.0017294758, 0.0009423394, 0.0001527634, -0.0007746983, + 0.0006656682, -0.0000392804, -0.0021826995, -0.0011250209, 0.0010187486, + -0.0010582181, 0.0006737850, 0.0019872473, 0.0017980197, -0.0018167286, + 0.0015610687, 0.0008078634, -0.0006903380, -0.0021935930, -0.0002252409, + 0.0019972220, -0.0004124362, -0.0008477392, 0.0253876857, 0.0016156514, + 0.0025654538, -0.0005720293, 0.0010178605, -0.0004896512, 0.0004424066, + 0.0014973003, 0.0013569121, 0.0026536505, 0.0005262713, -0.0005525937, + 0.0005208710, -0.0008812824, 0.0017804413, 0.6392786503, -0.0009400796, + 0.0000136928, 0.0008108102, 0.0000839593, -0.0003988985, -0.0005104133, + -0.0001160977, 0.0000770744, 0.0001536193, 0.0029070107, -0.0007275395, + 0.0010393467, -0.0008286207, -0.0013793443, 0.0017029527, -0.0029395097, + 0.0001168349, -0.0016076718, -0.0006150724, 0.0010808106, -0.0008032579, + -0.0010751856, 0.0023984895, 0.0014300635, 0.0008747466, -0.0486053713, + 0.0011215648, -0.0003837268, 0.0020858385, 0.0029983362, 0.0018253906, + -0.0010216821, -0.0008583679, 0.0018358183, 0.0013885626, 0.0002783313, + -0.0008599040, 1.4749081135, 0.0014542496, -0.0007658564, -0.0010518925, + 0.0007249048, -0.0007552984, -0.0009528697, 0.0005170875, 0.0000680033, + -0.0019079805, -0.0000540612, 0.0018816260, -0.0012123040, -0.0016840994, + 0.0007586717, -0.0002793726, 0.0002113933, -0.0026885963, -0.0009282976, + 0.0015390557, 0.0010153307, -0.0010179223, 0.0008586156, 0.0004630508, + -0.0014496330, 0.0014989210, 0.0020007815, 0.0006627198, -0.0006119478, + 0.0019833734, -0.0005860943, 0.0007728045, 0.0000974599, -0.0016089398, + 0.0008681770, 0.0005641067, 0.0016597162, -0.0028001778, -0.0016523143, + -0.0000061619, -0.0025948284, 0.0001086109, 0.0000692236, -0.0030762386, + 0.0005314010, 0.0001483178, -0.0003900286, 0.0010435360, 0.0000299205, + -0.0007378762, 0.0001930048, -0.0004275425, 0.0013764910, 0.0000870369, + 0.0005463110, 0.0010317909, 0.0021342786, 0.0020001084, 0.0008455936, + -0.0015607551, 0.0008962834, -0.0007360097, 0.0010293995, 0.0019114052, + -0.0004257965, -0.0019497534, -0.0011542530, 0.0011440241, 0.0054064784, + 0.0011851103, 0.0005339338, -0.0002934786, -0.0005242331, 0.0010147511, + -0.0011439156, -0.0009137383, -0.0011696327, -0.0007131249, 0.0011921152, + -0.0008268177, 0.0005609933, 0.0003886649, 0.0031990227, 0.0010582851, + -0.0013634223, -0.0008304114, 0.0010160268, -0.0020438461, -0.0005425629, + -0.0013877263, -0.0008244731, -0.0000461526, -0.0012089822, -0.0000029784, + -0.0006010868, 0.0015873555, -0.0016488289, 0.0017127153, 0.1981812119, + -0.0012887609, 0.0003807222, -0.0006724203, -0.0009264841, -0.0000736389, + -0.0013571096, 0.0007176429, -0.0001175636, 0.0006683483, -0.0000877595, + -0.0010932577, 0.1435837001, -0.0007345050, -0.0003427113, -0.0003587452, + -0.0004240695, 0.0001020646, 0.0014982768, -0.0024149842, 0.0013608921, + 0.0007779771, 0.0004530801, 0.0008849325, -0.0016326350, -0.0001794163, + 0.0033621648, -0.0013112812, 0.0011409865, -0.0016848296, -0.0006127553, + -0.0006928064, -0.0000532782, -1.1151801348, -0.0013951687, 0.0041705240, + -0.0006816671, -0.0009936290, -0.0015489561, -0.0002036444, 0.0004242719, + 0.0003085225, -0.0019278820, -0.0021203700, -0.0028810031, -0.0018591951, + -0.0002527526, 0.0011913599, -0.0012673847, -0.0009354176, -0.0004039785, + -0.0010284737, 0.0035023759, 0.0014082384, -0.0005240638, 0.0000471619, + 0.0018634598, -0.0010955894, 0.0000532728, -0.0054586288, 0.0005696744, + 0.0031443145, -0.0004134020, 0.0007551778, 0.0000622333, -0.0005905305, + 0.0014700387, 0.0002868185, -0.0002844222, 0.0022765500, 0.0013250643, + -0.6837453842, 0.0016864054, 0.0008430451, -0.0010020342, 0.0010094414, + -0.0026021684, 0.0031705119, 0.0013526892, -0.0003667721, 0.0014121474, + -0.0012836894, -0.0012165484, 0.0008963016, 0.0000821285, -0.0005214205, + 0.0019518947, 0.0007874044, -0.0001458984, 0.0000530221, 0.0007448159, + -0.0001909818, -0.0011454085, -0.0012357980, 0.0006269983, 0.0004510530, + -0.0005760193, 0.0010314605, 0.0021592244, -0.0016286890, 0.0007003583, + -0.0020129366, -0.0002392661, 0.0005084793, 0.0006432227, -0.0017596467, + -0.0005540464, -0.0014164192, 0.0014857533, 0.0001754146, -0.0006774706, + -0.0001717313, 0.0010045492, 0.0004366115, 0.0005876599, -0.0007136972, + 0.0024949932, 0.0017778956, 0.0000939448, -0.0003550854, 0.0019355477, + 0.0007623113, -0.0006199512, -0.0040562218, -0.0008388233, -0.0008921493, + -0.0001018355, 0.0001731929, 0.0020056239, -0.0014518407, 0.0014232137, + 0.0004890501, -0.0016093352, -0.0025642891, -0.0003421861, 0.0017421460, + 0.0010318202, 0.0026960238, -0.0014314330, 0.0006930027, -0.0004597623, + 0.0000425749, 0.0019787182, -0.0003582479, -0.0013388554, 0.0020231628, + -0.0005987762, -0.0011917565, 0.0002832201, -0.0007534525, -0.0014549061, + 0.0002684356, 0.0023224638, 0.0014546803, 0.0000003048, 0.0002645273, + 0.0012598755, -0.0014516797, 0.0010877860, 0.0001123399, 0.0008304752, + 0.0007660807, 0.0009494729, 0.0006401006, 0.0001367491, -0.0004213690, + 0.0006517083, -0.0004103873, 0.0003529817, 0.0010444811, 0.0027868035, + -0.0015044060, 0.0024926970, 0.0012918168, 0.0000674170, 0.0021680933, + -0.0009621868, -0.0009471277, 0.0018965639, -0.0007974691, 0.0001517460, + 0.0006733378, 0.0003777095, -0.0013148618, -0.0011714316, 0.0023355205, + -0.0006067450, -0.0013285284, -0.0005685744, -0.0011981607, 0.0036295997, + 0.0007351001, 0.0004320543, -0.0008759517, -0.0015978382, -0.0028781425, + -0.0000933427, 0.0009399879, 0.0000585131, -0.0011495184, -0.0000311695, + -0.0014203025, 0.0007113209, 0.0007651635, 0.0001793091, -0.0010087509, + -0.0001349957, 0.0016520401, 0.0000132343, -0.0031188079, -0.0015342529, + -0.0004993910, 0.0010544844, 0.0010220206, -0.0014145267, 0.0004684697, + 0.0015327645, 0.0006743819, 0.0014002798, -0.0019181792, 0.0034716446, + -0.0011383248, 0.0025987211, -0.0006339632, -0.0001536491, -0.0009035566, + 0.0006847470, 0.0006909342, -0.0004103440, -0.0002769034, 0.0011709845, + -0.0007568458, 0.0016723741, 0.0004688707, 0.0006458885, 0.0002873768, + -0.0023687035, -0.0013728729, 0.0010328591, 0.0014600072, 0.0020930879, + -0.0014342116, 0.0027690066, 0.0020145630, -0.0014054654, -0.0003555098, + -0.0016269106, 0.0021108733, 0.0013617005, 0.0007225089, 0.0014070687, + 0.0000159359, 0.0013295934, -0.0006361862, 0.0014347737, 0.0001609116, + 0.6969127655, -0.0000592489, 0.0001753797, -0.0001943167, 0.0036507049, + -0.0004940233, 0.0030632755, 0.0007633213, 0.0020805453, 0.0001700725, + 0.0015852181, -0.0007056399, 0.0011350053, -0.0015607437, -0.0000081705, + -0.0011973896, 0.0007905301, 0.0019553688, -0.0008119899, -0.0012687480, + -0.0005690842, 0.0008009290, 0.0013449629, -0.0029071425, -0.6399224401, + 0.0018112455, -0.0001576624, -0.0014729751, -0.0011125547, -0.0012277020, + -0.0010466864, 0.0008140394, -0.0011863895, -0.0018499549, -0.0019674045, + 0.0008325237, -0.0025150767, -0.0006975820, -0.0011714264, 0.0003204443, + -0.0007915911, -0.0028431974, 0.0001198412, 0.0002746372, 0.0007034484, + 0.0000964473, 0.0031073585, 0.0002829612, 0.0008896529, -0.0012843763, + 0.0003989632, 0.0105211604, -0.0008199448, 0.0037350971, 0.0006627091, + 0.0004076805, 0.0004460639, 0.0014233247, 0.0004587076, -0.0005043974, + -0.0028596572, 0.0013595815, 0.0000162188, -0.0038250508, 0.0012353493, + 0.0002234137, -0.0020722628, 0.0009545929, 0.0008566836, 0.0000227042, + -0.0010389570, 0.0000459165, 0.0006976011, 0.0006645613, 0.0011817274, + 0.0000788228, 0.0004572074, -0.0003460740, -0.0021589207, 0.0011971272, + -0.0002693674, 0.0004957300, -0.0001472365, 0.0004366664, -0.0016261579, + 0.0015491978, -0.0005396850, 0.0007165354, 0.0008834891, 1.0940024853, + -0.0001431666, -0.0002481700, 0.0045942725, -0.0014317825, -0.0009628232, + 0.0015318275, 0.0011837850, 0.0021179640, 0.0037843811, 0.0025149402, + -0.0005840079, -0.0004167620, 0.0002797642, 0.0023629465, 0.0001010232, + 0.0001088281, -0.0013829637, 0.0473909937, 0.0007459992, -0.0012777392, + 0.0014406247, 0.0008228342, -0.0008190956, 0.0020685652, -0.0019854654, + 0.0010790881, 0.0012134025, -0.0012874795, 0.0013174629, 0.0023192344, + 0.0132873449, 0.0012992416, -0.0003944596, 0.0004474563, 0.0001813406, + -0.0011675241, 0.0015427205, -0.0001301276, 0.0000014062, 0.0009325473, + -0.0010733763, -0.0014936994, 0.0046976302, 0.0008161517, 0.0005349895, + 0.0000114744, -0.0055892705, 0.0018384289, 0.0005072071, 0.0015182281, + 0.0019059349, -0.0003109919, 0.0016199485, -0.0015678062, -0.0010517808, + 0.0743555278, 0.0014585970, -0.0011801203, -0.0002531270, -0.0001733282, + -0.0033504611, 0.0002884264, 0.0008157007, -0.0005184368, -0.0006804770, + -0.0017730978, 0.0006190860, -0.0002407325, 0.0004153121, -0.0006551826, + -0.0015021581, -0.0008761033, 0.0013627646, 0.0002932725, -0.0001588278, + -0.0033706939, 0.0006472530, 0.0014475025, 0.0005068155, 0.0000541518, + 0.0013677524, 0.0006159432, 0.0014388616, 0.0004467936, 0.0014322130, + -0.0005577378, -0.0011134850, 0.0004749550, 0.0008461848, -0.0005376996, + -0.0001295693, -0.0016913032, 0.0002139597, 0.0010290002, -0.0027352287, + 0.0002679257, 0.0016531730, -0.0007518297, 0.0008457666, -0.0016778000, + 0.0018830374, -0.0008846051, -0.0003044829, 0.0000260266, -0.0000838095, + -0.0001644772, -0.0009481578, 0.0015057056, 0.0010881540, 0.6144497395, + -0.0002744254, 0.0018545818, 0.0011764783, -0.0010136261, -0.0011294903, + 0.0001833215, 0.0022840933, -0.0000438672, 0.0003382554, -0.0010534548, + -0.0011512061, -0.0012910427, -0.0003681667, 0.0024437096, -0.0010665725, + 0.0014681474, 0.0015835479, 0.0012007654, -0.0011284649, -0.0014097476, + 0.0002234438, 0.0019217557, 0.0022412683, -0.0020855637, -0.0013773493, + -0.0007205394, -0.0007569545, 0.0002577147, -0.0021553906, -0.0000746548, + 0.0019052087, -0.0005811863, -0.0007587643, -0.0027897735, 0.0009057708, + 0.0000328652, 0.0022488427, -0.0023860938, -0.0003363518, -0.0010017243, + -0.0000534919, -0.0000494807, 0.0013381648, -0.0010091659, -0.0003679721, + 0.0013539523, 0.0024900772, -0.0004645009, 0.0005155005, -0.0004828069, + 0.0004434470, -0.0000794725, -0.0006984253, 0.0003476394, 0.0005118824, + 0.4610164464, -0.0009600741, 0.0008932352, -0.0005885477, -0.0005245223, + 0.0021387672, 0.0012211292, 0.0009078766, 0.0007616691, -0.0008785902, + 0.0010082673, 0.0022058259, 0.0009553926, 0.0002160599, 0.0013116888, + 0.0009687366, 0.0010949867, -0.0009177360, -0.0014022072, 0.0004491638, + 0.0008065733, 0.0022135754, -0.0031048767, -0.0004444979, 0.0008563777, + -0.0001742309, 0.0022244849, 0.0002556408, 0.0006649666, 0.0022291280, + -0.0011561881, 0.0013622616, -0.0015120335, 0.0008131566, 0.0011385428, + -0.0019777829, 0.0008641892, 0.0008289954, -0.0029203526, 0.0002080626, + 0.0013712260, 0.0013724314, -0.0002486333, -0.0007255161, 0.0017134936, + 0.0002864562, -0.0012153063, -0.0004572301, -0.0009066073, 0.0018199375, + -0.0013024616, 0.0015463177, 0.0016683782, -0.3394517601, 0.0016678839, + 0.0411394536, 0.0004528213, -0.0012894589, -0.0028751416, -0.5135992765, + 0.0028496250, -0.0011502537, -0.0007336745, -0.0010185288, 0.0013752379, + -0.0003794360, 0.0007825310, -0.0003959304, 0.7327728868, 0.0013885102, + 0.0012595567, -0.0024684074, -0.0005274137, 0.0002752924, 0.0009208843, + -0.0006769467, -0.0018602964, 0.0002973797, 0.0021259363, -0.0025640219, + 0.0003538895, 0.0000494081, 0.0009255719, -0.0005340250, 0.0005075163, + -0.0011845280, -0.0011286319, -0.0012834170, -0.0010286239, 0.0006848983, + 0.0014547822, -0.0001636287, -0.0010517295, 0.0003056233, 0.0005233032, + 0.0004239425, -0.0003169591, -0.0001781904, -0.0003095483, -0.0006244015, + 0.0003909057, -0.0006999196, -0.0030945735, -0.0008907588, -0.0015260894, + -0.0014618952, 0.0016851164, -0.0023533881, 0.0008264917, -0.0016947696, + -0.0018065423, -0.0019159536, 0.0016414616, 0.0018555298, 0.0021399271, + -0.0006602402, -0.0013070399, 0.0003804490, -0.0001074066, 0.0015884909, + 0.0001644737, -0.0024262462, -0.0005775797, -0.0019686990, -0.0024645501, + 0.0004942054, 0.0000890600, 0.0117409155, 0.0015160232, -0.0037572565, + 0.0012272955, 0.0002035621, -0.0007555420, 0.0005348017, -0.0006106321, + -0.0011368571, -0.0006003962, 0.0018595862, -0.0005202899, 0.0007014098, + 0.0001972849, 0.0002994537, 0.0003683562, -0.0006653816, -0.0007556232, + -0.0002914765, 0.0022910209, 0.0020360495, -0.0006772326, 0.0004065987, + 0.0028164927, 0.0011282573, 0.0006837287, 0.0012621824, 0.0011017299, + 0.0003300048, -0.0001196566, -0.0013664879, 0.0002552555, 0.0006939962, + -0.0007077460, -0.0001903239, 0.0012662802, -0.0004422249, -0.0020915773, + -0.0003132154, 0.0013998188, 0.0012662634, -0.0013890211, 0.0000060313, + 0.0001353293, -0.0005650086, 0.0000779675, 0.0006978521, 0.0000312841, + -0.0017933925, 0.0000873574, -0.0002177507, 0.0018079529, -0.0009112824, + 0.0003127772, -0.0002847877, -0.0002293058, -0.0004729903, -0.0000578710, + 0.2354328483, -0.0005788582, 0.0002997952, -0.0016444923, 0.0006829801, + 0.0010098787, 0.0017272776, -0.0013808163, 0.0003248688, 0.0020069117, + -0.0018668454, 0.0001159931, -0.0010028402, -0.0009055925, -0.0001787287, + 0.0011881562, 0.0001686560, -0.0001503490, 0.0008412339, -0.0034083514, + -0.0010227915, 0.4213223755, -0.0008493916, -0.0013979548, 0.0008971933, + 0.0016378793, -0.0008360118, 0.0006569009, 0.0005685920, 0.0004320154, + -0.0001974264, 0.0017412193, 0.0002542455, 0.0013004299, 0.0002292662, + 0.0017698077, -0.0006425329, 0.0014586491, 0.0011057635, 0.0000466953, + -0.0006584481, -0.0004526363, -0.0002689761, -0.0008603274, -0.0001331782, + 0.0000860053, -0.0001670058, 0.0012039845, 0.0009208685, -0.0014632372, + 0.0005678217, -0.0021679807, -0.0011416189, -0.0008709290, 0.0027832957, + 0.0013654424, -0.7769652009, 0.0012049740, 0.0005598858, -0.0011539222, + -0.0006665143, 0.0013901771, 0.0002930139, 0.0007969325, -0.0012874706, + -0.0000246642, -0.0001367036, 0.0005857520, 0.0003134846, 0.0010166285, + -0.0002522045, -0.0007320930, -0.0000694753, 0.0000019972, -0.0022278540, + 0.0009222468, 0.0027950089, 0.0011221301, -0.0028299349, 0.0015457617, + 0.0012487257, 0.0005320022, -0.0014429269, 0.0014235810, 0.0010928428, + 0.0008763581, -0.0002724403, 0.0001309719, -0.0019323382, 0.0000505410, + -0.0001036949, 0.0008522053, 0.0003924589, -0.0006565623, -0.0021759442, + -0.0000576624, -0.0001644595, 0.0002617233, 0.0001973794, 0.0007359209, + -0.0003929716, -0.0006363089, -0.0068788179, -0.0004079620, 0.0005142897}; + +float unet_input_time_embedding_20_15[] = { + 0.0002084645, -0.0020893873, 0.0028714193, -0.0002728387, 0.0010681532, + 0.0007625483, 0.0007453335, -0.0003004050, 0.0007712913, 0.0013507672, + -0.0015173212, -0.0003623920, 0.0006370950, 0.0006888404, -0.0000029248, + -0.0006170077, -0.0007289415, -0.0003862691, 0.0022140958, -0.0033090916, + -0.0002246038, 0.0014264965, -0.0011569929, -0.0596519262, 0.0010574504, + -0.0001862071, -0.0005994048, 0.0005777301, -0.0008625026, 0.0000446429, + 0.0015294820, -0.0014353348, 0.0014403304, 0.0009997785, 0.0018311688, + -0.0006918842, 0.0010568113, -0.0010583478, 0.0015101153, 0.0007178625, + 0.0010484522, 0.0004644757, 0.0014713746, 0.0008002399, -0.0006996985, + -0.0008140847, -0.0005948246, -0.0000386750, 0.0008027274, -0.0011245625, + 0.0000791391, 0.0006819519, 0.2034206986, 0.0005087070, -0.0001711579, + -0.0004033078, 0.0005955536, -0.0019919719, 0.0006518220, 0.0005116037, + 0.0001381971, 0.0005808637, -0.0013680034, 0.0019492093, 0.0001274282, + -0.0003534323, 0.0020308024, -0.0001167516, 0.0012624105, 0.0006305573, + -0.0001956406, -0.0014461351, 0.0016990320, 0.0009929044, 0.0001055328, + -0.0013006823, 0.0008126502, -0.0007653814, 0.0010033010, -0.0002139828, + 0.0003208958, -0.0022274372, 0.0007472775, 0.0001637440, 0.0007878279, + 0.0008508568, 0.0022263210, -0.0005832682, 0.0005904436, 0.0002433262, + -0.0021168515, 0.0029674214, 0.0000908477, -0.0001259499, -0.0012352555, + 0.0016445382, -0.0010084310, -0.0018043909, 0.0001220785, 0.0004526889, + 0.0031431103, 0.0001394902, 0.0016566371, -0.0356675722, -0.0018455093, + -0.0012378013, 0.0009357014, 0.0010847375, 0.0009442542, 0.0013279133, + -0.0010116911, 0.0000054128, 0.2219395936, 0.0009579919, 0.0008385815, + 0.0002728743, -0.0009932877, -0.0005337683, 0.0011696331, 0.0006244173, + -0.0027885647, 0.0015427240, 0.1998100728, -0.0001354162, -0.0018185768, + 0.0024233335, -0.0003088596, -0.0015223878, 0.0003741854, 0.0014531375, + -0.0006114421, -0.0010177791, -0.0006535046, -0.0007534763, -0.0017991015, + -0.0007911634, -0.0006887875, 0.0003707409, -0.0002926998, 0.0023487401, + -0.0009453495, -0.0009493022, -0.0002802894, -0.0001445664, 0.0016515914, + 0.0003887517, 0.0017155928, 0.0003170306, 0.0000435403, 0.0005957501, + -0.0012332201, -0.0008453311, -0.0003686203, 0.0004229236, -0.0009951438, + -0.0001109252, -0.0004248191, 0.0001961673, 0.0003786436, -0.0028986274, + -0.0013135294, 0.0014340406, 0.0010239994, -0.0009959834, -0.0023848875, + -0.0007012286, 0.0004639190, 0.0014626039, 0.0285765789, 0.0014437407, + 0.0009703405, 0.0008969307, -0.0002456112, -0.0004175008, -0.0011266614, + -0.0004781759, -0.0006749869, 0.0015225345, -0.0012292948, -0.0015572738, + 0.0001857742, -0.0004910072, 0.0075384774, 0.0011345441, 0.0009893817, + 0.0006058845, 0.0017982917, 0.0032720636, 0.0004385789, 0.0023208065, + 0.0007361546, -0.0001246738, -0.0021868278, -0.0004842675, 0.0013160994, + 0.0006741309, 0.0016220222, 0.0003924193, -0.0004323881, -0.0017029210, + 0.0004798602, 0.0010355571, -0.0007052864, 0.0000841930, 0.0004932843, + 0.0024888376, 0.0003443620, -0.0011399281, -0.0006553968, 0.0011585144, + -0.0006740785, 0.0000422969, 0.0005476887, -0.0005591903, -0.0002438573, + -0.0014525587, 0.0005500212, 0.0002780841, 0.0015811807, 0.0001418962, + 0.0000292817, 0.0007033935, 0.0008022168, 0.0191178285, -0.0004225752, + 0.0004804335, -0.0024058810, 0.0004193468, -0.0013463937, -0.0029255636, + -0.0004669083, -0.0007493035, 0.0023403484, -0.0014196602, -0.0008646669, + -0.0005839136, 0.0009990274, 0.0005823076, -0.0006007310, -0.0003372239, + 0.0006312991, 0.0010901649, -0.0003712473, -0.0009624753, -0.4998574555, + -0.0006628556, 0.0018888093, -0.0005084978, 0.0000815028, -0.0011024182, + -0.0017301347, 0.0013728705, -0.0002567703, 0.0014651744, -0.0014696657, + -0.0009850285, -0.0004614484, -0.0013587318, 0.0006530851, 0.0014486565, + -0.0020520054, -0.0008214687, -0.0015553751, 0.0017174076, -0.0005955406, + -0.0017169560, 0.0016400679, 0.0014572293, -0.0011870423, 0.0010266202, + 0.0002326947, 0.0006886940, -0.0006161146, -0.0005906806, 0.0000129272, + 0.0021892516, -0.0001397361, 0.0002515446, 0.0032093632, -0.0005377741, + 0.2068867385, 0.0019771196, -0.0000692782, 0.0005298746, 0.0031579472, + -0.0002460033, -0.0002364479, -0.0029445463, -0.0008212738, -0.0013048984, + 0.0015048023, 0.0003167996, 0.0016969014, 0.0003898069, 0.0020260671, + -0.0012231092, -0.0007369579, 0.0010551549, -0.0001391578, -0.0021823826, + 0.0006635478, 0.0004234891, 0.0007035218, 0.0006031108, 0.0002261868, + 0.0008305367, -0.0007849382, -0.0000851718, 0.0023152959, -0.0007672370, + 0.0006876192, -0.0001676737, -0.0005286131, -0.0008386862, -0.0007725554, + 0.0006742994, -0.0001135486, -0.0020356658, 0.0035425350, -0.0009639678, + 0.0014316330, -0.0002868935, -0.0005590720, -0.0012644343, -0.0005785163, + -0.0006573661, 0.0037351996, -0.0005672118, 0.0088346461, 0.0027256487, + 0.0024346365, -0.0015401442, 0.0020011538, 0.0000559781, 0.0001869835, + -0.0001403177, 0.0017346658, 0.0011021021, 0.0016764854, 0.0003144396, + 0.0019480484, -0.0004713715, 0.0005488873, 0.4621443748, 0.0016444025, + -0.0002009608, 0.0006141193, 0.0005845359, -0.0005595931, -0.0016114322, + -0.0017814715, -0.0000752620, 0.0013392773, 0.0016081166, -0.0007582576, + 0.0006681504, 0.0001424865, -0.0020048523, -0.0005100109, -0.0009065196, + 0.0021712752, 0.0012592492, -0.0000559082, 0.0028328607, 0.0001140753, + -0.0011613807, 0.0012915195, 0.0012974264, -0.0006395141, 0.0625729710, + -0.0003443295, 0.0026000245, 0.0006445830, 0.0020546941, 0.0024140154, + 0.0003256114, -0.0031556969, 0.0004108089, -0.0000737396, -0.0005968036, + -0.0004234322, 1.3713901043, -0.0008172067, 0.0004341314, -0.0002177465, + 0.0018798636, 0.0003138632, 0.0015315227, 0.0023100437, 0.0000869595, + -0.0016700542, -0.0019660676, -0.0004729950, 0.0013128358, 0.0017577927, + -0.0003666552, -0.0002537072, 0.0008955643, -0.0007813056, -0.0011718161, + -0.0017207421, 0.0024687834, -0.0000228710, -0.0008168165, -0.0012263404, + 0.0020561977, 0.0000543854, -0.0002829870, -0.0014519629, 0.0014492925, + 0.0005247565, 0.0020867023, -0.0015592778, -0.0006804072, -0.0004958210, + 0.0007372873, 0.0011641481, -0.0008220158, -0.0005691610, -0.0029377937, + 0.0007373292, 0.0021888006, 0.0003352280, 0.0010967979, -0.0005543120, + 0.0031207385, 0.0008264305, -0.0005421637, -0.0009053510, 0.0007240353, + -0.0003412054, 0.0004325069, 0.0013577798, 0.0025703553, -0.0022848868, + 0.0004203822, 0.0008294489, 0.0038825122, 0.0010595834, 0.0008826677, + 0.0007660636, 0.0023350478, -0.0009405118, 0.0020964255, 0.0001028047, + -0.0015380317, 0.0003548353, 0.0002124452, 0.0004050969, 0.0025368398, + 0.0008329698, -0.0010450482, 0.0015547697, 0.0009075208, 0.0004957523, + -0.0008730907, 0.0002117297, 0.0014465889, 0.0003850413, -0.0031028194, + -0.0012963319, 0.0017372947, 0.0015762330, 0.0015930141, 0.0018590577, + 0.0001931721, -0.0009215213, -0.0006386824, 0.0018422384, 0.0003271210, + 0.0017487387, -0.0004368473, -0.0012071170, -0.0002846795, -0.0022814330, + -0.0107855815, -0.0004902883, 0.0024583738, 0.0006221458, 0.1914705336, + -0.0011564079, 0.0023749294, 0.0006169183, -0.0008605083, 0.0000110877, + -0.0004599150, -0.0008559502, 0.0014117556, -0.0019155941, -0.0020844294, + -0.0004007085, 0.0958738476, 0.0015274934, 0.0008934340, -0.0017620397, + -0.0139026111, 0.0001654672, -0.0010738736, -0.0011822870, 0.0021939827, + -0.0000946461, 0.0016136570, 0.0008346466, -0.0006923550, -0.0000388965, + 0.0012767741, -0.0006078254, -0.0003563741, 0.0000843322, 0.0002917903, + -0.0013451406, -0.0008966175, -0.6414054632, 0.0029246947, 0.0019011818, + 0.0004410548, -0.0004032888, -0.0012040604, 0.0015104418, 0.0008973898, + -0.0006068568, -0.0003620503, -0.0006133477, -0.0010930933, 0.0005712034, + -0.0014748240, 0.0014124417, -0.0000031148, 0.0007237215, 0.0009925847, + 0.0005948429, 0.0009265360, 0.0003993087, 0.0003517356, 0.0000323157, + -0.0005049647, -0.0005074693, -0.0008487992, -0.0030000582, 0.0026125563, + -0.0002887731, -0.0015355526, -0.0003864016, -0.0008362553, 0.0021104207, + 0.0009172857, 0.0014058594, -0.0014225505, 0.0020648765, 0.0007636575, + -0.2982100546, 0.0012174682, -0.0011987456, -0.0020540291, 0.0014289147, + 0.0001728333, 0.0010155973, 0.0011850744, 0.0009424142, -0.0012756707, + -0.0000787666, 0.0000029145, 0.0005080830, 0.0016291412, -0.0021957192, + 0.0014903005, 0.0005111014, 0.0002628062, -0.0011259802, -0.0010821680, + -0.0006261884, -0.0001734623, -0.0011114585, 0.0015518724, -0.0011504050, + 0.0011561336, 0.0002211104, 0.0009740838, 0.0002074200, 0.0005302468, + 0.0004102443, -0.0000620701, 0.0033624074, 0.0020250895, -0.0027515513, + -0.0013083767, 0.0000307122, -0.0007332058, 0.0018485908, 0.0008155829, + -0.0003951305, 0.0003866344, 0.0000617290, 0.0016228473, -0.0006170990, + 0.0014620861, 0.0007755106, -0.0007264866, 0.0010657455, 0.0010473854, + 0.0011432171, -0.0008534491, -0.0006013233, 0.0004171911, -0.0015905981, + -0.0010395031, -0.0011023200, -0.0011779198, -0.0003351272, 0.0014939560, + -0.0020000529, 0.0006421949, -0.0013560429, -0.0014018016, 0.0009537297, + 0.0016902904, 0.0020842960, 0.0003437328, 0.0000247301, -0.0004134232, + 0.0018191324, 0.0006685847, 0.0004314878, -0.0002226802, 0.0018419377, + 0.0009895870, -0.0021476594, 0.0001983705, -0.0007572970, -0.0005710856, + 0.0020451485, 0.0010668817, -0.0000851195, -0.0001953777, 0.0021629662, + 0.0016844869, 0.0002986684, 0.0002737915, 0.0000308529, 0.0002730801, + 0.0004883040, 0.0014559750, -0.0011920157, 0.0009882720, 0.0011466718, + 0.0019618953, 0.0002600979, -0.0002709909, -0.0007831967, 0.0003947457, + -0.0021886046, 0.0039845789, -0.0002989026, -0.0004576477, -0.0004784516, + -0.0008296065, -0.0001264318, 0.0022449363, 0.0006218135, 0.0014169919, + 0.0027967226, 0.0009816079, 0.0001556418, -0.0005621448, -0.0006831735, + 0.0022465615, -0.0003383990, -0.0004982795, 0.0011084538, 0.0018207337, + -0.0014059900, 0.0017386132, 0.0004779274, 0.0002575729, 0.0001586266, + -0.0005628020, 0.0024450654, 0.0012526065, -0.0017955652, -0.0011786653, + -0.0011210300, -0.0006745425, 0.0002763942, -0.0014438840, -0.0009190189, + 0.0002766983, -0.0000797142, -0.0022243487, 0.0013093376, -0.0015801643, + 0.0002475521, 0.0001124013, 0.0003271231, 0.0010074985, 0.0015267939, + 0.0004833364, -0.0007086140, -0.0017877268, -0.0013363734, -0.0000956291, + 0.0003070841, 0.0012554738, -0.0026561900, 0.0007106982, -0.0004536002, + -0.0002709827, -0.0014351495, -0.0010003462, 0.0017882369, -0.0006028193, + 0.0005774070, 0.0045408309, 0.0006328039, -0.0009710826, 0.0001117634, + -0.0016709652, -0.0005376870, -0.0002003963, 0.0018998932, 0.0003307932, + -0.0001792284, 0.0004351181, 0.0005112161, -0.0019731116, -0.0027016390, + -0.0000245050, 0.0001083771, 0.0007251683, -0.0004933118, 0.0010414883, + 0.0020751846, 0.0005707713, 0.0011132022, 0.0018006829, -0.0007479356, + 0.4812049866, -0.0003533261, -0.0000802139, -0.0015212107, 0.0023283940, + 0.0008039912, -0.0013584057, 0.0024167839, -0.0015648408, -0.0022508013, + -0.0021784706, 0.0006377109, -0.0006481520, 0.0001193164, 0.0005229516, + -0.0015434597, 0.0025254830, -0.0006152745, -0.0016186819, -0.0024549884, + 0.0013428060, 0.0004288396, 0.0022712233, -0.0012124337, -0.1337490082, + 0.0031150067, 0.0004121952, -0.0003130329, 0.0004625395, 0.0004034680, + -0.0013906965, -0.0009322345, -0.0017635147, -0.0030201734, 0.0005137115, + 0.0012842026, 0.0018201093, 0.0009132102, -0.0015494965, -0.0004441873, + -0.0007044876, -0.0000636177, -0.0006042807, 0.0004343025, 0.0024091732, + -0.0000383472, -0.0009988627, -0.0000362091, 0.0004499410, 0.0000618980, + 0.0015074448, 0.0021302258, 0.0001309766, 0.0010738708, -0.0005696309, + -0.0013066070, 0.0000518137, 0.0015221704, -0.0008011363, 0.0019429314, + -0.0005207809, 0.0015344555, -0.0013233275, -0.0174727589, 0.0009521334, + 0.0015798387, -0.0012151015, 0.0010742288, 0.0005980870, 0.0006400570, + -0.0014290798, -0.0000099221, -0.0000333898, 0.0004394681, -0.0004428033, + -0.0001541368, -0.0010828176, 0.0028537121, -0.0001107045, 0.0008272687, + -0.0008978220, 0.0006943974, -0.0000829138, -0.0009924453, -0.0014284134, + 0.0004996350, 0.0001410035, -0.0005859276, 0.0022234209, 0.8274031878, + 0.0005008825, 0.0005836943, 0.0021897480, 0.0005621228, -0.0010486607, + 0.0014916535, 0.0016398844, 0.0014711958, 0.0015560242, 0.0005970621, + -0.0012615465, -0.0004589658, 0.0008114611, -0.0000473699, 0.0008368675, + 0.0011146760, -0.0015533152, 0.0482746512, 0.0000874130, 0.0002520107, + -0.0001268787, -0.0000388543, 0.0010092487, 0.0002986770, -0.0004413733, + -0.0010603080, 0.0016300716, 0.0005081543, -0.0007643788, 0.0000056392, + 0.0054099751, 0.0019621300, 0.0008595050, -0.0015638713, 0.0007314784, + -0.0000127014, 0.0008781939, -0.0015992085, -0.0014616282, -0.0007757125, + 0.0011477908, -0.0017760452, 0.0033362554, 0.0002264811, -0.0018893733, + 0.0009562653, -0.0038853935, 0.0015393416, -0.0016327077, 0.0018013306, + 0.0010202902, 0.0007679651, 0.0016353545, 0.0010481962, 0.0014126715, + 0.0791669562, 0.0010258512, 0.0016196650, 0.0003224998, -0.0003601292, + 0.0000695966, 0.0008331970, 0.0004464900, 0.0002201013, -0.0014756969, + 0.0001794016, -0.0016343158, 0.0002572555, 0.0014168965, -0.0007760329, + -0.0012772910, -0.0001865497, 0.0000668057, 0.0019926587, 0.0024618236, + -0.0004421482, -0.0000536810, -0.0022292738, 0.0012499625, 0.0006960789, + -0.0000513857, 0.0001663277, -0.0000847859, 0.0001677182, -0.0020131213, + -0.0015903844, -0.0001301469, 0.0009752223, -0.0005368309, -0.0003680149, + -0.0002940150, 0.0009002914, 0.0006138065, 0.0007563848, -0.0003240048, + 0.0006811125, 0.0012973428, 0.0013705799, -0.0000832027, -0.0001845616, + -0.0006554667, 0.0009450824, -0.0001713922, -0.0000441588, 0.0013081813, + 0.0018192262, -0.0029253562, -0.0000000967, 0.0016015815, 0.4569320381, + 0.0007963313, 0.0008621290, -0.0001937393, -0.0009515213, -0.0001516789, + 0.0009521376, -0.0007516834, -0.0004492523, -0.0004988224, 0.0010259473, + 0.0003416482, 0.0023690970, 0.0014816057, -0.0011724520, 0.0029691583, + -0.0007980266, 0.0006036103, 0.0009879386, -0.0004936350, -0.0003522492, + -0.0005753501, -0.0027933652, -0.0008730595, -0.0012132609, -0.0000343127, + 0.0018637744, -0.0011893474, 0.0005713901, 0.0010671741, 0.0005618734, + 0.0040078936, -0.0000938931, -0.0003660908, 0.0006324351, -0.0002382137, + -0.0021968929, -0.0000701562, -0.0016510646, -0.0009844468, -0.0011164662, + -0.0012093061, 0.0005329964, 0.0016564745, 0.0002891525, -0.0002551293, + 0.0006138908, 0.0007712841, 0.0000150460, -0.0006431337, -0.0006147521, + 0.0005022091, -0.0020027340, -0.0012636972, 0.0001232158, 0.0005023987, + 0.3003830910, -0.0004713625, 0.0008904496, 0.0030541809, -0.0005609677, + -0.0001915503, 0.0021372230, -0.0003389054, -0.0005565295, -0.0006175895, + -0.0007411598, -0.0017946390, 0.0007453463, -0.0000068559, -0.0015880888, + 0.0009035552, 0.0009996644, 0.0002040416, -0.0007985653, 0.0009363466, + 0.0004664432, 0.0007515928, 0.0008943174, 0.0023462102, 0.0010257987, + 0.0008722306, 0.0004502363, -0.0020278729, -0.0008006078, 0.0009448007, + -0.0012660068, -0.0006205190, -0.0005546879, -0.0006976256, -0.0015095652, + 0.0006120807, 0.0012299154, 0.0010430445, -0.0004783601, 0.0014999914, + 0.0015589998, 0.0011897157, 0.0009999033, 0.0000865343, 0.0030000017, + 0.0001828764, 0.0016153996, 0.0003964816, 0.0015122982, 0.0029372920, + -0.0019783597, 0.0012807543, 0.0012997533, -0.0196899120, 0.0018426164, + 0.0423575491, 0.0006724847, -0.0013403147, 0.0006520627, -0.2376204282, + 0.0016324031, -0.0011857175, 0.0003566183, 0.0004956867, -0.0014264461, + -0.0013958649, 0.0009706058, -0.0007068664, 0.9042080045, -0.0016243053, + 0.0007613708, -0.0007490467, 0.0010667684, 0.0017242199, -0.0006355466, + -0.0008126870, -0.0005428251, 0.0010665376, 0.0031634695, -0.0007978175, + 0.0010565640, 0.0011977125, -0.0002645359, -0.0005921246, -0.0009286427, + -0.0000106108, 0.0001691736, 0.0004474812, 0.0013921340, 0.0006358106, + -0.0005008681, -0.0022379097, -0.0002663452, 0.0006304528, 0.0007825785, + -0.0003985552, 0.0013139001, 0.0007537738, -0.0012661121, 0.0017146170, + -0.0000756348, -0.0013571223, -0.0006047841, -0.0002486343, -0.0008588433, + -0.0007073823, -0.0014488173, -0.0008939374, 0.0021853738, 0.0022463799, + -0.0014330354, 0.0009978218, -0.0002903645, -0.0009130063, 0.0026371621, + 0.0007837818, -0.0003318138, 0.0006305380, 0.0016279626, -0.0021888977, + -0.0005249144, 0.0002236199, 0.0001002564, -0.0023630294, 0.0003570714, + -0.0029503675, -0.0009008124, 0.0088085420, -0.0016837125, -0.0004305355, + -0.0014093989, -0.0014812575, -0.0007396690, 0.0004604999, -0.0004421854, + 0.0013986742, 0.0008819890, -0.0008668872, 0.0004240926, 0.0007961555, + 0.0010519573, -0.0020690635, 0.0003580307, -0.0014650794, 0.0007793811, + 0.0004689596, 0.0012261067, -0.0001772192, -0.0003623210, 0.0001743389, + -0.0007803962, 0.0017892406, 0.0016847524, 0.0011321147, 0.0001449687, + 0.0015243180, 0.0020412887, 0.0008153636, 0.0014115409, -0.0001860349, + 0.0011010561, 0.0028393865, -0.0003626766, 0.0020039352, -0.0021930998, + 0.0000409433, 0.0023206612, 0.0004316336, -0.0007916768, 0.0013968111, + -0.0010760745, -0.0007088043, 0.0016039195, 0.0013879584, 0.0000127605, + 0.0001012990, 0.0001342841, 0.0024021685, 0.0007268067, -0.0002068556, + 0.0002611931, 0.0007218256, -0.0010723039, 0.0003923166, 0.0005528079, + 0.2681814432, 0.0010941818, 0.0017710148, -0.0002741919, 0.0002252521, + -0.0003998882, 0.0003438292, -0.0003694646, -0.0004328098, 0.0005395091, + -0.0015794178, 0.0008065334, -0.0016984846, -0.0005846967, 0.0000399589, + 0.0014025902, 0.0007484937, 0.0019263411, -0.0015255446, 0.0009686635, + 0.0014586239, 0.3390842676, 0.0009522622, -0.0011103293, 0.0017620681, + 0.0006366987, 0.0019886554, 0.0016692793, 0.0022846698, 0.0011958145, + 0.0001421603, 0.0009573884, 0.0022073677, -0.0003286125, -0.0019450423, + -0.0013932935, 0.0014028619, 0.0030425689, -0.0004631961, 0.0009234557, + 0.0015937365, -0.0002579191, -0.0019767943, 0.0007944121, 0.0005539828, + -0.0002359038, -0.0002752126, -0.0001512384, -0.0007068971, 0.0007136986, + 0.0014302492, -0.0014385898, 0.0001601523, 0.0013254277, -0.0010626162, + -0.0001957667, -0.5002710819, 0.0006158170, -0.0021350300, -0.0010326640, + -0.0015508777, -0.0001589877, -0.0005166682, 0.0000647039, 0.0005680207, + -0.0004997924, -0.0005853990, 0.0005509014, 0.0004148367, 0.0011503161, + -0.0024788105, -0.0000710761, 0.0023068960, 0.0014255377, -0.0026452327, + -0.0002486501, 0.0020970786, 0.0013690777, 0.0015209613, 0.0010801023, + 0.0007973798, 0.0005766517, 0.0005106577, 0.0010038796, -0.0011415293, + 0.0002241986, -0.0003061532, -0.0003160457, -0.0008363685, -0.0002100253, + -0.0022501489, 0.0010100282, 0.0003055837, 0.0009169042, -0.0012431217, + -0.0004713153, -0.0009173960, -0.0003305038, 0.0000151969, 0.0004116162, + -0.0010152701, 0.0007318496, -0.0391159095, -0.0016348425, 0.0001866930}; + +float unet_input_time_embedding_20_16[] = { + -0.0003096145, 0.0002079864, -0.0008287886, 0.0002666000, 0.0001965156, + -0.0012981719, 0.0016748090, -0.0002365042, -0.0001891085, 0.0000198189, + 0.0013922008, 0.0000067730, -0.0014664801, 0.0009291074, 0.0012008487, + 0.0009289053, -0.0001668595, -0.0009800906, 0.0014662157, -0.0010494427, + 0.0007138909, -0.0001745624, -0.0002549348, -0.0672773346, 0.0004062110, + -0.0009267004, -0.0007606810, -0.0027152561, 0.0007767278, -0.0001303656, + 0.0016536880, 0.0002916621, -0.0025007185, -0.0007674787, 0.0012946387, + 0.0002733432, -0.0021615699, 0.0015154787, -0.0002470696, -0.0004180418, + 0.0014512809, 0.0004188521, 0.0005220817, -0.0002331957, 0.0005964108, + -0.0023867416, 0.0013705574, 0.0007145624, -0.0009111033, -0.0007105567, + 0.0005443855, 0.0035142454, 0.2173087448, 0.0013463199, 0.0005755500, + 0.0005178542, -0.0014453760, 0.0011780441, -0.0009506657, -0.0009327556, + -0.0019720723, 0.0012563871, 0.0012244885, 0.0002071087, 0.0008809520, + 0.0015424825, 0.0011923024, -0.0016293033, -0.0012828754, 0.0013876692, + 0.0012741059, -0.0004261187, 0.0001827655, -0.0003620628, -0.0010508122, + -0.0020972183, 0.0022717793, 0.0005167052, -0.0003701260, -0.0001660094, + -0.0003961865, 0.0013044140, -0.0009167287, -0.0008232591, -0.0012636154, + -0.0011979265, -0.0003466057, -0.0008747014, -0.0021602819, 0.0009526464, + -0.0012577990, 0.0003105788, 0.0000442453, -0.0026512393, -0.0034838547, + 0.0007146946, -0.0000334694, -0.0010483256, -0.0015344658, 0.0003361451, + 0.0017745434, 0.0012009274, -0.0023205234, -0.0542621277, 0.0003067327, + 0.0000599297, -0.0000410113, 0.0003889697, 0.0011817745, 0.0006041168, + -0.0041808258, 0.0008762288, 0.1610827446, 0.0008326033, 0.0003494648, + 0.0016386495, -0.0010661534, 0.0016691762, -0.0015559413, -0.0014784539, + -0.0009626346, 0.0007530136, 0.2630167603, 0.0010068561, -0.0002092738, + -0.0012765098, -0.0013869996, 0.0016563504, -0.0010341275, 0.0006662090, + -0.0011248942, -0.0010669045, 0.0001226047, -0.0002030013, 0.0012560601, + -0.0017383809, -0.0002057422, -0.0001817569, -0.0003274083, -0.0003729574, + 0.0012896114, -0.0005618562, 0.0001341412, -0.0007549264, -0.0005879134, + 0.0002650698, 0.0011124951, 0.0000826865, 0.0000597900, -0.0021121795, + 0.0020406554, 0.0005839377, 0.0003597313, 0.0003831799, -0.0005497001, + -0.0014762324, -0.0005960893, -0.0006298227, 0.0008088301, -0.0015065074, + -0.0003138070, -0.0022003376, -0.0004840959, -0.0006212858, -0.0006077006, + 0.0001986090, 0.0009134593, -0.0018248493, 0.0748606026, -0.0002893440, + 0.0004906907, -0.0001374185, 0.0003905920, -0.0015392667, -0.0001336858, + -0.0013695927, -0.0003453693, 0.0006010486, 0.0004873541, -0.0008863900, + -0.0009194151, -0.0024164421, -0.0036459132, -0.0000608298, 0.0006264122, + -0.0002583503, 0.0012203576, 0.0010258644, 0.0000477722, -0.0000469266, + 0.0004784814, 0.0014462820, -0.0012260407, -0.0016262152, -0.0011949474, + 0.0007646405, 0.0015953825, -0.0010332474, -0.0006153492, 0.0000627306, + 0.0001704115, 0.0011307616, -0.0018876251, 0.0014533338, 0.0002553212, + -0.0019124532, -0.0007237515, -0.0016945945, 0.0009492650, -0.0004631232, + -0.0004000524, 0.0001588948, -0.0011203266, -0.0008493590, 0.0004047910, + -0.0017265920, 0.0019181882, 0.0007706308, -0.0023942967, 0.0008373976, + 0.0002102256, -0.0001226562, 0.0005394842, 0.0292613469, 0.0001676316, + 0.0018385574, 0.0018246444, 0.0009079000, 0.0015552638, 0.0010159365, + -0.0009246487, -0.0005842904, -0.0018178937, -0.0009430773, 0.0005202247, + -0.0002906355, -0.0004180833, 0.0013770396, 0.0018370580, -0.0000488106, + 0.0004649230, -0.0001698493, -0.0017180492, -0.0005261600, -0.2192906290, + -0.0025024225, -0.0011187580, 0.0017165147, -0.0009918767, 0.0010654528, + -0.0000516511, 0.0006427444, -0.0000579297, -0.0009913193, 0.0009306935, + 0.0022757344, -0.0003582877, 0.0017755727, 0.0002225146, 0.0004714244, + 0.0002570068, 0.0007630985, -0.0013672134, 0.0058334279, 0.0003785609, + 0.0002363599, -0.0020736782, -0.0006532022, -0.0009165267, -0.0004942734, + -0.0008941106, -0.0006530648, -0.0032948435, 0.0018802324, -0.0002219982, + -0.0001326652, 0.0011810302, 0.0002205679, 0.0004226817, -0.0005900261, + 0.1602392048, 0.0006873570, 0.0007135702, -0.0015308233, -0.0028453441, + 0.0015078941, 0.0013983189, 0.0014028724, -0.0005844817, 0.0010448718, + -0.0000919263, 0.0007071006, 0.0008500256, -0.0009138135, -0.0011502877, + -0.0000350685, -0.0018094853, 0.0001829830, -0.0001608822, 0.0013077310, + 0.0002190061, -0.0016304145, 0.0004133816, -0.0001713056, 0.0005359810, + -0.0007788469, -0.0006681383, -0.0018594819, -0.0007054675, -0.0001296019, + 0.0005678334, -0.0005995440, 0.0013368644, 0.0001533651, -0.0004027053, + 0.0009892150, -0.0016100960, -0.0004717293, 0.0000301753, -0.0014060470, + -0.0008713193, -0.0004224419, -0.0009368362, 0.0010120943, 0.0011592266, + 0.0000029667, -0.0023293961, -0.0005736146, -0.0149116106, -0.0001192335, + -0.0008927248, 0.0008045966, -0.0000758833, 0.0001543225, -0.0005327757, + -0.0012324248, 0.0004893646, -0.0008793742, -0.0009783111, 0.0002346127, + -0.0009676749, -0.0011791030, -0.0008919465, 0.2873716950, 0.0006204250, + 0.0005264124, 0.0016766387, 0.0006935034, -0.0009886336, 0.0000364765, + 0.0000928361, -0.0016066353, -0.0003013872, -0.0002585296, 0.0000288648, + 0.0003438415, 0.0025363974, -0.0003328634, -0.0013196799, 0.0007593357, + 0.0003449358, -0.0020603281, 0.0003487486, -0.0000660312, -0.0003325833, + -0.0000948182, -0.0005729836, 0.0000167908, 0.0002123462, 0.1425679177, + 0.0008425778, 0.0000990378, 0.0005162715, -0.0003475649, -0.0002592152, + 0.0013949384, -0.0003859017, 0.0002744880, 0.0008244382, 0.0009928131, + 0.0025034358, 1.1842626333, 0.0002611048, 0.0010752091, 0.0016011549, + 0.0013315079, 0.0007073986, -0.0015739151, 0.0000270125, -0.0008498528, + 0.0020036204, -0.0010113675, -0.0026240074, 0.0003621532, 0.0011302414, + -0.0008492433, -0.0014895163, 0.0004035361, 0.0011644340, -0.0004356354, + -0.0040200464, 0.0010467577, -0.0006924614, -0.0000014165, -0.0003433116, + 0.0003546900, 0.0001260218, -0.0014374927, -0.0024082779, 0.0012864796, + -0.0002707909, 0.0021726219, -0.0024412314, 0.0004561054, 0.0010576439, + 0.0010916139, -0.0005161637, 0.0001087948, -0.0006469861, 0.0028515728, + -0.0004210409, 0.0004269823, -0.0004985276, 0.0010697402, 0.0014873995, + 0.0007654238, 0.0000815308, 0.0002478589, -0.0018702915, -0.0010809866, + 0.0006556907, -0.0016729941, 0.0009404439, -0.0010543205, -0.0005511156, + 0.0000944966, 0.0009098295, 0.0012827592, -0.0018141135, 0.0000997342, + 0.0007720515, -0.0008422639, -0.0006471727, 0.0013650807, -0.0006507423, + -0.0006354800, 0.0020553414, 0.0007562423, -0.0008706558, -0.0008183122, + 0.0002512680, 0.0008492507, 0.0020597556, 0.0005398346, 0.0012069559, + -0.0007854709, 0.0000543175, 0.0025927983, -0.0016169916, 0.0005105771, + 0.0000020028, 0.0001036897, -0.0011484895, -0.0024191602, -0.0026170239, + 0.0006639231, -0.0007934035, -0.0002065445, 0.0011925214, 0.0004467615, + 0.0001391693, -0.0001779241, 0.0005552545, -0.0000556782, -0.0005157702, + -0.0024281126, -0.0012417641, -0.0005889673, -0.0012339428, 0.1865599900, + 0.0006933201, -0.0011564450, 0.0006174957, -0.0017419872, 0.0017825698, + 0.0013038622, 0.0005970474, 0.0015574386, -0.0006006183, 0.0015711279, + -0.0019544624, 0.0388961248, 0.0000109221, 0.0005581682, -0.0020244515, + -0.0075885407, 0.0012429245, 0.0002658125, 0.0015750756, 0.0008044718, + 0.0012667822, -0.0009382572, -0.0008716471, 0.0019056550, -0.0005314355, + 0.0003506127, 0.0022942917, -0.0014269397, 0.0013429536, -0.0008885888, + 0.0008406576, -0.0016659158, -0.2090888917, 0.0001766952, 0.0002191163, + -0.0002686968, 0.0012228908, -0.0007362054, -0.0002599801, -0.0012497818, + 0.0003096699, 0.0009054509, 0.0005538784, 0.0016670763, -0.0002631806, + 0.0003594634, 0.0005685029, 0.0001818761, -0.0016281223, 0.0005821806, + -0.0000545066, -0.0005132752, -0.0010300218, -0.0020793050, -0.0013330814, + -0.0014438934, 0.0000716322, 0.0011966901, -0.0000351658, -0.0009062857, + -0.0028698167, 0.0001433492, 0.0012587579, -0.0007510046, 0.0010630081, + 0.0005977000, -0.0000017099, 0.0005162135, -0.0014645546, -0.0015871646, + 0.0503158420, -0.0019107279, 0.0003800208, 0.0001859502, 0.0019782833, + 0.0007459350, -0.0033665742, 0.0001819986, 0.0001849155, 0.0007395530, + -0.0013360847, 0.0015504429, -0.0004839501, 0.0015659144, -0.0000291751, + 0.0006273855, -0.0019733282, 0.0003327911, -0.0015314077, -0.0008051833, + -0.0030402509, 0.0016233255, 0.0007495601, -0.0009670404, 0.0005565919, + 0.0006796299, -0.0008050444, 0.0005623787, -0.0008304240, -0.0002031536, + -0.0001051128, -0.0007857523, 0.0020461218, -0.0009932510, 0.0000785906, + -0.0005038634, -0.0001444211, -0.0006091816, -0.0017143148, 0.0006625238, + 0.0010593972, -0.0003756951, 0.0036968300, 0.0009698914, 0.0003289930, + -0.0014997846, -0.0014071077, -0.0007662969, -0.0000338969, -0.0009936653, + -0.0009481427, 0.0002074912, -0.0039410647, -0.0007745585, 0.0021556397, + -0.0018939900, 0.0012687185, -0.0014117572, -0.0015923256, 0.0011178905, + -0.0019809024, 0.0013938635, -0.0005363510, 0.0015096401, 0.0003323578, + 0.0000928110, -0.0002125826, -0.0001197834, 0.0002055084, -0.0001992204, + -0.0003941520, 0.0006652813, -0.0000179349, 0.0015027127, -0.0010639452, + 0.0007508555, -0.0010083148, 0.0005781939, 0.0012048471, 0.0000010254, + 0.0012442872, -0.0015423798, -0.0008986442, 0.0004791075, 0.0013980698, + -0.0005433755, 0.0002735888, -0.0005734359, 0.0019823173, -0.0004646487, + -0.0009986787, 0.0003175410, 0.0000712129, -0.0010455453, 0.0009171744, + -0.0006393880, -0.0004707715, 0.0001294196, -0.0046047238, -0.0004035858, + 0.0004725355, -0.0024026055, 0.0013428254, 0.0004894766, 0.0014748075, + -0.0007416054, -0.0017278397, -0.0005119741, -0.0000541769, 0.0008854428, + 0.0003681378, 0.0006839237, 0.0020892462, 0.0002238458, -0.0005436130, + 0.0013276362, 0.0003931875, 0.0018028519, -0.0013458978, -0.0020229728, + 0.0003944619, -0.0007904726, -0.0011043873, 0.0010740494, 0.0012699477, + 0.0009249868, 0.0007378060, -0.0006960500, 0.0002509262, 0.0007741386, + 0.0011826518, 0.0000136276, -0.0013215523, 0.0001176774, 0.0016904455, + -0.0012476142, -0.0010657613, 0.0011128306, 0.0006039683, 0.0004529152, + 0.0001000231, -0.0014889063, -0.0021546830, 0.0012256615, -0.0006579810, + -0.0022224421, 0.0010052219, 0.0004471913, 0.0011851469, -0.0007299539, + 0.0006318698, -0.0019701733, 0.0007160695, -0.0002088986, -0.0004084818, + -0.0012994711, -0.0001685387, 0.0009141690, -0.0015803606, 0.0012015933, + 0.0009774887, 0.0145555483, -0.0008155096, 0.0008782381, -0.0018435277, + 0.0011467556, 0.0018861294, -0.0008083702, -0.0014416048, 0.0002557514, + 0.0008973684, -0.0010123635, -0.0002821981, 0.0018509706, -0.0009422584, + 0.0018273457, -0.0014030952, -0.0005818920, 0.0010062563, -0.0010856583, + -0.0007264742, -0.0017648702, 0.0005323675, -0.0010999679, -0.0025766781, + 0.2844092846, 0.0002096132, -0.0006969697, -0.0017669136, -0.0013223188, + 0.0009793025, -0.0019621747, -0.0001620618, -0.0024511029, -0.0004286882, + -0.0010149144, 0.0009189133, 0.0006612140, -0.0006107020, -0.0007705484, + 0.0022286593, -0.0000851671, -0.0023339200, 0.0003858623, -0.0008662099, + -0.0017504795, 0.0011522267, -0.0007007919, -0.0001600531, 0.2466568053, + -0.0014752240, 0.0000115386, -0.0004795615, 0.0002637212, 0.0014556446, + 0.0011013811, -0.0012874500, -0.0007785545, 0.0008971710, 0.0004277183, + 0.0014640861, 0.0012623840, 0.0014193784, 0.0006823542, 0.0002450971, + 0.0009289893, 0.0003043367, 0.0007520225, -0.0017704736, 0.0001081512, + -0.0023387587, -0.0010524979, -0.0011255045, 0.0014683125, 0.0004268982, + -0.0008560638, 0.0046289968, -0.0003821058, -0.0016423669, 0.0008862671, + 0.0002584310, 0.0011299674, -0.0004175309, -0.0014835610, -0.0005354512, + -0.0003261180, -0.0020720102, 0.0004782864, -0.0151275760, -0.0012701943, + -0.0001450818, 0.0020096910, -0.0002374301, -0.0005988348, -0.0014098827, + -0.0024391548, -0.0013491018, -0.0013894171, 0.0001774708, -0.0013547697, + -0.0009993223, 0.0019600361, -0.0016553659, 0.0005014283, -0.0005483921, + 0.0004981477, 0.0003363891, 0.0008174223, 0.0004736041, -0.0006410379, + 0.0022311425, 0.0009019257, -0.0003526424, -0.0005170980, 0.5652836561, + -0.0003690566, 0.0013813959, -0.0017042988, 0.0000277192, -0.0004866284, + 0.0004721389, -0.0001211772, -0.0006821505, -0.0016301291, -0.0001354585, + -0.0012358590, 0.0025920207, -0.0004246882, -0.0013520550, 0.0002085109, + -0.0003118778, 0.0005293265, 0.0310514886, -0.0005548424, -0.0008573084, + -0.0010445286, 0.0006608134, 0.0018637809, -0.0011144048, -0.0005803963, + -0.0009155916, -0.0011128115, -0.0007333761, -0.0003744550, -0.0000781817, + -0.0098367669, -0.0012888936, 0.0003169021, -0.0017405641, -0.0008714106, + -0.0002580523, 0.0004525245, 0.0003795070, 0.0018479064, 0.0002482301, + 0.0005159052, 0.0023451997, -0.0003527896, -0.0019098476, 0.0006799174, + -0.0005889330, 0.0002670749, -0.0001130374, -0.0013280357, -0.0020842482, + -0.0006240597, 0.0001847211, 0.0011380101, 0.0023177136, 0.0008599286, + 0.0742665231, -0.0008225321, -0.0000943756, -0.0005555807, -0.0008020813, + 0.0015986515, 0.0017429986, -0.0003344677, 0.0009870015, 0.0020234957, + 0.0010060202, -0.0000262889, -0.0007251301, -0.0010151216, -0.0000542649, + 0.0012923081, 0.0011595597, -0.0021025152, -0.0018009109, 0.0002007522, + 0.0002056677, -0.0005081075, -0.0003351029, 0.0013723746, -0.0008423538, + -0.0002349466, 0.0003921986, -0.0017210279, -0.0010188543, 0.0000582538, + -0.0001289366, 0.0012422575, 0.0017384812, -0.0000127708, -0.0002155323, + 0.0000967372, 0.0004313956, -0.0012447459, -0.0011188206, 0.0018660082, + -0.0018455833, 0.0012267337, 0.0007492574, -0.0003304649, -0.0002875780, + -0.0023979228, -0.0008274899, 0.0000000871, 0.0009503056, -0.0014702970, + -0.0007839580, 0.0007428076, -0.0007180228, 0.0003166231, 0.2817551196, + -0.0001875358, -0.0001344699, -0.0024411157, -0.0004546491, 0.0010724273, + 0.0020082141, -0.0001142790, -0.0006140089, 0.0019057286, 0.0000688438, + -0.0003542531, 0.0009726644, -0.0022997223, 0.0010560553, -0.0011184677, + -0.0000174050, 0.0009266884, 0.0003898405, 0.0011583674, -0.0013662225, + 0.0002253903, -0.0004406972, -0.0002148142, 0.0024152217, 0.0017408901, + 0.0021371441, 0.0030331400, 0.0002122507, -0.0007040277, 0.0007299688, + -0.0028056733, 0.0014446499, 0.0010799067, 0.0005303188, 0.0003700573, + -0.0013209058, 0.0002247870, 0.0012187482, 0.0013491400, 0.0003192150, + -0.0000673751, -0.0006326525, -0.0008055544, -0.0009090978, 0.0019793229, + -0.0029178644, 0.0001626834, -0.0016206673, 0.0002850648, -0.0011247802, + 0.0003455282, -0.0000125146, 0.0003848081, -0.0008044983, -0.0000016899, + 0.1452041864, 0.0002485262, -0.0013112547, 0.0002472086, -0.0008350306, + 0.0000524979, 0.0008186344, 0.0004635077, -0.0011224523, -0.0016049470, + 0.0007578733, -0.0015918994, 0.0001286259, -0.0003281045, -0.0009702010, + -0.0012477823, 0.0004807045, 0.0001010317, -0.0019384196, -0.0001691449, + -0.0004512353, -0.0007235628, 0.0008276701, 0.0012943298, 0.0002892488, + 0.0010653851, -0.0008820379, -0.0003268130, -0.0030598694, -0.0016342318, + 0.0002223258, 0.0002659692, 0.0001374111, -0.0021752778, -0.0017470494, + 0.0001360458, 0.0006171373, -0.0001058881, 0.0001450875, -0.0009602068, + -0.0016572222, -0.0034240207, -0.0003535785, 0.0005671582, -0.0012822308, + -0.0003854753, 0.0010017846, -0.0003593039, 0.0025382680, 0.0003575273, + 0.0005361936, 0.0006380007, 0.0007887543, 0.2226429433, -0.0014604030, + 0.0262477659, 0.0000198793, -0.0000659251, 0.0000280342, -0.0392289571, + -0.0013435455, 0.0010090843, 0.0008312380, 0.0010915450, 0.0000396115, + 0.0002414286, 0.0018507245, -0.0013710344, 0.9944313169, -0.0012981179, + -0.0012852002, 0.0031463795, -0.0005823370, -0.0039799302, -0.0031927694, + -0.0007435367, 0.0021547284, -0.0037527941, 0.0013719964, 0.0000823592, + 0.0003791633, 0.0002070758, -0.0027311139, -0.0009238953, -0.0006811479, + 0.0000715905, 0.0006792615, 0.0022764846, -0.0009869626, 0.0004911716, + 0.0003283122, 0.0001936017, 0.0007904284, 0.0005311458, 0.0012114018, + 0.0000297612, -0.0012637586, 0.0011719437, -0.0012723696, 0.0002770629, + -0.0010767239, -0.0007542474, 0.0009738961, -0.0011504404, 0.0013728570, + 0.0015507936, -0.0024942954, -0.0002475553, 0.0001697137, 0.0013067783, + 0.0015493836, -0.0010243217, -0.0012004387, 0.0017419816, -0.0026640545, + 0.0003054678, 0.0029096771, -0.0011525210, -0.0004950180, -0.0005285268, + -0.0003101202, 0.0006681839, 0.0009133061, -0.0009292960, 0.0021337778, + 0.0014105523, -0.0016156461, -0.0016250988, 0.0005954667, 0.0010883585, + -0.0015753186, -0.0005611310, 0.0013029694, 0.0003408892, 0.0006535866, + 0.0004244559, -0.0010792592, 0.0008484405, 0.0023784346, -0.0005968451, + 0.0007750646, -0.0002877377, -0.0007178099, 0.0006703539, 0.0008086755, + 0.0007794374, 0.0002765809, -0.0016924663, -0.0008798272, -0.0002662651, + -0.0017067241, 0.0006391723, -0.0002353577, -0.0020564622, -0.0014137337, + -0.0000957157, 0.0014900914, 0.0003353166, 0.0001129992, 0.0005047238, + 0.0006578481, 0.0004540959, -0.0011408925, 0.0007384880, 0.0009550537, + 0.0008652112, -0.0004365789, -0.0004227407, 0.0009815744, -0.0019513615, + -0.0007965791, 0.0005411069, 0.0005630245, 0.0004398162, -0.0009347652, + 0.0004772088, -0.0015077757, 0.0002389776, 0.0001865528, 0.0016542645, + -0.0031793471, 0.0006991068, 0.0012453184, -0.0018299181, 0.0007649953, + 0.2928944230, 0.0007657888, -0.0011929543, -0.0016092750, 0.0017307659, + -0.0014319124, -0.0025039671, -0.0014202783, -0.0006915026, -0.0030943258, + -0.0013136086, 0.0009969947, 0.0013791351, 0.0013982025, 0.0020811833, + 0.0005872165, -0.0000403570, 0.0018799966, -0.0030520558, -0.0022187768, + -0.0012698104, 0.2443455160, 0.0015423482, -0.0007685167, 0.0010644339, + 0.0009787851, 0.0012180491, -0.0020581544, -0.0013765907, 0.0026522838, + -0.0004079049, 0.0000814197, -0.0007726420, -0.0001482577, -0.0010277343, + -0.0010862360, -0.0003722669, 0.0002535898, 0.0012436300, -0.0003859862, + 0.0019575488, -0.0022128499, -0.0007107360, -0.0015721419, -0.0029766178, + 0.0012691903, -0.0005167537, -0.0018011755, 0.0001113461, -0.0021333275, + 0.0003489134, 0.0009584189, -0.0000436902, -0.0012603382, 0.0004822295, + 0.0009047404, -0.2202252895, 0.0001453441, 0.0012356308, 0.0002516892, + 0.0002128568, 0.0000072166, -0.0010954144, -0.0003313122, 0.0011745277, + -0.0005724342, -0.0000107911, 0.0017795124, 0.0002713688, 0.0011604107, + 0.0005390234, -0.0005455430, 0.0018877196, 0.0001797914, 0.0010002078, + -0.0004277220, -0.0009437092, 0.0006027562, 0.0017698130, -0.0015412876, + 0.0004234836, -0.0013476755, 0.0015822598, -0.0013976307, 0.0007102631, + -0.0002972797, 0.0008873665, -0.0017864041, 0.0007560585, 0.0012248415, + -0.0007835361, -0.0001864117, 0.0007547978, 0.0005581527, 0.0018229305, + 0.0004455345, 0.0006854213, -0.0017798177, 0.0019745324, -0.0011093114, + 0.0000254977, -0.0000785049, -0.0493084155, -0.0005964575, 0.0011311743}; + +float unet_input_time_embedding_20_17[] = { + -0.0010670796, 0.0001413479, 0.0005451441, -0.0006126292, 0.0001842569, + -0.0006289221, 0.0008269362, 0.0002635099, -0.0028507491, 0.0021899163, + 0.0000959423, 0.0019717282, -0.0024660910, 0.0021108300, 0.0014851689, + -0.0012399042, -0.0016677789, 0.0020887018, -0.0020364602, 0.0013970626, + -0.0006684684, 0.0018210402, 0.0000763884, -0.0304455459, 0.0011604212, + -0.0006196185, -0.0010317629, -0.0000816965, 0.0011638649, -0.0006273808, + -0.0016533327, -0.0001796414, 0.0026189564, 0.0008722888, -0.0003398503, + -0.0006862767, 0.0000127079, -0.0009871919, -0.0005464146, 0.0004612617, + -0.0023668334, -0.0005283339, -0.0020333976, -0.0012033898, 0.0001034010, + -0.0012527499, 0.0011187056, -0.0008374495, -0.0001796554, 0.0010673066, + -0.0015044410, -0.0011733116, 0.2039564103, -0.0004938496, 0.0006207487, + 0.0016026221, 0.0011193027, -0.0007913017, 0.0008122697, -0.0006829337, + 0.0014929886, -0.0005019853, -0.0008387277, 0.0000509047, 0.0011442155, + -0.0007103039, -0.0012927542, 0.0015923592, 0.0034824172, -0.0017652230, + -0.0007234584, 0.0013409441, -0.0014935287, -0.0004746029, -0.0007577073, + 0.0005149189, -0.0002137907, 0.0016637221, -0.0003369675, 0.0016461543, + -0.0008490896, 0.0012766250, -0.0020660097, -0.0005799255, -0.0001338469, + -0.0018437200, 0.0002475775, -0.0003133817, 0.0012021167, -0.0034450712, + -0.0007271121, 0.0001492291, -0.0014256174, 0.0008488720, -0.0073845596, + -0.0007662908, 0.0009693867, -0.0002508573, 0.0009916658, -0.0016162992, + -0.0009912294, 0.0004613818, -0.0002756687, -0.0939030126, 0.0022937788, + -0.0031914273, -0.0013986346, 0.0004024236, 0.0008775096, -0.0013585999, + 0.0012341156, -0.0006206306, 0.0628580824, -0.0008409973, -0.0002502687, + -0.0012739450, 0.0007127328, -0.0006268311, 0.0005636686, -0.0009018516, + 0.0021201330, -0.0007262486, 0.3003235757, -0.0022731293, -0.0005657179, + -0.0009563589, -0.0003674501, -0.0014254693, -0.0012561558, -0.0010976498, + 0.0027489369, 0.0001234841, 0.0008942245, 0.0022316254, -0.0003509587, + -0.0000717596, -0.0001443902, -0.0023626806, 0.0013234857, -0.0009390982, + -0.0009027908, 0.0011158697, 0.0009539104, -0.0010271939, 0.0030965817, + 0.0001189709, -0.0009765537, 0.0018514600, -0.0007293709, 0.0015316994, + -0.0010474902, -0.0007041848, -0.0006880609, -0.0014003965, 0.0022916296, + -0.0001432020, -0.0014168567, 0.0024799919, 0.0004379926, 0.0008573378, + 0.0012992304, 0.0011460976, -0.0020513711, 0.0011029730, 0.0004723677, + -0.0006990288, -0.0002586797, 0.0002940488, 0.1103688702, -0.0006697408, + 0.0001746466, -0.0003502034, 0.0015859101, -0.0007818905, 0.0013602183, + 0.0001274096, 0.0018828687, -0.0023131231, 0.0018900796, 0.0006097304, + -0.0011490718, 0.0013822918, 0.0021004002, 0.0000096257, 0.0004950846, + 0.0007022466, -0.0018674890, -0.0011919891, -0.0028288881, -0.0014176168, + 0.0021577489, -0.0032079392, 0.0006071675, 0.0000320876, -0.0005869479, + 0.0011863322, 0.0005272861, 0.0006048013, -0.0000962138, 0.0008451683, + -0.0012859381, 0.0006189090, 0.0008972129, 0.0006261221, 0.0016187299, + -0.0006728666, 0.0011209357, 0.0001749629, 0.0003959821, 0.0005872982, + 0.0011928533, -0.0000055474, -0.0001849737, 0.0013235132, -0.0004382271, + 0.0014244784, -0.0020162286, -0.0006221319, 0.0016700762, -0.0001041355, + 0.0023188516, 0.0017291063, -0.0011968717, 0.0118450942, -0.0000408478, + -0.0009934315, 0.0014231140, -0.0005954339, -0.0011584330, -0.0028564595, + 0.0014887135, 0.0007782029, 0.0007279739, 0.0006816569, -0.0008159140, + 0.0000463165, 0.0015504281, -0.0007029539, 0.0002210746, 0.0008745110, + 0.0019925397, 0.0000986278, 0.0024264783, 0.0004623635, 0.0187421981, + 0.0011809465, 0.0002081683, 0.0008033024, 0.0008527813, -0.0011865455, + 0.0005891677, -0.0032833293, 0.0009845640, 0.0015748078, 0.0006197314, + 0.0000697996, -0.0005016229, -0.0006551220, 0.0000607187, 0.0008438715, + 0.0009157360, 0.0009217800, 0.0009013831, 0.0041033239, 0.0004950679, + -0.0015064585, -0.0021914328, 0.0006104512, 0.0008930387, 0.0000919690, + -0.0009923181, 0.0010345078, -0.0011722494, 0.0007127421, -0.0014185803, + 0.0017938566, 0.0001990534, 0.0003244560, -0.0002029529, -0.0005160347, + 0.0866606236, 0.0009618197, 0.0004139285, 0.0016784053, -0.0010834525, + -0.0013853675, -0.0004668273, 0.0000346622, 0.0003331047, 0.0019330143, + 0.0017019083, -0.0003816118, -0.0011067640, -0.0009986879, -0.0007355679, + 0.0021174368, 0.0009907740, 0.0008158637, 0.0023114881, -0.0011449542, + 0.0005005086, 0.0013556140, 0.0004812483, 0.0011959937, -0.0029725758, + -0.0016577560, 0.0020437031, 0.0010292162, 0.0002507800, -0.0000413572, + -0.0005693864, 0.0008828065, -0.0010051564, 0.0000565629, 0.0004829741, + -0.0009061252, 0.0014706330, 0.0007623550, -0.0001997147, -0.0004320815, + -0.0002290064, 0.0008958899, 0.0013506152, 0.0010750797, -0.0004207107, + -0.0018019183, -0.0027039424, 0.0004621819, -0.0249146260, 0.0007319492, + -0.0000129894, 0.0000727663, -0.0012974445, -0.0021347804, 0.0004392045, + -0.0008801534, -0.0022729675, 0.0006055936, -0.0000357865, 0.0007018554, + -0.0015312978, -0.0018316738, -0.0004012890, 0.0858745873, 0.0013750384, + 0.0008853804, -0.0006910214, 0.0006882433, 0.0002360134, 0.0017998283, + 0.0014052903, 0.0002284842, -0.0004300363, -0.0001074523, 0.0004788261, + -0.0005349321, -0.0003453648, 0.0001833524, 0.0000452460, -0.0018475340, + -0.0012137312, -0.0000583134, -0.0014633848, 0.0005143480, 0.0014013605, + 0.0003726308, -0.0004508467, 0.0006076777, 0.0001481054, 0.2332683653, + 0.0012838654, -0.0005162107, 0.0022509550, -0.0008619158, 0.0002576977, + -0.0004521114, 0.0019776076, -0.0008159697, 0.0000620892, 0.0006694430, + -0.0005962570, 0.9347305894, -0.0004737144, -0.0001835269, 0.0000285655, + 0.0000170248, 0.0007821550, -0.0023606485, 0.0016710232, 0.0017236569, + -0.0019371808, 0.0010203043, -0.0001005507, -0.0005408721, -0.0015715626, + -0.0002596998, 0.0010550225, 0.0010898145, 0.0014401241, 0.0012873658, + 0.0019859495, -0.0023016706, 0.0007845855, 0.0013474911, 0.0007157298, + -0.0011369870, 0.0003718884, -0.0007288232, 0.0001020655, -0.0004542992, + 0.0007439153, 0.0002462615, 0.0000692722, 0.0019688695, 0.0009912397, + 0.0000642382, 0.0007987078, 0.0018035469, 0.0005008597, 0.0000788616, + -0.0010016570, -0.0005859022, 0.0010160150, 0.0018864935, -0.0006292262, + -0.0006171644, 0.0013588136, 0.0012955677, 0.0009914004, 0.0003163930, + -0.0005845414, -0.0018225992, -0.0017590863, 0.0003960971, -0.0010323751, + 0.0000633066, 0.0001579421, 0.0005694411, 0.0025409386, 0.0006364908, + -0.0007799291, 0.0013760619, -0.0002511701, 0.0016628776, 0.0009787292, + -0.0002081713, -0.0022794807, -0.0000524656, -0.0013108957, 0.0041415128, + 0.0006674812, 0.0014702249, 0.0000017246, -0.0000240114, 0.0000085563, + -0.0005092937, 0.0002485458, 0.0018296433, -0.0023010019, 0.0005206920, + -0.0010567699, -0.0003361180, 0.0014143891, 0.0023938930, 0.0008471305, + 0.0001119366, 0.0013938958, 0.0009803418, -0.0019824510, 0.0005697077, + 0.0002631433, -0.0001020797, 0.0026226579, -0.0006833146, 0.0014182068, + -0.0098919719, -0.0006514471, 0.0000828921, 0.0011526383, 0.1921587288, + -0.0001821311, 0.0003817321, -0.0017752415, 0.0042106872, -0.0006152146, + 0.0000410558, 0.0004157396, 0.0002944618, -0.0002434226, 0.0008591437, + 0.0001612511, -0.0633127093, -0.0001440945, 0.0014026300, -0.0014981464, + -0.0000779030, -0.0010918006, 0.0008327074, 0.0000217268, -0.0013920050, + 0.0014427020, 0.0003404906, -0.0012683487, 0.0008494933, -0.0010694149, + 0.0013659501, -0.0018623937, 0.0000345301, -0.0012653493, 0.0028587321, + -0.0007221659, 0.0014125225, 0.1781370491, 0.0001342157, -0.0002688154, + 0.0002382980, -0.0018130103, 0.0006332174, 0.0004632222, 0.0015423484, + 0.0013646088, 0.0002345028, 0.0001125304, -0.0012812982, -0.0002860916, + 0.0001473626, -0.0014312987, -0.0015487182, 0.0003614277, -0.0007154586, + 0.0015747561, -0.0001405147, -0.0005930914, 0.0012484228, -0.0001192887, + -0.0014085711, -0.0007068811, -0.0005816461, -0.0000869706, 0.0000408688, + 0.0010891687, 0.0005302541, -0.0013773888, 0.0004695202, -0.0004781280, + -0.0002137003, 0.0007595397, -0.0010470329, -0.0004136299, 0.0016590366, + 0.3522603214, -0.0003936552, -0.0018798539, -0.0000016277, 0.0003092168, + 0.0006275616, 0.0025068426, -0.0005841632, 0.0000322456, -0.0017036209, + -0.0009264378, 0.0001906535, 0.0003599976, -0.0007918342, 0.0005858194, + 0.0018525757, 0.0025142925, 0.0001557018, 0.0021399511, -0.0001725191, + 0.0005034256, -0.0026778714, -0.0017189295, 0.0001467655, 0.0019834847, + -0.0002618367, -0.0003640512, -0.0009004669, 0.0017145043, -0.0003715068, + -0.0014347665, 0.0028826795, 0.0003742506, 0.0007985180, -0.0006351883, + -0.0004927164, -0.0022477703, 0.0010465002, 0.0026508423, 0.0019165529, + -0.0006676159, 0.0011110469, -0.0012756223, -0.0013097860, 0.0016949349, + 0.0004774863, 0.0024706358, 0.0003680000, -0.0005372986, 0.0006546075, + -0.0012372914, 0.0011261292, -0.0010447567, 0.0009231314, -0.0006324125, + 0.0004065039, 0.0004527936, 0.0014676417, 0.0016290293, 0.0003147617, + 0.0018793941, 0.0003550737, 0.0007794520, -0.0011151787, 0.0019592093, + -0.0001713559, 0.0011962401, -0.0003517282, -0.0001272657, -0.0031255546, + -0.0008917991, -0.0006496488, 0.0004056275, 0.0010509184, 0.0017521768, + 0.0000918536, -0.0010888611, 0.0000685805, -0.0002607536, 0.0013773246, + -0.0005151657, 0.0019307516, 0.0027850554, -0.0004071554, 0.0013292232, + 0.0005623112, -0.0020269656, 0.0013098455, -0.0021086810, 0.0023039004, + 0.0020526680, 0.0004150765, -0.0011475887, 0.0013868620, -0.0009706379, + 0.0012094259, 0.0017906232, -0.0004057160, -0.0034532533, 0.0016977983, + -0.0008359688, 0.0027222401, -0.0007114422, -0.0002116584, 0.0007064934, + -0.0000072485, -0.0014113740, 0.0002272194, 0.0008122084, 0.0021333396, + -0.0022621034, -0.0016895114, 0.0000462952, 0.0014600802, 0.0019037281, + -0.0010450138, 0.0000767642, 0.0001769338, 0.0002145332, 0.0017856691, + -0.0002630630, -0.0005696123, -0.0019670238, -0.0017399555, 0.0016093440, + -0.0007074755, -0.0003720237, 0.0005459376, 0.0016189264, -0.0003142674, + -0.0023894690, 0.0010331054, 0.0009947298, 0.0018776747, 0.0009390730, + -0.0000933153, -0.0005265037, 0.0000133717, -0.0020212731, -0.0000977227, + -0.0010489339, 0.0006733863, 0.0002690449, -0.0009985233, 0.0012200610, + 0.0009309402, -0.0006868686, 0.0001813704, -0.0013895980, 0.0000258386, + 0.0015501529, 0.0012810624, -0.0006379264, 0.0009372444, 0.0025072498, + 0.0020397725, 0.0008079093, 0.0007374636, 0.0003839510, 0.0010763661, + -0.0004596012, 0.0145846931, 0.0002649127, -0.0001697913, -0.0011082562, + -0.0003869627, -0.0009716079, -0.0002840948, -0.0008673504, 0.0016908050, + 0.0005732803, 0.0013972409, 0.0011146920, -0.0010006791, 0.0027184582, + -0.0010517593, 0.0006311014, -0.0013485020, -0.0016874210, -0.0002461430, + 0.0008748802, 0.0032835482, 0.0006797437, -0.0001185611, 0.0010229074, + 0.0724230856, -0.0004040683, -0.0004689791, 0.0009863856, 0.0009617419, + 0.0007038056, 0.0001964075, -0.0010571689, 0.0008745270, -0.0012284257, + -0.0019794190, 0.0007826331, 0.0013004366, -0.0016745485, 0.0000234628, + -0.0011805810, 0.0002919280, 0.0000075907, -0.0002572960, 0.0023433985, + 0.0013261181, -0.0018281047, 0.0003320071, 0.0013869808, 0.4428535402, + -0.0001459098, -0.0019110425, 0.0005158577, 0.0008271933, -0.0022091004, + 0.0008023197, 0.0016669383, -0.0000991831, -0.0001147124, -0.0009440151, + 0.0006543011, -0.0007385714, 0.0001127245, -0.0008677661, -0.0001475434, + -0.0014009262, 0.0002529640, -0.0003053872, 0.0005385044, 0.0000931183, + 0.0025360473, 0.0011652041, 0.0013925678, -0.0008033453, 0.0002192878, + -0.0002929401, 0.0209297780, -0.0014270125, 0.0003589774, -0.0029805056, + 0.0005874141, 0.0021338237, -0.0004699624, 0.0004772716, -0.0007999504, + 0.0004611765, -0.0002774138, -0.0013439351, -0.0086695729, 0.0017766207, + -0.0004672486, -0.0004250167, 0.0020583086, -0.0001176726, -0.0000375761, + 0.0007064720, 0.0022415314, 0.0018371691, -0.0001979971, 0.0008217584, + 0.0019872328, 0.0000853103, -0.0016404135, 0.0006371229, 0.0019013148, + 0.0001730868, -0.0013362449, -0.0006526005, 0.0003996622, 0.0018226636, + 0.0011367234, 0.0006758341, 0.0010155509, -0.0009418835, 0.2972532809, + 0.0001744181, -0.0010615501, 0.0002890822, 0.0003551375, -0.0003544881, + -0.0004533266, -0.0016445154, 0.0004689181, -0.0010801601, -0.0004630429, + 0.0016010350, -0.0028729995, -0.0018554600, -0.0000595525, 0.0007218953, + 0.0004449426, -0.0000897218, 0.0084575769, 0.0004956396, -0.0005693507, + 0.0007791398, -0.0003964240, 0.0002397668, 0.0000937167, -0.0033087994, + 0.0027555637, -0.0010376137, 0.0007153553, 0.0027059573, 0.0005953694, + 0.0009724182, 0.0007094434, -0.0021869731, 0.0024125748, -0.0011932957, + -0.0005610320, -0.0004156562, -0.0012308089, -0.0005135260, -0.0007799696, + 0.0000822535, -0.0005049809, 0.0022221589, 0.0011800046, 0.0014829492, + -0.0009422135, -0.0035631866, -0.0008917293, 0.0008367505, 0.0014656384, + -0.0012030636, -0.0005739485, -0.0013033617, -0.0019523621, -0.0003146927, + 0.0358624719, -0.0009714655, 0.0010850830, -0.0003653963, 0.0008828014, + -0.0018299475, -0.0005442682, -0.0012162467, -0.0015893197, 0.0002119101, + -0.0032137281, -0.0007005171, -0.0007028880, 0.0002324157, -0.0001598164, + -0.0017417368, -0.0000456085, 0.0016527696, -0.0000193026, 0.0009899689, + -0.0018898565, 0.0003467542, 0.0013672132, 0.0000352394, 0.0015732357, + 0.0018138709, -0.0001100535, -0.0000193884, 0.0008978513, 0.0006261240, + -0.0008205007, -0.0009537627, -0.0001837993, 0.0016384318, 0.0026504765, + -0.0005240995, -0.0019825189, 0.0018406839, 0.0022916817, -0.0013636495, + -0.0006704926, -0.0019985815, -0.0003985967, 0.0015545655, -0.0013995727, + 0.0015558247, -0.0001096888, -0.0015609021, 0.0011491635, -0.0006568201, + 0.0003893352, -0.0017050490, 0.0004473518, -0.0024356470, 0.0977949053, + -0.0003454650, 0.0031381687, 0.0035607331, -0.0004838514, 0.0012811525, + -0.0016997755, 0.0020515895, 0.0012402153, -0.0007953942, 0.0004265783, + -0.0005250083, 0.0007742895, -0.0027196538, 0.0006794392, 0.0017408216, + 0.0001398795, -0.0004854452, -0.0008958550, -0.0007768744, 0.0008010175, + -0.0002357829, 0.0016011307, 0.0002489826, 0.0005594082, -0.0023839213, + -0.0007576256, -0.0007434051, 0.0007922291, 0.0006126198, 0.0021501388, + 0.0025144739, -0.0008925302, -0.0005056271, -0.0018930617, 0.0007901727, + 0.0000921837, -0.0005671382, -0.0015469156, -0.0020311517, 0.0018996084, + 0.0010464108, -0.0009299852, -0.0009218189, -0.0007642080, 0.0007960261, + 0.0013352751, -0.0007178625, 0.0016958024, -0.0008946555, 0.0021131020, + -0.0026830584, -0.0004473652, -0.0015970720, -0.0001810999, -0.0022551019, + -0.0081451982, -0.0001605733, -0.0001768442, -0.0009323230, 0.0007877923, + 0.0014351595, 0.0005545337, 0.0005952870, 0.0004539965, -0.0003937730, + -0.0001758791, 0.0019271104, 0.0011383700, -0.0010118433, -0.0005780061, + 0.0018120399, -0.0011074925, -0.0003804192, -0.0000071565, 0.0007193103, + -0.0000092464, -0.0007236552, -0.0006054677, 0.0001784218, 0.0010149027, + 0.0001557791, 0.0012229662, 0.0011772595, 0.0018722408, -0.0001982199, + -0.0009587537, -0.0001666090, -0.0001248246, 0.0004652515, 0.0004290962, + -0.0010200778, -0.0011303142, -0.0010783076, -0.0002958125, 0.0001805658, + -0.0001391745, 0.0000717575, -0.0000683060, -0.0006930819, 0.0004271599, + -0.0000797505, -0.0017992132, -0.0013031081, -0.0021439828, 0.0001468994, + 0.0000590556, 0.0006963052, -0.0010746033, 0.4683790803, -0.0008971214, + 0.0039917286, -0.0011565035, 0.0009530070, 0.0006293242, 0.0828298628, + -0.0009612152, -0.0016101068, -0.0009488827, -0.0008014534, -0.0013512047, + -0.0006356381, -0.0001176728, 0.0000771191, 1.0922446251, 0.0016030686, + -0.0012996409, -0.0000177051, 0.0010533199, 0.0015759296, 0.0009123590, + 0.0000086091, -0.0002079960, 0.0005341070, -0.0017194843, 0.0012647961, + -0.0002214070, 0.0005254028, 0.0008483124, 0.0010069916, 0.0001255437, + -0.0004086758, -0.0003447805, -0.0014091642, -0.0005824170, -0.0000324138, + 0.0006069397, -0.0001749895, -0.0015124599, 0.0011872631, 0.0011332028, + 0.0004183672, 0.0009204391, 0.0020780722, 0.0011569648, -0.0004370846, + -0.0006248245, 0.0007030405, -0.0009532208, -0.0021229452, -0.0014329031, + -0.0000377446, 0.0003026123, -0.0001973924, -0.0011812344, -0.0015653665, + -0.0004981365, 0.0003422415, 0.0030290205, 0.0007790527, 0.0020079624, + -0.0006241103, -0.0004194393, 0.0003139079, -0.0002320040, 0.0019892268, + -0.0011481945, -0.0008053784, -0.0000054108, -0.0013732594, -0.0005028765, + -0.0018391544, 0.0014971511, -0.0008697356, -0.0002440610, -0.0013900311, + 0.0021045099, 0.0022345488, -0.0021593459, -0.0009667915, -0.0009056227, + 0.0001997277, 0.0032547307, 0.0006095949, -0.0030008503, 0.0017684237, + 0.0018532593, -0.0011618249, 0.0009979252, 0.0011963267, 0.0003181957, + -0.0012536137, 0.0003233459, 0.0026460770, -0.0013523737, -0.0002547987, + -0.0000307066, 0.0020732675, 0.0029288861, -0.0002503758, -0.0014294283, + 0.0006224676, 0.0000807085, -0.0005927719, 0.0000416846, -0.0003548490, + 0.0007900274, 0.0005058064, 0.0028354833, 0.0009770135, 0.0010163403, + -0.0010643778, -0.0005397312, -0.0002677868, -0.0009999187, 0.0010929790, + 0.0000383675, 0.0010110202, -0.0012669051, 0.0014951434, 0.0004537036, + -0.0003436413, -0.0011361381, -0.0010168566, 0.0012083621, -0.0003603590, + 0.0004434148, -0.0006610376, 0.0003978079, 0.0001771771, 0.0009663561, + 0.2739561796, 0.0010034710, 0.0009807890, -0.0002308589, 0.0012807210, + 0.0008419272, -0.0014403670, 0.0001661542, 0.0001485625, 0.0012431398, + 0.0023545835, -0.0016829282, 0.0003624833, 0.0003829948, 0.0005094721, + -0.0002102908, -0.0003947616, 0.0003412487, 0.0021478916, 0.0034612701, + 0.0008089212, 0.1241598427, 0.0008633386, -0.0002424298, 0.0001429371, + 0.0002065115, -0.0003921180, 0.0001902080, 0.0017952857, -0.0007533561, + 0.0007316731, -0.0000800146, 0.0000001569, -0.0002459306, 0.0001812226, + 0.0013284730, -0.0014113160, -0.0014483198, 0.0002197861, -0.0001614189, + -0.0037000037, 0.0007741209, 0.0013039722, -0.0003902917, 0.0005575046, + 0.0011736220, -0.0002817868, 0.0024732864, -0.0001213066, 0.0009043235, + -0.0005438753, 0.0007650265, -0.0000152625, 0.0009842730, -0.0001707012, + 0.0015064409, 0.0224706903, 0.0016592261, 0.0009145369, -0.0004970420, + -0.0034802069, 0.0011106653, -0.0018003695, 0.0009201139, -0.0013691417, + 0.0010008658, 0.0017628866, 0.0001381278, 0.0008827825, -0.0021702275, + 0.0037066624, -0.0009441668, -0.0014000470, -0.0005433564, -0.0002525365, + 0.0006218441, 0.0014889054, -0.0010738135, -0.0004881566, 0.0003815833, + 0.0002008621, 0.0018808856, -0.0001184684, -0.0009214508, -0.0005210498, + 0.0010936885, 0.0009523691, 0.0030434132, -0.0013269706, 0.0006240304, + -0.0003719996, -0.0015411428, -0.0007131267, 0.0001647718, -0.0006228711, + 0.0000961730, 0.0009505749, 0.0007568866, -0.0004456402, 0.0021132459, + -0.0019760292, -0.0003083670, -0.0286939796, 0.0003965629, -0.0000229867}; + +float unet_input_time_embedding_20_18[] = { + 0.0002006008, 0.0003508717, 0.0011663781, 0.0009910953, 0.0017679823, + -0.0020392216, 0.0006326117, -0.0001272392, 0.0018957299, -0.0006539084, + -0.0001048853, -0.0002644542, 0.0000996324, 0.0010184897, 0.0005054837, + 0.0008077768, 0.0012777885, -0.0002173530, -0.0003807294, -0.0005455683, + -0.0015141894, 0.0007932866, -0.0007410286, 0.0508972146, 0.0007778357, + -0.0010746028, -0.0017042104, -0.0005848343, -0.0017272424, -0.0014870535, + 0.0010152394, -0.0001093838, -0.0002961764, 0.0007132590, 0.0007660827, + -0.0017572627, -0.0004014219, 0.0009360549, 0.0008630883, 0.0009660106, + 0.0003986121, -0.0000585809, 0.0015728744, 0.0015875679, -0.0005202091, + -0.0008864391, -0.0000109659, 0.0006761877, 0.0009139492, -0.0000732381, + 0.0024718931, -0.0001485378, 0.0659802631, 0.0021024500, 0.0000977510, + 0.0001147945, 0.0008061194, -0.0009821362, 0.0003446066, -0.0016320061, + -0.0007468336, -0.0006214416, 0.0000549392, -0.0005526396, 0.0001905221, + 0.0021077469, 0.0013367347, -0.0004200378, -0.0001521790, -0.0008260442, + -0.0004248898, -0.0009156342, -0.0005741450, 0.0002575447, -0.0002837619, + -0.0000450574, 0.0021058470, -0.0012882529, 0.0016279095, -0.0024373278, + -0.0010973660, -0.0003576350, -0.0022778744, -0.0013943753, 0.0013205174, + 0.0002208061, 0.0011393554, -0.0018390613, -0.0003196946, 0.0015096178, + -0.0006789843, 0.0029955390, 0.0012188880, -0.0003652415, -0.0011705351, + -0.0000736136, -0.0009162603, 0.0001101857, -0.0002632341, 0.0004143235, + 0.0004610037, -0.0008209408, -0.0004608259, -0.2300363928, -0.0006073681, + 0.0017921086, 0.0009413783, 0.0005091317, -0.0010303953, 0.0009726209, + -0.0005725652, -0.0011556866, -0.1230877712, 0.0007890947, -0.0008134842, + 0.0010648896, 0.0009218152, 0.0003976549, 0.0002541579, 0.0010364957, + -0.0007723630, -0.0000993598, 0.2126669586, 0.0004137922, -0.0009533344, + 0.0000407803, -0.0009796084, 0.0014626742, 0.0005059973, 0.0015854179, + -0.0011425228, 0.0005536638, 0.0000098154, -0.0007953271, 0.0004953383, + -0.0017471120, -0.0002127070, 0.0014175093, -0.0007067863, 0.0012705214, + 0.0015632643, -0.0015098250, -0.0010600481, -0.0012116800, -0.0010605718, + -0.0003849631, -0.0001587472, 0.0001401119, -0.0010645250, -0.0008693771, + 0.0002435138, -0.0017952455, 0.0002896194, 0.0007416164, 0.0004524891, + 0.0007900139, -0.0004807739, -0.0025566639, 0.0002836883, -0.0016978541, + 0.0001707734, 0.0002801333, 0.0002725311, -0.0026786793, -0.0002830829, + 0.0008514670, -0.0001322981, 0.0018820036, 0.0441834964, 0.0012359185, + -0.0001257508, 0.0007097516, -0.0014530944, 0.0007450927, -0.0006212858, + -0.0022611907, 0.0006806642, -0.0003130585, -0.0005768908, -0.0021154168, + 0.0001675864, 0.0002926299, 0.0011386652, -0.0006895503, 0.0003502453, + 0.0010996950, 0.0003755055, 0.0017345129, -0.0000572675, 0.0013876716, + 0.0001665489, -0.0004296117, -0.0006459331, -0.0016532971, -0.0009451420, + -0.0014858297, -0.0002950028, 0.0025360049, 0.0023796947, 0.0014032521, + -0.0006140647, 0.0012697168, -0.0021016113, 0.0009242040, 0.0015719123, + 0.0019923039, 0.0006145785, -0.0005927412, -0.0006210329, 0.0006422824, + -0.0002650602, -0.0005417042, -0.0006418917, -0.0024002905, -0.0023381470, + -0.0006704987, -0.0008080653, 0.0017097169, -0.0004227218, 0.0011412142, + 0.0006837947, 0.0009129011, 0.0005031002, -0.0110528786, -0.0008616361, + -0.0009567426, -0.0011819135, 0.0006648176, 0.0012789972, 0.0008986765, + 0.0007566968, -0.0010851580, 0.0005350248, 0.0001009987, 0.0008478910, + 0.0002892730, 0.0017915531, 0.0006936966, -0.0004908759, 0.0020653326, + 0.0002118370, -0.0011624347, -0.0008678024, -0.0001607928, 0.2379702330, + -0.0029108992, 0.0003876514, 0.0008881047, 0.0014790799, 0.0010848437, + -0.0006328700, 0.0022509242, -0.0009645824, 0.0013359217, -0.0002648933, + -0.0010498236, 0.0000664606, 0.0002405351, 0.0008928934, -0.0006843846, + -0.0005667899, -0.0010041134, -0.0001148107, -0.0033517457, -0.0002977581, + -0.0005186163, 0.0000967425, 0.0002363683, -0.0001133233, -0.0007742126, + 0.0004547751, -0.0002013964, -0.0004777897, -0.0021833768, 0.0004211552, + 0.0003419803, -0.0010765102, 0.0023385761, 0.0011581872, 0.0001397182, + -0.0944035202, -0.0001081005, -0.0013860097, -0.0002354840, -0.0004877401, + 0.0002695937, 0.0017298106, -0.0003703777, -0.0009376863, 0.0000690222, + 0.0001818932, 0.0011236700, 0.0022331602, 0.0003651048, 0.0000615376, + -0.0011080485, -0.0013957634, -0.0006893380, -0.0006534127, -0.0014132643, + 0.0003640051, -0.0009049017, 0.0021226625, -0.0011399435, -0.0006764068, + 0.0001852023, -0.0024926201, -0.0003508148, -0.0004513678, -0.0007225722, + 0.0003526453, 0.0019271090, 0.0007721779, 0.0002104240, -0.0012424691, + 0.0002854001, 0.0002429067, -0.0005181902, 0.0015375246, -0.0012625712, + 0.0007152788, -0.0001657656, -0.0003510634, -0.0005528857, -0.0013257276, + -0.0001049261, -0.0005366448, -0.0016700304, 0.0103451312, 0.0001118309, + 0.0019893148, -0.0011665686, -0.0005308524, 0.0000572482, -0.0000715414, + -0.0000163680, 0.0014041138, 0.0001596344, 0.0007517193, -0.0003911140, + 0.0015577320, 0.0009889703, -0.0004972867, -0.1577996165, 0.0003700666, + 0.0004724246, -0.0001167521, -0.0000681129, -0.0007049085, -0.0000575133, + -0.0009876047, 0.0005974788, -0.0000289804, 0.0004544612, 0.0002737233, + 0.0002434319, 0.0011788144, -0.0011014891, 0.0003311555, 0.0010999618, + 0.0015259674, -0.0006071790, -0.0003382782, 0.0007193875, 0.0027740714, + -0.0011690871, -0.0004413868, 0.0005972935, 0.0021723537, 0.3609549999, + 0.0008487194, 0.0011584056, -0.0007659367, 0.0004160032, 0.0001273751, + 0.0012804372, -0.0001953862, 0.0003574535, 0.0004870864, -0.0000525173, + -0.0003774044, 0.7351654172, 0.0001565274, 0.0017980728, -0.0000985148, + -0.0003440622, 0.0002660365, 0.0006078891, 0.0009984421, -0.0013994868, + 0.0000731302, -0.0024290136, -0.0013353252, -0.0001004336, 0.0010813931, + 0.0006896509, -0.0015203962, 0.0001769686, -0.0005429001, -0.0000068480, + -0.0009534393, 0.0027979282, -0.0013171227, 0.0012617116, -0.0009195805, + 0.0005312706, 0.0006182793, -0.0005264073, 0.0003238008, 0.0009907819, + 0.0026181494, 0.0005329833, -0.0025980868, -0.0012627710, -0.0009351491, + 0.0000357812, -0.0010494497, -0.0020490973, -0.0022034883, -0.0005287137, + 0.0010700696, 0.0007398480, -0.0017780643, -0.0013703804, 0.0011319472, + 0.0012734816, -0.0001141699, -0.0008605210, -0.0004263185, 0.0011018831, + 0.0020232373, 0.0001437017, -0.0000111479, 0.0002765290, -0.0002111447, + -0.0006423588, 0.0008951109, 0.0025521794, 0.0000358783, -0.0005310359, + 0.0001518517, 0.0010599140, -0.0002442942, 0.0012104309, 0.0010684261, + -0.0005626134, 0.0016094074, -0.0005667093, 0.0004335567, -0.0004939949, + 0.0011789394, -0.0009795669, 0.0018292407, -0.0014196176, -0.0024378477, + -0.0014807023, 0.0005321242, 0.0007568039, -0.0005858084, -0.0008076164, + -0.0003017662, -0.0015706997, -0.0002385673, -0.0003026751, -0.0003315299, + -0.0000070967, -0.0001807720, -0.0007806607, 0.0018439003, -0.0002256692, + -0.0005028620, 0.0006362679, 0.0004957281, -0.0005855679, -0.0019219285, + -0.0119957570, -0.0006892476, 0.0015121867, -0.0010982137, 0.2845870256, + -0.0010160157, 0.0009637475, 0.0014339415, -0.0012217609, 0.0002389800, + -0.0010828370, 0.0006805991, 0.0015894733, 0.0010255910, 0.0010955746, + 0.0003564972, -0.2228889465, -0.0008263835, 0.0001180437, -0.0005939514, + -0.0036888442, 0.0019636499, 0.0001727808, -0.0000405712, 0.0003903522, + -0.0017209849, -0.0002993802, -0.0006769234, 0.0001578247, 0.0004384331, + -0.0011089677, 0.0002581961, 0.0000184424, -0.0014960971, -0.0001296797, + 0.0006128633, -0.0010198362, 0.3999869823, -0.0028191786, 0.0005184842, + 0.0023555867, -0.0004955754, -0.0016357182, -0.0005832147, -0.0001632813, + -0.0028623934, -0.0005936376, -0.0030190134, -0.0006645448, 0.0001956229, + 0.0004004035, -0.0006674851, 0.0006501046, 0.0004518665, -0.0000977335, + 0.0005764512, -0.0000260682, 0.0001989878, -0.0010504343, -0.0009287302, + -0.0020263658, 0.0001651261, -0.0001922029, -0.0002426552, -0.0002485574, + -0.0001162891, 0.0009653475, 0.0008613305, 0.0026488393, 0.0003457800, + 0.0001290077, 0.0015745731, 0.0007380880, 0.0005155364, -0.0002662195, + 0.6774362326, -0.0007068077, -0.0020650066, -0.0016493639, 0.0011019059, + 0.0006670883, 0.0007956917, 0.0018021287, -0.0004023528, -0.0009028865, + -0.0008202284, 0.0009146639, -0.0005193055, 0.0006987064, -0.0005675862, + -0.0012756316, 0.0005099764, 0.0017646723, -0.0022259494, -0.0012976080, + -0.0006848512, 0.0003632503, -0.0004291418, 0.0003947320, -0.0010899990, + 0.0011175228, -0.0018549245, 0.0026870077, 0.0000723377, 0.0004627320, + 0.0004206835, -0.0009944849, 0.0003673616, -0.0008540581, -0.0021651906, + 0.0007057535, 0.0021283529, -0.0012432770, 0.0009191055, 0.0001632231, + 0.0001102091, 0.0025262157, 0.0008718651, 0.0001061438, -0.0003223452, + 0.0024905074, 0.0026418988, -0.0001457557, 0.0003845915, -0.0003273296, + 0.0004625106, -0.0010163053, -0.0053940210, -0.0015626980, 0.0003520988, + 0.0013841477, -0.0006796737, 0.0018373292, 0.0011415576, 0.0011050559, + -0.0012937598, 0.0010608626, -0.0015335937, -0.0004663570, -0.0017154869, + 0.0000230186, 0.0011450599, -0.0016821816, 0.0013948230, 0.0014720929, + -0.0001372681, -0.0013332810, 0.0001987349, 0.0013162699, 0.0000484232, + 0.0016867239, -0.0020623717, -0.0012927481, 0.0011945178, 0.0001377207, + -0.0005980786, 0.0007790227, -0.0013253746, 0.0016403503, 0.0014390431, + 0.0001645833, 0.0000096688, -0.0011654379, 0.0010040537, 0.0000873217, + -0.0010708220, 0.0002189971, 0.0002622420, 0.0017404181, 0.0002376870, + -0.0006159797, -0.0004092865, 0.0003786348, 0.0033782199, -0.0005650101, + -0.0020815849, 0.0014030142, -0.0008239776, 0.0015016911, -0.0004777643, + -0.0006852958, 0.0015456532, 0.0004960448, -0.0015042417, -0.0003681793, + 0.0000320161, 0.0006183279, -0.0011259377, -0.0014970716, -0.0010032537, + -0.0003708992, -0.0007978595, -0.0003014617, -0.0020327636, 0.0013171692, + 0.0002581973, 0.0026434937, -0.0002414703, 0.0000597273, 0.0005706679, + 0.0002086591, 0.0017502569, 0.0006717350, -0.0012726597, 0.0013533863, + -0.0017614181, 0.0004716725, 0.0000172239, -0.0005397653, -0.0014368743, + 0.0000733971, -0.0006992342, 0.0000758951, 0.0011526989, -0.0018665330, + 0.0010690382, -0.0007453449, 0.0018662976, -0.0015132425, -0.0007816376, + 0.0001512088, 0.0014156620, -0.0001005754, 0.0001182402, 0.0007349914, + -0.0007023872, 0.0006158007, 0.0004579460, 0.0010342244, -0.0008370150, + 0.0003458243, -0.0006382759, 0.0010008230, -0.0015342690, -0.0005202976, + 0.0018235436, 0.0073655052, -0.0009897905, -0.0005744211, 0.0003921110, + -0.0019226139, 0.0010428587, -0.0004921532, 0.0008324636, -0.0005112058, + -0.0002742559, 0.0001862701, -0.0009028838, 0.0002101540, 0.0006148964, + -0.0004110658, 0.0012521064, -0.0003419197, 0.0001145652, -0.0000001977, + 0.0011610107, 0.0016216058, -0.0011560088, -0.0001464342, 0.0000660606, + -0.1668267846, -0.0001209383, -0.0004161145, -0.0021566907, -0.0013220548, + -0.0010878583, 0.0002488801, 0.0006363074, -0.0006011953, -0.0000216118, + 0.0010276255, -0.0001434044, 0.0013035099, -0.0000267341, -0.0013360474, + 0.0002533391, 0.0000090511, -0.0007316228, -0.0000888673, -0.0014166771, + -0.0004600142, 0.0002893093, -0.0002223012, -0.0005726947, 0.4700181484, + 0.0016525371, 0.0002726198, 0.0002493095, -0.0013804552, 0.0008682110, + -0.0023441133, -0.0013776034, 0.0003316840, -0.0013082132, 0.0004257499, + 0.0018645357, 0.0011096103, -0.0008738162, -0.0005208331, 0.0020038546, + -0.0005741310, -0.0005079815, 0.0020099282, 0.0006457164, -0.0018320642, + -0.0000649570, 0.0004834804, -0.0008529092, 0.0015485459, 0.0004225257, + 0.0006878772, 0.0186198652, -0.0016222517, -0.0007687737, -0.0011031474, + 0.0010668995, 0.0007844290, -0.0002919352, -0.0006855456, 0.0014449533, + -0.0010957788, 0.0003455835, -0.0003327408, -0.0085127279, -0.0016154740, + 0.0011642078, 0.0011402161, 0.0006886014, -0.0005744928, -0.0001700087, + -0.0015434260, 0.0004980308, -0.0004657672, 0.0018179985, 0.0017754083, + -0.0005626546, -0.0000950613, -0.0000839896, 0.0012186188, -0.0002926174, + 0.0008432334, 0.0010689055, -0.0000748141, 0.0001944409, -0.0006469230, + 0.0016406570, 0.0006343446, -0.0014475952, -0.0000473859, 0.0141667239, + 0.0000892727, 0.0018341318, -0.0004131844, 0.0021481980, 0.0009562979, + 0.0002578965, -0.0013160720, 0.0011122245, -0.0009027000, -0.0004313635, + -0.0006248171, -0.0014547459, 0.0013012169, 0.0000863709, 0.0005665062, + 0.0005090544, -0.0018066019, -0.0354754105, -0.0002553952, -0.0017720126, + -0.0001223916, 0.0000198768, 0.0001236447, 0.0004233574, 0.0005780719, + -0.0007589981, -0.0012187625, -0.0019489328, -0.0006596176, 0.0015223222, + 0.0131740244, -0.0005025868, 0.0000858856, 0.0001229998, 0.0007553594, + 0.0011415980, 0.0019786595, -0.0006784904, 0.0001565017, -0.0001390679, + -0.0018021343, -0.0000648820, 0.0006053541, -0.0015362559, -0.0006392860, + 0.0000090371, -0.0019862172, -0.0002756566, -0.0000696494, 0.0007925378, + 0.0008697158, 0.0005443052, 0.0007995227, -0.0018737699, -0.0010447740, + -0.0185275748, 0.0002758562, 0.0001181448, 0.0019737403, -0.0018057453, + 0.0006421444, 0.0021084002, -0.0004457589, 0.0023466714, 0.0016602583, + 0.0010058836, 0.0006339792, -0.0000674545, -0.0008480712, -0.0005404106, + -0.0001702143, 0.0004437997, -0.0003069100, 0.0005743145, 0.0005339347, + -0.0008228421, -0.0001187935, -0.0008406118, 0.0001090309, -0.0005076630, + 0.0002602786, -0.0002709264, -0.0004891168, 0.0000519222, -0.0010227875, + 0.0009015470, 0.0010822086, 0.0025104340, 0.0000780749, 0.0000950349, + 0.0003589711, -0.0003848085, 0.0006581575, -0.0024984335, 0.0008844147, + -0.0011942158, 0.0007382212, -0.0000135824, 0.0008811094, 0.0002838909, + -0.0007838923, -0.0009383694, 0.0007284384, -0.0006148882, 0.0014439843, + -0.0001563225, 0.0004926462, 0.0008954784, 0.0004150365, -0.1497260928, + -0.0007065043, -0.0002328590, 0.0021761600, -0.0002553957, -0.0000817915, + -0.0002551684, -0.0025648912, 0.0017868062, 0.0002464722, 0.0000265557, + 0.0000270327, -0.0006505079, -0.0043498185, -0.0008935959, 0.0010467116, + 0.0002023075, -0.0004087198, 0.0011592433, -0.0006026919, -0.0007111488, + 0.0003640940, -0.0005680206, 0.0004791305, -0.0000149044, 0.0007587409, + 0.0013062507, -0.0002991622, 0.0002574832, 0.0000884933, -0.0000712201, + 0.0022578079, -0.0017271498, 0.0010280209, -0.0016446090, -0.0005481681, + -0.0004209911, 0.0001993239, -0.0013136488, -0.0004165694, -0.0005033596, + -0.0010559889, 0.0001510673, -0.0004179869, -0.0014067601, -0.0002187975, + 0.0003590139, -0.0013135634, 0.0013409713, 0.0005171257, -0.0002195262, + 0.0012967818, -0.0013186540, -0.0023248089, -0.0017106389, -0.0002402808, + -0.2544894516, 0.0000099072, -0.0000943094, 0.0006186569, 0.0014164825, + -0.0013569680, 0.0007494534, -0.0007750186, -0.0005965419, -0.0006264423, + -0.0007844211, -0.0010209475, -0.0000066785, 0.0007677141, -0.0012281883, + -0.0008715698, 0.0013371170, -0.0006284635, 0.0003372605, -0.0007245149, + -0.0010762333, -0.0008748138, -0.0003597010, 0.0021992056, -0.0011517601, + -0.0003707912, -0.0005526433, 0.0002758268, -0.0015741307, -0.0000336603, + 0.0002988745, -0.0020075927, -0.0008614169, -0.0011185498, -0.0007932065, + 0.0005308309, -0.0008154991, -0.0003391239, -0.0012502136, -0.0012147024, + 0.0008035335, -0.0007672322, -0.0002730116, 0.0017026081, 0.0013758747, + 0.0007595839, 0.0003021429, 0.0008522830, -0.0006129302, 0.0014011702, + -0.0009959335, -0.0007030698, 0.0008788831, 0.7766852379, 0.0017432712, + -0.0527217910, 0.0002430047, -0.0007106517, 0.0008169694, 0.1336439550, + -0.0005990425, 0.0006430177, 0.0020699492, 0.0001561856, -0.0002492159, + -0.0017737020, -0.0001728917, 0.0006315336, 1.1911747456, 0.0007217346, + -0.0009963345, 0.0023384581, 0.0001175167, 0.0031070104, 0.0000713291, + -0.0017121271, -0.0003298232, -0.0002289917, 0.0017166415, -0.0002708975, + 0.0006770752, 0.0014648307, 0.0002605594, -0.0015111691, -0.0017280756, + -0.0004284594, -0.0005518203, -0.0006184680, -0.0016868920, 0.0000273630, + 0.0001012604, -0.0007125493, 0.0002930257, -0.0011094222, 0.0009995003, + -0.0009564517, -0.0002752775, 0.0003679809, -0.0005300271, 0.0006584506, + -0.0017144484, -0.0000468958, 0.0008123792, -0.0013741087, 0.0009554168, + 0.0005291831, -0.0001435308, -0.0015987048, -0.0008812954, 0.0012872857, + -0.0005477322, 0.0005023852, -0.0000288866, 0.0005027186, -0.0005037703, + -0.0025482730, 0.0007643250, -0.0001739236, 0.0013353535, 0.0016182718, + -0.0016707554, -0.0015320866, -0.0013355119, -0.0010140208, -0.0014916130, + -0.0012573963, -0.0013818499, -0.0008124695, -0.0003171861, -0.0008267113, + -0.0010903948, -0.0011907126, 0.0002267817, 0.0005362192, 0.0004226870, + 0.0003912915, -0.0004712087, -0.0004281875, 0.0002277414, 0.0018837177, + -0.0004736257, -0.0003527664, 0.0013293722, -0.0003422827, 0.0011643677, + -0.0017069364, 0.0002335580, 0.0004214622, 0.0000132404, 0.0002460256, + 0.0003251424, 0.0008771382, 0.0020980958, -0.0000602629, 0.0013599203, + -0.0006260099, 0.0007127535, 0.0007243990, 0.0011337125, -0.0004136232, + 0.0018822812, 0.0003017287, -0.0006353166, 0.0023875230, 0.0001970661, + 0.0000238037, -0.0006896551, 0.0020153709, 0.0017129355, -0.0007881971, + 0.0004938382, -0.0009213841, -0.0007115272, -0.0004999852, -0.0000618007, + 0.0010522129, 0.0001813937, 0.0005370572, -0.0014451552, 0.0009162063, + 0.0000305097, -0.0006585007, 0.0003454745, 0.0010164571, 0.0005631885, + 0.1741017699, 0.0006229342, 0.0001532511, 0.0012739833, 0.0005122417, + 0.0009885028, -0.0007317031, -0.0000464307, 0.0005307528, -0.0004911744, + -0.0009372002, 0.0011165977, -0.0009792983, -0.0003789337, -0.0001648199, + 0.0015616857, 0.0008661347, 0.0002976470, -0.0013810117, 0.0039522317, + -0.0025104904, -0.0688845068, 0.0006521000, -0.0006935513, 0.0015311146, + 0.0028777765, 0.0003967346, 0.0009266865, 0.0023600468, 0.0013188384, + -0.0003686198, 0.0007139561, 0.0016994337, 0.0000612773, 0.0012517895, + -0.0003403723, 0.0011836658, 0.0003826492, 0.0000823773, 0.0027609244, + 0.0020442272, -0.0004912489, -0.0005991640, -0.0020841630, -0.0013469178, + 0.0006141250, -0.0009659951, 0.0003171966, 0.0020142314, -0.0023015714, + 0.0006365156, -0.0002778675, 0.0011978727, -0.0005946514, 0.0004221778, + -0.0007009277, 0.2012278587, 0.0005553965, 0.0016098178, 0.0000976026, + 0.0009818936, -0.0001218545, -0.0012280873, -0.0007971346, 0.0005694618, + 0.0003624316, 0.0004617787, 0.0006153021, -0.0000839341, -0.0006652609, + 0.0007761172, -0.0012373527, 0.0002806913, -0.0004170439, 0.0000183005, + -0.0003906228, 0.0008918829, 0.0015825946, 0.0005866609, 0.0006822525, + -0.0004639928, 0.0007455056, 0.0006950409, 0.0014778390, 0.0008877579, + -0.0009382062, 0.0003086901, 0.0004452267, -0.0014730002, 0.0007582940, + -0.0006205654, 0.0005438062, -0.0010856641, -0.0005391593, -0.0018059134, + -0.0006763786, 0.0020504622, -0.0007946887, 0.0001519592, 0.0001500792, + -0.0003489438, 0.0001489706, 0.0080937911, -0.0001822481, 0.0005458573}; + +float unet_input_time_embedding_20_19[] = { + -0.0015756749, -0.0004194272, -0.0017308821, -0.0001572541, 0.0004924131, + -0.0009987447, 0.0005826764, 0.0004812066, 0.0001010385, -0.0017065741, + 0.0003359818, 0.0003458126, -0.0013983231, -0.0007397542, -0.0001493394, + -0.0000249217, -0.0004026089, -0.0023235574, 0.0014804715, -0.0010818185, + -0.0005675624, -0.0008241516, 0.0007136852, 0.0891436636, 0.0003836311, + 0.0004992441, -0.0007537678, -0.0006498070, 0.0000158531, 0.0000309129, + 0.0006357222, -0.0005109352, -0.0012667961, 0.0006337864, 0.0007557611, + -0.0001041708, -0.0002325913, 0.0011385682, -0.0015459887, 0.0007142406, + -0.0003200131, 0.0008764886, 0.0006844779, 0.0014552064, -0.0000278717, + -0.0006612965, -0.0003879992, -0.0007579303, -0.0014210595, -0.0001684048, + -0.0005211523, -0.0002555866, -0.1390691251, -0.0012607286, -0.0014807187, + -0.0000346386, -0.0000791406, 0.0006532106, -0.0001499304, -0.0017417683, + 0.0000650201, 0.0010613120, 0.0009424048, -0.0007568309, -0.0000325162, + -0.0001437934, 0.0005656900, 0.0001869708, 0.0007038675, 0.0000726811, + 0.0000757542, -0.0021913312, 0.0000394003, -0.0001354497, 0.0024355901, + -0.0001267614, 0.0000004442, -0.0006700018, 0.0000462280, -0.0006950393, + 0.0011071078, 0.0009878447, -0.0013421616, -0.0005914513, 0.0007621234, + 0.0008745550, 0.0000856723, -0.0009734402, 0.0003237110, 0.0000155303, + -0.0004643576, -0.0005152514, -0.0001547644, 0.0002172863, 0.0045572552, + 0.0008627167, 0.0004175147, -0.0007550120, 0.0011000873, -0.0001003165, + 0.0001279064, -0.0022106883, -0.0017353173, -0.4652013481, -0.0013264767, + -0.0014415598, 0.0011822316, 0.0022201380, 0.0000754530, 0.0009751106, + -0.0001206901, 0.0002122670, -0.4207606316, 0.0010258770, 0.0009118048, + 0.0004502744, 0.0011238237, -0.0011626885, 0.0002192552, 0.0007294908, + -0.0005700458, -0.0000154844, 0.0306506790, 0.0007508863, -0.0017168662, + -0.0000920086, 0.0000904622, 0.0004843217, 0.0009286031, -0.0000715549, + -0.0017152051, 0.0008961242, -0.0001327288, -0.0004126048, -0.0000484264, + 0.0000484950, -0.0002921440, 0.0001373123, -0.0006206781, 0.0006582337, + 0.0008671356, -0.0004124884, -0.0003353977, 0.0004015579, -0.0011408490, + 0.0018569198, 0.0004305081, -0.0004625786, 0.0007299380, -0.0003177440, + -0.0009354493, -0.0005121377, -0.0010173493, 0.0003354019, -0.0004345528, + 0.0002428140, 0.0006853323, -0.0020702323, -0.0006516967, -0.0001170277, + 0.0002018097, 0.0000111029, -0.0006554602, 0.0002636551, -0.0004776488, + 0.0000289527, -0.0017074470, -0.0024631480, -0.0397854671, 0.0013466836, + -0.0016671199, 0.0006785560, -0.0018844744, 0.0005899883, -0.0007205689, + 0.0008454625, 0.0001222818, 0.0010122349, -0.0002504305, -0.0014098193, + -0.0009554285, -0.0010844581, 0.0018356428, -0.0010472075, 0.0001545073, + -0.0000759712, 0.0014773579, 0.0021306952, -0.0005461294, -0.0010025606, + -0.0005760947, 0.0009275791, -0.0010947754, 0.0002089050, -0.0003272151, + -0.0004740995, -0.0013661793, -0.0007252935, -0.0004133195, -0.0012425906, + 0.0008297060, 0.0011401363, -0.0008553741, 0.0008672327, -0.0002940381, + -0.0012860233, 0.0008185705, -0.0000538034, -0.0003849245, 0.0010169675, + -0.0011512635, 0.0011212993, -0.0011599711, 0.0000725847, 0.0006803288, + -0.0006786161, 0.0005290876, 0.0002081213, -0.0012346067, 0.0002505475, + 0.0004751524, -0.0007795737, 0.0006943403, -0.0098892851, 0.0001689613, + 0.0005358495, -0.0007467316, -0.0012544617, 0.0011821731, -0.0003054254, + 0.0012373626, -0.0012657819, 0.0003885757, 0.0002494459, 0.0005737040, + -0.0001589358, -0.0013210177, -0.0003517559, -0.0012369901, -0.0008937753, + -0.0008010555, -0.0007259960, -0.0005910413, -0.0006316695, 0.5778682232, + 0.0004752295, 0.0011505606, 0.0010311181, -0.0004208805, -0.0009557446, + -0.0006790804, 0.0010562814, -0.0003155940, -0.0000627413, 0.0000922810, + 0.0005987645, 0.0002502627, 0.0005890807, -0.0015735065, 0.0004448990, + 0.0010066675, -0.0004292687, 0.0009169132, 0.0026717396, -0.0001295194, + 0.0015560267, 0.0010265186, -0.0004818738, 0.0012623798, -0.0008794451, + -0.0001813043, -0.0007620284, -0.0003353828, -0.0009623095, -0.0015700939, + 0.0008769864, 0.0011711218, -0.0002551586, 0.0000736080, -0.0015208866, + -0.3603082001, -0.0004278431, -0.0009857268, 0.0008864920, -0.0006615431, + 0.0006978763, -0.0005573938, -0.0008108377, -0.0004284838, 0.0005617347, + -0.0005798250, 0.0018180036, 0.0002519975, 0.0003585897, 0.0001322674, + -0.0003002137, -0.0010062237, -0.0004633921, -0.0007134224, -0.0009850562, + -0.0021516001, -0.0006327739, 0.0006870063, -0.0013145655, -0.0010543899, + -0.0013846993, -0.0015117020, -0.0001240135, -0.0003445246, 0.0006654221, + 0.0001344762, -0.0017205286, 0.0003106075, -0.0009486508, -0.0009469516, + 0.0001506903, 0.0001766278, -0.0003021373, -0.0001202775, 0.0003445218, + -0.0002378754, 0.0008720814, -0.0004277332, -0.0026076431, -0.0004227582, + -0.0000140411, 0.0006173793, -0.0011469885, 0.0597552955, -0.0005283183, + -0.0000707665, -0.0006192088, -0.0012139889, 0.0007491698, -0.0006914609, + -0.0003999872, 0.0016190105, -0.0011550182, 0.0000775671, -0.0003830572, + -0.0008823057, 0.0001344525, 0.0001467939, -0.5214700103, 0.0000666005, + -0.0010973765, -0.0002474809, 0.0004080486, -0.0006555994, 0.0006515818, + -0.0015196023, 0.0001885286, 0.0008414276, 0.0010026065, -0.0009967819, + -0.0006473293, -0.0007161186, -0.0002439244, 0.0005723215, -0.0000221557, + -0.0003487347, -0.0004715794, 0.0004507522, -0.0005663293, 0.0009217458, + -0.0001603609, -0.0003853105, 0.0001380630, -0.0008682720, 0.4756719470, + 0.0014521368, 0.0001024529, -0.0001036278, 0.0004581120, -0.0016750770, + -0.0003187749, 0.0004986512, -0.0005569241, -0.0002886299, -0.0003651958, + -0.0013310070, 0.4569008946, -0.0002710591, 0.0020881612, -0.0000460288, + -0.0006542890, -0.0012610238, 0.0006215675, -0.0014035995, -0.0018212632, + -0.0003989902, -0.0022486295, -0.0003002235, 0.0007202306, -0.0014286349, + -0.0004104697, -0.0003769365, 0.0003751289, -0.0004283437, 0.0001082942, + 0.0005968519, 0.0004290966, -0.0012005416, -0.0007435386, -0.0011149850, + -0.0016575613, 0.0006465855, -0.0008704523, -0.0007881364, -0.0004349388, + -0.0003989332, 0.0004500328, -0.0002119662, -0.0007167025, 0.0004578158, + 0.0005072698, 0.0005050888, -0.0001486149, -0.0008217529, 0.0011220574, + -0.0003002547, -0.0000789497, 0.0006343723, -0.0022334207, 0.0007649222, + 0.0011350792, -0.0002452591, -0.0010519016, 0.0002055406, -0.0002842653, + -0.0006329501, -0.0001678620, 0.0003287320, -0.0002103366, -0.0013013765, + 0.0009917677, 0.0012317142, 0.0016729499, -0.0003019199, -0.0004291271, + 0.0012586946, -0.0003139694, -0.0006335046, 0.0002681066, -0.0001972767, + 0.0004372704, 0.0007088669, 0.0006867987, 0.0012695347, 0.0008946592, + -0.0001301724, -0.0006190464, -0.0002848643, 0.0004141361, -0.0009901482, + 0.0008310373, 0.0002360307, -0.0005458631, 0.0010756319, 0.0005264706, + -0.0002932153, -0.0007477608, 0.0004448763, 0.0005613497, 0.0001125801, + 0.0007311709, 0.0006577573, 0.0008680271, -0.0001503351, 0.0010236418, + -0.0019859406, -0.0001844172, -0.0009566573, -0.0008885737, -0.0006243726, + -0.0108949738, -0.0004583402, 0.0002721968, 0.0005723843, 0.4341304004, + -0.0014864625, -0.0000135609, 0.0001124619, 0.0001043051, -0.0006804370, + -0.0005812146, 0.0000494665, 0.0004392071, 0.0003538853, -0.0007605001, + -0.0000010552, -0.5008413196, 0.0004394548, -0.0004622773, -0.0013983622, + -0.0032135763, -0.0010487828, -0.0019966490, -0.0005165618, 0.0012477962, + -0.0002115262, -0.0006679147, -0.0013533588, 0.0001753913, -0.0003496399, + 0.0000098818, -0.0008033947, -0.0007365524, -0.0007751831, -0.0003933692, + -0.0003060780, -0.0003447118, 0.5788813829, 0.0008214721, -0.0002901951, + 0.0004513524, 0.0016591684, 0.0005148081, 0.0000868281, -0.0002270727, + 0.0001713810, 0.0015679747, -0.0007141634, -0.0004433901, -0.0009032497, + 0.0004756254, 0.0000344550, -0.0005159508, 0.0000290647, 0.0004024384, + -0.0005134551, -0.0015539601, 0.0017488776, 0.0006284991, -0.0001683894, + -0.0006452396, -0.0006287410, -0.0007357181, 0.0001662495, -0.0014891182, + -0.0007398287, 0.0000047889, 0.0010016393, -0.0007711607, -0.0002675937, + -0.0005715964, -0.0013616981, 0.0003900221, 0.0005834633, -0.0009230776, + 1.1398192644, 0.0003905408, 0.0013164408, -0.0002330979, 0.0000410578, + -0.0003883668, -0.0004713559, 0.0007712580, 0.0001426861, -0.0003117151, + 0.0002972027, -0.0008909310, -0.0010366221, 0.0009014197, 0.0005845064, + -0.0012890883, -0.0006107134, -0.0003679711, -0.0009133844, 0.0009844042, + 0.0020347249, 0.0003938070, -0.0004207739, 0.0007254067, -0.0011243010, + -0.0007773358, 0.0001272582, 0.0001466139, -0.0001120898, -0.0013049634, + 0.0004369542, -0.0007428569, 0.0021254360, 0.0006455659, -0.0003504324, + -0.0000697642, 0.0005061352, 0.0005552121, -0.0006886851, -0.0004374846, + -0.0012025965, -0.0001715203, -0.0001651142, -0.0016864706, -0.0015434916, + 0.0012722188, -0.0007674583, 0.0003445945, 0.0014666771, -0.0000742152, + 0.0001775050, -0.0006898390, -0.0008453960, 0.0008233318, 0.0011567234, + 0.0012193604, 0.0003533940, 0.0005720032, 0.0001330072, -0.0012763895, + -0.0016757234, 0.0015348194, -0.0003355249, -0.0000373665, -0.0001459941, + -0.0006927941, -0.0002106703, -0.0014117938, 0.0008670078, 0.0000034275, + 0.0005586413, -0.0001775256, 0.0009248685, 0.0002952600, 0.0010138857, + -0.0002481490, 0.0001374509, -0.0019279991, -0.0005065198, -0.0005551246, + -0.0011137291, -0.0000931218, -0.0004491586, -0.0002779316, 0.0008432185, + -0.0006092945, -0.0007154515, -0.0007822161, -0.0001186240, 0.0012658448, + 0.0009141049, 0.0005983141, 0.0009195080, -0.0001217874, 0.0002799104, + 0.0007656228, -0.0003057979, -0.0003664573, 0.0005984129, -0.0025124298, + 0.0005817729, 0.0002458058, -0.0009631452, 0.0001612152, -0.0013041100, + 0.0009496678, 0.0000548614, 0.0006880518, 0.0003529548, -0.0008060741, + -0.0008586701, 0.0002120137, -0.0016002523, -0.0007574804, -0.0025654952, + -0.0003663055, -0.0003580521, 0.0023327819, 0.0000219282, 0.0006631896, + -0.0005825784, 0.0008276829, -0.0005459453, -0.0005276541, -0.0003216267, + 0.0006970791, 0.0000508054, 0.0005788486, -0.0008504251, -0.0000092466, + 0.0002128638, 0.0003821738, 0.0003753779, -0.0000014147, -0.0004274594, + 0.0000466094, 0.0002652612, -0.0006174308, 0.0005500163, -0.0003771810, + -0.0013794117, -0.0002119076, -0.0009101050, 0.0014581962, 0.0002255812, + -0.0005361573, -0.0009797942, -0.0003916761, -0.0004642599, 0.0002528746, + -0.0002465402, 0.0006714645, -0.0012914489, -0.0002698789, -0.0011653849, + -0.0012477436, 0.0002470138, 0.0001048860, -0.0007111507, -0.0018288118, + -0.0002259146, -0.0054624686, -0.0007614896, 0.0003173226, -0.0007267757, + 0.0002371820, -0.0014077267, 0.0002549040, -0.0008891111, -0.0008739438, + -0.0003204914, -0.0004757340, 0.0003748176, 0.0003234142, -0.0005709913, + 0.0004537338, 0.0002252022, -0.0000799298, -0.0016533053, -0.0011724369, + 0.0008370101, -0.0017336030, -0.0008913183, 0.0007654345, -0.0003854251, + -0.5286701918, -0.0004675749, -0.0006446256, 0.0001139548, -0.0004661451, + -0.0009972656, -0.0003795186, 0.0003216481, -0.0008361118, 0.0008568661, + 0.0024414607, 0.0001615892, 0.0017565769, 0.0011632508, -0.0005022355, + 0.0012781473, 0.0004828980, 0.0001638359, -0.0009231931, -0.0005629798, + -0.0002432619, 0.0001671384, 0.0002920142, -0.0001317647, 0.2541289628, + -0.0006035694, -0.0004130395, 0.0006936816, 0.0010788450, -0.0002548927, + -0.0014629290, 0.0006697333, 0.0001899702, 0.0001985501, 0.0001336024, + 0.0002043964, 0.0026665479, -0.0023143915, -0.0011947772, -0.0008950760, + -0.0007448976, -0.0004751738, 0.0014400426, 0.0001384546, 0.0009492487, + 0.0004040650, 0.0006802009, 0.0002951005, 0.0003054789, -0.0002213749, + -0.0002658363, 0.0025026924, 0.0001885211, -0.0001016259, -0.0010379259, + 0.0002619476, -0.0000631313, -0.0000135129, -0.0002383054, 0.0006198288, + -0.0006573158, 0.0009183725, 0.0010130750, 0.0020434642, -0.0006686887, + -0.0004627215, 0.0007823731, -0.0005510013, -0.0020099953, 0.0005045929, + 0.0003039679, 0.0003514248, -0.0000693181, 0.0014600822, -0.0002882624, + -0.0009712450, -0.0006375657, 0.0006090269, -0.0005250033, 0.0000886009, + 0.0007285476, 0.0004082792, -0.0007325993, 0.0010610463, 0.0000939327, + -0.0013576373, 0.0011254639, -0.0007111749, 0.0000598545, -0.3718462884, + 0.0000908673, -0.0002280807, -0.0010379730, 0.0002108242, -0.0006410340, + -0.0009935710, 0.0003286786, 0.0010683187, -0.0001308385, -0.0003756769, + 0.0002788517, 0.0015299157, -0.0009344383, 0.0006665997, 0.0004113301, + -0.0010907922, 0.0001749448, -0.1284452975, -0.0006983918, 0.0010820488, + -0.0000217273, 0.0005338695, -0.0006333110, -0.0007155752, -0.0010008754, + 0.0000412799, -0.0002710603, -0.0005837100, -0.0004138188, 0.0001553185, + -0.0009087444, -0.0007844097, -0.0001919821, -0.0021348139, 0.0004201410, + 0.0007481906, 0.0014700969, 0.0005826906, -0.0004863689, -0.0010552048, + 0.0000747060, 0.0007321529, -0.0005531972, 0.0004844617, -0.0009175522, + 0.0014472250, 0.0020458358, -0.0006970952, 0.0000776425, -0.0014237296, + 0.0000673698, 0.0008066965, -0.0011464600, 0.0014021987, -0.0009172361, + -0.1265282631, 0.0007319323, -0.0000205915, -0.0008193420, -0.0001149848, + 0.0017697953, -0.0010906777, 0.0009643817, 0.0006776589, -0.0001930041, + -0.0015801552, -0.0001565749, 0.0001193644, -0.0007175454, -0.0004236270, + 0.0007659330, -0.0014610051, -0.0011267794, -0.0015312443, 0.0002448475, + -0.0001030667, 0.0003854120, 0.0001978800, 0.0003290595, 0.0001760265, + -0.0003557075, 0.0005111983, -0.0003187779, 0.0018516891, 0.0000710520, + -0.0004701389, -0.0002558258, -0.0002721399, -0.0015478667, 0.0000754893, + -0.0001384574, -0.0010246341, -0.0002653257, -0.0009066020, -0.0010229521, + -0.0005324995, -0.0005030595, -0.0013605198, -0.0007344587, 0.0004827115, + -0.0004898310, -0.0000949106, 0.0002398342, -0.0001603310, 0.0005146178, + -0.0007491889, -0.0015891615, -0.0004445898, 0.0006765020, -0.5194830894, + -0.0020304385, -0.0004175380, -0.0009061992, 0.0012760896, 0.0004238253, + -0.0002810638, 0.0008528089, 0.0002047741, -0.0016550138, -0.0000452059, + 0.0003032229, -0.0003523682, -0.0022624675, -0.0005656795, 0.0004512710, + -0.0011281865, 0.0006705538, 0.0001123841, -0.0008891737, -0.0001635926, + 0.0006457232, -0.0014897813, -0.0000118592, 0.0010676342, 0.0011710621, + -0.0003646431, 0.0011265310, -0.0012856689, -0.0001357198, 0.0007990720, + 0.0023689300, 0.0006789220, 0.0003171088, -0.0007707565, -0.0019971747, + -0.0000065125, 0.0010085393, -0.0018472850, 0.0002177046, -0.0003604824, + 0.0005357764, 0.0011866179, 0.0002922374, -0.0008312744, 0.0016580452, + 0.0001305148, -0.0006072987, 0.0007949290, 0.0006193803, 0.0003673770, + 0.0017986911, 0.0001806263, 0.0001883614, -0.0005057051, -0.0013245647, + -0.6059169769, -0.0011607521, 0.0001962744, -0.0008114234, -0.0023187532, + -0.0012306732, -0.0002968619, 0.0015466709, 0.0003965478, -0.0005357413, + -0.0003837741, 0.0001112474, 0.0003419407, 0.0013077366, 0.0000377378, + 0.0001335982, 0.0008707033, -0.0018032361, 0.0007042778, 0.0004405091, + 0.0001382632, 0.0009514802, -0.0011877045, 0.0012559509, -0.0003745779, + 0.0007278360, 0.0000449591, 0.0001814801, 0.0000575962, -0.0009888113, + -0.0008582859, 0.0007443295, 0.0012428329, -0.0006030428, 0.0013061366, + 0.0002762171, 0.0019222916, -0.0006001298, -0.0008150864, -0.0004755938, + -0.0003954198, -0.0000781487, -0.0004231716, -0.0004654676, -0.0005436150, + 0.0017586411, -0.0000344352, -0.0002033404, 0.0001389704, 0.0007934915, + -0.0005434123, 0.0007282533, -0.0010461821, 1.1708137989, -0.0007784690, + -0.1471705437, 0.0002506342, -0.0000049314, -0.0010019541, 0.1583962291, + -0.0012603630, -0.0005381815, -0.0005694460, 0.0001474055, -0.0015420727, + 0.0007383463, -0.0004036794, 0.0005482417, 1.1774237156, -0.0009974993, + -0.0008156609, -0.0002719795, -0.0006020392, -0.0014597466, 0.0000921879, + -0.0009611733, -0.0002462491, 0.0017989175, -0.0007477801, 0.0003171111, + -0.0005985014, -0.0006659222, -0.0006502997, 0.0006248592, 0.0010207756, + -0.0003929192, -0.0005171068, -0.0004963805, -0.0001453734, 0.0000665623, + 0.0004644278, 0.0005232545, -0.0011776099, -0.0014013280, 0.0009939333, + 0.0003560370, 0.0000542181, -0.0006075259, -0.0011855294, -0.0005270820, + -0.0001754540, 0.0003273282, 0.0004860694, -0.0007945038, -0.0004415167, + -0.0006555803, 0.0005831453, -0.0007003734, 0.0008267618, 0.0007133191, + -0.0007169694, 0.0016883723, -0.0005485478, -0.0005280320, -0.0011531364, + 0.0004234563, -0.0011154764, -0.0014990056, -0.0000727512, 0.0017554582, + -0.0004916620, -0.0007542251, -0.0002590446, 0.0000568447, 0.0001543462, + 0.0001060674, -0.0014833382, 0.0090888459, -0.0000397726, -0.0007867697, + -0.0008006408, 0.0002665556, 0.0006808229, 0.0006777523, -0.0004535762, + 0.0000697505, 0.0003619972, 0.0003348801, -0.0013908455, -0.0008936306, + 0.0005369550, 0.0004112981, 0.0000022114, 0.0000531087, -0.0010752669, + 0.0001496295, -0.0004892461, 0.0002660848, -0.0013539105, 0.0010356251, + -0.0003945334, 0.0016862601, -0.0002367649, 0.0003113255, 0.0002421401, + 0.0005204920, -0.0000048031, -0.0011411691, -0.0003916193, -0.0011653800, + -0.0012591286, -0.0008851443, -0.0006569838, -0.0008883148, 0.0005002484, + 0.0004791627, -0.0000510714, -0.0010479791, -0.0004554945, -0.0023989966, + 0.0008822458, -0.0008178119, -0.0000330918, -0.0002191719, 0.0014602165, + 0.0001733880, 0.0012173089, -0.0002539007, -0.0007765495, 0.0017069671, + -0.0004648035, 0.0004241366, -0.0001382253, -0.0003721265, -0.0005863667, + 0.0031279484, 0.0000237841, -0.0019637812, -0.0010813397, 0.0003467471, + -0.0000218194, 0.0013205495, -0.0001830202, -0.0000223718, 0.0016018143, + 0.0003960375, 0.0011535996, -0.0007014479, -0.0001915824, -0.0002782992, + -0.0000443401, 0.0003103334, 0.0006713215, 0.0000997381, -0.0020255721, + 0.0002105259, -0.3634762764, -0.0010687343, -0.0012497548, 0.0016949477, + -0.0002640591, 0.0005534065, -0.0023469601, -0.0004023099, 0.0006932588, + -0.0008445303, -0.0004577413, -0.0018330589, -0.0002341708, 0.0013867381, + -0.0004524561, 0.0010660181, 0.0006690687, -0.0001241914, -0.0008702502, + 0.0000912466, 0.0013660132, -0.0018415763, -0.0001225960, -0.0004958529, + -0.0004923542, -0.0004270827, -0.0013222129, 0.0008629821, -0.0001823176, + 0.0000399904, -0.0000765319, -0.0010801023, -0.0008434019, 0.0008525383, + 0.0004423984, 0.4488822818, 0.0002294825, -0.0000429475, -0.0000393714, + -0.0004717431, -0.0013194799, -0.0011488760, -0.0017353517, -0.0000748932, + -0.0007764990, 0.0001601430, -0.0002939346, -0.0004019449, -0.0010221982, + -0.0018487102, -0.0001319017, -0.0008833618, 0.0007258472, 0.0007763281, + -0.0008487441, -0.0000900934, 0.0006177584, -0.0003486628, -0.0010200762, + 0.0003046039, -0.0007244661, 0.0010393672, -0.0006571445, 0.0011040240, + -0.0022044557, -0.0002856511, -0.0008478919, 0.0003831779, 0.0016309188, + -0.0001818552, 0.0012916634, -0.0008475399, -0.0001549373, -0.0016213979, + 0.0008602892, 0.0003859811, -0.0001544442, 0.0010658340, -0.0017548110, + 0.0026033008, -0.0004837140, 0.0953270942, 0.0002916611, 0.0014540878}; + +std::unordered_map time_embedding_input_map_20{ + {0, unet_input_time_embedding_20_0}, + {1, unet_input_time_embedding_20_1}, + {2, unet_input_time_embedding_20_2}, + {3, unet_input_time_embedding_20_3}, + {4, unet_input_time_embedding_20_4}, + {5, unet_input_time_embedding_20_5}, + {6, unet_input_time_embedding_20_6}, + {7, unet_input_time_embedding_20_7}, + {8, unet_input_time_embedding_20_8}, + {9, unet_input_time_embedding_20_9}, + {10, unet_input_time_embedding_20_10}, + {11, unet_input_time_embedding_20_11}, + {12, unet_input_time_embedding_20_12}, + {13, unet_input_time_embedding_20_13}, + {14, unet_input_time_embedding_20_14}, + {15, unet_input_time_embedding_20_15}, + {16, unet_input_time_embedding_20_16}, + {17, unet_input_time_embedding_20_17}, + {18, unet_input_time_embedding_20_18}, + {19, unet_input_time_embedding_20_19}}; + +std::unordered_map time_embedding_input_map_50{ + {0, unet_input_time_embedding_50_0}, + {1, unet_input_time_embedding_50_1}, + {2, unet_input_time_embedding_50_2}, + {3, unet_input_time_embedding_50_3}, + {4, unet_input_time_embedding_50_4}, + {5, unet_input_time_embedding_50_5}, + {6, unet_input_time_embedding_50_6}, + {7, unet_input_time_embedding_50_7}, + {8, unet_input_time_embedding_50_8}, + {9, unet_input_time_embedding_50_9}, + {10, unet_input_time_embedding_50_10}, + {11, unet_input_time_embedding_50_11}, + {12, unet_input_time_embedding_50_12}, + {13, unet_input_time_embedding_50_13}, + {14, unet_input_time_embedding_50_14}, + {15, unet_input_time_embedding_50_15}, + {16, unet_input_time_embedding_50_16}, + {17, unet_input_time_embedding_50_17}, + {18, unet_input_time_embedding_50_18}, + {19, unet_input_time_embedding_50_19}, + {20, unet_input_time_embedding_50_20}, + {21, unet_input_time_embedding_50_21}, + {22, unet_input_time_embedding_50_22}, + {23, unet_input_time_embedding_50_23}, + {24, unet_input_time_embedding_50_24}, + {25, unet_input_time_embedding_50_25}, + {26, unet_input_time_embedding_50_26}, + {27, unet_input_time_embedding_50_27}, + {28, unet_input_time_embedding_50_28}, + {29, unet_input_time_embedding_50_29}, + {30, unet_input_time_embedding_50_30}, + {31, unet_input_time_embedding_50_31}, + {32, unet_input_time_embedding_50_32}, + {33, unet_input_time_embedding_50_33}, + {34, unet_input_time_embedding_50_34}, + {35, unet_input_time_embedding_50_35}, + {36, unet_input_time_embedding_50_36}, + {37, unet_input_time_embedding_50_37}, + {38, unet_input_time_embedding_50_38}, + {39, unet_input_time_embedding_50_39}, + {40, unet_input_time_embedding_50_40}, + {41, unet_input_time_embedding_50_41}, + {42, unet_input_time_embedding_50_42}, + {43, unet_input_time_embedding_50_43}, + {44, unet_input_time_embedding_50_44}, + {45, unet_input_time_embedding_50_45}, + {46, unet_input_time_embedding_50_46}, + {47, unet_input_time_embedding_50_47}, + {48, unet_input_time_embedding_50_48}, + {49, unet_input_time_embedding_50_49}}; + +std::unordered_map> + time_embedding_input_map = {{20, time_embedding_input_map_20}, + {50, time_embedding_input_map_50}}; \ No newline at end of file diff --git a/bmf_lite/src/algorithm/contrib_modules/QnnControlNet/utils/time_all.h b/bmf_lite/src/algorithm/contrib_modules/QnnControlNet/utils/time_all.h new file mode 100644 index 00000000..00443608 --- /dev/null +++ b/bmf_lite/src/algorithm/contrib_modules/QnnControlNet/utils/time_all.h @@ -0,0 +1,13 @@ +// +// on 2023/8/14. +// + +#ifndef STABLEDIFFUSION_TIME_ALL_H +#define STABLEDIFFUSION_TIME_ALL_H +#include +extern std::unordered_map time_embedding_input_map_50; +extern std::unordered_map time_embedding_input_map_20; +extern std::unordered_map> + time_embedding_input_map; + +#endif // STABLEDIFFUSION_TIME_ALL_H diff --git a/bmf_lite/src/algorithm/contrib_modules/QnnControlNet/utils/utils_tokenizer.h b/bmf_lite/src/algorithm/contrib_modules/QnnControlNet/utils/utils_tokenizer.h new file mode 100644 index 00000000..6f14656c --- /dev/null +++ b/bmf_lite/src/algorithm/contrib_modules/QnnControlNet/utils/utils_tokenizer.h @@ -0,0 +1,512 @@ +#include +using namespace std; +#include +#include +#include +#include + +#include "utils/log.h" +/*================================================== CLIPTokenizer + * ===================================================*/ + +// Ref: https://github.com/openai/CLIP/blob/main/clip/simple_tokenizer.py +// TODO: implement bpe +class CLIPTokenizer { + private: + int is_ch_ = 0; + + int UNK_TOKEN_ID = 49407; + int BOS_TOKEN_ID = 49406; + int EOS_TOKEN_ID = 49407; + int PAD_TOKEN_ID = 49407; + + map tokenizer_token2idx; + map tokenizer_idx2token; + std::map, int> bpeRanks; + + static std::string strip(const std::string &str) { + std::string::size_type start = str.find_first_not_of(" \t\n\r\v\f"); + std::string::size_type end = str.find_last_not_of(" \t\n\r\v\f"); + + if (start == std::string::npos) { + // String contains only whitespace characters + return ""; + } + + return str.substr(start, end - start + 1); + } + + static std::string whitespace_clean_and_low_case(std::string text) { + text = std::regex_replace(text, std::regex(R"(\s+)"), " "); + text = strip(text); + std::transform(text.begin(), text.end(), text.begin(), + [](unsigned char c) { return std::tolower(c); }); + return text; + } + + std::set> + getPairs(const std::vector &word) { + std::set> pairs; + for (size_t i = 0; i < word.size() - 1; ++i) { + pairs.insert({word[i], word[i + 1]}); + } + return pairs; + }; + + std::map, int> + loadBpeRanks(const std::string &merge_path) { + std::map, int> result; + std::ifstream reader(merge_path); + std::string line; + + int startLine = 1; + int count = 0; + while (std::getline(reader, line)) { + // remove first line + if (startLine != 0 && startLine-- > 0) + continue; + std::string first, second; + std::istringstream iss(line); + if (iss >> first >> second) { + result[std::make_pair(first, second)] = count++; + } + } + reader.close(); + + return result; + } + + std::vector str_bpe_ch(const std::string &token) { + if (token.empty()) + return {token}; + + std::vector word; + for (size_t i = 0; i < token.length();) { + int cplen = 1; + if ((token[i] & 0xf8) == 0xf0) + cplen = 4; // 占用4个字节,前5位为11110 + else if ((token[i] & 0xf0) == 0xe0) + cplen = 3; // 占用3个字节,前4位为1110 + else if ((token[i] & 0xe0) == 0xc0) + cplen = 2; // 占用2个字节,前3位为110 + // 个人感觉这行代码好像没什么用,如果三种情况都不符合,那么cplen就为初始化的0,是符合utf-8编码定义的 + if ((i + cplen) > token.length()) + cplen = 1; + auto sub_str = token.substr(i, cplen); + word.push_back(sub_str); + i += cplen; + } + + return word; + } + + std::vector str_bpe_en(const std::string &token) { + if (token.empty()) + return {token}; + + std::vector word; + + auto token_word = token + ""; + + if (tokenizer_token2idx.find(token_word) != tokenizer_token2idx.end()) { + word.push_back(token_word); + return word; + } + + for (char c : token) { + word.emplace_back(1, c); + } + word.back() += ""; + + while (true) { + std::pair min; + int minValue = 0; + bool minFound = false; + for (const auto &pair : getPairs(word)) { + auto it = bpeRanks.find(pair); + if (it == bpeRanks.end()) + continue; + // todo check bpeRanks count compare + if (!minFound || it->second < minValue) { + min = pair; + minValue = it->second; + minFound = true; + } + } + + if (!minFound) + break; + + std::vector newWord; + for (size_t i = 0; i < word.size();) { + if (i < word.size() - 1 && word[i] == min.first && + word[i + 1] == min.second) { + newWord.push_back(min.first + min.second); + i += 2; + } else { + newWord.push_back(word[i]); + i += 1; + } + } + + word = newWord; + + if (word.size() == 1) + break; + } + + return word; + } + + std::vector word_piece(const std::string &token) { + + if (token.empty()) + return {token}; + + std::string unk_token = "[UNK]"; + int max_input_chars_per_word = 200; + std::vector word; + + if (token.length() > max_input_chars_per_word) { + word.push_back(unk_token); + return word; + } + + bool is_bad = false; + int start = 0; + while (start < token.length()) { + int end = token.length(); + std::string cur_substr = ""; + while (start < end) { + std::string sub_str = token.substr(start, (end - start)); + if (start > 0) { + sub_str = "##" + sub_str; + } + if (tokenizer_token2idx.find(sub_str) != + tokenizer_token2idx.end()) { + cur_substr = sub_str; + break; + } + end--; + } + if (cur_substr == "") { + is_bad = true; + break; + } + word.push_back(cur_substr); + start = end; + } + + if (is_bad) { + word.push_back(unk_token); + } + + return word; + } + + public: + CLIPTokenizer() = default; + + /* + * language_mode 0 english, 1 chinese; + */ + int set_language(int language_mode) { + is_ch_ = language_mode; + if (is_ch_) { + UNK_TOKEN_ID = 0; + BOS_TOKEN_ID = 101; + EOS_TOKEN_ID = 102; + PAD_TOKEN_ID = 0; + } + return 0; + } + + int load(const std::string &path) { + std::string vocab = path + "/vocab.txt"; + if (is_ch_) { + vocab = path + "/vocab.txt"; + } + struct stat buffer; + if (!(stat(vocab.c_str(), &buffer) == 0)) { + BMFLITE_LOGE("controlnet", "vocab %s not exist!", vocab.c_str()); + return -1; + } + + std::ifstream infile; + infile.open(vocab.data()); + std::string s; + int idx = 0; + while (getline(infile, s)) { + tokenizer_token2idx.insert(pair(s, idx)); + tokenizer_idx2token.insert(pair(idx, s)); + idx++; + } + infile.close(); + if (is_ch_) { + // when chinese, not use bpe merge. + return 0; + } + + std::string merge = path + "/merges.txt"; + if (!(stat(merge.c_str(), &buffer) == 0)) { + BMFLITE_LOGE("controlnet", "merge %s not exist!", merge.c_str()); + return -1; + } + + bpeRanks = loadBpeRanks(merge); + return 0; + } + + std::vector tokenize_discard(std::string text, size_t max_length = 0, + bool padding = false) { + std::vector tokens = encode(text); + tokens.insert(tokens.begin(), BOS_TOKEN_ID); + if (max_length > 0) { + if (tokens.size() > max_length - 1) { + tokens.resize(max_length - 1); + } else { + if (padding) { + tokens.insert(tokens.end(), max_length - 1 - tokens.size(), + PAD_TOKEN_ID); + } + } + } + tokens.push_back(EOS_TOKEN_ID); + return tokens; + } + + bool isChinese(string str) { + for (int i = 0; i < str.length(); i++) { + if (str[i] > 127) { + return true; + } + } + return false; + } + + std::vector encode(std::string text) { + std::string original_text = text; + std::vector bpe_tokens; + text = whitespace_clean_and_low_case(text); + + std::regex pat( + R"(<\|startoftext\|>|<\|endoftext\|>|'s|'t|'re|'ve|'m|'ll|'d|[[:alpha:]]+|[[:digit:]]|[^[:space:][:alpha:][:digit:]]+)", + std::regex::icase); + + std::string str = text; + std::vector token_strs; + std::smatch match_results; + std::string::const_iterator start = str.begin(); + std::string::const_iterator end = str.end(); + + while (std::regex_search(start, end, match_results, pat)) { + std::string token = match_results[0]; + std::vector tokens; + + if (is_ch_) { + // tokens = str_bpe_ch(token); + //// 中文+英文 + int flag = isChinese(token); + if (flag) { + tokens = str_bpe_ch(token); + } else { + tokens = word_piece(token); + } + } else { + tokens = str_bpe_en(token); + } + + for (const auto &bpe_token : tokens) { + if (tokenizer_token2idx.find(bpe_token) != + tokenizer_token2idx.end()) { + bpe_tokens.push_back(tokenizer_token2idx[bpe_token]); + token_strs.push_back(bpe_token); + } else { + BMFLITE_LOGE("controlnet", "unknown token : %s", + bpe_token.c_str()); + } + } + start = match_results[0].second; // 更新搜索的起始位置 + } + std::stringstream ss; + ss << "["; + for (auto token : token_strs) { + ss << "\"" << token << "\", "; + } + ss << "]"; + BMFLITE_LOGD("controlnet", "split prompt \"%s\" to tokens %s", + original_text.c_str(), ss.str().c_str()); + return bpe_tokens; + } + + // Ref: + // https://github.com/AUTOMATIC1111/stable-diffusion-webui/blob/cad87bf4e3e0b0a759afa94e933527c3123d59bc/modules/prompt_parser.py#L345 + // + // Parses a string with attention tokens and returns a list of pairs: text + // and its associated weight. Accepted tokens are: + // (abc) - increases attention to abc by a multiplier of 1.1 + // (abc:3.12) - increases attention to abc by a multiplier of 3.12 + // [abc] - decreases attention to abc by a multiplier of 1.1 + // \( - literal character '(' + // \[ - literal character '[' + // \) - literal character ')' + // \] - literal character ']' + // \\ - literal character '\' + // anything else - just text + // + // >>> parse_prompt_attention('normal text') + // [['normal text', 1.0]] + // >>> parse_prompt_attention('an (important) word') + // [['an ', 1.0], ['important', 1.1], [' word', 1.0]] + // >>> parse_prompt_attention('(unbalanced') + // [['unbalanced', 1.1]] + // >>> parse_prompt_attention('\(literal\]') + // [['(literal]', 1.0]] + // >>> parse_prompt_attention('(unnecessary)(parens)') + // [['unnecessaryparens', 1.1]] + // >>> parse_prompt_attention('a (((house:1.3)) [on] a (hill:0.5), sun, + // (((sky))).') + // [['a ', 1.0], + // ['house', 1.5730000000000004], + // [' ', 1.1], + // ['on', 1.0], + // [' a ', 1.1], + // ['hill', 0.55], + // [', sun, ', 1.1], + // ['sky', 1.4641000000000006], + // ['.', 1.1]] + std::vector> + parse_prompt_attention(const std::string &text) { + std::vector> res; + std::vector round_brackets; + std::vector square_brackets; + + float round_bracket_multiplier = 1.1f; + float square_bracket_multiplier = 1 / 1.1f; + + std::regex re_attention( + R"(\\\(|\\\)|\\\[|\\\]|\\\\|\\|\(|\[|:([+-]?[.\d]+)\)|\)|\]|[^\\()\[\]:]+|:)"); + std::regex re_break(R"(\s*\bBREAK\b\s*)"); + + auto multiply_range = [&](int start_position, float multiplier) { + for (int p = start_position; p < res.size(); ++p) { + res[p].second *= multiplier; + } + }; + + std::smatch m; + std::string remaining_text = text; + + while (std::regex_search(remaining_text, m, re_attention)) { + std::string text = m[0]; + std::string weight = m[1]; + + if (text == "(") { + round_brackets.push_back((int)res.size()); + } else if (text == "[") { + square_brackets.push_back((int)res.size()); + } else if (!weight.empty()) { + if (!round_brackets.empty()) { + multiply_range(round_brackets.back(), std::stof(weight)); + round_brackets.pop_back(); + } + } else if (text == ")" && !round_brackets.empty()) { + multiply_range(round_brackets.back(), round_bracket_multiplier); + round_brackets.pop_back(); + } else if (text == "]" && !square_brackets.empty()) { + multiply_range(square_brackets.back(), + square_bracket_multiplier); + square_brackets.pop_back(); + } else if (text == "\\(") { + res.push_back({text.substr(1), 1.0f}); + } else { + res.push_back({text, 1.0f}); + } + + remaining_text = m.suffix(); + } + + for (int pos : round_brackets) { + multiply_range(pos, round_bracket_multiplier); + } + + for (int pos : square_brackets) { + multiply_range(pos, square_bracket_multiplier); + } + + if (res.empty()) { + res.push_back({"", 1.0f}); + } + + int i = 0; + while (i + 1 < res.size()) { + if (res[i].second == res[i + 1].second) { + res[i].first += res[i + 1].first; + res.erase(res.begin() + i + 1); + } else { + ++i; + } + } + + return res; + } + + std::pair, std::vector> + tokenize(const string text, size_t max_length = 0, bool padding = false) { + auto parsed_attention = parse_prompt_attention(text); + + { + std::stringstream ss; + ss << "["; + for (const auto &item : parsed_attention) { + ss << "['" << item.first << "', " << item.second << "], "; + } + ss << "]"; + BMFLITE_LOGD("controlnet", "parse '%s' to %s", text.c_str(), + ss.str().c_str()); + } + + std::vector tokens; + std::vector weights; + for (const auto &item : parsed_attention) { + const std::string &curr_text = item.first; + float curr_weight = item.second; + std::vector curr_tokens = encode(curr_text); + tokens.insert(tokens.end(), curr_tokens.begin(), curr_tokens.end()); + weights.insert(weights.end(), curr_tokens.size(), curr_weight); + } + tokens.insert(tokens.begin(), BOS_TOKEN_ID); + weights.insert(weights.begin(), 1.0); + + auto tokens_length = tokens.size(); + + if (max_length > 0) { + if (tokens.size() > max_length - 1) { + tokens.resize(max_length - 1); + weights.resize(max_length - 1); + } else { + if (padding) { + tokens.insert(tokens.end(), max_length - 1 - tokens.size(), + PAD_TOKEN_ID); + weights.insert(weights.end(), + max_length - 1 - weights.size(), 1.0); + } + } + } + + if (is_ch_ && tokens_length < max_length - 1) { + tokens.insert(tokens.begin() + tokens_length, EOS_TOKEN_ID); + weights.insert(weights.begin() + tokens_length, 1.0); + } else { + tokens.push_back(EOS_TOKEN_ID); + weights.push_back(1.0); + } + + // for (int i = 0; i < tokens.size(); i++) { + // std::cout << tokens[i] << ":" << weights[i] << ", "; + // } + // std::cout << std::endl; + + return {tokens, weights}; + } +}; \ No newline at end of file diff --git a/bmf_lite/src/algorithm/contrib_modules/canny/canny_algorithm.cpp b/bmf_lite/src/algorithm/contrib_modules/canny/canny_algorithm.cpp new file mode 100644 index 00000000..ad972778 --- /dev/null +++ b/bmf_lite/src/algorithm/contrib_modules/canny/canny_algorithm.cpp @@ -0,0 +1,102 @@ +#if (defined(__ANDROID__) || defined(__OHOS__)) && \ + defined(BMF_LITE_ENABLE_CANNY) +#include "canny_algorithm.h" +#include "algorithm/bmf_video_frame.h" +#include "common/error_code.h" +// #include "opengl/canny/canny.h" //android was not implemented +#include +namespace bmf_lite { +struct CannyInitParam { + int algorithm_type = -1; // algorithm type + int backend = -1; // backend type + int process_mode = -1; // process image or video + int max_width = -1; // max input width + int max_height = -1; // max input height + std::string license_module_name; // tob license name + std::string program_cache_dir; // save program cache dir + std::string library_path; // lib path + bool operator==(const CannyInitParam ¶m) { + if (algorithm_type != param.algorithm_type) + return false; + if (backend != param.backend) + return false; + if (process_mode != param.process_mode) + return false; + if (max_width != param.max_width) + return false; + return true; + } +}; +class CannyProcessParam { + public: + float *mvp = NULL; +}; +class CannyImpl { + public: + struct CannyInitParam init_param_; + // std::shared_ptr canny_; //android was not implemented + std::shared_ptr video_pool_; + VideoFrame out_frame_; + + CannyImpl() {}; + ~CannyImpl() {}; + int parseInitParam(Param param, CannyInitParam &init_param) { + return BMF_LITE_UnSupport; + } + int parseProcessParam(Param param, CannyProcessParam &process_param) { + return BMF_LITE_UnSupport; + } + int setParam(Param param) { return BMF_LITE_UnSupport; } + int setParam(CannyInitParam param) { return BMF_LITE_UnSupport; } + int preProcess(VideoFrame frame, CannyProcessParam process_param) { + return BMF_LITE_UnSupport; + } + int createProcessOutVideoFrame(VideoFrame &frame, + CannyProcessParam process_param) { + return BMF_LITE_UnSupport; + } + int processVideoFrame(VideoFrame frame, Param param) { + return BMF_LITE_UnSupport; + } + int processVideoFrame(VideoFrame in_frame, VideoFrame out_frame, + CannyProcessParam process_param) { + return BMF_LITE_UnSupport; + } + int getVideoFrameOutput(VideoFrame &frame, Param ¶m) { + return BMF_LITE_UnSupport; + } + int unInit() { return BMF_LITE_UnSupport; }; +}; + +CannyAlgorithm::CannyAlgorithm() {}; +CannyAlgorithm::~CannyAlgorithm() {}; +int CannyAlgorithm::setParam(Param param) { return BMF_LITE_UnSupport; } +int CannyAlgorithm::processVideoFrame(VideoFrame frame, Param param) { + return BMF_LITE_UnSupport; +} +int CannyAlgorithm::getVideoFrameOutput(VideoFrame &frame, Param ¶m) { + return BMF_LITE_UnSupport; +} +int CannyAlgorithm::unInit() { return BMF_LITE_UnSupport; }; + +int CannyAlgorithm::processMultiVideoFrame(std::vector videoframes, + Param param) { + return 0; +}; + +int CannyAlgorithm::getMultiVideoFrameOutput( + std::vector &videoframes, Param ¶m) { + return BMF_LITE_UnSupport; +}; + +int CannyAlgorithm::getProcessProperty(Param ¶m) { + return BMF_LITE_UnSupport; +}; + +int CannyAlgorithm::setInputProperty(Param attr) { return BMF_LITE_UnSupport; }; + +int CannyAlgorithm::getOutputProperty(Param &attr) { + return BMF_LITE_UnSupport; +}; +} // namespace bmf_lite +#endif \ No newline at end of file diff --git a/bmf_lite/src/algorithm/contrib_modules/canny/canny_algorithm.h b/bmf_lite/src/algorithm/contrib_modules/canny/canny_algorithm.h new file mode 100644 index 00000000..ce4f6cb4 --- /dev/null +++ b/bmf_lite/src/algorithm/contrib_modules/canny/canny_algorithm.h @@ -0,0 +1,51 @@ +/* + * Copyright 2024 Babit Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef _BMF_CANNY_ALGORITHM_H_ +#define _BMF_CANNY_ALGORITHM_H_ +#include "algorithm/algorithm_interface.h" +#include "algorithm/bmf_algorithm.h" +#include "media/video_buffer/video_buffer_pool.h" + +namespace bmf_lite { + +class CannyImpl; +class CannyAlgorithm : public IAlgorithmInterface { + public: + CannyAlgorithm(); + virtual ~CannyAlgorithm(); + + int setParam(Param param) override; + int unInit(); + + int processVideoFrame(VideoFrame frame, Param param) override; + int getVideoFrameOutput(VideoFrame &frame, Param ¶m) override; + + int processMultiVideoFrame(std::vector videoframes, + Param param) override; + int getMultiVideoFrameOutput(std::vector &videoframes, + Param ¶m) override; + + int getProcessProperty(Param ¶m) override; + int setInputProperty(Param attr) override; + int getOutputProperty(Param &attr) override; + + std::shared_ptr impl_ = nullptr; +}; + +} // namespace bmf_lite + +#endif \ No newline at end of file diff --git a/bmf_lite/src/algorithm/contrib_modules/canny/canny_algorithm.mm b/bmf_lite/src/algorithm/contrib_modules/canny/canny_algorithm.mm new file mode 100644 index 00000000..921442f6 --- /dev/null +++ b/bmf_lite/src/algorithm/contrib_modules/canny/canny_algorithm.mm @@ -0,0 +1,221 @@ +/* + * Copyright 2024 Babit Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "canny_algorithm.h" +#include "algorithm/bmf_video_frame.h" +#include "common/error_code.h" +#include "media/video_buffer/metal_texture_video_buffer/mtl_device_context.h" +#include "media/video_buffer/transform/cvpixelbuffer_transformer.h" +#include "metal/metal_helper.h" +#include +#import +#import +#import + +#if defined(__APPLE__) && defined(BMF_LITE_ENABLE_CANNY) + +namespace bmf_lite { + +class CannyImpl { +public: + int parseInitParam(Param param) { + int fmt; + if (param.getInt("cvpixelbuffer_fmt", fmt) != 0) { + return BMF_LITE_StsBadArg; + } + cvpixelbuffer_fmt_ = (uint32_t)fmt; + if (param.getFloat("low_threshold", low_threshold_) != 0) { + return BMF_LITE_StsBadArg; + } + if (param.getFloat("high_threshold", high_threshold_) != 0) { + return BMF_LITE_StsBadArg; + } + if (param.getFloat("sigma", sigma_) != 0) { + return BMF_LITE_StsBadArg; + } + std::vector color_transform; + if (param.getFloatList("color_transform", color_transform) != 0) { + return BMF_LITE_StsBadArg; + } + color_transform_[0] = color_transform[0]; + color_transform_[1] = color_transform[1]; + color_transform_[2] = color_transform[2]; + return BMF_LITE_StsOk; + } + + int setParam(Param param) { + if (!@available(iOS 14.0, *)) { + return BMF_LITE_StsNotSupport; + } + int ret = parseInitParam(param); + if (ret != BMF_LITE_StsOk) { + return ret; + } + @autoreleasepool { + canny_ = [[MPSImageCanny alloc] initWithDevice:metal::MetalHelper::instance().mtl_device() + linearToGrayScaleTransform:&color_transform_[0] + sigma:sigma_]; + } + if (canny_ == nil) { + return BMF_LITE_StsNotSupport; + } + command_queue_ = [metal::MetalHelper::instance().mtl_device() newCommandQueue]; + + std::shared_ptr mtl_device_context = std::make_shared(); + mtl_device_context->create_context(); + + HardwareDataInfo hardware_data_info_in; + hardware_data_info_in.mem_type = MemoryType::kCVPixelBuffer; + + HardwareDataInfo hardware_data_info_out; + hardware_data_info_out.mem_type = MemoryType::kMultiMetalTexture; + + trans_ = std::make_shared(); + ret = trans_->init(hardware_data_info_in, mtl_device_context, hardware_data_info_out); + if (ret != BMF_LITE_StsOk) { + return ret; + } + + return BMF_LITE_StsOk; + } + + int processVideoFrame(VideoFrame *in_frame) { + std::shared_ptr ibuf = in_frame->buffer(); + if (ibuf == nullptr) { + return BMF_LITE_StsBadArg; + } + + std::shared_ptr temp_ibuf = nullptr; + int ret = trans_->trans(ibuf, temp_ibuf); + if (ret != BMF_LITE_StsOk) { + return ret; + } + + VideoFrame temp_iframe(temp_ibuf); + + VideoTextureList *temp_multi_data = (VideoTextureList *)(temp_iframe.buffer()->data()); + id tex =(__bridge_transfer id)(temp_multi_data->texture_list[0]->data()); + + auto &helper = metal::MetalHelper::instance(); + if (last_width_ != tex.width || last_height_ != tex.height || cur_tex_ == nil) { + cur_tex_ = nil; + if (BMF_LITE_StsOk != helper.gen_tex(&cur_tex_, tex.pixelFormat, tex.width, tex.height, + MTLTextureUsageShaderWrite | MTLTextureUsageShaderRead, MTLStorageModePrivate)) { + return BMF_LITE_MetalCreateTextureFailed; + } + last_width_ = tex.width; + last_height_ = tex.height; + } + + id command_buffer = [command_queue_ commandBuffer]; + if (command_buffer == nil) { + return BMF_LITE_CommandBufferFailed; + } + + [canny_ encodeToCommandBuffer:command_buffer sourceTexture:tex destinationTexture:cur_tex_]; + + id blit_command_encoder = [command_buffer blitCommandEncoder]; + if (@available(iOS 13.0, *)) { + [blit_command_encoder copyFromTexture:cur_tex_ toTexture:tex]; + } else { + [blit_command_encoder + copyFromTexture:cur_tex_ + sourceSlice:0 + sourceLevel:0 + sourceOrigin:MTLOriginMake(0, 0, 0) + sourceSize:MTLSizeMake(tex.width, tex.height, tex.depth) + toTexture:tex + destinationSlice:0 + destinationLevel:0 + destinationOrigin:MTLOriginMake(0, 0, 0)]; + } + [blit_command_encoder endEncoding]; + [command_buffer commit]; + [command_buffer waitUntilCompleted]; + if (command_buffer.status != MTLCommandBufferStatusCompleted) { + return BMF_LITE_MetalShaderExecFailed; + } + return BMF_LITE_StsOk; + } + + CannyImpl() {} + + ~CannyImpl() { + command_queue_ = nil; + trans_ = nil; + canny_ = nil; + } + +private: + id command_queue_ = nil; + MPSImageCanny *canny_ = nil; + std::shared_ptr trans_ = nullptr; + OSType cvpixelbuffer_fmt_ = kCVPixelFormatType_420YpCbCr8BiPlanarVideoRange; + float color_transform_[3] = {0.299f, 0.587f, 0.114f}; // bt601/JPEG + id cur_tex_ = nil; + int last_width_ = 0; + int last_height_ = 0; + float sigma_ = std::sqrt(2); + float low_threshold_ = 0.2f; + float high_threshold_ = 0.4f; +}; + +int CannyAlgorithm::setParam(Param param) { + if (impl_ == nullptr) { + impl_.reset(new (std::nothrow) CannyImpl()); + } + return impl_->setParam(param); +} + +int CannyAlgorithm::processVideoFrame(VideoFrame frame, Param param) { + return impl_->processVideoFrame(&frame); +} + +int CannyAlgorithm::getVideoFrameOutput(VideoFrame &frame, Param ¶m) { + return BMF_LITE_StsFuncNotImpl; +} + +int CannyAlgorithm::processMultiVideoFrame(std::vector videoframes, + Param param) { + return BMF_LITE_StsFuncNotImpl; +} + +int CannyAlgorithm::getMultiVideoFrameOutput( + std::vector &videoframes, Param ¶m) { + return BMF_LITE_StsFuncNotImpl; +} + +int CannyAlgorithm::unInit() { impl_ = nullptr; } + +CannyAlgorithm::CannyAlgorithm() {} + +CannyAlgorithm::~CannyAlgorithm() {} + +int CannyAlgorithm::getProcessProperty(Param ¶m) { + return BMF_LITE_StsFuncNotImpl; +} + +int CannyAlgorithm::setInputProperty(Param attr) { + return BMF_LITE_StsFuncNotImpl; +} + +int CannyAlgorithm::getOutputProperty(Param &attr) { + return BMF_LITE_StsFuncNotImpl; +} + +} + +#endif diff --git a/bmf_lite/src/algorithm/modules/denoise/denoise_algorithm.cpp b/bmf_lite/src/algorithm/modules/denoise/denoise_algorithm.cpp new file mode 100644 index 00000000..478a993d --- /dev/null +++ b/bmf_lite/src/algorithm/modules/denoise/denoise_algorithm.cpp @@ -0,0 +1,221 @@ +#if (defined(__ANDROID__) || defined(__OHOS__)) && \ + defined(BMF_LITE_ENABLE_DENOISE) +#include "denoise_algorithm.h" +#include "algorithm/bmf_video_frame.h" +#include "common/error_code.h" +#include "opengl/denoise/denoise.h" +#include +namespace bmf_lite { +struct DenoiseInitParam { + int algorithm_type = -1; // algorithm_type + // int scale_mode = -1; // process 1.5 or 2 + int backend = -1; + int process_mode = -1; // process image or video + int max_width = -1; // max input width + int max_height = -1; // max input height + std::string license_module_name; // tob license name + std::string program_cache_dir; // save program cache dir + std::string library_path; + // int sharp_levels = -1; // mutlti sharp level + // std::string weight_path; // multi sharp super resolution weight + bool operator==(const DenoiseInitParam ¶m) { + if (algorithm_type != param.algorithm_type) + return false; + if (backend != param.backend) + return false; + if (process_mode != param.process_mode) + return false; + return true; + } +}; +class DenoiseProcessParam { + public: + float *mvp = NULL; +}; +class DenoiseImpl { + public: + struct DenoiseInitParam init_param_; + // struct DenoiseProcessParam process_param_; + std::shared_ptr denoise_; + std::shared_ptr video_pool_; + VideoFrame out_frame_; + + DenoiseImpl() {}; + ~DenoiseImpl() {}; + int parseInitParam(Param param, DenoiseInitParam &init_param) { + if (param.getInt("algorithm_type", init_param.algorithm_type) != 0) { + return BMF_LITE_StsBadArg; + } + if (param.getInt("backend", init_param.backend) != 0) { + return BMF_LITE_StsBadArg; + } + if (param.getInt("process_mode", init_param.process_mode) != 0) { + return BMF_LITE_StsBadArg; + } + if (param.getInt("max_width", init_param.max_width) != 0) { + return BMF_LITE_StsBadArg; + } + if (param.getInt("max_height", init_param.max_height) != 0) { + return BMF_LITE_StsBadArg; + } + if (param.getString("license_module_name", + init_param.license_module_name) != 0) { + return BMF_LITE_StsBadArg; + } + if (param.getString("program_cache_dir", + init_param.program_cache_dir) != 0) { + return BMF_LITE_StsBadArg; + } + return 0; + } + int parseProcessParam(Param param, DenoiseProcessParam &process_param) { + return 0; + } + int setParam(Param param) { + struct DenoiseInitParam init_param; + int res = parseInitParam(param, init_param); + if (res < 0) { + return res; + } + res = setParam(init_param); + if (res < 0) { + return res; + } + return 0; + } + int setParam(DenoiseInitParam param) { + if (init_param_ == param) { + // do nothing + // std::cout<<"setParam"<<" set do nothing"<(); + ops_result = denoise_->init(init_param_.program_cache_dir); + if (0 != ops_result) { + return ops_result; + } + bmf_lite::MemoryType memory_type = + bmf_lite::MemoryType::kOpenGLTexture2d; + std::shared_ptr device_context; + bmf_lite::HWDeviceType device_type = bmf_lite::kHWDeviceTypeEGLCtx; + bmf_lite::HardwareDeviceCreateInfo create_info; + create_info.device_type = device_type; + bmf_lite::EGLContextInfo context_info; + context_info.egl_context = NULL; + context_info.egl_display = NULL; + context_info.egl_draw_surface = NULL; + context_info.egl_read_surface = NULL; + create_info.context_info = &context_info; + int res = bmf_lite::HWDeviceContextManager::createHwDeviceContext( + &create_info, device_context); + if (res < 0) { + return res; + } + std::shared_ptr allocator = + bmf_lite::AllocatorManager::getAllocator(memory_type, + device_context); + int max_size = 2; + video_pool_ = std::make_shared( + allocator, device_context, max_size); + if (video_pool_ == NULL) { + return BMF_LITE_StsNoMem; + } + init_param_ = param; + return 0; + } + } + int preProcess(VideoFrame frame, DenoiseProcessParam process_param) { + + return 0; + } + int createProcessOutVideoFrame(VideoFrame &frame, + DenoiseProcessParam process_param) { + return 0; + } + int processVideoFrame(VideoFrame frame, Param param) { + // LOGI("DenoiseImpl processVideoFrame"); + DenoiseProcessParam process_param; + int res = parseProcessParam(param, process_param); + if (res < 0) { + return res; + } + std::shared_ptr video_buffer = frame.buffer(); + bmf_lite::HardwareDataInfo hardware_data_info = + video_buffer->hardwareDataInfo(); + hardware_data_info.mutable_flag = 1; + std::shared_ptr output_video_buffer = + video_pool_->acquireObject(video_buffer->width(), + video_buffer->height(), + hardware_data_info); + if (output_video_buffer == NULL) { + return BMF_LITE_StsNoMem; + } + + out_frame_ = VideoFrame(output_video_buffer); + + res = processVideoFrame(frame, out_frame_, process_param); + if (res < 0) { + return res; + } + return 0; + } + int processVideoFrame(VideoFrame in_frame, VideoFrame out_frame, + DenoiseProcessParam process_param) { + int width = in_frame.buffer()->width(); + int height = in_frame.buffer()->height(); + int in_tex = (long)(in_frame.buffer()->data()); + int out_tex = (long)(out_frame.buffer()->data()); + // float *mvp = process_param.mvp; + // float cm_[9] = {1, -0.00093, 1.401687, 1, -0.3437, + // -0.71417, 1, 1.77216, 0.00099}; float co_[3] = {0, -0.5, + // -0.5}; + int ops_res = denoise_->run(in_tex, out_tex, width, height); + return ops_res; + } + int getVideoFrameOutput(VideoFrame &frame, Param ¶m) { + frame = out_frame_; + out_frame_ = VideoFrame(); + return 0; + } + int unInit() { return 0; }; +}; + +DenoiseAlgorithm::DenoiseAlgorithm() {}; +DenoiseAlgorithm::~DenoiseAlgorithm() {}; +int DenoiseAlgorithm::setParam(Param param) { + if (impl_ == NULL) { + impl_ = std::make_shared(); + } + return impl_->setParam(param); +} +int DenoiseAlgorithm::processVideoFrame(VideoFrame frame, Param param) { + return impl_->processVideoFrame(frame, param); +} +int DenoiseAlgorithm::getVideoFrameOutput(VideoFrame &frame, Param ¶m) { + return impl_->getVideoFrameOutput(frame, param); +} +int DenoiseAlgorithm::unInit() { return impl_->unInit(); }; +int DenoiseAlgorithm::processMultiVideoFrame( + std::vector videoframes, Param param) { + return BMF_LITE_StsFuncNotImpl; +} +int DenoiseAlgorithm::getMultiVideoFrameOutput( + std::vector &videoframes, Param ¶m) { + return BMF_LITE_StsFuncNotImpl; +} +int DenoiseAlgorithm::getProcessProperty(Param ¶m) { + return BMF_LITE_StsFuncNotImpl; +} + +int DenoiseAlgorithm::setInputProperty(Param attr) { + return BMF_LITE_StsFuncNotImpl; +} + +int DenoiseAlgorithm::getOutputProperty(Param &attr) { + return BMF_LITE_StsFuncNotImpl; +} +} // namespace bmf_lite +#endif \ No newline at end of file diff --git a/bmf_lite/src/algorithm/modules/denoise/denoise_algorithm.h b/bmf_lite/src/algorithm/modules/denoise/denoise_algorithm.h new file mode 100644 index 00000000..5bc77e81 --- /dev/null +++ b/bmf_lite/src/algorithm/modules/denoise/denoise_algorithm.h @@ -0,0 +1,32 @@ +#ifndef _BMF_DENOISE_ALGORITHM_H_ +#define _BMF_DENOISE_ALGORITHM_H_ +#include "algorithm/bmf_algorithm.h" +#include "algorithm/algorithm_interface.h" +#include "media/video_buffer/video_buffer_pool.h" +namespace bmf_lite { + +class DenoiseImpl; +class DenoiseAlgorithm : public IAlgorithmInterface { + + public: + DenoiseAlgorithm(); + virtual ~DenoiseAlgorithm(); + + int setParam(Param param); + int unInit(); + + int processVideoFrame(VideoFrame videoframe, Param param); + int getVideoFrameOutput(VideoFrame &frame, Param ¶m); + + int processMultiVideoFrame(std::vector videoframes, + Param param); + int getMultiVideoFrameOutput(std::vector &videoframes, + Param ¶m); + + int getProcessProperty(Param ¶m); + int setInputProperty(Param attr); + int getOutputProperty(Param &attr); + std::shared_ptr impl_; +}; +} // namespace bmf_lite +#endif \ No newline at end of file diff --git a/bmf_lite/src/algorithm/modules/denoise/denoise_algorithm.mm b/bmf_lite/src/algorithm/modules/denoise/denoise_algorithm.mm new file mode 100644 index 00000000..57911da7 --- /dev/null +++ b/bmf_lite/src/algorithm/modules/denoise/denoise_algorithm.mm @@ -0,0 +1,236 @@ +#include "denoise_algorithm.h" +#include "algorithm/bmf_video_frame.h" +#include "common/error_code.h" +#include "media/video_buffer/metal_texture_video_buffer/mtl_device_context.h" +#include "media/video_buffer/transform/cvpixelbuffer_transformer.h" +#include "metal/denoise/denoise.h" +#include "metal/metal_helper.h" +#import + +#if defined(__APPLE__) && defined(BMF_LITE_ENABLE_DENOISE) + +namespace bmf_lite { + +struct DenoiseInitParam { + int algorithm_type = 0; + int pool_size = 2; + std::string library_path; + bool operator==(const DenoiseInitParam ¶m) { + if (algorithm_type == param.algorithm_type) { + return true; + } + return false; + } +}; + +struct DenoiseProcessParam {}; + +class DenoiseImpl { +public: + int parseInitParam(Param param, DenoiseInitParam &init_param) { + if (param.getInt("algorithm_type", init_param.algorithm_type) != 0) { + return BMF_LITE_StsBadArg; + } + + if (param.getString("library_path", init_param.library_path) != 0) { + return BMF_LITE_StsBadArg; + } + return BMF_LITE_StsOk; + } + + int parseProcessParam(const Param ¶m, + DenoiseProcessParam &process_param) { + return BMF_LITE_StsOk; + } + + int setParam(Param param) { + struct DenoiseInitParam init_param; + int ret = parseInitParam(param, init_param); + if (ret != BMF_LITE_StsOk) { + return ret; + } + + if (init_param_ == init_param && denoise_ != nullptr) { + return BMF_LITE_StsOk; + } + + denoise_.reset(new (std::nothrow) metal::Denoise()); + ret = denoise_->init(); + if (ret != BMF_LITE_StsOk) { + return ret; + } + command_queue_ = + [metal::MetalHelper::instance().mtl_device() newCommandQueue]; + MemoryType memory_type = MemoryType::kCVPixelBuffer; + std::shared_ptr mtl_device_context = + std::make_shared(); + mtl_device_context->create_context(); + + std::shared_ptr allocator = + AllocatorManager::getAllocator(memory_type, mtl_device_context); + pool_ = std::make_shared( + allocator, mtl_device_context, init_param.pool_size); + + HardwareDataInfo hardware_data_info_in; + hardware_data_info_in.mem_type = MemoryType::kCVPixelBuffer; + + HardwareDataInfo hardware_data_info_out; + hardware_data_info_out.mem_type = MemoryType::kMultiMetalTexture; + + trans_ = std::make_shared(); + ret = trans_->init(hardware_data_info_in, mtl_device_context, + hardware_data_info_out); + if (ret != BMF_LITE_StsOk) { + return ret; + } + init_param_ = init_param; + + return BMF_LITE_StsOk; + } + + int processVideoFrame(VideoFrame *in_frame, std::shared_ptr obuf, + const DenoiseProcessParam &process_param) { + std::shared_ptr ibuf = in_frame->buffer(); + if (ibuf == nullptr) { + return BMF_LITE_StsBadArg; + } + + std::shared_ptr temp_ibuf = nullptr; + int ret = trans_->trans(ibuf, temp_ibuf); + if (ret != BMF_LITE_StsOk) { + return ret; + } + + VideoFrame temp_iframe(temp_ibuf); + + VideoTextureList *temp_multi_data = + (VideoTextureList *)(temp_iframe.buffer()->data()); + id y_tex = + (__bridge_transfer id)(temp_multi_data->texture_list[0] + ->data()); + id uv_tex = + (__bridge_transfer id)(temp_multi_data->texture_list[1] + ->data()); + + std::shared_ptr temp_obuf = nullptr; + ret = trans_->trans(obuf, temp_obuf); + if (ret != BMF_LITE_StsOk) { + return ret; + } + + VideoFrame temp_oframe(temp_obuf); + + VideoTextureList *out_multi_data = + (VideoTextureList *)(temp_oframe.buffer()->data()); + id y_otex = + (__bridge_transfer id)(out_multi_data->texture_list[0] + ->data()); + id uv_otex = + (__bridge_transfer id)(out_multi_data->texture_list[1] + ->data()); + + if (y_tex == nil || uv_tex == nil || y_otex == nil || uv_otex == nil) { + return BMF_LITE_StsTexTypeError; + } + + ret = denoise_->run(y_tex, uv_tex, y_otex, uv_otex, command_queue_); + if (ret != BMF_LITE_StsOk) { + return ret; + } + return BMF_LITE_StsOk; + } + + DenoiseImpl() {} + + ~DenoiseImpl() {} + + int processVideoFrame(VideoFrame frame, Param ¶m) { + DenoiseProcessParam process_param; + int ret = parseProcessParam(param, process_param); + if (ret != BMF_LITE_StsOk) { + return ret; + } + + std::shared_ptr video_buffer = frame.buffer(); + if (pool_ == nullptr) { + return BMF_LITE_OpsError; + } + + HardwareDataInfo hardware_data_info; + hardware_data_info.mem_type = MemoryType::kCVPixelBuffer; + hardware_data_info.internal_format = + video_buffer->hardwareDataInfo().internal_format; + + // Todo: if have attachment + int ow = video_buffer->width(); + int oh = video_buffer->height(); + output_video_buffer_ = nullptr; + output_video_buffer_ = pool_->acquireObject(ow, oh, hardware_data_info); + + if (output_video_buffer_ == nullptr) { + return BMF_LITE_StsNoMem; + } + + return processVideoFrame(&frame, output_video_buffer_, process_param); + } + + int getVideoFrameOutput(VideoFrame &frame, const Param ¶m) { + frame = VideoFrame(output_video_buffer_); + return 0; + } + +private: + id command_queue_ = nil; + DenoiseInitParam init_param_; + std::shared_ptr denoise_ = nullptr; + std::shared_ptr trans_ = nullptr; + std::shared_ptr pool_ = nullptr; + std::shared_ptr output_video_buffer_ = nullptr; +}; + +int DenoiseAlgorithm::setParam(Param param) { + if (impl_ == nullptr) { + impl_.reset(new (std::nothrow) DenoiseImpl()); + } + return impl_->setParam(param); +} + +int DenoiseAlgorithm::processVideoFrame(VideoFrame frame, Param param) { + return impl_->processVideoFrame(frame, param); +} + +int DenoiseAlgorithm::getVideoFrameOutput(VideoFrame &frame, Param ¶m) { + return impl_->getVideoFrameOutput(frame, param); +} + +int DenoiseAlgorithm::processMultiVideoFrame( + std::vector videoframes, Param param) { + return -1; +} + +int DenoiseAlgorithm::getMultiVideoFrameOutput( + std::vector &videoframes, Param ¶m) { + return -1; +} + +int DenoiseAlgorithm::unInit() { impl_ = nullptr; } + +DenoiseAlgorithm::DenoiseAlgorithm() {} + +DenoiseAlgorithm::~DenoiseAlgorithm() {} + +int DenoiseAlgorithm::getProcessProperty(Param ¶m) { + return BMF_LITE_StsFuncNotImpl; +} + +int DenoiseAlgorithm::setInputProperty(Param attr) { + return BMF_LITE_StsFuncNotImpl; +} + +int DenoiseAlgorithm::getOutputProperty(Param &attr) { + return BMF_LITE_StsFuncNotImpl; +} + +} + +#endif \ No newline at end of file diff --git a/bmf_lite/src/algorithm/modules/operators/metal/denoise/denoise.h b/bmf_lite/src/algorithm/modules/operators/metal/denoise/denoise.h new file mode 100644 index 00000000..fde284ba --- /dev/null +++ b/bmf_lite/src/algorithm/modules/operators/metal/denoise/denoise.h @@ -0,0 +1,66 @@ +/* + * Copyright 2023 Babit Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef _BMF_ALGORITHM_MODULES_OPS_METAL_DENOISE_H_ +#define _BMF_ALGORITHM_MODULES_OPS_METAL_DENOISE_H_ +#include +#include +#include "metal/metal_helper.h" +namespace bmf_lite { +namespace metal { +class Denoise { + public: + int init(); + /** + * @brief + * + * @param in_tex input rgba texture + * @param out_tex output rgba texture + * @param command_queue + * @return true + * @return false + */ + int run(id in_tex, id out_tex, + id command_queue); + int run(id in_tex_y, id in_tex_uv, + id out_tex_y, id out_tex_uv, + id command_queue); + + private: + id denoise_ = nil; + id denoise_no_mix_ = nil; + id denoise_nv12_ = nil; + id denoise_nv12_no_mix_ = nil; + MTLSize group_size_; + + id tex_ping_; + id tex_pong_; + id tex_ping_nv12_; + id tex_pong_nv12_; + + int in_width_ = 0; + int in_height_ = 0; + + int in_width_nv12_ = 0; + int in_height_nv12_ = 0; + + bool first_run_ = true; + bool inited_ = false; +}; // class Denoise + +} // namespace metal +} // namespace bmf_lite + +#endif diff --git a/bmf_lite/src/algorithm/modules/operators/metal/denoise/denoise.metal b/bmf_lite/src/algorithm/modules/operators/metal/denoise/denoise.metal new file mode 100644 index 00000000..4eab8b27 --- /dev/null +++ b/bmf_lite/src/algorithm/modules/operators/metal/denoise/denoise.metal @@ -0,0 +1,451 @@ +#include +using namespace metal; + +#define TEMPORAL_SLOPE 15.0h + +inline half get_luma(half4 rgba) { + return dot(half3(0.299h, 0.587h, 0.114h), rgba.rgb); +} + +inline half gaussian(half x, half s, half m) { + half scaled = (x - m) / s; + return exp(-0.5h * scaled * scaled); +} + +kernel void denoise( + texture2d in_rgba [[texture(0)]], + texture2d pre_rgba_tex [[texture(1)]], + texture2d out_rgba [[texture(2)]], + texture2d cur_rgba_tex [[texture(3)]], + uint2 gid [[thread_position_in_grid]], + uint2 lid [[thread_position_in_threadgroup]]) +{ + int2 pos = int2(gid); + int width = in_rgba.get_width(); + int height = in_rgba.get_height(); + + if (pos.x >= width || pos.y >= height) { + return; + } + + half4 histogram_v[5][5]; + half n = 0.0h; + half4 sum = half4(0.0); + + half is = 0.05h; + half ss = 1.0h; + + int x_m_1 = max(pos.x - 1, 0); + int x_a_1 = min(pos.x + 1, width - 1); + int x_m_2 = max(pos.x - 2, 0); + int x_a_2 = min(pos.x + 2, width - 1); + + int y_m_1 = max(pos.y - 1, 0); + int y_a_1 = min(pos.y + 1, height - 1); + int y_m_2 = max(pos.y - 2, 0); + int y_a_2 = min(pos.y + 2, height - 1); + + histogram_v[0][0] = in_rgba.read(uint2(x_m_2, y_m_2)); + histogram_v[1][0] = in_rgba.read(uint2(x_m_1, y_m_2)); + histogram_v[2][0] = in_rgba.read(uint2(pos.x, y_m_2)); + histogram_v[3][0] = in_rgba.read(uint2(x_a_1, y_m_2)); + histogram_v[4][0] = in_rgba.read(uint2(x_a_2, y_m_2)); + + histogram_v[0][1] = in_rgba.read(uint2(x_m_2, y_m_1)); + histogram_v[1][1] = in_rgba.read(uint2(x_m_1, y_m_1)); + histogram_v[2][1] = in_rgba.read(uint2(pos.x, y_m_1)); + histogram_v[3][1] = in_rgba.read(uint2(x_a_1, y_m_1)); + histogram_v[4][1] = in_rgba.read(uint2(x_a_2, y_m_1)); + + histogram_v[0][2] = in_rgba.read(uint2(x_m_2, pos.y)); + histogram_v[1][2] = in_rgba.read(uint2(x_m_1, pos.y)); + histogram_v[2][2] = in_rgba.read(uint2(pos.x, pos.y)); + histogram_v[3][2] = in_rgba.read(uint2(x_a_1, pos.y)); + histogram_v[4][2] = in_rgba.read(uint2(x_a_2, pos.y)); + + histogram_v[0][3] = in_rgba.read(uint2(x_m_2, y_a_1)); + histogram_v[1][3] = in_rgba.read(uint2(x_m_1, y_a_1)); + histogram_v[2][3] = in_rgba.read(uint2(pos.x, y_a_1)); + histogram_v[3][3] = in_rgba.read(uint2(x_a_1, y_a_1)); + histogram_v[4][3] = in_rgba.read(uint2(x_a_2, y_a_1)); + + histogram_v[0][4] = in_rgba.read(uint2(x_m_2, y_a_2)); + histogram_v[1][4] = in_rgba.read(uint2(x_m_1, y_a_2)); + histogram_v[2][4] = in_rgba.read(uint2(pos.x, y_a_2)); + histogram_v[3][4] = in_rgba.read(uint2(x_a_1, y_a_2)); + histogram_v[4][4] = in_rgba.read(uint2(x_a_2, y_a_2)); + + half vc = get_luma(histogram_v[2][2]); + + for (int i = 0; i < 5; i++) { + for (int j = 0; j < 5; j++) { + half w = gaussian(get_luma(histogram_v[i][j]), is, vc) * gaussian(length(half2(i - 2, j - 2)), ss, 0.0h); + n += w; + sum += histogram_v[i][j] * w; + } + } + + half4 result = sum / n; + + half result_y = get_luma(result); + half4 pre_rgba = pre_rgba_tex.read(gid); + half pre_y = get_luma(pre_rgba); + half temporal_weight = max(min(abs(result_y - pre_y) * TEMPORAL_SLOPE, 1.0h), 0.0h); + result = mix((pre_rgba + result) * 0.5h, result, temporal_weight); + + out_rgba.write(result, gid); + cur_rgba_tex.write(result, gid); + return; +} + + +kernel void denoise_no_mix( + texture2d in_rgba [[texture(0)]], + texture2d out_rgba [[texture(2)]], + texture2d cur_rgba_tex [[texture(3)]], + uint2 gid [[thread_position_in_grid]], + uint2 lid [[thread_position_in_threadgroup]]) +{ + int2 pos = int2(gid); + int width = in_rgba.get_width(); + int height = in_rgba.get_height(); + + if (pos.x >= width || pos.y >= height) { + return; + } + + half4 histogram_v[5][5]; + half n = 0.0h; + half4 sum = half4(0.0); + + half is = 0.05h; + half ss = 1.0h; + + int x_m_1 = max(pos.x - 1, 0); + int x_a_1 = min(pos.x + 1, width - 1); + int x_m_2 = max(pos.x - 2, 0); + int x_a_2 = min(pos.x + 2, width - 1); + + int y_m_1 = max(pos.y - 1, 0); + int y_a_1 = min(pos.y + 1, height - 1); + int y_m_2 = max(pos.y - 2, 0); + int y_a_2 = min(pos.y + 2, height - 1); + + histogram_v[0][0] = in_rgba.read(uint2(x_m_2, y_m_2)); + histogram_v[1][0] = in_rgba.read(uint2(x_m_1, y_m_2)); + histogram_v[2][0] = in_rgba.read(uint2(pos.x, y_m_2)); + histogram_v[3][0] = in_rgba.read(uint2(x_a_1, y_m_2)); + histogram_v[4][0] = in_rgba.read(uint2(x_a_2, y_m_2)); + + histogram_v[0][1] = in_rgba.read(uint2(x_m_2, y_m_1)); + histogram_v[1][1] = in_rgba.read(uint2(x_m_1, y_m_1)); + histogram_v[2][1] = in_rgba.read(uint2(pos.x, y_m_1)); + histogram_v[3][1] = in_rgba.read(uint2(x_a_1, y_m_1)); + histogram_v[4][1] = in_rgba.read(uint2(x_a_2, y_m_1)); + + histogram_v[0][2] = in_rgba.read(uint2(x_m_2, pos.y)); + histogram_v[1][2] = in_rgba.read(uint2(x_m_1, pos.y)); + histogram_v[2][2] = in_rgba.read(uint2(pos.x, pos.y)); + histogram_v[3][2] = in_rgba.read(uint2(x_a_1, pos.y)); + histogram_v[4][2] = in_rgba.read(uint2(x_a_2, pos.y)); + + histogram_v[0][3] = in_rgba.read(uint2(x_m_2, y_a_1)); + histogram_v[1][3] = in_rgba.read(uint2(x_m_1, y_a_1)); + histogram_v[2][3] = in_rgba.read(uint2(pos.x, y_a_1)); + histogram_v[3][3] = in_rgba.read(uint2(x_a_1, y_a_1)); + histogram_v[4][3] = in_rgba.read(uint2(x_a_2, y_a_1)); + + histogram_v[0][4] = in_rgba.read(uint2(x_m_2, y_a_2)); + histogram_v[1][4] = in_rgba.read(uint2(x_m_1, y_a_2)); + histogram_v[2][4] = in_rgba.read(uint2(pos.x, y_a_2)); + histogram_v[3][4] = in_rgba.read(uint2(x_a_1, y_a_2)); + histogram_v[4][4] = in_rgba.read(uint2(x_a_2, y_a_2)); + + half vc = get_luma(histogram_v[2][2]); + + for (int i = 0; i < 5; i++) { + for (int j = 0; j < 5; j++) { + half w = gaussian(get_luma(histogram_v[i][j]), is, vc) * gaussian(length(half2(i - 2, j - 2)), ss, 0.0h); + n += w; + sum += histogram_v[i][j] * w; + } + } + + half4 result = sum / n; + + out_rgba.write(result, gid); + cur_rgba_tex.write(result, gid); + return; +} + +kernel void denoise_nv12( + texture2d in_y [[texture(0)]], + texture2d pre_y_tex [[texture(1)]], + texture2d out_y [[texture(2)]], + texture2d cur_y_tex [[texture(3)]], + texture2d in_uv [[texture(4)]], + texture2d out_uv [[texture(5)]], + uint2 gid [[thread_position_in_grid]], + uint2 lid [[thread_position_in_threadgroup]]) +{ + int2 pos = int2(gid); + pos = pos << 1; + int width = in_y.get_width(); + int height = in_y.get_height(); + + if (pos.x >= width || pos.y >= height) { + return; + } + + half histogram_v[6][6]; + half n00 = 0.0h; + half n01 = 0.0h; + half n10 = 0.0h; + half n11 = 0.0h; + half sum00 = half(0.0); + half sum01 = half(0.0); + half sum10 = half(0.0); + half sum11 = half(0.0); + + half is = 0.05h; + half ss = 1.0h; + + int x_m_1 = max(pos.x - 1, 0); + int x_a_1 = pos.x + 1; + int x_m_2 = max(pos.x - 2, 0); + int x_a_2 = min(pos.x + 2, width - 1); + int x_a_3 = min(pos.x + 3, width - 1); + + int y_m_1 = max(pos.y - 1, 0); + int y_a_1 = pos.y + 1; + int y_m_2 = max(pos.y - 2, 0); + int y_a_2 = min(pos.y + 2, height - 1); + int y_a_3 = min(pos.y + 3, height - 1); + + histogram_v[0][0] = in_y.read(uint2(x_m_2, y_m_2)).r; + histogram_v[1][0] = in_y.read(uint2(x_m_1, y_m_2)).r; + histogram_v[2][0] = in_y.read(uint2(pos.x, y_m_2)).r; + histogram_v[3][0] = in_y.read(uint2(x_a_1, y_m_2)).r; + histogram_v[4][0] = in_y.read(uint2(x_a_2, y_m_2)).r; + histogram_v[5][0] = in_y.read(uint2(x_a_3, y_m_2)).r; + + histogram_v[0][1] = in_y.read(uint2(x_m_2, y_m_1)).r; + histogram_v[1][1] = in_y.read(uint2(x_m_1, y_m_1)).r; + histogram_v[2][1] = in_y.read(uint2(pos.x, y_m_1)).r; + histogram_v[3][1] = in_y.read(uint2(x_a_1, y_m_1)).r; + histogram_v[4][1] = in_y.read(uint2(x_a_2, y_m_1)).r; + histogram_v[5][1] = in_y.read(uint2(x_a_3, y_m_1)).r; + + histogram_v[0][2] = in_y.read(uint2(x_m_2, pos.y)).r; + histogram_v[1][2] = in_y.read(uint2(x_m_1, pos.y)).r; + histogram_v[2][2] = in_y.read(uint2(pos.x, pos.y)).r; + histogram_v[3][2] = in_y.read(uint2(x_a_1, pos.y)).r; + histogram_v[4][2] = in_y.read(uint2(x_a_2, pos.y)).r; + histogram_v[5][2] = in_y.read(uint2(x_a_3, pos.y)).r; + + histogram_v[0][3] = in_y.read(uint2(x_m_2, y_a_1)).r; + histogram_v[1][3] = in_y.read(uint2(x_m_1, y_a_1)).r; + histogram_v[2][3] = in_y.read(uint2(pos.x, y_a_1)).r; + histogram_v[3][3] = in_y.read(uint2(x_a_1, y_a_1)).r; + histogram_v[4][3] = in_y.read(uint2(x_a_2, y_a_1)).r; + histogram_v[5][3] = in_y.read(uint2(x_a_3, y_a_1)).r; + + histogram_v[0][4] = in_y.read(uint2(x_m_2, y_a_2)).r; + histogram_v[1][4] = in_y.read(uint2(x_m_1, y_a_2)).r; + histogram_v[2][4] = in_y.read(uint2(pos.x, y_a_2)).r; + histogram_v[3][4] = in_y.read(uint2(x_a_1, y_a_2)).r; + histogram_v[4][4] = in_y.read(uint2(x_a_2, y_a_2)).r; + histogram_v[5][4] = in_y.read(uint2(x_a_3, y_a_2)).r; + + histogram_v[0][5] = in_y.read(uint2(x_m_2, y_a_3)).r; + histogram_v[1][5] = in_y.read(uint2(x_m_1, y_a_3)).r; + histogram_v[2][5] = in_y.read(uint2(pos.x, y_a_3)).r; + histogram_v[3][5] = in_y.read(uint2(x_a_1, y_a_3)).r; + histogram_v[4][5] = in_y.read(uint2(x_a_2, y_a_3)).r; + histogram_v[5][5] = in_y.read(uint2(x_a_3, y_a_3)).r; + + half vc00 = histogram_v[2][2]; + half vc01 = histogram_v[3][2]; + half vc10 = histogram_v[2][3]; + half vc11 = histogram_v[3][3]; + + for (int i = 0; i < 5; i++) { + for (int j = 0; j < 5; j++) { + half w = gaussian(length(half2(i - 2, j - 2)), ss, 0.0h); + half w00 = gaussian(histogram_v[i][j], is, vc00) * w; + n00 += w00; + sum00 += histogram_v[i][j] * w00; + half w01 = gaussian(histogram_v[i + 1][j], is, vc01) * w; + n01 += w01; + sum01 += histogram_v[i + 1][j] * w01; + half w10 = gaussian(histogram_v[i][j + 1], is, vc10) * w; + n10 += w10; + sum10 += histogram_v[i][j + 1] * w10; + half w11 = gaussian(histogram_v[i + 1][j + 1], is, vc11) * w; + n11 += w11; + sum11 += histogram_v[i + 1][j + 1] * w11; + } + } + + sum00 = sum00 / n00; + sum01 = sum01 / n01; + sum10 = sum10 / n10; + sum11 = sum11 / n11; + + half pre_y00 = pre_y_tex.read(uint2(pos.x, pos.y)).r; + half pre_y01 = pre_y_tex.read(uint2(x_a_1, pos.y)).r; + half pre_y10 = pre_y_tex.read(uint2(pos.x, y_a_1)).r; + half pre_y11 = pre_y_tex.read(uint2(x_a_1, y_a_1)).r; + + half temporal_weight00 = max(min(abs(sum00 - pre_y00) * TEMPORAL_SLOPE, 1.0h), 0.0h); + half temporal_weight01 = max(min(abs(sum01 - pre_y01) * TEMPORAL_SLOPE, 1.0h), 0.0h); + half temporal_weight10 = max(min(abs(sum10 - pre_y10) * TEMPORAL_SLOPE, 1.0h), 0.0h); + half temporal_weight11 = max(min(abs(sum11 - pre_y11) * TEMPORAL_SLOPE, 1.0h), 0.0h); + + sum00 = mix((pre_y00 + sum00) * 0.5h, sum00, temporal_weight00); + sum01 = mix((pre_y01 + sum01) * 0.5h, sum01, temporal_weight01); + sum10 = mix((pre_y10 + sum10) * 0.5h, sum10, temporal_weight10); + sum11 = mix((pre_y11 + sum11) * 0.5h, sum11, temporal_weight11); + + out_y.write(sum00, uint2(pos.x, pos.y)); + out_y.write(sum01, uint2(x_a_1, pos.y)); + out_y.write(sum10, uint2(pos.x, y_a_1)); + out_y.write(sum11, uint2(x_a_1, y_a_1)); + + cur_y_tex.write(sum00, uint2(pos.x, pos.y)); + cur_y_tex.write(sum01, uint2(x_a_1, pos.y)); + cur_y_tex.write(sum10, uint2(pos.x, y_a_1)); + cur_y_tex.write(sum11, uint2(x_a_1, y_a_1)); + + out_uv.write(in_uv.read(gid), gid); + + return; +} + +kernel void denoise_nv12_no_mix( + texture2d in_y [[texture(0)]], + texture2d out_y [[texture(2)]], + texture2d cur_y_tex [[texture(3)]], + texture2d in_uv [[texture(4)]], + texture2d out_uv [[texture(5)]], + uint2 gid [[thread_position_in_grid]], + uint2 lid [[thread_position_in_threadgroup]]) +{ + int2 pos = int2(gid); + pos = pos << 1; + int width = in_y.get_width(); + int height = in_y.get_height(); + + if (pos.x >= width || pos.y >= height) { + return; + } + + half histogram_v[6][6]; + half n00 = 0.0h; + half n01 = 0.0h; + half n10 = 0.0h; + half n11 = 0.0h; + half sum00 = half(0.0); + half sum01 = half(0.0); + half sum10 = half(0.0); + half sum11 = half(0.0); + + half is = 0.05h; + half ss = 1.0h; + + int x_m_1 = max(pos.x - 1, 0); + int x_a_1 = pos.x + 1; + int x_m_2 = max(pos.x - 2, 0); + int x_a_2 = min(pos.x + 2, width - 1); + int x_a_3 = min(pos.x + 3, width - 1); + + int y_m_1 = max(pos.y - 1, 0); + int y_a_1 = pos.y + 1; + int y_m_2 = max(pos.y - 2, 0); + int y_a_2 = min(pos.y + 2, height - 1); + int y_a_3 = min(pos.y + 3, height - 1); + + histogram_v[0][0] = in_y.read(uint2(x_m_2, y_m_2)).r; + histogram_v[1][0] = in_y.read(uint2(x_m_1, y_m_2)).r; + histogram_v[2][0] = in_y.read(uint2(pos.x, y_m_2)).r; + histogram_v[3][0] = in_y.read(uint2(x_a_1, y_m_2)).r; + histogram_v[4][0] = in_y.read(uint2(x_a_2, y_m_2)).r; + histogram_v[5][0] = in_y.read(uint2(x_a_3, y_m_2)).r; + + histogram_v[0][1] = in_y.read(uint2(x_m_2, y_m_1)).r; + histogram_v[1][1] = in_y.read(uint2(x_m_1, y_m_1)).r; + histogram_v[2][1] = in_y.read(uint2(pos.x, y_m_1)).r; + histogram_v[3][1] = in_y.read(uint2(x_a_1, y_m_1)).r; + histogram_v[4][1] = in_y.read(uint2(x_a_2, y_m_1)).r; + histogram_v[5][1] = in_y.read(uint2(x_a_3, y_m_1)).r; + + histogram_v[0][2] = in_y.read(uint2(x_m_2, pos.y)).r; + histogram_v[1][2] = in_y.read(uint2(x_m_1, pos.y)).r; + histogram_v[2][2] = in_y.read(uint2(pos.x, pos.y)).r; + histogram_v[3][2] = in_y.read(uint2(x_a_1, pos.y)).r; + histogram_v[4][2] = in_y.read(uint2(x_a_2, pos.y)).r; + histogram_v[5][2] = in_y.read(uint2(x_a_3, pos.y)).r; + + histogram_v[0][3] = in_y.read(uint2(x_m_2, y_a_1)).r; + histogram_v[1][3] = in_y.read(uint2(x_m_1, y_a_1)).r; + histogram_v[2][3] = in_y.read(uint2(pos.x, y_a_1)).r; + histogram_v[3][3] = in_y.read(uint2(x_a_1, y_a_1)).r; + histogram_v[4][3] = in_y.read(uint2(x_a_2, y_a_1)).r; + histogram_v[5][3] = in_y.read(uint2(x_a_3, y_a_1)).r; + + histogram_v[0][4] = in_y.read(uint2(x_m_2, y_a_2)).r; + histogram_v[1][4] = in_y.read(uint2(x_m_1, y_a_2)).r; + histogram_v[2][4] = in_y.read(uint2(pos.x, y_a_2)).r; + histogram_v[3][4] = in_y.read(uint2(x_a_1, y_a_2)).r; + histogram_v[4][4] = in_y.read(uint2(x_a_2, y_a_2)).r; + histogram_v[5][4] = in_y.read(uint2(x_a_3, y_a_2)).r; + + histogram_v[0][5] = in_y.read(uint2(x_m_2, y_a_3)).r; + histogram_v[1][5] = in_y.read(uint2(x_m_1, y_a_3)).r; + histogram_v[2][5] = in_y.read(uint2(pos.x, y_a_3)).r; + histogram_v[3][5] = in_y.read(uint2(x_a_1, y_a_3)).r; + histogram_v[4][5] = in_y.read(uint2(x_a_2, y_a_3)).r; + histogram_v[5][5] = in_y.read(uint2(x_a_3, y_a_3)).r; + + half vc00 = histogram_v[2][2]; + half vc01 = histogram_v[3][2]; + half vc10 = histogram_v[2][3]; + half vc11 = histogram_v[3][3]; + + for (int i = 0; i < 5; i++) { + for (int j = 0; j < 5; j++) { + half w = gaussian(length(half2(i - 2, j - 2)), ss, 0.0h); + half w00 = gaussian(histogram_v[i][j], is, vc00) * w; + n00 += w00; + sum00 += histogram_v[i][j] * w00; + half w01 = gaussian(histogram_v[i + 1][j], is, vc01) * w; + n01 += w01; + sum01 += histogram_v[i + 1][j] * w01; + half w10 = gaussian(histogram_v[i][j + 1], is, vc10) * w; + n10 += w10; + sum10 += histogram_v[i][j + 1] * w10; + half w11 = gaussian(histogram_v[i + 1][j + 1], is, vc11) * w; + n11 += w11; + sum11 += histogram_v[i + 1][j + 1] * w11; + } + } + + sum00 = sum00 / n00; + sum01 = sum01 / n01; + sum10 = sum10 / n10; + sum11 = sum11 / n11; + + out_y.write(sum00, uint2(pos.x, pos.y)); + out_y.write(sum01, uint2(x_a_1, pos.y)); + out_y.write(sum10, uint2(pos.x, y_a_1)); + out_y.write(sum11, uint2(x_a_1, y_a_1)); + + cur_y_tex.write(sum00, uint2(pos.x, pos.y)); + cur_y_tex.write(sum01, uint2(x_a_1, pos.y)); + cur_y_tex.write(sum10, uint2(pos.x, y_a_1)); + cur_y_tex.write(sum11, uint2(x_a_1, y_a_1)); + + out_uv.write(in_uv.read(gid), gid); + + return; +} \ No newline at end of file diff --git a/bmf_lite/src/algorithm/modules/operators/metal/denoise/denoise.mm b/bmf_lite/src/algorithm/modules/operators/metal/denoise/denoise.mm new file mode 100644 index 00000000..20886527 --- /dev/null +++ b/bmf_lite/src/algorithm/modules/operators/metal/denoise/denoise.mm @@ -0,0 +1,142 @@ +/* + * Copyright 2023 Babit Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#include "metal/denoise/denoise.h" +#include "metal/metal_helper.h" +#include + +namespace bmf_lite { +namespace metal { + +int Denoise::init() { + inited_ = false; + + OPS_CHECK(MetalHelper::instance().support_non_uniform_tg(), "not support non_uniform_tg"); + + OPS_CHECK(BMF_LITE_StsOk == MetalHelper::instance().new_compute_pileline_state(&denoise_, @"denoise"), "can not find denoise function"); + OPS_CHECK(BMF_LITE_StsOk == MetalHelper::instance().new_compute_pileline_state(&denoise_no_mix_, @"denoise_no_mix"), "can not find denoise_no_mix function"); + OPS_CHECK(BMF_LITE_StsOk == MetalHelper::instance().new_compute_pileline_state(&denoise_nv12_, @"denoise_nv12"), "can not find denoise_no_mix function"); + OPS_CHECK(BMF_LITE_StsOk == MetalHelper::instance().new_compute_pileline_state(&denoise_nv12_no_mix_, @"denoise_nv12_no_mix"), "can not find denoise_no_mix function"); + group_size_ = MTLSizeMake(16, 16, 1); + + inited_ = true; + return BMF_LITE_StsOk; +} + +int Denoise::run(id in_tex, id out_tex, id command_queue) { + OPS_CHECK(inited_, "please call init first"); + OPS_CHECK(in_tex != nil, "input tex is nil"); + OPS_CHECK(out_tex != nil, "output tex is nil"); + + id command_buffer = [command_queue commandBuffer]; + OPS_CHECK(command_buffer != nil, "command_buffer is nil"); + id command_encoder = [command_buffer computeCommandEncoder]; + OPS_CHECK(command_encoder != nil, "command_encoder is nil"); + + if (in_width_ != in_tex.width || in_height_ != in_tex.height) { + in_width_ = in_tex.width; + in_height_ = in_tex.height; + + OPS_CHECK(BMF_LITE_StsOk == MetalHelper::instance().gen_tex(&tex_ping_, MTLPixelFormatRGBA8Unorm, in_width_, in_height_, MTLTextureUsageShaderRead|MTLTextureUsageShaderWrite, MTLStorageModePrivate), + "create tex_ping_ error"); + OPS_CHECK(BMF_LITE_StsOk == MetalHelper::instance().gen_tex(&tex_pong_, MTLPixelFormatRGBA8Unorm, in_width_, in_height_, MTLTextureUsageShaderRead|MTLTextureUsageShaderWrite, MTLStorageModePrivate), + "create tex_pong_ error"); + first_run_ = true; + } + + if (first_run_ == true) { + [command_encoder setComputePipelineState:denoise_no_mix_]; + [command_encoder setTexture:in_tex atIndex:0]; + [command_encoder setTexture:out_tex atIndex:2]; + [command_encoder setTexture:tex_pong_ atIndex:3]; + [command_encoder dispatchThreads:MTLSizeMake(in_width_, in_height_, 1) threadsPerThreadgroup:group_size_]; + [command_encoder endEncoding]; + [command_buffer commit]; + first_run_ = false; + } else { + [command_encoder setComputePipelineState:denoise_]; + [command_encoder setTexture:in_tex atIndex:0]; + [command_encoder setTexture:tex_ping_ atIndex:1]; + [command_encoder setTexture:out_tex atIndex:2]; + [command_encoder setTexture:tex_pong_ atIndex:3]; + [command_encoder dispatchThreads:MTLSizeMake(in_width_, in_height_, 1) threadsPerThreadgroup:group_size_]; + [command_encoder endEncoding]; + [command_buffer commit]; + } + // swap ping/pong + id tmp = tex_ping_; + tex_ping_ = tex_pong_; + tex_pong_ = tmp; + + return BMF_LITE_StsOk; +} + +int Denoise::run(id in_tex_y, id in_tex_uv, id out_tex_y, id out_tex_uv, id command_queue) { + OPS_CHECK(inited_, "please call init first"); + OPS_CHECK(in_tex_y != nil && in_tex_uv != nil, "input tex is nil"); + OPS_CHECK(out_tex_y != nil && out_tex_uv != nil, "output tex is nil"); + + id command_buffer = [command_queue commandBuffer]; + OPS_CHECK(command_buffer != nil, "command_buffer is nil"); + id command_encoder = [command_buffer computeCommandEncoder]; + OPS_CHECK(command_encoder != nil, "command_encoder is nil"); + + if (in_width_nv12_ != in_tex_y.width || in_height_nv12_ != in_tex_y.height ) { + in_width_nv12_ = in_tex_y.width; + in_height_nv12_ = in_tex_y.height; + in_width_ = in_width_nv12_; + in_height_ = in_height_nv12_; + + OPS_CHECK(BMF_LITE_StsOk == MetalHelper::instance().gen_tex(&tex_ping_nv12_, MTLPixelFormatR8Unorm, in_width_nv12_, in_height_nv12_, MTLTextureUsageShaderRead|MTLTextureUsageShaderWrite, MTLStorageModePrivate), + "create tex0 error"); + OPS_CHECK(BMF_LITE_StsOk == MetalHelper::instance().gen_tex(&tex_pong_nv12_, MTLPixelFormatR8Unorm, in_width_nv12_, in_height_nv12_, MTLTextureUsageShaderRead|MTLTextureUsageShaderWrite, MTLStorageModePrivate), + "create tex1 error"); + first_run_ = true; + } + + if (first_run_ == true) { + [command_encoder setComputePipelineState:denoise_nv12_no_mix_]; + [command_encoder setTexture:in_tex_y atIndex:0]; + [command_encoder setTexture:out_tex_y atIndex:2]; + [command_encoder setTexture:tex_pong_nv12_ atIndex:3]; + [command_encoder setTexture:in_tex_uv atIndex:4]; + [command_encoder setTexture:out_tex_uv atIndex:5]; + [command_encoder dispatchThreads:MTLSizeMake((in_width_ + 1)/2, (in_height_ + 1)/2, 1) threadsPerThreadgroup:group_size_]; + [command_encoder endEncoding]; + [command_buffer commit]; + first_run_ = false; + } else { + [command_encoder setComputePipelineState:denoise_nv12_]; + [command_encoder setTexture:in_tex_y atIndex:0]; + [command_encoder setTexture:tex_ping_nv12_ atIndex:1]; + [command_encoder setTexture:out_tex_y atIndex:2]; + [command_encoder setTexture:tex_pong_nv12_ atIndex:3]; + [command_encoder setTexture:in_tex_uv atIndex:4]; + [command_encoder setTexture:out_tex_uv atIndex:5]; + [command_encoder dispatchThreads:MTLSizeMake((in_width_ + 1)/2, (in_height_ + 1)/2, 1) threadsPerThreadgroup:group_size_]; + [command_encoder endEncoding]; + [command_buffer commit]; + } + // swap ping/pong + id tmp = tex_ping_nv12_; + tex_ping_nv12_ = tex_pong_nv12_; + tex_pong_nv12_ = tmp; + + return BMF_LITE_StsOk; +} + + +} // namespace metal +} // namespace bmf_lite diff --git a/bmf_lite/src/algorithm/modules/operators/metal/metal_helper.h b/bmf_lite/src/algorithm/modules/operators/metal/metal_helper.h new file mode 100644 index 00000000..1cf8171d --- /dev/null +++ b/bmf_lite/src/algorithm/modules/operators/metal/metal_helper.h @@ -0,0 +1,114 @@ +#ifndef _BMF_ALGORITHM_MODULES_OPS_METAL_UTILS_H_ +#define _BMF_ALGORITHM_MODULES_OPS_METAL_UTILS_H_ + +#import +#import +#include "utils/macros.h" +#include +#include "common/error_code.h" + +namespace bmf_lite { +namespace metal { + +class MetalHelper { + private: + MetalHelper() = default; + + public: + static MetalHelper &instance() { + static MetalHelper *g_utils_ins = nullptr; + static std::once_flag s_once_flag; + + std::call_once(s_once_flag, [&]() { g_utils_ins = new MetalHelper(); }); + return *g_utils_ins; + } + + MetalHelper(const MetalHelper &) = delete; + MetalHelper &operator=(const MetalHelper &) = delete; + + public: + int new_compute_pileline_state(id __strong *cps, + NSString *func_name) { + id library = mtl_library(); + OPS_CHECK(library != nil, "library is nil"); + id func = [library newFunctionWithName:func_name]; + OPS_CHECK(func != nil, "newFunctionWithName %@ error", func_name); + + NSError *err = nil; + *cps = [mtl_device() newComputePipelineStateWithFunction:func + error:&err]; + OPS_CHECK(err == nil && *cps != nil, + "newComputePipelineStateWithFunction %@ error:%@", func_name, + err); + return BMF_LITE_StsOk; + } + + int gen_tex(id __strong *texture, MTLPixelFormat pixel_format, + size_t width, size_t height, MTLTextureUsage usage, + MTLStorageMode storage_mode) { + MTLTextureDescriptor *td = [MTLTextureDescriptor + texture2DDescriptorWithPixelFormat:pixel_format + width:width + height:height + mipmapped:NO]; + td.usage = usage; + td.storageMode = storage_mode; + + *texture = [mtl_device() newTextureWithDescriptor:td]; + OPS_CHECK(*texture != nil, "newTextureWithDescriptor error"); + return BMF_LITE_StsOk; + } + + id mtl_device() { + if (device_ == nil) { + device_ = MTLCreateSystemDefaultDevice(); + } + return device_; + } + + id mtl_library() { + if (library_ == nil) { + NSError *err = nil; + auto library_path = + [NSBundle.mainBundle pathForResource:@"bmf_lite" + ofType:@"metallib"]; + library_ = [mtl_device() newLibraryWithFile:library_path + error:&err]; + + if (err != nil || library_ == nil) { + OPS_LOG_ERROR( + "can not load metallib, library_path: %@, error: %@", + library_path, err); + return nil; + } + } + return library_; + } + + bool support_non_uniform_tg() { +#if TARGET_OS_EMBEDDED +#if TARGET_OS_IPHONE +#if TARGET_OS_MAC +#if !TARGET_IPHONE_SIMULATOR + if (@available(iOS 11.0, *)) { + return [mtl_device() + supportsFeatureSet:MTLFeatureSet_iOS_GPUFamily4_v1]; + } else { + return false; + } +#endif +#endif +#endif +#endif + return true; + } + + private: + id device_ = nil; + id library_ = nil; + +}; // class utils +} // namespace metal +} // namespace bmf_lite + +#endif \ No newline at end of file diff --git a/bmf_lite/src/algorithm/modules/operators/metal/sr/sr.h b/bmf_lite/src/algorithm/modules/operators/metal/sr/sr.h new file mode 100644 index 00000000..51f458dd --- /dev/null +++ b/bmf_lite/src/algorithm/modules/operators/metal/sr/sr.h @@ -0,0 +1,69 @@ +/* + * Copyright 2023 Babit Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef _BMF_ALGORITHM_MODULES_OPS_METAL_SR_H_ +#define _BMF_ALGORITHM_MODULES_OPS_METAL_SR_H_ +#include +#include +#include "metal/metal_helper.h" +namespace bmf_lite { +namespace metal { +class Sr { + public: + int init(); + /** + * @brief + * + * @param in_tex input rgba texture + * @param out_tex output rgba texture + * @param command_queue + * @return true + * @return false + */ + int run(id in_tex, id out_tex, + id command_queue); + int run(id in_tex_y, id in_tex_uv, + id out_tex_y, id out_tex_uv, + id command_queue); + + private: + id cps0_ = nil; + id cps1_ = nil; + id cps2_ = nil; + id cps3_ = nil; + id cps4_ = nil; + id rgba_to_nv12_ = nil; + id nv12_to_rgba_ = nil; + + MTLSize group_size_; + + id tex0_; + id tex1_; + + id tex_rgba_in_; + id tex_rgba_out_; + + int in_width_ = 0; + int in_height_ = 0; + int in_width_nv12_ = 0; + int in_height_nv12_ = 0; + + bool inited_ = false; +}; // class Sr + +} // namespace metal +} // namespace bmf_lite + +#endif diff --git a/bmf_lite/src/algorithm/modules/operators/metal/sr/sr.metal b/bmf_lite/src/algorithm/modules/operators/metal/sr/sr.metal new file mode 100644 index 00000000..59eea3ad --- /dev/null +++ b/bmf_lite/src/algorithm/modules/operators/metal/sr/sr.metal @@ -0,0 +1,312 @@ +/* + * Copyright 2019 bloc97 + * + * This file is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This file is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + */ +#include +using namespace metal; + +constant half3 yuv2rgb_offset = half3(-(16/255.0f), -0.5f, -0.5f); +constant half3x3 yuv2rgb_matrix = half3x3(half3(1.164f, 1.164f, 1.164f), + half3(0.000f, -0.392f, 2.017f), + half3(1.596f, -0.813f, 0.f)); + +constant half3 rgb2yuv_offset = half3(16/255.0f, 128/255.0f, 128/255.0f); +constant half3x3 rgb2yuv_matrix = half3x3(half3(0.257f, -0.148f, 0.439f), + half3(0.504f, -0.291f, -0.368f), + half3(0.098f, 0.439f, -0.071f)); + +kernel void rgba_to_nv12(texture2d input [[ texture(0) ]], + texture2d output_y [[ texture(1) ]], + texture2d output_uv [[ texture(2) ]], + uint2 gid [[thread_position_in_grid]]) +{ + int gidx = gid.x << 1; + int gidy = gid.y << 1; + + int x_a1 = gidx + 1; + int y_a1 = gidy + 1; + + half4 color00 = input.read(uint2(gidx, gidy)); + half4 color01 = input.read(uint2(x_a1, gidy)); + half4 color10 = input.read(uint2(gidx, y_a1)); + half4 color11 = input.read(uint2(x_a1, y_a1)); + + half3 yuv00 = rgb2yuv_matrix * color00.rgb + rgb2yuv_offset; + half3 yuv01 = rgb2yuv_matrix * color01.rgb + rgb2yuv_offset; + half3 yuv10 = rgb2yuv_matrix * color10.rgb + rgb2yuv_offset; + half3 yuv11 = rgb2yuv_matrix * color11.rgb + rgb2yuv_offset; + + half2 uv = (yuv00.yz + yuv10.yz + yuv01.yz + yuv11.yz) / 4.0; + + output_y.write(yuv00.x, uint2(gidx, gidy)); + output_y.write(yuv01.x, uint2(x_a1, gidy)); + output_y.write(yuv10.x, uint2(gidx, y_a1)); + output_y.write(yuv11.x, uint2(x_a1, y_a1)); + + output_uv.write(half4(uv, 1.0h, 1.0h), gid); +} + +kernel void nv12_to_rgba(texture2d output [[ texture(0) ]], + texture2d input_y [[ texture(1) ]], + texture2d input_uv [[ texture(2) ]], + uint2 gid [[thread_position_in_grid]]) +{ + int gidx = gid.x << 1; + int gidy = gid.y << 1; + + int x_a1 = gidx + 1; + int y_a1 = gidy + 1; + + half y00 = input_y.read(uint2(gidx, gidy)).x; + half y01 = input_y.read(uint2(x_a1, gidy)).x; + half y10 = input_y.read(uint2(gidx, y_a1)).x; + half y11 = input_y.read(uint2(x_a1, y_a1)).x; + + half2 uv = input_uv.read(gid).xy; + + half3 rgb00 = yuv2rgb_matrix * (half3(y00, uv) + yuv2rgb_offset); + half3 rgb01 = yuv2rgb_matrix * (half3(y01, uv) + yuv2rgb_offset); + half3 rgb10 = yuv2rgb_matrix * (half3(y10, uv) + yuv2rgb_offset); + half3 rgb11 = yuv2rgb_matrix * (half3(y11, uv) + yuv2rgb_offset); + + output.write(half4(rgb00, 1.0h), uint2(gidx, gidy)); + output.write(half4(rgb01, 1.0h), uint2(x_a1, gidy)); + output.write(half4(rgb10, 1.0h), uint2(gidx, y_a1)); + output.write(half4(rgb11, 1.0h), uint2(x_a1, y_a1)); +} + +kernel void pass0(texture2d input [[texture(0)]], + texture2d output [[texture(1)]], + uint2 gid [[thread_position_in_grid]]) { + + int width = input.get_width(); + int height = input.get_height(); + + int gidx = gid.x; + int gidy = gid.y; + + int x_m1 = max(gidx-1, 0); + int x_a1 = min(gidx+1, width-1); + int y_m1 = max(gidy-1, 0); + int y_a1 = min(gidy+1, height-1); + + half4 in00 = input.read(uint2(x_m1, y_m1)); + half4 in01 = input.read(uint2(gid.x, y_m1)); + half4 in02 = input.read(uint2(x_a1, y_m1)); + half4 in10 = input.read(uint2(x_m1, gid.y)); + half4 in11 = input.read(uint2(gid.x, gid.y)); + half4 in12 = input.read(uint2(x_a1, gid.y)); + half4 in20 = input.read(uint2(x_m1, y_a1)); + half4 in21 = input.read(uint2(gid.x, y_a1)); + half4 in22 = input.read(uint2(x_a1, y_a1)); + + half4 result = half4x4(-0.0057322932, 0.12928207, -0.056848746, 0.18680117, -0.0306273, 0.25602463, 0.053723164, 0.20419341, 0.0018709862, 0.022848232, -0.04105527, 0.10169034, 0.0, 0.0, 0.0, 0.0) * in00; + result += half4x4(0.009471417, -0.12957802, 0.096014425, 0.21836184, 0.00021601951, -0.22997683, 0.23666254, 0.41192335, 0.021762101, 0.0047863554, 0.008233427, 0.108514786, 0.0, 0.0, 0.0, 0.0) * in10; + result += half4x4(-0.01156376, -0.18988979, 0.04614705, -0.044767227, 0.01050636, -0.26426336, 0.23741047, 0.0027636609, -0.027718676, -0.14202335, -0.016650287, -0.06637125, 0.0, 0.0, 0.0, 0.0) * in20; + result += half4x4(0.057809234, -0.11033858, 0.056533534, -0.06292466, 0.13880666, -0.18710336, 0.2441031, -0.25326246, 0.0032683122, -0.026437074, 0.0023248852, 7.640766e-05, 0.0, 0.0, 0.0, 0.0) * in01; + result += half4x4(-0.49110603, 0.4429004, -0.44015464, -0.41174838, -0.87738293, 0.7808468, -1.0929365, -0.59699076, -0.18409836, 0.185138, -0.11773224, -0.17097276, 0.0, 0.0, 0.0, 0.0) * in11; + result += half4x4(0.10580959, -0.055947904, -0.03431237, -0.080236495, 0.14862584, -0.15393938, -0.18872876, -0.3170681, 0.03559387, -0.003990826, 0.021298569, 0.012844483, 0.0, 0.0, 0.0, 0.0) * in21; + result += half4x4(-0.040715586, -0.25781113, 0.08896714, -0.1225879, -0.15790503, -0.54010904, 0.29588607, 0.10401059, 0.003413123, -0.108357325, 0.0112870345, -0.11888622, 0.0, 0.0, 0.0, 0.0) * in02; + result += half4x4(0.0049315444, 0.02376202, -0.08224771, 0.121118225, -0.041512914, -0.027994309, -0.585988, -0.069672115, -0.017247835, 0.0056576864, 0.04319012, 0.055003505, 0.0, 0.0, 0.0, 0.0) * in12; + result += half4x4(0.37521392, 0.15916082, 0.059708964, 0.19046007, 0.8120325, 0.38343868, 0.3436578, 0.5287958, 0.16570656, 0.06957687, 0.014022592, 0.074799836, 0.0, 0.0, 0.0, 0.0) * in22; + result += half4(-0.01050964, -0.00939481, 0.17684458, 0.027366742); + + output.write(result, gid); +} + +kernel void pass1(texture2d input [[texture(0)]], + texture2d output [[texture(1)]], + uint2 gid [[thread_position_in_grid]]) { + int width = input.get_width(); + int height = input.get_height(); + + int gidx = gid.x; + int gidy = gid.y; + + int x_m1 = max(gidx-1, 0); + int x_a1 = min(gidx+1, width-1); + int y_m1 = max(gidy-1, 0); + int y_a1 = min(gidy+1, height-1); + + half4 in00 = input.read(uint2(x_m1, y_m1)); + half4 in01 = input.read(uint2(gid.x, y_m1)); + half4 in02 = input.read(uint2(x_a1, y_m1)); + half4 in10 = input.read(uint2(x_m1, gid.y)); + half4 in11 = input.read(uint2(gid.x, gid.y)); + half4 in12 = input.read(uint2(x_a1, gid.y)); + half4 in20 = input.read(uint2(x_m1, y_a1)); + half4 in21 = input.read(uint2(gid.x, y_a1)); + half4 in22 = input.read(uint2(x_a1, y_a1)); + + half4 result = half4x4(-0.011029496, 0.05866063, -0.09460646, -0.017664742, -0.022488879, 0.18384217, -0.00397663, -0.064733066, 0.08466802, 0.10667488, 8.0212536e-05, 0.0908869, 0.13580276, 0.00097438256, 0.12176522, -0.08218466) * max(in00, 0.h); + result += half4x4(0.16062798, -0.10190268, 0.03280682, 0.05621916, -0.009684231, -0.08464307, 0.17058301, -0.096469186, 0.1967505, -0.1450099, 0.093607284, -0.28240147, -0.21377413, 0.10079291, -0.1741522, 0.17330575) * max(in10, 0.h); + result += half4x4(-0.060160473, 0.06316997, 0.0046929033, -0.049405966, 0.13851729, 0.06830702, -0.0586872, -0.040827133, 0.007052838, -0.03576886, -0.111261636, 0.039155316, -0.07380389, -0.09369825, 0.04471156, 0.09678487) * max(in20, 0.h); + result += half4x4(-0.36683616, -0.035950605, -0.24414362, -0.009159744, 0.19335322, -0.099253505, 0.075083904, -0.00076695543, 0.65291303, -0.25599423, 0.19827642, 0.065899536, -0.07423247, -0.068967685, 0.0050554527, -0.060272824) * max(in01, 0.h); + result += half4x4(-0.020688485, -0.83178276, 0.11104878, 0.26454413, 0.13655476, 0.37675047, -0.22219229, -0.01751935, 0.44552696, 0.92510307, 0.16063261, -0.62011045, 0.19366647, -0.06996067, -0.2504841, 0.00803723) * max(in11, 0.h); + result += half4x4(0.0051537007, -0.057168536, -0.16110587, 0.25232598, -0.04447099, 0.11997351, 0.14808103, -0.34443566, -0.26212573, -0.21970181, 0.2724405, 0.21050811, -0.07949061, -0.064808235, -0.21208277, -0.0042361654) * max(in21, 0.h); + result += half4x4(-0.0888952, -0.20169449, 0.19144905, -0.016882861, -0.013283103, 0.07552998, -0.24686803, 0.012453213, -0.065454446, -0.016123284, -0.47316182, 0.070926026, 0.09219782, 0.13118166, 0.074736096, 0.0077910526) * max(in02, 0.h); + result += half4x4(0.5832154, 0.1138069, -0.039765622, 0.3182784, -0.25497997, 0.0013993139, 0.39285088, -0.48511526, -0.39891505, -0.19094779, -0.082146175, -0.20826934, 0.020590555, -0.0012490178, -0.4398621, 0.14377014) * max(in12, 0.h); + result += half4x4(0.21917395, 3.4314657e-05, 0.25734863, -0.3433305, 0.015720673, 0.2676127, -0.06807297, 0.15040149, -0.23638041, -0.0050233034, -0.13666134, 0.4542111, -0.033572577, -0.08450588, -0.23341487, 0.053490847) * max(in22, 0.h); + result += half4x4(-0.17482175, 0.057647135, 0.33135444, 0.0850751, -0.1718849, -0.0854123, 0.036795795, -0.13874969, -0.10903869, -0.19007301, -0.06064334, -0.03786032, -0.036696054, 0.07844446, 0.012523185, -0.01562906) * max(-in00, 0.h); + result += half4x4(-0.04411997, -0.10331819, 0.10050193, 0.12406485, 0.07431592, 0.30109692, -0.17511666, -0.13263564, -0.10192587, 0.07821255, -0.22415096, 0.25552443, 0.17881326, -0.13914281, 0.109979235, -0.0016463579) * max(-in10, 0.h); + result += half4x4(-0.01911644, -0.15412527, 0.028903123, 0.20831817, 0.00375175, 0.08110953, 0.074919395, -0.17581624, -0.015677985, 0.06504228, 0.08817818, -0.12518327, -0.09537373, 0.028905088, -0.051288474, 0.054334078) * max(-in20, 0.h); + result += half4x4(0.2852779, -0.28924024, 0.36805123, 0.21079305, -0.28336474, 0.1679663, -0.08641141, -0.10699407, -0.16090055, 0.1287612, -0.15910125, 0.05734755, 0.15883245, 0.0053026294, 0.080674745, 0.0505137) * max(-in01, 0.h); + result += half4x4(0.17639062, 0.3790122, -0.19588692, -0.020314282, 0.26197383, 0.09014768, 0.19696823, -0.41025418, -0.08308115, -0.33279485, -0.22528782, 0.06172439, -0.1365661, -0.13094363, -0.005086559, 0.089024484) * max(-in11, 0.h); + result += half4x4(0.05262993, 0.0006296959, 0.1657725, -0.32591924, 0.12126701, 0.061543245, -0.10526848, 0.041583937, 0.094976954, 0.09416157, -0.22019257, -0.058390073, -0.2073888, 0.057273377, 0.19558284, 0.004208022) * max(-in21, 0.h); + result += half4x4(0.30005738, 0.18478931, -0.23342943, 0.22455733, -0.016488122, 0.099634305, 0.31620836, -0.15731157, 0.09595808, 0.0013774688, 0.48273298, -0.07027936, -0.18764344, -0.26194447, -0.11794225, -0.012173601) * max(-in02, 0.h); + result += half4x4(0.117986746, -0.13846518, -0.019614812, -0.3011192, 0.5501164, 0.3408611, -0.40090847, 0.15706886, 0.13050972, 0.051776595, 0.20792943, 0.23389706, -0.22965533, -0.053367328, 0.3911586, -0.032988597) * max(-in12, 0.h); + result += half4x4(0.054753624, -0.008485731, -0.2451672, 0.17528129, 0.13657846, 0.010480436, 0.07651423, -0.43316832, 0.12736236, 0.13804524, 0.12529011, -0.30946237, -0.14423579, 0.08403089, 0.24335162, 0.057288036) * max(-in22, 0.h); + result += half4(0.012077211, 0.013045883, 0.0380778, -0.02908858); + + output.write(result, gid); +} + +kernel void pass2(texture2d input [[texture(0)]], + texture2d output [[texture(1)]], + uint2 gid [[thread_position_in_grid]]) { + + int width = input.get_width(); + int height = input.get_height(); + + int gidx = gid.x; + int gidy = gid.y; + + int x_m1 = max(gidx-1, 0); + int x_a1 = min(gidx+1, width-1); + int y_m1 = max(gidy-1, 0); + int y_a1 = min(gidy+1, height-1); + + half4 in00 = input.read(uint2(x_m1, y_m1)); + half4 in01 = input.read(uint2(gid.x, y_m1)); + half4 in02 = input.read(uint2(x_a1, y_m1)); + half4 in10 = input.read(uint2(x_m1, gid.y)); + half4 in11 = input.read(uint2(gid.x, gid.y)); + half4 in12 = input.read(uint2(x_a1, gid.y)); + half4 in20 = input.read(uint2(x_m1, y_a1)); + half4 in21 = input.read(uint2(gid.x, y_a1)); + half4 in22 = input.read(uint2(x_a1, y_a1)); + + half4 result = half4x4(-0.036115196, -0.06971895, -0.07508942, 0.016036168, 0.12120111, 0.24536026, 0.044755507, -0.20663576, 0.029635755, -0.15427187, 0.027148994, -0.20795093, 0.10170582, 0.077919215, 0.66063017, -0.4632968) * max(in00, 0.h); + result += half4x4(-0.0052889925, -0.019060908, -0.08660142, -0.022095207, -0.08097976, -0.015142803, -0.18552722, -0.078493506, -0.16293915, -0.20099808, -0.08370822, 0.3701389, 0.09094984, 0.2487225, 0.24338846, 0.044003833) * max(in10, 0.h); + result += half4x4(-0.061406493, -0.017232792, -0.10917424, 0.11203319, 0.040699825, -0.019294346, 0.084953666, -0.018133596, 0.07209552, 0.016069936, 0.17805555, -0.089537814, 0.15809004, 0.1027023, 0.15044671, -0.15530108) * max(in20, 0.h); + result += half4x4(0.0948676, -0.040305693, -0.005591629, -0.048048403, -0.07547777, 0.056606572, 0.021390207, 0.32600567, -0.20805131, -0.099587254, 0.029613169, 0.0092129605, -0.29429698, -0.09898621, 0.44470885, -0.89487344) * max(in01, 0.h); + result += half4x4(-0.122259885, 0.11445877, 0.06666907, 0.1869428, -0.1553992, -0.1658741, 0.2988138, -0.57746625, -0.34609964, 0.11169158, -0.41877756, 0.38075635, 0.21293911, 0.09640372, -0.12754214, -0.08026104) * max(in11, 0.h); + result += half4x4(0.15128808, 0.050087795, 0.09219755, -0.18080945, 0.0044571217, -0.046019405, -0.1289922, 0.20305426, 0.19601224, 0.04667917, 0.17465587, 0.027672665, 0.18441725, 0.06845396, 0.11288585, -0.23283863) * max(in21, 0.h); + result += half4x4(-0.072962, -0.06639447, 0.049347494, -0.1386401, 0.10396071, 0.08187777, -0.04280746, 0.07390891, 0.06628344, 0.037797406, 0.021885803, -0.013147403, 0.22376558, 0.36243078, 0.12874891, -0.0023783944) * max(in02, 0.h); + result += half4x4(0.074945286, 0.16045591, -0.11798349, 0.12910712, 0.054760084, -0.095626175, -0.047832094, 0.03493912, 0.11817307, 0.037452437, -0.14301221, -0.027356789, -0.052390423, 0.11373512, 0.07686775, 0.010008694) * max(in12, 0.h); + result += half4x4(-0.023999173, -0.091900624, 0.02388157, 0.03173873, 0.0065633506, -0.033716757, -0.1198324, 0.12057766, 0.026465805, -0.07517131, -0.07760598, 0.060463097, 0.07345541, 0.046037503, 0.21101558, -0.26785463) * max(in22, 0.h); + result += half4x4(0.15544604, -0.03902825, 0.04630384, -0.25173616, -0.0691359, 0.07476507, 0.009071253, 0.089964196, -0.26539803, -0.3958477, -0.22155671, 0.20735882, -0.105860494, -0.003996804, -0.044815883, 0.39544627) * max(-in00, 0.h); + result += half4x4(0.6169709, 0.23717614, -0.37884676, -0.7484867, 0.020169826, -0.30718836, 1.0965588, -0.20711036, -0.39149985, -0.06843563, -0.06522909, 0.103805855, 0.03265825, -0.15137726, 0.12837899, -0.01294922) * max(-in10, 0.h); + result += half4x4(-0.23638196, -0.4560866, -0.11948684, -0.1464144, 0.10690008, 0.007835961, 0.11864342, -0.13101323, -0.16509797, 0.075027354, 0.08122998, 0.13451207, 0.0011890623, 0.052157886, 0.08372405, -0.07085038) * max(-in20, 0.h); + result += half4x4(-0.21997726, -0.16488647, -0.0291317, 0.17997476, 0.1493211, 0.027494298, 0.0034613227, -0.3207727, 0.18699001, 0.14728633, -0.042895135, -0.07612043, 0.125076, -0.14714554, -0.03480009, -0.22753975) * max(-in01, 0.h); + result += half4x4(-0.5342686, -0.7426105, -0.38294584, 0.42549992, 0.46053204, 0.7867879, 0.106234804, -0.041163098, 0.5198579, -0.5219404, 0.14809476, -0.41802374, 0.06810794, -0.15122683, -0.047409, 0.13178343) * max(-in11, 0.h); + result += half4x4(-0.50428164, 0.18220626, 0.35510704, -0.081787474, 0.03155813, 0.019284263, 0.0032388573, -0.20513348, -0.05385551, 0.17803182, -0.26206362, 0.2870375, 0.008557827, 0.08401449, -0.027598893, -0.010791235) * max(-in21, 0.h); + result += half4x4(0.16657415, 0.067647465, 0.093076974, -0.14438486, -0.10017002, 0.0022367141, 0.03250936, -0.052794546, -0.009178676, -0.019673595, -0.0016697067, -0.15424626, -0.112123474, -0.11079971, 0.011987111, -0.11747758) * max(-in02, 0.h); + result += half4x4(-0.023021797, -0.058703423, -0.037978355, -0.062433913, -0.13130441, 0.048656322, 0.056839373, 0.109036915, -0.07823158, 0.14785293, 0.058555078, -0.11679035, -0.14002073, 0.07395252, 0.098268874, -0.06710464) * max(-in12, 0.h); + result += half4x4(0.14906375, 0.030001195, -0.10338215, 0.0662968, -0.161953, -0.13682815, 0.09563142, 0.009514228, -0.009491218, 0.06737101, -0.1393389, 0.15231515, -0.073147796, 0.00767062, 0.028675212, 0.014213088) * max(-in22, 0.h); + result += half4(0.018736731, -0.0026039074, 0.050130025, -0.055364225); + + output.write(result, gid); +} + +kernel void pass3(texture2d input [[texture(0)]], + texture2d output [[texture(1)]], + uint2 gid [[thread_position_in_grid]]) { + int width = input.get_width(); + int height = input.get_height(); + + int gidx = gid.x; + int gidy = gid.y; + + int x_m1 = max(gidx-1, 0); + int x_a1 = min(gidx+1, width-1); + int y_m1 = max(gidy-1, 0); + int y_a1 = min(gidy+1, height-1); + + half4 in00 = input.read(uint2(x_m1, y_m1)); + half4 in01 = input.read(uint2(gid.x, y_m1)); + half4 in02 = input.read(uint2(x_a1, y_m1)); + half4 in10 = input.read(uint2(x_m1, gid.y)); + half4 in11 = input.read(uint2(gid.x, gid.y)); + half4 in12 = input.read(uint2(x_a1, gid.y)); + half4 in20 = input.read(uint2(x_m1, y_a1)); + half4 in21 = input.read(uint2(gid.x, y_a1)); + half4 in22 = input.read(uint2(x_a1, y_a1)); + + half4 result = half4x4(0.019100675, -0.014241565, 0.004667036, -0.03865062, 0.106731094, 0.026099661, 0.014594411, -0.011881356, 0.0040967264, -0.004626336, 0.006469508, 0.010875305, -0.033909045, -0.085905954, 0.07861378, 0.019452631) * max(in00, 0.h); + result += half4x4(0.20777655, -0.060354974, 0.0023840065, -0.064121604, -0.17397617, 0.019293457, -0.09707183, 0.080641985, 0.01025124, -0.017382381, 0.008661793, -0.010995665, 0.21943407, -0.115574986, 0.14471593, -0.068836235) * max(in10, 0.h); + result += half4x4(0.057942886, -0.06311754, 0.2253396, -0.04159292, -0.020731755, 0.007877151, 0.041525815, 0.025278691, 0.03041967, -0.025137542, 0.024364179, -0.024543528, 0.029438615, -0.015506873, 0.081686, -0.07812221) * max(in20, 0.h); + result += half4x4(0.054237515, 0.0676094, -0.0047708177, 0.0043467237, -0.10032304, -0.020498628, 0.04240586, 0.07272254, 0.0784221, 0.017945962, -0.022310399, -0.013134622, 0.015638694, -0.10001543, 0.1043031, 0.05898838) * max(in01, 0.h); + result += half4x4(-0.021652509, 0.35796642, 0.059497777, 0.23948468, 0.15454951, -0.10017235, -0.19072174, -0.44812536, -0.03974552, 0.04529369, 0.22207436, 0.026222564, -0.09705454, 0.5623026, -0.3354105, -0.017278556) * max(in11, 0.h); + result += half4x4(-0.053682446, -0.03411237, -0.09399936, 0.15128824, -0.07463, -0.042020727, 0.0031783928, 0.13481957, -0.07731454, 0.044114403, -0.23085599, 0.060444202, -0.15015422, 0.0018040676, -0.18684982, 0.2812511) * max(in21, 0.h); + result += half4x4(0.0029329916, 0.001596018, 0.0007512241, 0.016544111, -0.04876942, -0.05272409, 0.037884697, 0.049948208, 0.015518177, 0.11368592, -0.03815777, -0.013149978, -0.027638039, 0.107719295, -0.04115787, 0.02745414) * max(in02, 0.h); + result += half4x4(0.016691081, 0.010204119, 0.04078854, 0.01613337, 0.03325829, 0.0114824055, -0.017286912, -0.07284126, -0.110984206, -0.21041764, 0.0089543555, 0.18986733, 0.01537506, -0.2059135, 0.029074017, 0.013117443) * max(in12, 0.h); + result += half4x4(0.013965926, 0.029871881, 0.0034499036, -0.011343668, 0.022120327, -0.0068748263, 0.009324342, -0.039081004, 0.08032371, 0.050809264, 0.035050742, -0.2032847, 0.06305391, -0.021958945, 0.038569167, -0.22465245) * max(in22, 0.h); + result += half4x4(0.046307724, -0.012419472, 0.007673863, -0.042344846, 0.011042414, 0.016994251, -0.018166406, -0.016955731, -0.13240299, 0.01768431, -0.027607648, 0.0699927, -0.02840628, 0.004414203, 0.0049618417, 0.011084679) * max(-in00, 0.h); + result += half4x4(-0.119954154, -0.007455482, -0.031108133, -0.009946449, 0.0077065965, 0.01660345, 0.032943666, 0.016376585, 0.10273124, 0.1556573, -0.24643841, 0.107307844, -0.068235755, 0.0561896, -0.0104672015, 0.042693343) * max(-in10, 0.h); + result += half4x4(-0.01634601, 0.04195375, -0.10401894, 0.047641944, -0.034602515, -0.0034419263, -0.010457858, 0.015194475, -0.03962551, -0.030031368, 0.16036317, 0.019283568, -0.05877721, 0.016504882, -0.15523468, 0.018161612) * max(-in20, 0.h); + result += half4x4(-0.08083991, 0.0024665035, -0.049373373, 0.030371357, 0.0113322195, -0.014676956, 0.011646689, -0.01142667, 0.124930486, 0.06625774, -0.045840867, -0.009693036, -0.012649251, -0.07388084, 0.008790075, 0.0013844534) * max(-in01, 0.h); + result += half4x4(-0.33941835, -0.2763476, -0.118311435, -0.063535266, 0.20936015, 0.13731301, 0.13443594, 0.07464433, 0.059650812, -0.36973104, 0.16444235, -0.37082872, 0.06432777, -0.18283032, -0.044489607, -0.13895285) * max(-in11, 0.h); + result += half4x4(0.13533665, 0.08268915, -0.03675727, -0.14348659, 0.0186255, -0.05051692, 0.056702953, 0.0061717895, 0.047663026, -0.088188455, 0.23254345, -0.014015464, 0.08400204, -0.0073777726, 0.2202068, -0.12366078) * max(-in21, 0.h); + result += half4x4(0.04361004, 0.046543695, 0.0064863074, -0.03358146, -0.022602187, 0.018138997, -0.011071864, 0.010244091, -0.019814799, -0.17250171, 0.040823266, -0.040131986, 0.010125854, 0.020660749, 0.0020435036, -0.010819304) * max(-in02, 0.h); + result += half4x4(-0.004810193, -0.11286074, 0.051985834, 0.04788631, -0.023950428, 0.036145125, -0.038203828, 0.052401308, 0.022986965, 0.26420745, -0.06076917, -0.09252999, 0.03164547, 0.15652153, -0.037934, -0.0035418556) * max(-in12, 0.h); + result += half4x4(0.03358366, -0.005219482, 0.007060882, -0.06569114, -0.02941682, 0.00966056, -0.0153679885, 0.019905418, -0.107232265, -0.03405676, -0.044340115, 0.26892832, -0.04723829, -0.02589829, 0.004563232, 0.19318114) * max(-in22, 0.h); + result += half4(-0.00346731, -0.0046263863, -0.004627155, -0.0057769152); + + output.write(result, gid); +} + + +constexpr sampler the_sampler(filter::nearest); // + + +// #define MAIN_pos mtlPos +// #define MAIN_size float2(MAIN.get_width(), MAIN.get_height()) +// #define MAIN_pt (vec2(1, 1) / MAIN_size) +// #define MAIN_tex(pos) MAIN.sample(textureSampler, pos) +// #define MAIN_texOff(off) MAIN_tex(MAIN_pos + MAIN_pt * vec2(off)) +// #define conv2d_last_tf_pos mtlPos +// #define conv2d_last_tf_size float2(conv2d_last_tf.get_width(), conv2d_last_tf.get_height()) +// #define conv2d_last_tf_pt (vec2(1, 1) / conv2d_last_tf_size) +// #define conv2d_last_tf_tex(pos) conv2d_last_tf.sample(textureSampler, pos) +// #define conv2d_last_tf_texOff(off) conv2d_last_tf_tex(conv2d_last_tf_pos + conv2d_last_tf_pt * vec2(off)) +// #define MAIN_pos mtlPos +// #define MAIN_pt (vec2(1, 1) / vec2(MAIN.get_width(), MAIN.get_height())) +// #define MAIN_size vec2(MAIN.get_width(), MAIN.get_height()) +// #define MAIN_tex(pos) MAIN.sample(textureSampler, pos) +// #define MAIN_texOff(off) MAIN_tex(MAIN_pos + MAIN_pt * vec2(off)) +// static inline vec4 hook(float2 mtlPos, sampler textureSampler, texture2d MAIN, texture2d conv2d_last_tf) { +// vec2 f0 = fract(conv2d_last_tf_pos * conv2d_last_tf_size); +// ivec2 i0 = ivec2(f0 * vec2(2.0)); +// float c0 = conv2d_last_tf_tex((vec2(0.5) - f0) * conv2d_last_tf_pt + conv2d_last_tf_pos)[i0.y * 2 + i0.x]; +// float c1 = c0; +// float c2 = c1; +// float c3 = c2; +// return vec4(c0, c1, c2, c3) + MAIN_tex(MAIN_pos); +// } +kernel void pass4(texture2d input_ori [[texture(0)]], + texture2d input [[texture(1)]], + texture2d output [[texture(2)]], + uint2 gid [[thread_position_in_grid]]) { + + float2 in_size = float2(input_ori.get_width(), input_ori.get_height()); + float2 in_size_rev = 1.f / in_size; + + float2 pos_norm = float2(gid) / (float2(output.get_width(), output.get_height()) - float2(1, 1)); + float2 f0 = fract(pos_norm * in_size); + int2 i0 = int2(f0 * 2.f); + + half cc = input.sample(the_sampler, (0.5f - f0) * in_size_rev + pos_norm)[i0.y * 2 + i0.x]; + half4 result = input_ori.read(gid >> 1) + cc; + + output.write(result, gid); +} diff --git a/bmf_lite/src/algorithm/modules/operators/metal/sr/sr.mm b/bmf_lite/src/algorithm/modules/operators/metal/sr/sr.mm new file mode 100644 index 00000000..2f292869 --- /dev/null +++ b/bmf_lite/src/algorithm/modules/operators/metal/sr/sr.mm @@ -0,0 +1,166 @@ +/* + * Copyright 2019 bloc97 + * + * This file is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This file is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + */ +#include "metal/sr/sr.h" +#include "metal/metal_helper.h" +#include + +namespace bmf_lite { +namespace metal { + +int Sr::init() { + inited_ = false; + + OPS_CHECK(MetalHelper::instance().support_non_uniform_tg(), "not support non_uniform_tg"); + + OPS_CHECK(BMF_LITE_StsOk == MetalHelper::instance().new_compute_pileline_state(&cps0_, @"pass0"), "can not find 0 function"); + OPS_CHECK(BMF_LITE_StsOk == MetalHelper::instance().new_compute_pileline_state(&cps1_, @"pass1"), "can not find 1 function"); + OPS_CHECK(BMF_LITE_StsOk == MetalHelper::instance().new_compute_pileline_state(&cps2_, @"pass2"), "can not find 2 function"); + OPS_CHECK(BMF_LITE_StsOk == MetalHelper::instance().new_compute_pileline_state(&cps3_, @"pass3"), "can not find 3 function"); + OPS_CHECK(BMF_LITE_StsOk == MetalHelper::instance().new_compute_pileline_state(&cps4_, @"pass4"), "can not find 4 function"); + OPS_CHECK(BMF_LITE_StsOk == MetalHelper::instance().new_compute_pileline_state(&rgba_to_nv12_, @"rgba_to_nv12"), "can not find 4 function"); + OPS_CHECK(BMF_LITE_StsOk == MetalHelper::instance().new_compute_pileline_state(&nv12_to_rgba_, @"nv12_to_rgba"), "can not find 4 function"); + group_size_ = MTLSizeMake(16, 16, 1); + + inited_ = true; + return BMF_LITE_StsOk; +} + +int Sr::run(id in_tex, id out_tex, id command_queue) { + OPS_CHECK(inited_, "please call init first"); + OPS_CHECK(in_tex != nil, "input tex is nil"); + OPS_CHECK(out_tex != nil, "output tex is nil"); + + id command_buffer = [command_queue commandBuffer]; + OPS_CHECK(command_buffer != nil, "command_buffer is nil"); + id command_encoder = [command_buffer computeCommandEncoder]; + OPS_CHECK(command_encoder != nil, "command_encoder is nil"); + + if (in_width_ != in_tex.width || in_height_ != in_tex.height) { + in_width_ = in_tex.width; + in_height_ = in_tex.height; + + OPS_CHECK(BMF_LITE_StsOk == MetalHelper::instance().gen_tex(&tex0_, MTLPixelFormatRGBA16Float, in_width_, in_height_, MTLTextureUsageShaderRead|MTLTextureUsageShaderWrite, MTLStorageModePrivate), + "create tex0 error"); + OPS_CHECK(BMF_LITE_StsOk == MetalHelper::instance().gen_tex(&tex1_, MTLPixelFormatRGBA16Float, in_width_, in_height_, MTLTextureUsageShaderRead|MTLTextureUsageShaderWrite, MTLStorageModePrivate), + "create tex1 error"); + } + // 0 + [command_encoder setComputePipelineState:cps0_]; + [command_encoder setTexture:in_tex atIndex:0]; + [command_encoder setTexture:tex0_ atIndex:1]; + [command_encoder dispatchThreads:MTLSizeMake(in_width_, in_height_, 1) threadsPerThreadgroup:group_size_]; + // 1 + [command_encoder setComputePipelineState:cps1_]; + [command_encoder setTexture:tex0_ atIndex:0]; + [command_encoder setTexture:tex1_ atIndex:1]; + [command_encoder dispatchThreads:MTLSizeMake(in_width_, in_height_, 1) threadsPerThreadgroup:group_size_]; + // 2 + [command_encoder setComputePipelineState:cps2_]; + [command_encoder setTexture:tex1_ atIndex:0]; + [command_encoder setTexture:tex0_ atIndex:1]; + [command_encoder dispatchThreads:MTLSizeMake(in_width_, in_height_, 1) threadsPerThreadgroup:group_size_]; + // 3 + [command_encoder setComputePipelineState:cps3_]; + [command_encoder setTexture:tex0_ atIndex:0]; + [command_encoder setTexture:tex1_ atIndex:1]; + [command_encoder dispatchThreads:MTLSizeMake(in_width_, in_height_, 1) threadsPerThreadgroup:group_size_]; + // 4 + [command_encoder setComputePipelineState:cps4_]; + [command_encoder setTexture:in_tex atIndex:0]; + [command_encoder setTexture:tex1_ atIndex:1]; + [command_encoder setTexture:out_tex atIndex:2]; + [command_encoder dispatchThreads:MTLSizeMake(out_tex.width, out_tex.height, 1) threadsPerThreadgroup:group_size_]; + + // commit + [command_encoder endEncoding]; + [command_buffer commit]; + + return BMF_LITE_StsOk; +} + +int Sr::run(id in_tex_y, id in_tex_uv, id out_tex_y, id out_tex_uv, id command_queue) { + OPS_CHECK(inited_, "please call init first"); + OPS_CHECK(in_tex_y != nil, "input tex_y is nil"); + OPS_CHECK(in_tex_uv != nil, "input tex_uv is nil"); + OPS_CHECK(out_tex_y != nil, "output tex_y is nil"); + OPS_CHECK(out_tex_uv != nil, "output tex_uv is nil"); + + id command_buffer = [command_queue commandBuffer]; + OPS_CHECK(command_buffer != nil, "command_buffer is nil"); + id command_encoder = [command_buffer computeCommandEncoder]; + OPS_CHECK(command_encoder != nil, "command_encoder is nil"); + + if (in_width_nv12_ != in_tex_y.width || in_height_nv12_ != in_tex_y.height) { + in_width_nv12_ = in_tex_y.width; + in_height_nv12_ = in_tex_y.height; + in_width_ = in_width_nv12_; + in_height_ = in_height_nv12_; + + OPS_CHECK(BMF_LITE_StsOk == MetalHelper::instance().gen_tex(&tex0_, MTLPixelFormatRGBA16Float, in_width_nv12_, in_height_nv12_, MTLTextureUsageShaderRead|MTLTextureUsageShaderWrite, MTLStorageModePrivate), + "create tex0 error"); + OPS_CHECK(BMF_LITE_StsOk == MetalHelper::instance().gen_tex(&tex1_, MTLPixelFormatRGBA16Float, in_width_nv12_, in_height_nv12_, MTLTextureUsageShaderRead|MTLTextureUsageShaderWrite, MTLStorageModePrivate), + "create tex1 error"); + OPS_CHECK(BMF_LITE_StsOk == MetalHelper::instance().gen_tex(&tex_rgba_in_, MTLPixelFormatRGBA8Unorm, in_width_nv12_, in_height_nv12_, MTLTextureUsageShaderRead|MTLTextureUsageShaderWrite, MTLStorageModePrivate), + "create tex_rgba_in error"); + OPS_CHECK(BMF_LITE_StsOk == MetalHelper::instance().gen_tex(&tex_rgba_out_, MTLPixelFormatRGBA8Unorm, out_tex_y.width, out_tex_y.height, MTLTextureUsageShaderRead|MTLTextureUsageShaderWrite, MTLStorageModePrivate), + "create tex_rgba_out error"); + } + // nv12 to rgba + [command_encoder setComputePipelineState:nv12_to_rgba_]; + [command_encoder setTexture:tex_rgba_in_ atIndex:0]; + [command_encoder setTexture:in_tex_y atIndex:1]; + [command_encoder setTexture:in_tex_uv atIndex:2]; + [command_encoder dispatchThreads:MTLSizeMake((in_width_ + 1)/2, in_height_, 1) threadsPerThreadgroup:group_size_]; + // 0 + [command_encoder setComputePipelineState:cps0_]; + [command_encoder setTexture:tex_rgba_in_ atIndex:0]; + [command_encoder setTexture:tex0_ atIndex:1]; + [command_encoder dispatchThreads:MTLSizeMake(in_width_, in_height_, 1) threadsPerThreadgroup:group_size_]; + // 1 + [command_encoder setComputePipelineState:cps1_]; + [command_encoder setTexture:tex0_ atIndex:0]; + [command_encoder setTexture:tex1_ atIndex:1]; + [command_encoder dispatchThreads:MTLSizeMake(in_width_, in_height_, 1) threadsPerThreadgroup:group_size_]; + // 2 + [command_encoder setComputePipelineState:cps2_]; + [command_encoder setTexture:tex1_ atIndex:0]; + [command_encoder setTexture:tex0_ atIndex:1]; + [command_encoder dispatchThreads:MTLSizeMake(in_width_, in_height_, 1) threadsPerThreadgroup:group_size_]; + // 3 + [command_encoder setComputePipelineState:cps3_]; + [command_encoder setTexture:tex0_ atIndex:0]; + [command_encoder setTexture:tex1_ atIndex:1]; + [command_encoder dispatchThreads:MTLSizeMake(in_width_, in_height_, 1) threadsPerThreadgroup:group_size_]; + // 4 + [command_encoder setComputePipelineState:cps4_]; + [command_encoder setTexture:tex_rgba_in_ atIndex:0]; + [command_encoder setTexture:tex1_ atIndex:1]; + [command_encoder setTexture:tex_rgba_out_ atIndex:2]; + [command_encoder dispatchThreads:MTLSizeMake(tex_rgba_out_.width, tex_rgba_out_.height, 1) threadsPerThreadgroup:group_size_]; + //rgba to nv12 + [command_encoder setComputePipelineState:rgba_to_nv12_]; + [command_encoder setTexture:tex_rgba_out_ atIndex:0]; + [command_encoder setTexture:out_tex_y atIndex:1]; + [command_encoder setTexture:out_tex_uv atIndex:2]; + [command_encoder dispatchThreads:MTLSizeMake((out_tex_y.width + 1)/2, (out_tex_y.height + 1)/2, 1) threadsPerThreadgroup:group_size_]; + // commit + [command_encoder endEncoding]; + [command_buffer commit]; + [command_buffer waitUntilCompleted]; + return BMF_LITE_StsOk; +} + + +} // namespace metal +} // namespace bmf_lite diff --git a/bmf_lite/src/algorithm/modules/operators/opengl/arithmetic/arithmetic.cpp b/bmf_lite/src/algorithm/modules/operators/opengl/arithmetic/arithmetic.cpp new file mode 100644 index 00000000..b22a3164 --- /dev/null +++ b/bmf_lite/src/algorithm/modules/operators/opengl/arithmetic/arithmetic.cpp @@ -0,0 +1,88 @@ +/* + * Copyright 2023 Babit Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#include "arithmetic.h" + +namespace bmf_lite { +namespace opengl { +static constexpr char arithmetic_src[] = R"( +precision mediump float; +precision mediump int; +layout (location = 0) uniform mediump sampler2D in_tex0; +layout (location = 1) uniform mediump sampler2D in_tex1; +layout (rgba8, binding = 0) writeonly uniform mediump image2D out_img; +layout (location = 2) uniform ivec2 w_h; +layout (location = 3) uniform vec3 params; //(a, b, c) +void main() { + ivec2 pos = ivec2(gl_GlobalInvocationID.xy); + if (pos.x < w_h.x && pos.y < w_h.y) { + vec4 data0 = texelFetch(in_tex0, pos, 0); + vec4 data1 = texelFetch(in_tex1, pos, 0); + vec4 out_data = params.x * data0 + params.y * data1 + params.z; + out_data = clamp(out_data, 0.f, 1.f); + imageStore(out_img, pos, out_data); + } +} +)"; + +int Arithmetic::init(const std::string &program_cache_dir) { + OPS_CHECK(!inited_, "already inited"); + std::string program_source = arithmetic_src; + + OPS_CHECK(BMF_LITE_StsOk == GLHelper::instance().build_program( + &program_id_, program_source, "", + program_cache_dir, local_size_, 16, 16, 1), + "get_program_from_cache_dir fail"); + inited_ = true; + return BMF_LITE_StsOk; +} + +int Arithmetic::run(GLuint in_tex0, GLuint in_tex1, GLuint out_tex, int width, + int height, float a, float b, float c) { + OPS_CHECK(inited_, "init first"); + auto num_groups_x = UPDIV(width, local_size_[0]); + auto num_groups_y = UPDIV(height, local_size_[1]); + + glUseProgram(program_id_); + + int tex_id = 0; + glActiveTexture(GL_TEXTURE0 + tex_id); + glBindTexture(GL_TEXTURE_2D, in_tex0); + glUniform1i(0, tex_id); + + tex_id++; + glActiveTexture(GL_TEXTURE0 + tex_id); + glBindTexture(GL_TEXTURE_2D, in_tex1); + glUniform1i(1, tex_id); + + glBindImageTexture(0, out_tex, 0, GL_FALSE, 0, GL_WRITE_ONLY, GL_RGBA8); + + glUniform2i(2, width, height); + glUniform3f(3, a, b, c); + + glDispatchCompute(num_groups_x, num_groups_y, 1); + glMemoryBarrier(GL_SHADER_IMAGE_ACCESS_BARRIER_BIT); + OPS_CHECK_OPENGL; + return BMF_LITE_StsOk; +} + +Arithmetic::~Arithmetic() { + if (program_id_ != GL_NONE) { + glDeleteProgram(program_id_); + program_id_ = GL_NONE; + } +} +} // namespace opengl +} // namespace bmf_lite diff --git a/bmf_lite/src/algorithm/modules/operators/opengl/arithmetic/arithmetic.h b/bmf_lite/src/algorithm/modules/operators/opengl/arithmetic/arithmetic.h new file mode 100644 index 00000000..0d6af19d --- /dev/null +++ b/bmf_lite/src/algorithm/modules/operators/opengl/arithmetic/arithmetic.h @@ -0,0 +1,59 @@ +/* + * Copyright 2023 Babit Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef _BMF_ALGORITHM_MODULES_OPS_OPENGL_ARITHMETIC_H_ +#define _BMF_ALGORITHM_MODULES_OPS_OPENGL_ARITHMETIC_H_ +#include +#include "opengl/gl_helper.h" + +namespace bmf_lite { +namespace opengl { + +/** + * @brief Arithmetic texA * a + texB * b + c + * + */ +class Arithmetic { + public: + int init(const std::string &program_cache_dir); + /** + * @brief + * + * @param in_tex0 + * @param in_tex1 + * @param out_tex + * @param width + * @param height + * @param a + * @param b + * @param c + * @return BMF_LITE_ERROR_CODE + */ + int run(GLuint in_tex0, GLuint in_tex1, GLuint out_tex, int width, + int height, float a, float b, float c); + + ~Arithmetic(); + + private: + GLuint program_id_ = GL_NONE; + + GLint local_size_[3] = {16, 16, 1}; + + bool inited_ = false; +}; // Arithmetic + +} // namespace opengl +} // namespace bmf_lite +#endif diff --git a/bmf_lite/src/algorithm/modules/operators/opengl/crop/crop.cpp b/bmf_lite/src/algorithm/modules/operators/opengl/crop/crop.cpp new file mode 100644 index 00000000..036b493e --- /dev/null +++ b/bmf_lite/src/algorithm/modules/operators/opengl/crop/crop.cpp @@ -0,0 +1,89 @@ +/* + * Copyright 2023 Babit Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#include "crop.h" + +namespace bmf_lite { +namespace opengl { +static constexpr char crop_src[] = R"( +precision mediump float; +precision mediump int; + +layout (location = 0) uniform mediump sampler2D in_tex; +layout (rgba8, binding = 0) writeonly uniform mediump image2D out_img; +layout (location = 1) uniform ivec4 params; //(x, y, ow, oh) +void main() { + ivec2 pos = ivec2(gl_GlobalInvocationID.xy); + int ow = params.z; + int oh = params.w; + if (pos.x < ow && pos.y < oh) { + vec4 data = texelFetch(in_tex, pos + params.xy, 0); + imageStore(out_img, pos, data); + } +})"; + +int Crop::init(const std::string &program_cache_dir) { + OPS_CHECK(!inited_, "already inited"); + std::string program_source = crop_src; + OPS_CHECK(BMF_LITE_StsOk == GLHelper::instance().build_program( + &program_id_, program_source, "", + program_cache_dir, local_size_, 16, 16, 1), + "get_program_from_cache_dir fail"); + inited_ = true; + return BMF_LITE_StsOk; +} + +int Crop::run(GLuint in_tex, GLuint out_tex, int in_width, int in_height, + int start_x, int start_y, int out_width, int out_height) { + OPS_CHECK(inited_, "init first"); + + OPS_CHECK(start_x >= 0 && start_x < in_width, "invalid start_x: %d", + start_x); + OPS_CHECK(start_y >= 0 && start_y < in_height, "invalid start_y: %d", + start_y); + + if (out_width + start_x > in_width) { + out_width = in_width - start_x; + } + if (out_height + start_y > in_height) { + out_height = in_height - start_y; + } + + auto num_groups_x = UPDIV(out_width, local_size_[0]); + auto num_groups_y = UPDIV(out_height, local_size_[1]); + + glUseProgram(program_id_); + + int tex_id = 0; + glActiveTexture(GL_TEXTURE0 + tex_id); + glBindTexture(GL_TEXTURE_2D, in_tex); + glUniform1i(0, tex_id); + + glBindImageTexture(0, out_tex, 0, GL_FALSE, 0, GL_WRITE_ONLY, GL_RGBA8); + glUniform4i(1, start_x, start_y, out_width, out_height); + + glDispatchCompute(num_groups_x, num_groups_y, 1); + glMemoryBarrier(GL_SHADER_IMAGE_ACCESS_BARRIER_BIT); + return BMF_LITE_StsOk; +} + +Crop::~Crop() { + if (program_id_ != GL_NONE) { + glDeleteProgram(program_id_); + program_id_ = GL_NONE; + } +} +} // namespace opengl +} // namespace bmf_lite diff --git a/bmf_lite/src/algorithm/modules/operators/opengl/crop/crop.h b/bmf_lite/src/algorithm/modules/operators/opengl/crop/crop.h new file mode 100644 index 00000000..adb30d7d --- /dev/null +++ b/bmf_lite/src/algorithm/modules/operators/opengl/crop/crop.h @@ -0,0 +1,60 @@ +/* + * Copyright 2023 Babit Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef _BMF_ALGORITHM_MODULES_OPS_OPENGL_CROP_H_ +#define _BMF_ALGORITHM_MODULES_OPS_OPENGL_CROP_H_ +#include +#include "opengl/gl_helper.h" + +namespace bmf_lite { +namespace opengl { + +/** + * @brief Crop + * + */ +class Crop { + public: + int init(const std::string &program_cache_dir); + /** + * @brief crop + * + * @param in_tex + * @param out_tex + * @param width + * @param in_width + * @param in_height + * @param start_x + * @param start_y + * @param out_width + * @param out_height + * @return error code + */ + int run(GLuint in_tex, GLuint out_tex, int in_width, int in_height, + int start_x, int start_y, int out_width, int out_height); + + ~Crop(); + + private: + GLuint program_id_ = GL_NONE; + + GLint local_size_[3] = {16, 16, 1}; + + bool inited_ = false; +}; // Crop + +} // namespace opengl +} // namespace bmf_lite +#endif diff --git a/bmf_lite/src/algorithm/modules/operators/opengl/cvt/cvt.cpp b/bmf_lite/src/algorithm/modules/operators/opengl/cvt/cvt.cpp new file mode 100644 index 00000000..249a7e12 --- /dev/null +++ b/bmf_lite/src/algorithm/modules/operators/opengl/cvt/cvt.cpp @@ -0,0 +1,681 @@ +/* + * Copyright 2023 Babit Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#include "cvt.h" + +namespace bmf_lite { +namespace opengl { + +constexpr float cm_rgb2yuv_bt601_l2l[9] = { + 0.299, 0.587, 0.114, -0.172, -0.339, 0.511, 0.511 - 0.428, -0.083}; +constexpr float co_rgb2yuv_bt601_l2l[3] = {0, 0.5, 0.5}; + +constexpr float cm_yuv2rgb_bt601_l2l[9] = {1, 0, 1.371, 1, -0.336, + -0.698, 1, 1.732, 0}; +constexpr float co_yuv2rgb_bt601_l2l[3] = {0, -0.5, -0.5}; + +constexpr float cm_rgb2yuv_bt601_f2l[9] = {0.257, 0.504, 0.098, -0.148, -0.291, + 0.439, 0.439, -0.368, -0.071}; +constexpr float co_rgb2yuv_bt601_f2l[3] = {0.0625, 0.5, 0.5}; + +constexpr float cm_yuv2rgb_bt601_l2f[9] = {1.164, 0, 1.596, 1.164, -0.391, + -0.813, 1.164, 2.018, 0}; +constexpr float co_yuv2rgb_bt601_l2f[3] = {-0.0625, -0.5, -0.5}; + +constexpr float cm_yuv2rgb_bt601_f2f[9] = {1, 0, 1.402, 1, -0.3441f, + -0.7141, 1, 1.772, 0}; +constexpr float co_yuv2rgb_bt601_f2f[3] = {0, -0.5, -0.5}; + +constexpr float cm_yuv2rgb_bt709_l2f[9] = {1.164, 0, 1.793, 1.164, -0.213, + -0.534, 1.164, 2.115, 0}; +constexpr float co_yuv2rgb_bt709_l2f[3] = {-0.0625, -0.5, -0.5}; + +constexpr float cm_yuv2rgb_bt709_f2f[9] = {1, 0, 1.5748, 1, -0.1873, + -0.4681, 1, 1.8556, 0}; +constexpr float co_yuv2rgb_bt709_f2f[3] = {0, -0.5, -0.5}; + +constexpr float cm_rgb2yuv_bt709_f2l[9] = {0.183, 0.614, 0.062, -0.101, -0.338, + 0.439, 0.439, -0.399, -0.040}; +constexpr float co_rgb2yuv_bt709_f2l[3] = {0.0625, 0.5, 0.5}; + +constexpr float cm_yuv2rgb_bt709_l2l[9] = {1, 0, 1.540, 1, -0.183, + -0.459, 1, 1.816, 0}; +constexpr float co_yuv2rgb_bt709_l2l[3] = {0, -0.5, -0.5}; + +constexpr float cm_rgb2yuv_bt709_l2l[9] = {0.213, 0.715, 0.072, -0.117, -0.394, + 0.511, 0.511, -0.464, -0.047}; +constexpr float co_rgb2yuv_bt709_l2l[3] = {0, 0.5, 0.5}; + +constexpr float cm_yuv2rgb_bt2020_l2f[9] = { + 1.1644, 0, 1.6787, 1.1644, -0.1873, -0.6504, 1.1644, 2.1418, 0}; +constexpr float co_yuv2rgb_bt2020_l2f[3] = {-0.0625, -0.5, -0.5}; + +constexpr float cm_yuv2rgb_bt2020_f2f[9] = {1, 0, 1.4746, 1, -0.1646, + -0.5714, 1, 1.8814, 0}; +constexpr float co_yuv2rgb_bt2020_f2f[3] = {0, -0.5, -0.5}; + +constexpr float cm_yuv2rgb_jpeg[9] = { + 1, -0.00093, 1.401687, 1, -0.3437, -0.71417, 1, 1.77216, 0.00099}; +constexpr float co_yuv2rgb_jpeg[3] = {0, -0.5, -0.5}; + +constexpr float cm_rgb2yuv_jpeg[9] = {0.299, 0.587, 0.114, -0.169, + -0.331, 0.5, 0.5, -0.419 - 0.081}; +constexpr float co_rgb2yuv_jpeg[3] = {0, 0.5, 0.5}; + +static constexpr char rgba_to_yuv444p[] = R"( +layout (location = 0) uniform mediump sampler2D in_img; //rgba8 +layout (rgba8, binding = 1) writeonly uniform mediump image2D out_y; +layout (rgba8, binding = 2) writeonly uniform mediump image2D out_u; +layout (rgba8, binding = 3) writeonly uniform mediump image2D out_v; +layout (location=4) uniform ivec2 in_img_size; + +uniform mat3 cm; +uniform vec3 co; + +void main() { + ivec2 pos = ivec2(gl_GlobalInvocationID.xy); + int width = in_img_size.x; + int height = in_img_size.y; + + if (pos.x < width && pos.y < height) { + vec4 rgba = texelFetch(in_img, pos, 0); + vec3 rgb = vec3(rgba.xyz); + + vec3 yuv = cm * rgb + co; + yuv = clamp(yuv, 0.f, 1.f); + + imageStore(out_y, pos, vec4(yuv.x)); + imageStore(out_u, pos, vec4(yuv.y)); + imageStore(out_v, pos, vec4(yuv.z)); + } +} +)"; + +static constexpr char yuv444p_to_rgba[] = R"( +layout (location = 0) uniform mediump sampler2D in_y; +layout (location = 1) uniform mediump sampler2D in_u; +layout (location = 2) uniform mediump sampler2D in_v; +layout (rgba8, binding = 3) writeonly uniform mediump image2D out_img; +layout (location = 4) uniform ivec2 in_img_size; + +uniform mat3 cm; +uniform vec3 co; + +void main() { + ivec2 pos = ivec2(gl_GlobalInvocationID.xy); // y's width/height + int width = in_img_size.x; + int height = in_img_size.y; + + if (pos.x < width && pos.y < height) { + float y = texelFetch(in_y, pos, 0).x; + float u = texelFetch(in_u, pos, 0).x; + float v = texelFetch(in_v, pos, 0).x; + + vec3 yuv = vec3(y, u, v); + vec3 rgb = cm * (yuv + co); + rgb = clamp(rgb, 0.f, 1.f); + + imageStore(out_img, pos, vec4(rgb, 1.f)); + } +} +)"; + +static constexpr char rgba_to_yuv420p[] = R"( +layout (location = 0) uniform mediump sampler2D in_img; //rgba8 +layout (rgba8, binding = 1) writeonly uniform mediump image2D out_y; +layout (rgba8, binding = 2) writeonly uniform mediump image2D out_u; +layout (rgba8, binding = 3) writeonly uniform mediump image2D out_v; +layout (location=4) uniform ivec2 in_img_size; + +uniform mat3 cm; +uniform vec3 co; + +void main() { + ivec2 pos = ivec2(gl_GlobalInvocationID.xy); + ivec2 uv_hw = in_img_size >> 1; + int uv_width = uv_hw.x; + int uv_height = uv_hw.y; + + if (pos.x < uv_width && pos.y < uv_height) { + vec4 rgba0 = texelFetch(in_img, ivec2(2 * pos.x + 0, 2 * pos.y + 0), 0); + vec4 rgba1 = texelFetch(in_img, ivec2(2 * pos.x + 1, 2 * pos.y + 0), 0); + vec4 rgba2 = texelFetch(in_img, ivec2(2 * pos.x + 0, 2 * pos.y + 1), 0); + vec4 rgba3 = texelFetch(in_img, ivec2(2 * pos.x + 1, 2 * pos.y + 1), 0); + + vec3 rgb0 = vec3(rgba0.xyz); + vec3 rgb1 = vec3(rgba1.xyz); + vec3 rgb2 = vec3(rgba2.xyz); + vec3 rgb3 = vec3(rgba3.xyz); + + vec3 yuv0 = cm * rgb0 + co; + vec3 yuv1 = cm * rgb1 + co; + vec3 yuv2 = cm * rgb2 + co; + vec3 yuv3 = cm * rgb3 + co; + + vec2 uv = (yuv0.yz + yuv1.yz + yuv2.yz + yuv3.yz) / 4.f; + // uv = uv >> 2; + vec4 y = vec4(yuv0.x, yuv1.x, yuv2.x, yuv3.x); + + y = clamp(y, 0.f, 1.f); + uv = clamp(uv, 0.f, 1.f); + + imageStore(out_y, ivec2(2 * pos.x + 0, 2 * pos.y + 0), vec4(y.x)); + imageStore(out_y, ivec2(2 * pos.x + 1, 2 * pos.y + 0), vec4(y.y)); + imageStore(out_y, ivec2(2 * pos.x + 0, 2 * pos.y + 1), vec4(y.z)); + imageStore(out_y, ivec2(2 * pos.x + 1, 2 * pos.y + 1), vec4(y.w)); + + imageStore(out_u, pos, vec4(uv.x)); + imageStore(out_v, pos, vec4(uv.y)); + } +} +)"; + +static constexpr char yuv420p_to_rgba[] = R"( +layout (location = 0) uniform mediump sampler2D in_y; // rgba8 +layout (location = 1) uniform mediump sampler2D in_u; // rgba8 +layout (location = 2) uniform mediump sampler2D in_v; // rgba8 +layout (rgba8, binding = 3) writeonly uniform mediump image2D out_img; +layout (location = 4) uniform ivec2 in_y_size; + +uniform mat3 cm; +uniform vec3 co; + +void main() { + ivec2 pos = ivec2(gl_GlobalInvocationID.xy); // uv's width/height + ivec2 uv_size = in_y_size >> 1; + int width = uv_size.x; + int height = uv_size.y; + + if (pos.x < width && pos.y < height) { + float y0 = texelFetch(in_y, ivec2(pos.x * 2 + 0, pos.y * 2 + 0), 0).x; + float y1 = texelFetch(in_y, ivec2(pos.x * 2 + 1, pos.y * 2 + 0), 0).x; + float y2 = texelFetch(in_y, ivec2(pos.x * 2 + 0, pos.y * 2 + 1), 0).x; + float y3 = texelFetch(in_y, ivec2(pos.x * 2 + 1, pos.y * 2 + 1), 0).x; + + float u = texelFetch(in_u, pos, 0).x; + float v = texelFetch(in_v, pos, 0).x; + + vec3 yuv0 = vec3(y0, u, v); + vec3 yuv1 = vec3(y1, u, v); + vec3 yuv2 = vec3(y2, u, v); + vec3 yuv3 = vec3(y3, u, v); + + vec3 rgb0 = cm * (yuv0 + co); + vec3 rgb1 = cm * (yuv1 + co); + vec3 rgb2 = cm * (yuv2 + co); + vec3 rgb3 = cm * (yuv3 + co); + + rgb0 = clamp(rgb0, 0.f, 1.f); + rgb1 = clamp(rgb1, 0.f, 1.f); + rgb2 = clamp(rgb2, 0.f, 1.f); + rgb3 = clamp(rgb3, 0.f, 1.f); + + imageStore(out_img, ivec2(pos.x * 2 + 0, pos.y * 2 + 0), vec4(rgb0, 1.f)); + imageStore(out_img, ivec2(pos.x * 2 + 1, pos.y * 2 + 0), vec4(rgb1, 1.f)); + imageStore(out_img, ivec2(pos.x * 2 + 0, pos.y * 2 + 1), vec4(rgb2, 1.f)); + imageStore(out_img, ivec2(pos.x * 2 + 1, pos.y * 2 + 1), vec4(rgb3, 1.f)); + } +} +)"; + +static constexpr char rgba_to_yuva444[] = R"( +layout (location = 0) uniform mediump sampler2D in_rgba; //rgba +layout (rgba8, binding = 1) writeonly uniform mediump image2D out_yuva; +layout (location = 2) uniform ivec2 in_img_size; + +uniform mat3 cm; +uniform vec3 co; + +void main() { + ivec2 pos = ivec2(gl_GlobalInvocationID.xy); + int width = in_img_size.x; + int height = in_img_size.y; + + if (pos.x < width && pos.y < height) { + vec4 rgba = texelFetch(in_rgba, pos, 0); + vec3 rgb = vec3(rgba.xyz); + + vec3 yuv = cm * rgb + co; + yuv = clamp(yuv, 0.f, 1.f); + + imageStore(out_yuva, pos, vec4(yuv, rgba.w)); + } +} +)"; + +static constexpr char yuva444_to_rgba[] = R"( +layout (location = 0) uniform mediump sampler2D in_yuva; //yuva +layout (rgba8, binding = 1) writeonly uniform mediump image2D out_img; +layout (location = 2) uniform ivec2 in_img_size; + +uniform mat3 cm; +uniform vec3 co; + +void main() { + ivec2 pos = ivec2(gl_GlobalInvocationID.xy); // y's width/height + int width = in_img_size.x; + int height = in_img_size.y; + + if (pos.x < width && pos.y < height) { + vec4 yuva = texelFetch(in_yuva, pos, 0); + vec3 yuv = yuva.xyz; + vec3 rgb = cm * (yuv + co); + rgb = clamp(rgb, 0.f, 1.f); + + imageStore(out_img, pos, vec4(rgb, 1.f)); + } +} +)"; + +static constexpr char rgba_to_hsva[] = R"( +precision mediump float; + +layout (location = 0) uniform mediump sampler2D in_rgba; //rgba +layout (rgba8, binding = 1) writeonly uniform mediump image2D out_hsva; +layout (location = 2) uniform ivec2 in_img_size; + +vec3 rgb2hsv(vec3 c) +{ + vec4 K = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0); + vec4 p = mix(vec4(c.bg, K.wz), vec4(c.gb, K.xy), step(c.b, c.g)); + vec4 q = mix(vec4(p.xyw, c.r), vec4(c.r, p.yzx), step(p.x, c.r)); + + float d = q.x - min(q.w, q.y); + float e = 1.0e-10; + return vec3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x); +} + +void main() { + ivec2 pos = ivec2(gl_GlobalInvocationID.xy); + int width = in_img_size.x; + int height = in_img_size.y; + + if (pos.x < width && pos.y < height) { + vec4 frgba = texelFetch(in_rgba, pos, 0); + vec3 hsv = rgb2hsv(frgba.rgb); + + imageStore(out_hsva, pos, vec4(hsv, frgba.w)); + } +} +)"; + +static constexpr char hsva_to_rgba[] = R"( +precision mediump float; + +layout (location = 0) uniform mediump sampler2D in_hsva; //hsva +layout (rgba8, binding = 1) writeonly uniform mediump image2D out_rgba; +layout (location = 2) uniform ivec2 in_img_size; + +vec3 hsv2rgb(vec3 c) +{ + vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0); + vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www); + return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y); +} + +void main() { + ivec2 pos = ivec2(gl_GlobalInvocationID.xy); + int width = in_img_size.x; + int height = in_img_size.y; + + if (pos.x < width && pos.y < height) { + vec4 fhsva = texelFetch(in_hsva, pos, 0); + vec3 rgb = hsv2rgb(fhsva.xyz); + imageStore(out_rgba, pos, vec4(rgb, fhsva.w)); + } +} +)"; + +int Cvt::init(CvtMode mode, const std::string &program_cache_dir) { + cvt_mode_ = mode; + + std::string program_source; + + switch (cvt_mode_) { + case CvtMode::RGBA_TO_YUVA444: + program_source = "rgba_to_yuva444"; + break; + case CvtMode::RGBA_TO_YUV444P: + program_source = "rgba_to_yuv444p"; + break; + case CvtMode::RGBA_TO_YUV420P: + program_source = "rgba_to_yuv420p"; + break; + case CvtMode::YUV420P_TO_RGBA: + program_source = "yuv420p_to_rgba"; + break; + case CvtMode::YUVA444_TO_RGBA: + program_source = "yuva444_to_rgba"; + break; + case CvtMode::YUV444P_TO_RGBA: + program_source = "yuv444p_to_rgba"; + break; + case CvtMode::RGBA_TO_HSVA: + program_source = "rgba_to_hsva"; + break; + case CvtMode::HSVA_TO_RGBA: + program_source = "hsva_to_rgba"; + break; + default: + OPS_LOG_ERROR("Unknown cvt_mode: %d", cvt_mode_); + return BMF_LITE_OpsError; + } + + OPS_CHECK(BMF_LITE_StsOk == GLHelper::instance().build_program( + &program_id_, program_source, "", + program_cache_dir, local_size_, 16, 16, 1), + "get_program_from_cache_dir fail"); + + if (cvt_mode_ != CvtMode::RGBA_TO_HSVA && + cvt_mode_ != CvtMode::HSVA_TO_RGBA) { + cm_loc_ = glGetUniformLocation(program_id_, "cm"); + co_loc_ = glGetUniformLocation(program_id_, "co"); + OPS_CHECK_OPENGL; + } + return BMF_LITE_StsOk; +} + +int Cvt::run(GLuint in_tex, GLuint out_tex, int width, int height, + ColorSpace cs, ColorRange in_cr, ColorRange out_cr) { + if (!(cvt_mode_ == CvtMode::RGBA_TO_YUVA444 || + cvt_mode_ == CvtMode::YUVA444_TO_RGBA || + cvt_mode_ == CvtMode::RGBA_TO_HSVA || + cvt_mode_ == CvtMode::HSVA_TO_RGBA)) { + OPS_LOG_ERROR("cvt_mode: %d", cvt_mode_); + return BMF_LITE_OpsError; + } + + if (width != width_ || height != height_) { + width_ = width; + height_ = height; + auto local_size_x = local_size_[0]; + auto local_size_y = local_size_[1]; + + num_groups_x_ = UPDIV(width_, local_size_x); + num_groups_y_ = UPDIV(height_, local_size_y); + } + if ((cvt_mode_ == CvtMode::RGBA_TO_YUVA444 || + cvt_mode_ == CvtMode::YUVA444_TO_RGBA) && + (cs_ != cs || in_cr_ != in_cr || out_cr_ != out_cr)) { + cs_ = cs; + in_cr_ = in_cr; + out_cr_ = out_cr; + + if (cvt_mode_ == CvtMode::RGBA_TO_YUVA444) { + if (cs == ColorSpace::BT601 && in_cr == ColorRange::FULL && + out_cr == ColorRange::LIMITED) { + cm_ = cm_rgb2yuv_bt601_f2l; + co_ = co_rgb2yuv_bt601_f2l; + } else if (cs == ColorSpace::BT601 && + in_cr == ColorRange::LIMITED && + out_cr == ColorRange::LIMITED) { + cm_ = cm_rgb2yuv_jpeg; + co_ = co_rgb2yuv_jpeg; + } else if (cs == ColorSpace::BT709 && in_cr == ColorRange::FULL && + out_cr == ColorRange::LIMITED) { + cm_ = cm_rgb2yuv_bt709_f2l; + co_ = co_rgb2yuv_bt709_f2l; + } else if (cs == ColorSpace::BT709 && + in_cr == ColorRange::LIMITED && + out_cr == ColorRange::LIMITED) { + cm_ = cm_rgb2yuv_bt709_l2l; + co_ = co_rgb2yuv_bt709_l2l; + } else { + cm_ = cm_rgb2yuv_jpeg; + co_ = co_rgb2yuv_jpeg; + } + } else { + if (cs == ColorSpace::BT601 && in_cr == ColorRange::LIMITED && + out_cr == ColorRange::FULL) { + cm_ = cm_yuv2rgb_bt601_l2f; + co_ = co_yuv2rgb_bt601_l2f; + } else if (cs == ColorSpace::BT601 && + in_cr == ColorRange::LIMITED && + out_cr == ColorRange::LIMITED) { + cm_ = cm_yuv2rgb_jpeg; + co_ = co_yuv2rgb_jpeg; + } else if (cs == ColorSpace::BT709 && + in_cr == ColorRange::LIMITED && + out_cr == ColorRange::FULL) { + cm_ = cm_yuv2rgb_bt709_l2f; + co_ = co_yuv2rgb_bt709_l2f; + } else if (cs == ColorSpace::BT709 && + in_cr == ColorRange::LIMITED && + out_cr == ColorRange::LIMITED) { + cm_ = cm_yuv2rgb_bt709_l2l; + co_ = co_yuv2rgb_bt709_l2l; + } else { + cm_ = cm_yuv2rgb_jpeg; + co_ = co_yuv2rgb_jpeg; + } + } + // set cm/co + glProgramUniformMatrix3fv(program_id_, cm_loc_, 1, GL_TRUE, cm_); + glProgramUniform3fv(program_id_, co_loc_, 1, co_); + OPS_CHECK_OPENGL; + } + + glUseProgram(program_id_); + + int tex_id = 0; + glActiveTexture(GL_TEXTURE0 + tex_id); + glBindTexture(GL_TEXTURE_2D, in_tex); + glUniform1i(0, tex_id); + glBindTexture(GL_TEXTURE_2D, in_tex); + + glBindImageTexture(1, out_tex, 0, GL_FALSE, 0, GL_WRITE_ONLY, + GL_RGBA8); // out: + glUniform2i(2, width, height); + OPS_CHECK_OPENGL; + + glDispatchCompute(num_groups_x_, num_groups_y_, 1); + glMemoryBarrier(GL_SHADER_IMAGE_ACCESS_BARRIER_BIT); + OPS_CHECK_OPENGL; + return BMF_LITE_StsOk; +} + +int Cvt::run(GLuint tex0, GLuint tex1, GLuint tex2, GLuint tex3, int width, + int height, ColorSpace cs, ColorRange in_cr, ColorRange out_cr) { + if (cvt_mode_ == CvtMode::RGBA_TO_YUV420P || + cvt_mode_ == CvtMode::RGBA_TO_YUV444P) { + return run_1to3(tex0, tex1, tex2, tex3, width, height, cs, in_cr, + out_cr); + } else if (cvt_mode_ == CvtMode::YUV420P_TO_RGBA || + cvt_mode_ == CvtMode::YUV444P_TO_RGBA) { + return run_3to1(tex0, tex1, tex2, tex3, width, height, cs, in_cr, + out_cr); + } else { + OPS_LOG_ERROR("invalid: mode: %d", cvt_mode_); + return BMF_LITE_OpsError; + } +} + +int Cvt::run_1to3(GLuint in_tex, GLuint out_y, GLuint out_u, GLuint out_v, + int width, int height, ColorSpace cs, ColorRange in_cr, + ColorRange out_cr, int in_uv_width, int in_uv_height) { + if (!(cvt_mode_ == CvtMode::RGBA_TO_YUV420P || + cvt_mode_ == CvtMode::RGBA_TO_YUV444P)) { + OPS_LOG_ERROR("cvt_mode: %d", cvt_mode_); + return BMF_LITE_OpsError; + } + + if (width != width_ || height != height_) { + width_ = width; + height_ = height; + auto local_size_x = local_size_[0]; + auto local_size_y = local_size_[1]; + + num_groups_x_ = UPDIV(width_, local_size_x); + num_groups_y_ = UPDIV(height_, local_size_y); + if (cvt_mode_ == CvtMode::RGBA_TO_YUV420P) { + num_groups_x_ = UPDIV(width_ >> 1, local_size_x); + num_groups_y_ = UPDIV(height_ >> 1, local_size_y); + } + } + if (cs_ != cs || in_cr_ != in_cr || out_cr_ != out_cr) { + cs_ = cs; + in_cr_ = in_cr; + out_cr_ = out_cr; + + if (cs == ColorSpace::BT601 && in_cr == ColorRange::FULL && + out_cr == ColorRange::LIMITED) { + cm_ = cm_rgb2yuv_bt601_f2l; + co_ = co_rgb2yuv_bt601_f2l; + } else if (cs == ColorSpace::BT601 && in_cr == ColorRange::LIMITED && + out_cr == ColorRange::LIMITED) { + // cm_ = cm_rgb2yuv_bt601_l2l; + // co_ = co_rgb2yuv_bt601_l2l; + cm_ = cm_rgb2yuv_jpeg; + co_ = co_rgb2yuv_jpeg; + } else if (cs == ColorSpace::BT709 && in_cr == ColorRange::FULL && + out_cr == ColorRange::LIMITED) { + cm_ = cm_rgb2yuv_bt709_f2l; + co_ = co_rgb2yuv_bt709_f2l; + } else if (cs == ColorSpace::BT709 && in_cr == ColorRange::LIMITED && + out_cr == ColorRange::LIMITED) { + cm_ = cm_rgb2yuv_bt709_l2l; + co_ = co_rgb2yuv_bt709_l2l; + } else { + cm_ = cm_rgb2yuv_jpeg; + co_ = co_rgb2yuv_jpeg; + } + + // set cm/co + glProgramUniformMatrix3fv(program_id_, cm_loc_, 1, GL_TRUE, cm_); + OPS_CHECK_OPENGL; + glProgramUniform3fv(program_id_, co_loc_, 1, co_); + OPS_CHECK_OPENGL; + } + + glUseProgram(program_id_); + + int tex_id = 0; + glActiveTexture(GL_TEXTURE0 + tex_id); + glBindTexture(GL_TEXTURE_2D, in_tex); + glUniform1i(0, tex_id); + OPS_CHECK_OPENGL; + + glBindImageTexture(1, out_y, 0, GL_FALSE, 0, GL_WRITE_ONLY, + GL_RGBA8); // out: y + glBindImageTexture(2, out_u, 0, GL_FALSE, 0, GL_WRITE_ONLY, + GL_RGBA8); // out: u + glBindImageTexture(3, out_v, 0, GL_FALSE, 0, GL_WRITE_ONLY, + GL_RGBA8); // out: v + + glUniform2i(4, width, height); + + glDispatchCompute(num_groups_x_, num_groups_y_, 1); + glMemoryBarrier(GL_SHADER_IMAGE_ACCESS_BARRIER_BIT); + OPS_CHECK_OPENGL; + return BMF_LITE_StsOk; +} + +int Cvt::run_3to1(GLuint in_y, GLuint in_u, GLuint in_v, GLuint out_tex, + int width, int height, ColorSpace cs, ColorRange in_cr, + ColorRange out_cr, int in_uv_width, int in_uv_height) { + if (!(cvt_mode_ == CvtMode::YUV444P_TO_RGBA || + cvt_mode_ == CvtMode::YUV420P_TO_RGBA)) { + OPS_LOG_ERROR("cvt_mode: %d", cvt_mode_); + return BMF_LITE_OpsError; + } + + if (width != width_ || height != height_) { + width_ = width; + height_ = height; + auto local_size_x = local_size_[0]; + auto local_size_y = local_size_[1]; + + num_groups_x_ = UPDIV(width_, local_size_x); + num_groups_y_ = UPDIV(height_, local_size_y); + if (cvt_mode_ == CvtMode::YUV420P_TO_RGBA) { + num_groups_x_ = UPDIV(width_ >> 1, local_size_x); + num_groups_y_ = UPDIV(height_ >> 1, local_size_y); + } + } + if (cs_ != cs || in_cr_ != in_cr || out_cr_ != out_cr) { + cs_ = cs; + in_cr_ = in_cr; + out_cr_ = out_cr; + if (cs == ColorSpace::BT601 && in_cr == ColorRange::LIMITED && + out_cr == ColorRange::FULL) { + cm_ = cm_yuv2rgb_bt601_l2f; + co_ = co_yuv2rgb_bt601_l2f; + } else if (cs == ColorSpace::BT601 && in_cr == ColorRange::LIMITED && + out_cr == ColorRange::LIMITED) { + cm_ = cm_yuv2rgb_jpeg; + co_ = co_yuv2rgb_jpeg; + } else if (cs == ColorSpace::BT709 && in_cr == ColorRange::LIMITED && + out_cr == ColorRange::FULL) { + cm_ = cm_yuv2rgb_bt709_l2f; + co_ = co_yuv2rgb_bt709_l2f; + } else if (cs == ColorSpace::BT709 && in_cr == ColorRange::LIMITED && + out_cr == ColorRange::LIMITED) { + cm_ = cm_yuv2rgb_bt709_l2l; + co_ = co_yuv2rgb_bt709_l2l; + } else { + cm_ = cm_yuv2rgb_jpeg; + co_ = co_yuv2rgb_jpeg; + } + // set cm/co + glProgramUniformMatrix3fv(program_id_, cm_loc_, 1, GL_TRUE, cm_); + OPS_CHECK_OPENGL; + glProgramUniform3fv(program_id_, co_loc_, 1, co_); + OPS_CHECK_OPENGL; + } + + glUseProgram(program_id_); + + if (cvt_mode_ == CvtMode::YUV420P_TO_RGBA || + cvt_mode_ == CvtMode::YUV444P_TO_RGBA) { + int tex_id = 0; + glActiveTexture(GL_TEXTURE0 + tex_id); + glBindTexture(GL_TEXTURE_2D, in_y); + glUniform1i(0, tex_id); + OPS_CHECK_OPENGL; + + tex_id++; + glActiveTexture(GL_TEXTURE0 + tex_id); + glBindTexture(GL_TEXTURE_2D, in_u); + glUniform1i(1, tex_id); + OPS_CHECK_OPENGL; + + tex_id++; + glActiveTexture(GL_TEXTURE0 + tex_id); + glBindTexture(GL_TEXTURE_2D, in_v); + glUniform1i(2, tex_id); + OPS_CHECK_OPENGL; + + glBindImageTexture(3, out_tex, 0, GL_FALSE, 0, GL_WRITE_ONLY, + GL_RGBA8); // out: rgba + OPS_CHECK_OPENGL; + + glUniform2i(4, width, height); + OPS_CHECK_OPENGL; + } + glDispatchCompute(num_groups_x_, num_groups_y_, 1); + glMemoryBarrier(GL_SHADER_IMAGE_ACCESS_BARRIER_BIT); + OPS_CHECK_OPENGL; + return BMF_LITE_StsOk; +} + +Cvt::~Cvt() { + if (program_id_ != GL_NONE) { + glDeleteProgram(program_id_); + program_id_ = GL_NONE; + } +} + +} // namespace opengl +} // namespace bmf_lite diff --git a/bmf_lite/src/algorithm/modules/operators/opengl/cvt/cvt.h b/bmf_lite/src/algorithm/modules/operators/opengl/cvt/cvt.h new file mode 100644 index 00000000..a23420dc --- /dev/null +++ b/bmf_lite/src/algorithm/modules/operators/opengl/cvt/cvt.h @@ -0,0 +1,156 @@ +/* + * Copyright 2023 Babit Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef _BMF_ALGORITHM_MODULES_OPS_OPENGL_CVT_H_ +#define _BMF_ALGORITHM_MODULES_OPS_OPENGL_CVT_H_ + +#include +#include "opengl/gl_helper.h" + +namespace bmf_lite { +namespace opengl { +class Cvt { + public: + enum class ColorSpace { + UNKNOWN = -1, + BT601 = 0, + BT709 = 1, + }; + + enum class ColorRange { + UNKNOWN = -1, + LIMITED = 0, + FULL = 1, + }; + + enum class CvtMode { + UNKNOWN = -1, + RGBA_TO_YUV420P = 0, + YUV420P_TO_RGBA = 1, + RGBA_TO_YUV444P = 2, + YUV444P_TO_RGBA = 3, + RGBA_TO_YUVA444 = 4, + YUVA444_TO_RGBA = 5, + RGBA_TO_HSVA = 6, + HSVA_TO_RGBA = 7, + }; + + public: + int init(CvtMode mode, const std::string &program_cache_dir); + /** + * @brief rgba convert to yuv444 + a, rgba convert to hsva, hsva convert to + * rgba + * + * @param in_tex + * @param out_tex + * @param width + * @param height + * @param cs N/A for hsva + * @param in_cr N/A for hsva + * @param out_cr N/A for hsva + * @return true + * @return false + */ + int run(GLuint in_tex, GLuint out_tex, int width, int height, + ColorSpace cs = ColorSpace::BT601, + ColorRange in_cr = ColorRange::LIMITED, + ColorRange out_cr = ColorRange::LIMITED); + + /** + * @brief convert yuv420p to rgba or vice versa, yuv444p to rgba or vice + * versa vaild for CvtMode: RGBA_TO_YUV420P, YUV420P_TO_RGBA, + * RGBA_TO_YUV444P, YUV444P_TO_RGBA tex0, tex0, tex1, tex3 order follow the + * rules: + * 1. output texture comes after input texture + * 2. for y/u/v, y first, u second, v last + * @param tex0 + * @param tex1 + * @param tex2 + * @param tex3 + * @param width + * @param height + * @param cs + * @param in_cr + * @param out_cr + * @return true + * @return false + */ + int run(GLuint tex0, GLuint tex1, GLuint tex2, GLuint tex3, int width, + int height, ColorSpace cs, ColorRange in_cr, ColorRange out_cr); + ~Cvt(); + + private: + /** + * @brief rgba convert to yuv420 + * + * @param in_tex + * @param out_y + * @param out_u + * @param out_v + * @param width + * @param height + * @param cs + * @param in_cr + * @param out_cr + * @return true + * @return false + */ + int run_1to3(GLuint in_tex, GLuint out_y, GLuint out_u, GLuint out_v, + int width, int height, ColorSpace cs, ColorRange in_cr, + ColorRange out_cr, int in_uv_width = 0, int in_uv_height = 0); + /** + * @brief yuv420 convert to rgba, yuv444 convert to rgba + * + * @param in_y + * @param in_u + * @param in_v + * @param out_tex + * @param width + * @param height + * @param cs + * @param in_cr + * @param out_cr + * @return true + * @return false + */ + int run_3to1(GLuint in_y, GLuint in_u, GLuint in_v, GLuint out_tex, + int width, int height, ColorSpace cs, ColorRange in_cr, + ColorRange out_cr, int in_uv_width = 0, int in_uv_height = 0); + + private: + CvtMode cvt_mode_ = CvtMode::UNKNOWN; + ColorSpace cs_ = ColorSpace::UNKNOWN; + ColorRange in_cr_ = ColorRange::UNKNOWN; + ColorRange out_cr_ = ColorRange::UNKNOWN; + const float *cm_ = nullptr; + const float *co_ = nullptr; + + int width_ = 0; + int height_ = 0; + + GLuint program_id_ = GL_NONE; + + GLint cm_loc_ = 0; + GLint co_loc_ = 0; + GLint local_size_[3] = {16, 16, 1}; + + GLint num_groups_x_ = 0; + GLint num_groups_y_ = 0; +}; + +} // namespace opengl +} // namespace bmf_lite + +#endif diff --git a/bmf_lite/src/algorithm/modules/operators/opengl/denoise/denoise.cpp b/bmf_lite/src/algorithm/modules/operators/opengl/denoise/denoise.cpp new file mode 100644 index 00000000..2239e003 --- /dev/null +++ b/bmf_lite/src/algorithm/modules/operators/opengl/denoise/denoise.cpp @@ -0,0 +1,226 @@ +/* + * Copyright 2023 Babit Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#include "opengl/denoise/denoise.h" +namespace bmf_lite { +namespace opengl { +static constexpr char denoise_cs[] = R"( +precision mediump float; + +layout (rgba8, binding = 0) writeonly uniform mediump image2D out_rgba; +layout (rgba8, binding = 1) writeonly uniform mediump image2D cur_rgba; +layout (location = 0) uniform mediump sampler2D in_rgba; // rgba8 +#ifdef USE_TEMPORAL_MIX +layout (location = 1) uniform mediump sampler2D pre_rgba_tex; // rgba8 +#define TEMPORAL_SLOPE 15.0 +#endif +layout (location = 2) uniform ivec2 in_size; + +float get_luma(vec4 rgba) { + return dot(vec3(0.299, 0.587, 0.114), rgba.rgb); +} + +float gaussian(float x, float s, float m) { + float scaled = (x - m) / s; + return exp(-0.5 * scaled * scaled); +} + +void main() { + ivec2 pos = ivec2(gl_GlobalInvocationID.xy); + if (pos.x >= in_size.x || pos.y >= in_size.y) { + return; + } + vec4 histogram_v[5][5]; + float n = 0.0; + vec4 sum = vec4(0.0); + + float is = 0.05; + float ss = 1.0; + + int x_m_1 = max(pos.x - 1, 0); + int x_a_1 = min(pos.x + 1, in_size.x - 1); + int x_m_2 = max(pos.x - 2, 0); + int x_a_2 = min(pos.x + 2, in_size.x - 1); + + int y_m_1 = max(pos.y - 1, 0); + int y_a_1 = min(pos.y + 1, in_size.y - 1); + int y_m_2 = max(pos.y - 2, 0); + int y_a_2 = min(pos.y + 2, in_size.y - 1); + + histogram_v[0][0] = texelFetch(in_rgba, ivec2(x_m_2, y_m_2), 0); + histogram_v[1][0] = texelFetch(in_rgba, ivec2(x_m_1, y_m_2), 0); + histogram_v[2][0] = texelFetch(in_rgba, ivec2(pos.x, y_m_2), 0); + histogram_v[3][0] = texelFetch(in_rgba, ivec2(x_a_1, y_m_2), 0); + histogram_v[4][0] = texelFetch(in_rgba, ivec2(x_a_2, y_m_2), 0); + + histogram_v[0][1] = texelFetch(in_rgba, ivec2(x_m_2, y_m_1), 0); + histogram_v[1][1] = texelFetch(in_rgba, ivec2(x_m_1, y_m_1), 0); + histogram_v[2][1] = texelFetch(in_rgba, ivec2(pos.x, y_m_1), 0); + histogram_v[3][1] = texelFetch(in_rgba, ivec2(x_a_1, y_m_1), 0); + histogram_v[4][1] = texelFetch(in_rgba, ivec2(x_a_2, y_m_1), 0); + + histogram_v[0][2] = texelFetch(in_rgba, ivec2(x_m_2, pos.y), 0); + histogram_v[1][2] = texelFetch(in_rgba, ivec2(x_m_1, pos.y), 0); + histogram_v[2][2] = texelFetch(in_rgba, ivec2(pos.x, pos.y), 0); + histogram_v[3][2] = texelFetch(in_rgba, ivec2(x_a_1, pos.y), 0); + histogram_v[4][2] = texelFetch(in_rgba, ivec2(x_a_2, pos.y), 0); + + histogram_v[0][3] = texelFetch(in_rgba, ivec2(x_m_2, y_a_1), 0); + histogram_v[1][3] = texelFetch(in_rgba, ivec2(x_m_1, y_a_1), 0); + histogram_v[2][3] = texelFetch(in_rgba, ivec2(pos.x, y_a_1), 0); + histogram_v[3][3] = texelFetch(in_rgba, ivec2(x_a_1, y_a_1), 0); + histogram_v[4][3] = texelFetch(in_rgba, ivec2(x_a_2, y_a_1), 0); + + histogram_v[0][4] = texelFetch(in_rgba, ivec2(x_m_2, y_a_2), 0); + histogram_v[1][4] = texelFetch(in_rgba, ivec2(x_m_1, y_a_2), 0); + histogram_v[2][4] = texelFetch(in_rgba, ivec2(pos.x, y_a_2), 0); + histogram_v[3][4] = texelFetch(in_rgba, ivec2(x_a_1, y_a_2), 0); + histogram_v[4][4] = texelFetch(in_rgba, ivec2(x_a_2, y_a_2), 0); + + float vc = get_luma(histogram_v[2][2]); + + for (int i = 0; i < 5; i++) { + for (int j = 0; j < 5; j++) { + float w = gaussian(get_luma(histogram_v[i][j]), is, vc) * gaussian(length(vec2(i - 2, j - 2)), ss, 0.0); + n += w; + sum += histogram_v[i][j] * w; + } + } + vec4 result = sum / n; +#ifdef USE_TEMPORAL_MIX + float result_y = get_luma(result); + vec4 pre_rgba = texelFetch(pre_rgba_tex, ivec2(pos.x, pos.y), 0); + float pre_y = get_luma(pre_rgba); + float temporal_weight = max(min(abs(result_y - pre_y) * TEMPORAL_SLOPE, 1.0), 0.0); + result = mix((pre_rgba + result) * 0.5f, result, temporal_weight); +#endif + imageStore(out_rgba, pos, result); + imageStore(cur_rgba, pos, result); +} +)"; + +int Denoise::init(const std::string &program_cache_dir) { + OPS_CHECK(inited_ == false, "already inited"); + + GLint local_size[3]; + + OPS_CHECK(BMF_LITE_StsOk == GLHelper::instance().build_program( + &program_, denoise_cs, + "#define USE_TEMPORAL_MIX 1\n", + program_cache_dir, local_size, 16, 16, 1), + "compile program denoise error"); + OPS_CHECK(BMF_LITE_StsOk == GLHelper::instance().build_program( + &program_no_mix_, denoise_cs, "", + program_cache_dir, local_size, 16, 16, 1), + "compile program denoise_no_mix error"); + + local_size_x_ = local_size[0]; + local_size_y_ = local_size[1]; + + inited_ = true; + return BMF_LITE_StsOk; +} + +int Denoise::run(GLuint in_tex, GLuint out_tex, int width, int height) { + OPS_CHECK(inited_, "please init first"); + if (in_width_ != width || in_height_ != height) { + in_width_ = width; + in_height_ = height; + + if (tex_ping_ != GL_NONE) { + glDeleteTextures(1, &tex_ping_); + tex_ping_ = GL_NONE; + } + tex_ping_ = GLHelper::instance().gen_itex(width, height, GL_RGBA8, + GL_TEXTURE_2D, GL_NEAREST); + + if (tex_pong_ != GL_NONE) { + glDeleteTextures(1, &tex_pong_); + tex_pong_ = GL_NONE; + } + tex_pong_ = GLHelper::instance().gen_itex(width, height, GL_RGBA8, + GL_TEXTURE_2D, GL_NEAREST); + first_run_ = true; + } + GLint groups_x0 = UPDIV(width, local_size_x_); + GLint groups_y0 = UPDIV(height, local_size_y_); + + if (first_run_ == true) { + glUseProgram(program_no_mix_); + + glActiveTexture(GL_TEXTURE0); + glBindTexture(GL_TEXTURE_2D, in_tex); + glUniform1i(0, 0); + + glUniform2i(2, width, height); + + glBindImageTexture(0, out_tex, 0, GL_FALSE, 0, GL_WRITE_ONLY, GL_RGBA8); + glBindImageTexture(1, tex_pong_, 0, GL_FALSE, 0, GL_WRITE_ONLY, + GL_RGBA8); + + glDispatchCompute(groups_x0, groups_y0, 1); + glMemoryBarrier(GL_SHADER_IMAGE_ACCESS_BARRIER_BIT | + GL_TEXTURE_FETCH_BARRIER_BIT); + first_run_ = false; + } else { + glUseProgram(program_); + + glActiveTexture(GL_TEXTURE0); + glBindTexture(GL_TEXTURE_2D, in_tex); + glUniform1i(0, 0); + + glActiveTexture(GL_TEXTURE1); + glBindTexture(GL_TEXTURE_2D, tex_ping_); + glUniform1i(1, 1); + + glUniform2i(2, width, height); + + glBindImageTexture(0, out_tex, 0, GL_FALSE, 0, GL_WRITE_ONLY, GL_RGBA8); + glBindImageTexture(1, tex_pong_, 0, GL_FALSE, 0, GL_WRITE_ONLY, + GL_RGBA8); + + glDispatchCompute(groups_x0, groups_y0, 1); + glMemoryBarrier(GL_SHADER_IMAGE_ACCESS_BARRIER_BIT | + GL_TEXTURE_FETCH_BARRIER_BIT); + } + + // swap tex_ping_ and tex_pong_ + GLuint tmp = tex_ping_; + tex_ping_ = tex_pong_; + tex_pong_ = tmp; + + return 0; +} + +Denoise::~Denoise() { + if (program_ != GL_NONE) { + glDeleteProgram(program_); + program_ = GL_NONE; + } + if (program_no_mix_ != GL_NONE) { + glDeleteProgram(program_no_mix_); + program_no_mix_ = GL_NONE; + } + if (tex_ping_ != GL_NONE) { + glDeleteTextures(1, &tex_ping_); + tex_ping_ = GL_NONE; + } + if (tex_pong_ != GL_NONE) { + glDeleteTextures(1, &tex_pong_); + tex_pong_ = GL_NONE; + } +} +} // namespace opengl +} // namespace bmf_lite diff --git a/bmf_lite/src/algorithm/modules/operators/opengl/denoise/denoise.h b/bmf_lite/src/algorithm/modules/operators/opengl/denoise/denoise.h new file mode 100644 index 00000000..684b5b7a --- /dev/null +++ b/bmf_lite/src/algorithm/modules/operators/opengl/denoise/denoise.h @@ -0,0 +1,64 @@ +/* + * Copyright 2023 Babit Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef _BMF_ALGORITHM_MODULES_OPS_OPENGL_DENOISE_H_ +#define _BMF_ALGORITHM_MODULES_OPS_OPENGL_DENOISE_H_ +#include +#include "opengl/gl_helper.h" + +namespace bmf_lite { +namespace opengl { + +/** + * @brief Denoise using spatial bilateral and temporal mix filter + * + */ +class Denoise { + public: + int init(const std::string &program_cache_dir); + /** + * @brief + * + * @param in_tex texture2D with RGBA8 format and content + * @param out_tex texture2D with RGBA8 format and content + * @param width + * @param height + * @return true + * @return false + */ + int run(GLuint in_tex, GLuint out_tex, int width, int height); + + ~Denoise(); + + private: + GLuint program_ = GL_NONE; + GLuint program_no_mix_ = GL_NONE; + + int in_width_ = 0; + int in_height_ = 0; + + GLint local_size_x_ = 0; + GLint local_size_y_ = 0; + + GLuint tex_ping_ = GL_NONE; + GLuint tex_pong_ = GL_NONE; + + bool first_run_ = true; + bool inited_ = false; +}; // Denoise + +} // namespace opengl +} // namespace bmf_lite +#endif diff --git a/bmf_lite/src/algorithm/modules/operators/opengl/gl_helper.h b/bmf_lite/src/algorithm/modules/operators/opengl/gl_helper.h new file mode 100644 index 00000000..52f81475 --- /dev/null +++ b/bmf_lite/src/algorithm/modules/operators/opengl/gl_helper.h @@ -0,0 +1,379 @@ +/* + * Copyright 2023 Babit Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef _BMF_ALGORITHM_MODULES_OPS_OPENGL_UTILS_H_ +#define _BMF_ALGORITHM_MODULES_OPS_OPENGL_UTILS_H_ + +#include +#include +#include +#include +#include +#include +#include "utils/macros.h" +#include "utils/SHA256.h" + +namespace bmf_lite { +namespace opengl { + +class GLHelper { + private: + GLHelper() = default; + + public: + static GLHelper &instance() { + static GLHelper *g_utils_ins = nullptr; + static std::once_flag s_once_flag; + + std::call_once(s_once_flag, [&]() { g_utils_ins = new GLHelper(); }); + return *g_utils_ins; + } + + GLHelper(const GLHelper &) = delete; + GLHelper &operator=(const GLHelper &) = delete; + + public: + int build_program(GLuint *program_id, const std::string &cs, + const std::string &custom_head, + const std::string &program_cache_dir, GLint *local_size, + GLint local_x, GLint local_y, GLint local_z) { + OPS_CHECK(local_size != nullptr, "local_size is nullptr"); + + std::string header; + OPS_CHECK(BMF_LITE_StsOk == + get_local_size_and_header(local_size, header, custom_head, + local_x, local_y, local_z), + "gen_local_size_and_header error"); + std::string complete_source = header + cs; + + SHA256 sha256; + sha256.update(complete_source); + std::string program_cache_name = SHA256::toString(sha256.digest()); + + if (program_cache_dir.empty()) { + OPS_CHECK(BMF_LITE_StsOk == build_program_with_source( + complete_source, program_id), + "build_program error"); + } else { + std::string program_cache_file_path = + program_cache_dir + "/" + program_cache_name; + if (!load_program(program_cache_file_path, program_id, + local_size)) { + OPS_LOG_WARN("load_program from: %s fail", + program_cache_file_path.c_str()); + OPS_CHECK(BMF_LITE_StsOk == build_program_with_source( + complete_source, program_id), + "load then build_program error"); + if (BMF_LITE_StsOk != + save_program(program_cache_file_path, *program_id, + local_size[0], local_size[1], local_size[2])) { + OPS_LOG_WARN("save_program to %s fail", + program_cache_name.c_str()); + } + } + } + return BMF_LITE_StsOk; + } + + GLuint gen_itex(GLsizei width, GLsizei height, GLenum internalformat, + GLenum target, GLint min_mag_filter) { + GLuint tex_id; + glGenTextures(1, &tex_id); + glBindTexture(target, tex_id); + glTexParameteri(target, GL_TEXTURE_MIN_FILTER, min_mag_filter); + glTexParameteri(target, GL_TEXTURE_MAG_FILTER, min_mag_filter); + glTexParameteri(target, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); + glTexParameteri(target, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); + glTexParameteri(target, GL_TEXTURE_WRAP_R, GL_CLAMP_TO_EDGE); + glTexStorage2D(target, 1, internalformat, width, height); + return tex_id; + } + + GLuint gen_tex(GLsizei width, GLsizei height, GLenum internalformat, + GLenum format, GLenum type, const void *data, GLenum target, + GLint min_mag_filter) { + GLuint tex_id; + glGenTextures(1, &tex_id); + glBindTexture(target, tex_id); + glTexParameteri(target, GL_TEXTURE_MIN_FILTER, min_mag_filter); + glTexParameteri(target, GL_TEXTURE_MAG_FILTER, min_mag_filter); + glTexParameteri(target, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); + glTexParameteri(target, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); + glTexParameteri(target, GL_TEXTURE_WRAP_R, GL_CLAMP_TO_EDGE); + glTexImage2D(target, 0, internalformat, width, height, 0, format, type, + data); + return tex_id; + } + + private: + int get_local_size_and_header(GLint *local_size, std::string &output_header, + const std::string &custom_head, GLint local_x, + GLint local_y, GLint local_z) { + std::ostringstream shader_common_head; + shader_common_head << "#version 310 es\n"; + if (!custom_head.empty()) { + shader_common_head << custom_head << "\n"; + } + + GLint tmp_local_x{0}, tmp_local_y{0}, tmp_local_z{0}; + + if (local_x == 0 && local_y != 0 && local_z != 0) { + int x{256}; + while (x * local_y * local_z > max_total_local_size() || + x > max_local_size_x()) { + x /= 2; + } + tmp_local_x = x; + tmp_local_y = local_y; + tmp_local_z = local_z; + } else if (local_x == 0 && local_y == 0 && local_z != 0) { + int x{16}, y{16}; + while (x * y * local_z > max_total_local_size() || + x > max_local_size_x() || y > max_local_size_y()) { + if (x > y) { + x /= 2; + } else { + y /= 2; + } + } + + tmp_local_x = x; + tmp_local_y = y; + tmp_local_z = local_z; + } else if (local_x == 0 && local_y == 0 & local_z == 0) { + int x{8}, y{8}, z{8}; + while (x * y * z > max_total_local_size() || + x > max_local_size_x() || y > max_local_size_y() || + z > max_local_size_z()) { + if (x > y) { + x /= 2; + } else if (y > z) { + y /= 2; + } else { + z /= 2; + } + } + + tmp_local_x = x; + tmp_local_y = y; + tmp_local_z = z; + } else if (local_x != 0 && local_y != 0 && local_z != 0) { + tmp_local_x = local_x; + tmp_local_y = local_y; + tmp_local_z = local_z; + } else { + OPS_LOG_ERROR( + "invalid local size: local_x:%d, local_y%d, local_z:%d", + local_x, local_y, local_z); + return BMF_LITE_OpsError; + } + + OPS_CHECK( + tmp_local_x * tmp_local_y * tmp_local_z <= max_total_local_size() && + tmp_local_x <= max_local_size_x() && + tmp_local_y <= max_local_size_y() && + tmp_local_z <= max_local_size_z() && tmp_local_x > 0 && + tmp_local_y > 0 && tmp_local_z > 0, + "invalid local size with input local_x:%d, local_y:%d, local_z:%d", + local_x, local_y, local_z); + + local_size[0] = tmp_local_x; + local_size[1] = tmp_local_y; + local_size[2] = tmp_local_z; + + shader_common_head << "layout (local_size_x = " << tmp_local_x << ","; + shader_common_head << "local_size_y = " << tmp_local_y << ","; + shader_common_head << "local_size_z =" << tmp_local_z << ") in;\n"; + + output_header = shader_common_head.str(); + return BMF_LITE_StsOk; + } + + int load_program(const std::string &program_cache_file_path, + GLuint *program_id, GLint *local_size) { + std::ifstream ifile(program_cache_file_path); + if (!ifile) { + return BMF_LITE_OpsError; + } + std::stringstream buffer; + buffer << ifile.rdbuf(); + ifile.close(); + + std::string file_content_str = buffer.str(); + size_t bin_size = file_content_str.size(); + const auto local_xyz_size = 3 * sizeof(GLint); + const auto binary_format_size = sizeof(GLenum); + if (bin_size < local_xyz_size + binary_format_size) { + OPS_LOG_ERROR("invalid bin_size: %zu", bin_size); + return BMF_LITE_OpsError; + } + const char *file_content_char_ptr = file_content_str.c_str(); + + memcpy(local_size, file_content_char_ptr, local_xyz_size); + + GLenum *binary_format_ptr = + (GLenum *)(file_content_char_ptr + local_xyz_size); + void *binary = (void *)(file_content_char_ptr + local_xyz_size + + binary_format_size); + + GLsizei length = bin_size - local_xyz_size - binary_format_size; + *program_id = glCreateProgram(); + glProgramBinary(*program_id, *binary_format_ptr, binary, length); + OPS_CHECK_OPENGL; + + GLint linked = 0; + glGetProgramiv(*program_id, GL_LINK_STATUS, &linked); + if (!linked) { + OPS_LOG_ERROR("link error"); + return BMF_LITE_OpsError; + } + return BMF_LITE_StsOk; + } + + int save_program(const std::string &program_cache_file_path, + GLuint program_id, GLint local_x, GLint local_y, + GLint local_z) { + std::ofstream ofile(program_cache_file_path); + if (!ofile) { + return BMF_LITE_OpsError; + } + + GLenum binary_foramt = 0; + // GLsizei length; + GLint buf_size = 0; + void *binary = nullptr; + + glGetProgramiv(program_id, GL_PROGRAM_BINARY_LENGTH, &buf_size); + if (buf_size <= 0) { + return BMF_LITE_OpsError; + } + std::vector bianry_vec(buf_size); + binary = bianry_vec.data(); + + glGetProgramBinary(program_id, buf_size, NULL, &binary_foramt, binary); + OPS_CHECK_OPENGL; + + // OPS_LOG_ERROR("binary size: %d binary_foramt: %d", buf_size, + // binary_foramt); + + std::vector binary_chars(sizeof(GLint) * 3 + sizeof(GLenum) + + buf_size); + std::memcpy(binary_chars.data(), &local_x, sizeof(GLint)); + std::memcpy(binary_chars.data() + sizeof(GLint), &local_y, + sizeof(GLint)); + std::memcpy(binary_chars.data() + sizeof(GLint) * 2, &local_z, + sizeof(GLint)); + std::memcpy(binary_chars.data() + sizeof(GLint) * 3, &binary_foramt, + sizeof(GLenum)); + std::memcpy(binary_chars.data() + sizeof(GLint) * 3 + sizeof(GLenum), + binary, buf_size); + + std::string binary_str(binary_chars.begin(), binary_chars.end()); + ofile << binary_str; + ofile.close(); + return BMF_LITE_StsOk; + } + + int build_program_with_source(const std::string &source, + GLuint *program_id) { + GLuint shader_id = glCreateShader(GL_COMPUTE_SHADER); + + auto source_c_str = source.c_str(); + glShaderSource(shader_id, 1, &source_c_str, NULL); + glCompileShader(shader_id); + + GLint status; + glGetShaderiv(shader_id, GL_COMPILE_STATUS, &status); + if (!status) { + int len = 0; + glGetShaderiv(shader_id, GL_INFO_LOG_LENGTH, &len); + if (0 >= len) { + glGetShaderInfoLog(shader_id, 0, &len, NULL); + } + char *buffer = new char[len + 1]; + glGetShaderInfoLog(shader_id, len, NULL, buffer); + buffer[len] = 0; + OPS_LOG_ERROR("compile log: %s", buffer); + delete[] buffer; + glDeleteShader(shader_id); + return BMF_LITE_OpsError; + } + *program_id = glCreateProgram(); + + glAttachShader(*program_id, shader_id); + glLinkProgram(*program_id); + + GLint linked; + glGetProgramiv(*program_id, GL_LINK_STATUS, &linked); + if (!linked) { + GLsizei len; + glGetProgramiv(*program_id, GL_INFO_LOG_LENGTH, &len); + if (len <= 0) { + glGetProgramInfoLog(*program_id, 0, &len, NULL); + } + if (len > 0) { + char *buffer = new char[len + 1]; + buffer[len] = '\0'; + glGetProgramInfoLog(*program_id, len, NULL, buffer); + OPS_LOG_ERROR("link log: %s", buffer); + delete[] buffer; + glDeleteShader(shader_id); + return BMF_LITE_OpsError; + } + } + glDeleteShader(shader_id); + OPS_CHECK_OPENGL; + return BMF_LITE_StsOk; + } + + GLint max_local_size_x() { + if (max_local_size_x_ == 0) { + glGetIntegeri_v(GL_MAX_COMPUTE_WORK_GROUP_SIZE, 0, + &max_local_size_x_); + } + return max_local_size_x_; + } + GLint max_local_size_y() { + if (max_local_size_y_ == 0) { + glGetIntegeri_v(GL_MAX_COMPUTE_WORK_GROUP_SIZE, 1, + &max_local_size_y_); + } + return max_local_size_y_; + } + GLint max_local_size_z() { + if (max_local_size_z_ == 0) { + glGetIntegeri_v(GL_MAX_COMPUTE_WORK_GROUP_SIZE, 2, + &max_local_size_z_); + } + return max_local_size_z_; + } + GLint max_total_local_size() { + if (max_total_local_size_ == 0) { + glGetIntegerv(GL_MAX_COMPUTE_WORK_GROUP_INVOCATIONS, + &max_total_local_size_); + } + return max_total_local_size_; + } + + private: + GLint max_local_size_x_ = 0; + GLint max_local_size_y_ = 0; + GLint max_local_size_z_ = 0; + GLint max_total_local_size_ = 0; +}; // class utils +} // namespace opengl +} // namespace bmf_lite + +#endif \ No newline at end of file diff --git a/bmf_lite/src/algorithm/modules/operators/opengl/normalize/normalize.cpp b/bmf_lite/src/algorithm/modules/operators/opengl/normalize/normalize.cpp new file mode 100644 index 00000000..6816d471 --- /dev/null +++ b/bmf_lite/src/algorithm/modules/operators/opengl/normalize/normalize.cpp @@ -0,0 +1,78 @@ +/* + * Copyright 2023 Babit Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#include "normalize.h" + +namespace bmf_lite { +namespace opengl { +static constexpr char normalize_src[] = R"( +precision mediump float; +precision mediump int; +layout (location = 0) uniform mediump sampler2D in_tex; +layout (rgba8, binding = 0) writeonly uniform mediump image2D out_img; +layout (location = 1) uniform ivec2 w_h; +layout (location = 2) uniform vec2 params; //(mean, std_rev) +void main() { + ivec2 pos = ivec2(gl_GlobalInvocationID.xy); + if (pos.x < w_h.x && pos.y < w_h.y) { + vec4 rgba = texelFetch(in_tex, pos, 0); + vec3 rgb_normalize = (rgba.rgb - params.x) * params.y; + imageStore(out_img, pos, vec4(rgb_normalize, rgba.a)); + } +} +)"; + +int Normalize::init(const std::string &program_cache_dir) { + OPS_CHECK(!inited_, "already inited"); + std::string program_source = normalize_src; + OPS_CHECK(BMF_LITE_StsOk == GLHelper::instance().build_program( + &program_id_, program_source, "", + program_cache_dir, local_size_, 16, 16, 1), + "get_program_from_cache_dir fail"); + inited_ = true; + return BMF_LITE_StsOk; +} + +int Normalize::run(GLuint in_tex, GLuint out_tex, int width, int height, + float mean, float std) { + OPS_CHECK(inited_, "init first"); + auto num_groups_x = UPDIV(width, local_size_[0]); + auto num_groups_y = UPDIV(height, local_size_[1]); + + glUseProgram(program_id_); + + int tex_id = 0; + glActiveTexture(GL_TEXTURE0 + tex_id); + glBindTexture(GL_TEXTURE_2D, in_tex); + glUniform1i(0, tex_id); + + glBindImageTexture(0, out_tex, 0, GL_FALSE, 0, GL_WRITE_ONLY, GL_RGBA8); + + glUniform2i(1, width, height); + glUniform2f(2, mean, 1.0f / std); + + glDispatchCompute(num_groups_x, num_groups_y, 1); + glMemoryBarrier(GL_SHADER_IMAGE_ACCESS_BARRIER_BIT); + return BMF_LITE_StsOk; +} + +Normalize::~Normalize() { + if (program_id_ != GL_NONE) { + glDeleteProgram(program_id_); + program_id_ = GL_NONE; + } +} +} // namespace opengl +} // namespace bmf_lite diff --git a/bmf_lite/src/algorithm/modules/operators/opengl/normalize/normalize.h b/bmf_lite/src/algorithm/modules/operators/opengl/normalize/normalize.h new file mode 100644 index 00000000..117edf7d --- /dev/null +++ b/bmf_lite/src/algorithm/modules/operators/opengl/normalize/normalize.h @@ -0,0 +1,57 @@ +/* + * Copyright 2023 Babit Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef _BMF_ALGORITHM_MODULES_OPS_OPENGL_NORMALIZE_H_ +#define _BMF_ALGORITHM_MODULES_OPS_OPENGL_NORMALIZE_H_ +#include +#include "opengl/gl_helper.h" + +namespace bmf_lite { +namespace opengl { + +/** + * @brief Normalize + * + */ +class Normalize { + public: + int init(const std::string &program_cache_dir); + /** + * @brief + * + * @param in_tex + * @param out_tex + * @param width + * @param height + * @param mean + * @param std + * @return error code + */ + int run(GLuint in_tex, GLuint out_tex, int width, int height, float mean, + float std); + + ~Normalize(); + + private: + GLuint program_id_ = GL_NONE; + + GLint local_size_[3] = {16, 16, 1}; + + bool inited_ = false; +}; // Normalize + +} // namespace opengl +} // namespace bmf_lite +#endif diff --git a/bmf_lite/src/algorithm/modules/operators/opengl/resize/resize.cpp b/bmf_lite/src/algorithm/modules/operators/opengl/resize/resize.cpp new file mode 100644 index 00000000..174b3071 --- /dev/null +++ b/bmf_lite/src/algorithm/modules/operators/opengl/resize/resize.cpp @@ -0,0 +1,122 @@ +/* + * Copyright 2023 Babit Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#include "resize.h" + +namespace bmf_lite { +namespace opengl { +static constexpr char resize_src[] = R"( +precision mediump float; +layout (location = 0) uniform mediump sampler2D in_img; +layout (rgba8, binding = 1) writeonly uniform mediump image2D out_img; +layout (location=2) uniform ivec2 in_img_size; +layout (location=3) uniform ivec2 out_img_size; +void main() { + ivec2 pos = ivec2(gl_GlobalInvocationID.xy); + int dst_width = out_img_size.x; + int dst_height = out_img_size.y; + int src_width = in_img_size.x; + int src_height = in_img_size.y; + if (pos.x < dst_width && pos.y < dst_height) { + float scale_x = float(src_width) / float(dst_width); + float scale_y = float(src_height) / float(dst_height); + float raw_in_x = (float(pos.x)+0.5f)*scale_x-0.5f; + float raw_in_y = (float(pos.y)+0.5f)*scale_y-0.5f; + int in_x = int(raw_in_x); + int in_y = int(raw_in_y); + float u = raw_in_x - float(in_x); + float v = raw_in_y - float(in_y); + if(in_x<0) { + in_x = 0; + u = 0.f; + } + if(in_y<0) { + in_y = 0; + v = 0.f; + } + if (in_x + 1 < src_width && in_y + 1 < src_height) { + vec4 pixel_one = texelFetch(in_img, ivec2(in_x, in_y), 0); + vec4 pixel_two = texelFetch(in_img, ivec2(in_x + 1, in_y), 0); + vec4 pixel_three = texelFetch(in_img, ivec2(in_x, in_y + 1), 0); + vec4 pixel_four = texelFetch(in_img, ivec2(in_x + 1, in_y + 1), 0); + + vec3 rgb0 = vec3(pixel_one.xyz); + vec3 rgb1 = vec3(pixel_two.xyz); + vec3 rgb2 = vec3(pixel_three.xyz); + vec3 rgb3 = vec3(pixel_four.xyz); + vec3 pixel_rgb = (1.f - u) * (1.f - v) * rgb0 + (1.f - v) * u * rgb1 + (1.f - u) * v * rgb2 + u * v *rgb3 ; + vec3 rgb = clamp(vec3(pixel_rgb), 0.f, 255.f); + imageStore(out_img, pos, vec4(rgb, 255.f)); + } else { + vec4 pixel_rgb = texelFetch(in_img, ivec2(in_x, in_y), 0); + vec3 rgb = clamp(vec3(pixel_rgb.xyz), 0.f, 255.f); + imageStore(out_img, pos, vec4(rgb, 255.f)); + } + } +} +)"; + +int Resize::init(const std::string &program_cache_dir) { + std::string program_source = resize_src; + OPS_CHECK(BMF_LITE_StsOk == GLHelper::instance().build_program( + &program_id_, program_source, "", + program_cache_dir, local_size_, 16, 16, 1), + "get_program_from_cache_dir fail"); + OPS_CHECK_OPENGL; + inited_ = true; + return BMF_LITE_StsOk; +} + +int Resize::run(GLuint in_rgba, GLuint out_rgba, int in_width, int in_height, + int out_width, int out_height) { + OPS_CHECK(inited_, "init first"); + if (out_width != width_ || out_height != height_) { + width_ = out_width; + height_ = out_height; + auto local_size_x = local_size_[0]; + auto local_size_y = local_size_[1]; + + num_groups_x_ = UPDIV(width_, local_size_x); + num_groups_y_ = UPDIV(height_, local_size_y); + } + glUseProgram(program_id_); + if (in_width == 0 || in_height == 0) { + OPS_LOG_DEBUG("in_width: %d, in_height: %d\n", in_width, in_height); + return BMF_LITE_StsBadArg; + } + int tex_id = 0; + glActiveTexture(GL_TEXTURE0 + tex_id); + glBindTexture(GL_TEXTURE_2D, in_rgba); + glUniform1i(0, tex_id); + OPS_CHECK_OPENGL; + glBindImageTexture(1, out_rgba, 0, GL_FALSE, 0, GL_WRITE_ONLY, GL_RGBA8); + OPS_CHECK_OPENGL; + glUniform2i(2, in_width, in_height); + glUniform2i(3, out_width, out_height); + OPS_CHECK_OPENGL; + glDispatchCompute(num_groups_x_, num_groups_y_, 1); + glMemoryBarrier(GL_SHADER_IMAGE_ACCESS_BARRIER_BIT); + OPS_CHECK_OPENGL; + return BMF_LITE_StsOk; +} + +Resize::~Resize() { + if (program_id_ != GL_NONE) { + glDeleteProgram(program_id_); + program_id_ = GL_NONE; + } +} +} // namespace opengl +} // namespace bmf_lite diff --git a/bmf_lite/src/algorithm/modules/operators/opengl/resize/resize.h b/bmf_lite/src/algorithm/modules/operators/opengl/resize/resize.h new file mode 100644 index 00000000..99b27ad8 --- /dev/null +++ b/bmf_lite/src/algorithm/modules/operators/opengl/resize/resize.h @@ -0,0 +1,84 @@ +/* + * Copyright 2023 Babit Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef _BMF_ALGORITHM_MODULES_OPS_OPENGL_RESIZE_H_ +#define _BMF_ALGORITHM_MODULES_OPS_OPENGL_RESIZE_H_ +#include +#include "opengl/gl_helper.h" + +namespace bmf_lite { +namespace opengl { + +/** + * @brief Resize + * + */ +class Resize { + public: + enum class ColorSpace { + UNKNOW = -1, + BT601 = 0, + BT709 = 1, + }; + + enum class ColorRange { + UNKNOW = -1, + LIMITED = 0, + FULL = 1, + }; + + public: + int init(const std::string &program_cache_dir = ""); + /** + * @brief rgba convert to yuv444 + a + * + * @param in_rgba + * @param out_rgba + * @param in_width + * @param in_height + * @param out_width + * @param out_height + * @return error code + */ + int run(GLuint in_rgba, GLuint out_rgba, int in_width, int in_height, + int out_width, int out_height); + ~Resize(); + + private: + ColorSpace cs_ = ColorSpace::UNKNOW; + ColorRange in_cr_ = ColorRange::UNKNOW; + ColorRange out_cr_ = ColorRange::UNKNOW; + + float *cm_ = nullptr; + float *co_ = nullptr; + + int width_ = 0; + int height_ = 0; + + GLuint program_id_ = GL_NONE; + + GLint cm_loc_ = 0; + GLint co_loc_ = 0; + GLint local_size_[3] = {16, 16, 1}; + + GLint num_groups_x_ = 0; + GLint num_groups_y_ = 0; + + bool inited_ = false; +}; + +} // namespace opengl +} // namespace bmf_lite +#endif diff --git a/bmf_lite/src/algorithm/modules/operators/opengl/rotate/rotate.cpp b/bmf_lite/src/algorithm/modules/operators/opengl/rotate/rotate.cpp new file mode 100644 index 00000000..70bf1c0f --- /dev/null +++ b/bmf_lite/src/algorithm/modules/operators/opengl/rotate/rotate.cpp @@ -0,0 +1,90 @@ +/* + * Copyright 2023 Babit Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#include "rotate.h" + +namespace bmf_lite { +namespace opengl { +static constexpr char rotate_src[] = R"( +precision mediump float; +precision mediump int; + +layout (location = 0) uniform mediump sampler2D in_tex; +layout (rgba8, binding = 0) writeonly uniform mediump image2D out_img; +layout (location = 1) uniform ivec2 w_h; +layout (location = 2) uniform int degree; +void main() { + ivec2 pos = ivec2(gl_GlobalInvocationID.xy); + if (pos.x < w_h.x && pos.y < w_h.y) { + vec4 rgba = texelFetch(in_tex, pos, 0); + ivec2 dst_pos = pos; + if (degree == 90) { + dst_pos.x = w_h.y - pos.y - 1; + dst_pos.y = pos.x; + } else if (degree == 180) { + dst_pos.x = w_h.x - pos.x - 1; + dst_pos.y = w_h.y - pos.y - 1; + } else if (degree == 270) { + dst_pos.x = pos.y; + dst_pos.y = w_h.x - pos.x - 1; + } + imageStore(out_img, dst_pos, rgba); + } +})"; + +int Rotate::init(const std::string &program_cache_dir) { + OPS_CHECK(!inited_, "already inited"); + std::string program_source = rotate_src; + OPS_CHECK(BMF_LITE_StsOk == GLHelper::instance().build_program( + &program_id_, program_source, "", + program_cache_dir, local_size_, 16, 16, 1), + "get_program_from_cache_dir fail"); + OPS_CHECK_OPENGL; + + inited_ = true; + return BMF_LITE_StsOk; +} + +int Rotate::run(GLuint in_tex, GLuint out_tex, int width, int height, + int angle) { + OPS_CHECK(inited_, "init first"); + auto num_groups_x = UPDIV(width, local_size_[0]); + auto num_groups_y = UPDIV(height, local_size_[1]); + + glUseProgram(program_id_); + + int tex_id = 0; + glActiveTexture(GL_TEXTURE0 + tex_id); + glBindTexture(GL_TEXTURE_2D, in_tex); + glUniform1i(0, tex_id); + + glBindImageTexture(0, out_tex, 0, GL_FALSE, 0, GL_WRITE_ONLY, GL_RGBA8); + + glUniform2i(1, width, height); + glUniform1i(2, angle); + + glDispatchCompute(num_groups_x, num_groups_y, 1); + glMemoryBarrier(GL_SHADER_IMAGE_ACCESS_BARRIER_BIT); + return BMF_LITE_StsOk; +} + +Rotate::~Rotate() { + if (program_id_ != GL_NONE) { + glDeleteProgram(program_id_); + program_id_ = GL_NONE; + } +} +} // namespace opengl +} // namespace bmf_lite diff --git a/bmf_lite/src/algorithm/modules/operators/opengl/rotate/rotate.h b/bmf_lite/src/algorithm/modules/operators/opengl/rotate/rotate.h new file mode 100644 index 00000000..3ca1f44c --- /dev/null +++ b/bmf_lite/src/algorithm/modules/operators/opengl/rotate/rotate.h @@ -0,0 +1,55 @@ +/* + * Copyright 2023 Babit Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef _BMF_ALGORITHM_MODULES_OPS_OPENGL_ROTATE_H_ +#define _BMF_ALGORITHM_MODULES_OPS_OPENGL_ROTATE_H_ +#include +#include "opengl/gl_helper.h" + +namespace bmf_lite { +namespace opengl { + +/** + * @brief Rotate + * + */ +class Rotate { + public: + int init(const std::string &program_cache_dir); + /** + * @brief + * + * @param in_tex + * @param out_tex + * @param width + * @param height + * @param angle the clock-wise rotate degree, 90, 180, 270 are supported + * @return error code + */ + int run(GLuint in_tex, GLuint out_tex, int width, int height, int angle); + + ~Rotate(); + + private: + GLuint program_id_ = GL_NONE; + + GLint local_size_[3] = {16, 16, 1}; + + bool inited_ = false; +}; + +} // namespace opengl +} // namespace bmf_lite +#endif diff --git a/bmf_lite/src/algorithm/modules/operators/opengl/sr/sr.cpp b/bmf_lite/src/algorithm/modules/operators/opengl/sr/sr.cpp new file mode 100644 index 00000000..107f1328 --- /dev/null +++ b/bmf_lite/src/algorithm/modules/operators/opengl/sr/sr.cpp @@ -0,0 +1,479 @@ +/* + * MIT License + * + * Copyright (c) 2019 bloc97 + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +#include "opengl/sr/sr.h" + +namespace bmf_lite { +namespace opengl { +static constexpr char shader_pass0[] = R"( +//!DESC Anime4K-v3.2-Upscale-CNN-x2-(S)-Conv-4x3x3x3 +//!HOOK MAIN +//!BIND MAIN +//!SAVE conv2d_tf +//!WIDTH MAIN.w +//!HEIGHT MAIN.h +//!COMPONENTS 4 +//!WHEN OUTPUT.w MAIN.w / 1.200 > OUTPUT.h MAIN.h / 1.200 > * + +precision mediump float; + +layout (rgba16f, binding = 0) writeonly uniform mediump image2D out_rgba; + +layout (location = 0) uniform mediump sampler2D in_rgba; // rgba8 +layout (location = 1) uniform ivec2 in_size; + +void main() { + ivec2 pos = ivec2(gl_GlobalInvocationID.xy); + int x_m1 = max(pos.x-1, 0); + int x_a1 = min(pos.x+1, in_size.x-1); + int y_m1 = max(pos.y-1, 0); + int y_a1 = min(pos.y+1, in_size.y-1); + + vec4 in00 = texelFetch(in_rgba, ivec2(x_m1, y_m1), 0); + vec4 in01 = texelFetch(in_rgba, ivec2(pos.x, y_m1), 0); + vec4 in02 = texelFetch(in_rgba, ivec2(x_a1, y_m1), 0); + vec4 in10 = texelFetch(in_rgba, ivec2(x_m1, pos.y), 0); + vec4 in11 = texelFetch(in_rgba, ivec2(pos.x, pos.y), 0); + vec4 in12 = texelFetch(in_rgba, ivec2(x_a1, pos.y), 0); + vec4 in20 = texelFetch(in_rgba, ivec2(x_m1, y_a1), 0); + vec4 in21 = texelFetch(in_rgba, ivec2(pos.x, y_a1), 0); + vec4 in22 = texelFetch(in_rgba, ivec2(x_a1, y_a1), 0); + + vec4 result = mat4(-0.0057322932, 0.12928207, -0.056848746, 0.18680117, -0.0306273, 0.25602463, 0.053723164, 0.20419341, 0.0018709862, 0.022848232, -0.04105527, 0.10169034, 0.0, 0.0, 0.0, 0.0) * in00; + result += mat4(0.009471417, -0.12957802, 0.096014425, 0.21836184, 0.00021601951, -0.22997683, 0.23666254, 0.41192335, 0.021762101, 0.0047863554, 0.008233427, 0.108514786, 0.0, 0.0, 0.0, 0.0) * in10; + result += mat4(-0.01156376, -0.18988979, 0.04614705, -0.044767227, 0.01050636, -0.26426336, 0.23741047, 0.0027636609, -0.027718676, -0.14202335, -0.016650287, -0.06637125, 0.0, 0.0, 0.0, 0.0) * in20; + result += mat4(0.057809234, -0.11033858, 0.056533534, -0.06292466, 0.13880666, -0.18710336, 0.2441031, -0.25326246, 0.0032683122, -0.026437074, 0.0023248852, 7.640766e-05, 0.0, 0.0, 0.0, 0.0) * in01; + result += mat4(-0.49110603, 0.4429004, -0.44015464, -0.41174838, -0.87738293, 0.7808468, -1.0929365, -0.59699076, -0.18409836, 0.185138, -0.11773224, -0.17097276, 0.0, 0.0, 0.0, 0.0) * in11; + result += mat4(0.10580959, -0.055947904, -0.03431237, -0.080236495, 0.14862584, -0.15393938, -0.18872876, -0.3170681, 0.03559387, -0.003990826, 0.021298569, 0.012844483, 0.0, 0.0, 0.0, 0.0) * in21; + result += mat4(-0.040715586, -0.25781113, 0.08896714, -0.1225879, -0.15790503, -0.54010904, 0.29588607, 0.10401059, 0.003413123, -0.108357325, 0.0112870345, -0.11888622, 0.0, 0.0, 0.0, 0.0) * in02; + result += mat4(0.0049315444, 0.02376202, -0.08224771, 0.121118225, -0.041512914, -0.027994309, -0.585988, -0.069672115, -0.017247835, 0.0056576864, 0.04319012, 0.055003505, 0.0, 0.0, 0.0, 0.0) * in12; + result += mat4(0.37521392, 0.15916082, 0.059708964, 0.19046007, 0.8120325, 0.38343868, 0.3436578, 0.5287958, 0.16570656, 0.06957687, 0.014022592, 0.074799836, 0.0, 0.0, 0.0, 0.0) * in22; + result += vec4(-0.01050964, -0.00939481, 0.17684458, 0.027366742); + + imageStore(out_rgba, pos, result); +} +)"; + +static constexpr char shader_pass1[] = R"( +//!DESC Anime4K-v3.2-Upscale-CNN-x2-(S)-Conv-4x3x3x8 +//!HOOK MAIN +//!BIND conv2d_tf +//!SAVE conv2d_1_tf +//!WIDTH conv2d_tf.w +//!HEIGHT conv2d_tf.h +//!COMPONENTS 4 +//!WHEN OUTPUT.w MAIN.w / 1.200 > OUTPUT.h MAIN.h / 1.200 > * + +precision mediump float; + +layout (rgba16f, binding = 0) writeonly uniform mediump image2D out_rgba; // rgba16f + +layout (location = 0) uniform mediump sampler2D in_rgba; // rgba16f +layout (location = 1) uniform ivec2 in_size; + +void main() { + ivec2 pos = ivec2(gl_GlobalInvocationID.xy); + int x_m1 = max(pos.x-1, 0); + int x_a1 = min(pos.x+1, in_size.x-1); + int y_m1 = max(pos.y-1, 0); + int y_a1 = min(pos.y+1, in_size.y-1); + + vec4 in00 = texelFetch(in_rgba, ivec2(x_m1, y_m1), 0); + vec4 in01 = texelFetch(in_rgba, ivec2(pos.x, y_m1), 0); + vec4 in02 = texelFetch(in_rgba, ivec2(x_a1, y_m1), 0); + vec4 in10 = texelFetch(in_rgba, ivec2(x_m1, pos.y), 0); + vec4 in11 = texelFetch(in_rgba, ivec2(pos.x, pos.y), 0); + vec4 in12 = texelFetch(in_rgba, ivec2(x_a1, pos.y), 0); + vec4 in20 = texelFetch(in_rgba, ivec2(x_m1, y_a1), 0); + vec4 in21 = texelFetch(in_rgba, ivec2(pos.x, y_a1), 0); + vec4 in22 = texelFetch(in_rgba, ivec2(x_a1, y_a1), 0); + + vec4 result = mat4(-0.011029496, 0.05866063, -0.09460646, -0.017664742, -0.022488879, 0.18384217, -0.00397663, -0.064733066, 0.08466802, 0.10667488, 8.0212536e-05, 0.0908869, 0.13580276, 0.00097438256, 0.12176522, -0.08218466) * max(in00, 0.f); + result += mat4(0.16062798, -0.10190268, 0.03280682, 0.05621916, -0.009684231, -0.08464307, 0.17058301, -0.096469186, 0.1967505, -0.1450099, 0.093607284, -0.28240147, -0.21377413, 0.10079291, -0.1741522, 0.17330575) * max(in10, 0.f); + result += mat4(-0.060160473, 0.06316997, 0.0046929033, -0.049405966, 0.13851729, 0.06830702, -0.0586872, -0.040827133, 0.007052838, -0.03576886, -0.111261636, 0.039155316, -0.07380389, -0.09369825, 0.04471156, 0.09678487) * max(in20, 0.f); + result += mat4(-0.36683616, -0.035950605, -0.24414362, -0.009159744, 0.19335322, -0.099253505, 0.075083904, -0.00076695543, 0.65291303, -0.25599423, 0.19827642, 0.065899536, -0.07423247, -0.068967685, 0.0050554527, -0.060272824) * max(in01, 0.f); + result += mat4(-0.020688485, -0.83178276, 0.11104878, 0.26454413, 0.13655476, 0.37675047, -0.22219229, -0.01751935, 0.44552696, 0.92510307, 0.16063261, -0.62011045, 0.19366647, -0.06996067, -0.2504841, 0.00803723) * max(in11, 0.f); + result += mat4(0.0051537007, -0.057168536, -0.16110587, 0.25232598, -0.04447099, 0.11997351, 0.14808103, -0.34443566, -0.26212573, -0.21970181, 0.2724405, 0.21050811, -0.07949061, -0.064808235, -0.21208277, -0.0042361654) * max(in21, 0.f); + result += mat4(-0.0888952, -0.20169449, 0.19144905, -0.016882861, -0.013283103, 0.07552998, -0.24686803, 0.012453213, -0.065454446, -0.016123284, -0.47316182, 0.070926026, 0.09219782, 0.13118166, 0.074736096, 0.0077910526) * max(in02, 0.f); + result += mat4(0.5832154, 0.1138069, -0.039765622, 0.3182784, -0.25497997, 0.0013993139, 0.39285088, -0.48511526, -0.39891505, -0.19094779, -0.082146175, -0.20826934, 0.020590555, -0.0012490178, -0.4398621, 0.14377014) * max(in12, 0.f); + result += mat4(0.21917395, 3.4314657e-05, 0.25734863, -0.3433305, 0.015720673, 0.2676127, -0.06807297, 0.15040149, -0.23638041, -0.0050233034, -0.13666134, 0.4542111, -0.033572577, -0.08450588, -0.23341487, 0.053490847) * max(in22, 0.f); + result += mat4(-0.17482175, 0.057647135, 0.33135444, 0.0850751, -0.1718849, -0.0854123, 0.036795795, -0.13874969, -0.10903869, -0.19007301, -0.06064334, -0.03786032, -0.036696054, 0.07844446, 0.012523185, -0.01562906) * max(-in00, 0.f); + result += mat4(-0.04411997, -0.10331819, 0.10050193, 0.12406485, 0.07431592, 0.30109692, -0.17511666, -0.13263564, -0.10192587, 0.07821255, -0.22415096, 0.25552443, 0.17881326, -0.13914281, 0.109979235, -0.0016463579) * max(-in10, 0.f); + result += mat4(-0.01911644, -0.15412527, 0.028903123, 0.20831817, 0.00375175, 0.08110953, 0.074919395, -0.17581624, -0.015677985, 0.06504228, 0.08817818, -0.12518327, -0.09537373, 0.028905088, -0.051288474, 0.054334078) * max(-in20, 0.f); + result += mat4(0.2852779, -0.28924024, 0.36805123, 0.21079305, -0.28336474, 0.1679663, -0.08641141, -0.10699407, -0.16090055, 0.1287612, -0.15910125, 0.05734755, 0.15883245, 0.0053026294, 0.080674745, 0.0505137) * max(-in01, 0.f); + result += mat4(0.17639062, 0.3790122, -0.19588692, -0.020314282, 0.26197383, 0.09014768, 0.19696823, -0.41025418, -0.08308115, -0.33279485, -0.22528782, 0.06172439, -0.1365661, -0.13094363, -0.005086559, 0.089024484) * max(-in11, 0.f); + result += mat4(0.05262993, 0.0006296959, 0.1657725, -0.32591924, 0.12126701, 0.061543245, -0.10526848, 0.041583937, 0.094976954, 0.09416157, -0.22019257, -0.058390073, -0.2073888, 0.057273377, 0.19558284, 0.004208022) * max(-in21, 0.f); + result += mat4(0.30005738, 0.18478931, -0.23342943, 0.22455733, -0.016488122, 0.099634305, 0.31620836, -0.15731157, 0.09595808, 0.0013774688, 0.48273298, -0.07027936, -0.18764344, -0.26194447, -0.11794225, -0.012173601) * max(-in02, 0.f); + result += mat4(0.117986746, -0.13846518, -0.019614812, -0.3011192, 0.5501164, 0.3408611, -0.40090847, 0.15706886, 0.13050972, 0.051776595, 0.20792943, 0.23389706, -0.22965533, -0.053367328, 0.3911586, -0.032988597) * max(-in12, 0.f); + result += mat4(0.054753624, -0.008485731, -0.2451672, 0.17528129, 0.13657846, 0.010480436, 0.07651423, -0.43316832, 0.12736236, 0.13804524, 0.12529011, -0.30946237, -0.14423579, 0.08403089, 0.24335162, 0.057288036) * max(-in22, 0.f); + result += vec4(0.012077211, 0.013045883, 0.0380778, -0.02908858); + + imageStore(out_rgba, pos, result); +} +)"; + +static constexpr char shader_pass2[] = R"( +//!DESC Anime4K-v3.2-Upscale-CNN-x2-(S)-Conv-4x3x3x8 +//!HOOK MAIN +//!BIND conv2d_tf +//!SAVE conv2d_1_tf +//!WIDTH conv2d_tf.w +//!HEIGHT conv2d_tf.h +//!COMPONENTS 4 +//!WHEN OUTPUT.w MAIN.w / 1.200 > OUTPUT.h MAIN.h / 1.200 > * + +precision mediump float; +layout (rgba16f, binding = 0) writeonly uniform mediump image2D out_rgba; // rgba16f + +layout (location = 0) uniform mediump sampler2D in_rgba; // rgba16f +layout (location = 1) uniform ivec2 in_size; + +void main() { + ivec2 pos = ivec2(gl_GlobalInvocationID.xy); + int x_m1 = max(pos.x-1, 0); + int x_a1 = min(pos.x+1, in_size.x-1); + int y_m1 = max(pos.y-1, 0); + int y_a1 = min(pos.y+1, in_size.y-1); + + vec4 in00 = texelFetch(in_rgba, ivec2(x_m1, y_m1), 0); + vec4 in01 = texelFetch(in_rgba, ivec2(pos.x, y_m1), 0); + vec4 in02 = texelFetch(in_rgba, ivec2(x_a1, y_m1), 0); + vec4 in10 = texelFetch(in_rgba, ivec2(x_m1, pos.y), 0); + vec4 in11 = texelFetch(in_rgba, ivec2(pos.x, pos.y), 0); + vec4 in12 = texelFetch(in_rgba, ivec2(x_a1, pos.y), 0); + vec4 in20 = texelFetch(in_rgba, ivec2(x_m1, y_a1), 0); + vec4 in21 = texelFetch(in_rgba, ivec2(pos.x, y_a1), 0); + vec4 in22 = texelFetch(in_rgba, ivec2(x_a1, y_a1), 0); + + vec4 result = mat4(-0.036115196, -0.06971895, -0.07508942, 0.016036168, 0.12120111, 0.24536026, 0.044755507, -0.20663576, 0.029635755, -0.15427187, 0.027148994, -0.20795093, 0.10170582, 0.077919215, 0.66063017, -0.4632968) * max(in00, 0.f); + result += mat4(-0.0052889925, -0.019060908, -0.08660142, -0.022095207, -0.08097976, -0.015142803, -0.18552722, -0.078493506, -0.16293915, -0.20099808, -0.08370822, 0.3701389, 0.09094984, 0.2487225, 0.24338846, 0.044003833) * max(in10, 0.f); + result += mat4(-0.061406493, -0.017232792, -0.10917424, 0.11203319, 0.040699825, -0.019294346, 0.084953666, -0.018133596, 0.07209552, 0.016069936, 0.17805555, -0.089537814, 0.15809004, 0.1027023, 0.15044671, -0.15530108) * max(in20, 0.f); + result += mat4(0.0948676, -0.040305693, -0.005591629, -0.048048403, -0.07547777, 0.056606572, 0.021390207, 0.32600567, -0.20805131, -0.099587254, 0.029613169, 0.0092129605, -0.29429698, -0.09898621, 0.44470885, -0.89487344) * max(in01, 0.f); + result += mat4(-0.122259885, 0.11445877, 0.06666907, 0.1869428, -0.1553992, -0.1658741, 0.2988138, -0.57746625, -0.34609964, 0.11169158, -0.41877756, 0.38075635, 0.21293911, 0.09640372, -0.12754214, -0.08026104) * max(in11, 0.f); + result += mat4(0.15128808, 0.050087795, 0.09219755, -0.18080945, 0.0044571217, -0.046019405, -0.1289922, 0.20305426, 0.19601224, 0.04667917, 0.17465587, 0.027672665, 0.18441725, 0.06845396, 0.11288585, -0.23283863) * max(in21, 0.f); + result += mat4(-0.072962, -0.06639447, 0.049347494, -0.1386401, 0.10396071, 0.08187777, -0.04280746, 0.07390891, 0.06628344, 0.037797406, 0.021885803, -0.013147403, 0.22376558, 0.36243078, 0.12874891, -0.0023783944) * max(in02, 0.f); + result += mat4(0.074945286, 0.16045591, -0.11798349, 0.12910712, 0.054760084, -0.095626175, -0.047832094, 0.03493912, 0.11817307, 0.037452437, -0.14301221, -0.027356789, -0.052390423, 0.11373512, 0.07686775, 0.010008694) * max(in12, 0.f); + result += mat4(-0.023999173, -0.091900624, 0.02388157, 0.03173873, 0.0065633506, -0.033716757, -0.1198324, 0.12057766, 0.026465805, -0.07517131, -0.07760598, 0.060463097, 0.07345541, 0.046037503, 0.21101558, -0.26785463) * max(in22, 0.f); + result += mat4(0.15544604, -0.03902825, 0.04630384, -0.25173616, -0.0691359, 0.07476507, 0.009071253, 0.089964196, -0.26539803, -0.3958477, -0.22155671, 0.20735882, -0.105860494, -0.003996804, -0.044815883, 0.39544627) * max(-in00, 0.f); + result += mat4(0.6169709, 0.23717614, -0.37884676, -0.7484867, 0.020169826, -0.30718836, 1.0965588, -0.20711036, -0.39149985, -0.06843563, -0.06522909, 0.103805855, 0.03265825, -0.15137726, 0.12837899, -0.01294922) * max(-in10, 0.f); + result += mat4(-0.23638196, -0.4560866, -0.11948684, -0.1464144, 0.10690008, 0.007835961, 0.11864342, -0.13101323, -0.16509797, 0.075027354, 0.08122998, 0.13451207, 0.0011890623, 0.052157886, 0.08372405, -0.07085038) * max(-in20, 0.f); + result += mat4(-0.21997726, -0.16488647, -0.0291317, 0.17997476, 0.1493211, 0.027494298, 0.0034613227, -0.3207727, 0.18699001, 0.14728633, -0.042895135, -0.07612043, 0.125076, -0.14714554, -0.03480009, -0.22753975) * max(-in01, 0.f); + result += mat4(-0.5342686, -0.7426105, -0.38294584, 0.42549992, 0.46053204, 0.7867879, 0.106234804, -0.041163098, 0.5198579, -0.5219404, 0.14809476, -0.41802374, 0.06810794, -0.15122683, -0.047409, 0.13178343) * max(-in11, 0.f); + result += mat4(-0.50428164, 0.18220626, 0.35510704, -0.081787474, 0.03155813, 0.019284263, 0.0032388573, -0.20513348, -0.05385551, 0.17803182, -0.26206362, 0.2870375, 0.008557827, 0.08401449, -0.027598893, -0.010791235) * max(-in21, 0.f); + result += mat4(0.16657415, 0.067647465, 0.093076974, -0.14438486, -0.10017002, 0.0022367141, 0.03250936, -0.052794546, -0.009178676, -0.019673595, -0.0016697067, -0.15424626, -0.112123474, -0.11079971, 0.011987111, -0.11747758) * max(-in02, 0.f); + result += mat4(-0.023021797, -0.058703423, -0.037978355, -0.062433913, -0.13130441, 0.048656322, 0.056839373, 0.109036915, -0.07823158, 0.14785293, 0.058555078, -0.11679035, -0.14002073, 0.07395252, 0.098268874, -0.06710464) * max(-in12, 0.f); + result += mat4(0.14906375, 0.030001195, -0.10338215, 0.0662968, -0.161953, -0.13682815, 0.09563142, 0.009514228, -0.009491218, 0.06737101, -0.1393389, 0.15231515, -0.073147796, 0.00767062, 0.028675212, 0.014213088) * max(-in22, 0.f); + result += vec4(0.018736731, -0.0026039074, 0.050130025, -0.055364225); + + imageStore(out_rgba, pos, result); +} +)"; + +static constexpr char shader_pass3[] = R"( +//!DESC Anime4K-v3.2-Upscale-CNN-x2-(S)-Conv-4x3x3x8 +//!HOOK MAIN +//!BIND conv2d_tf +//!SAVE conv2d_1_tf +//!WIDTH conv2d_tf.w +//!HEIGHT conv2d_tf.h +//!COMPONENTS 4 +//!WHEN OUTPUT.w MAIN.w / 1.200 > OUTPUT.h MAIN.h / 1.200 > * +precision mediump float; + +layout (rgba16f, binding = 0) writeonly uniform mediump image2D out_rgba; //rgba16f + +layout (location = 0) uniform mediump sampler2D in_rgba; // rgba16f +layout (location = 1) uniform ivec2 in_size; + +void main() { + ivec2 pos = ivec2(gl_GlobalInvocationID.xy); + int x_m1 = max(pos.x-1, 0); + int x_a1 = min(pos.x+1, in_size.x-1); + int y_m1 = max(pos.y-1, 0); + int y_a1 = min(pos.y+1, in_size.y-1); + + vec4 in00 = texelFetch(in_rgba, ivec2(x_m1, y_m1), 0); + vec4 in01 = texelFetch(in_rgba, ivec2(pos.x, y_m1), 0); + vec4 in02 = texelFetch(in_rgba, ivec2(x_a1, y_m1), 0); + vec4 in10 = texelFetch(in_rgba, ivec2(x_m1, pos.y), 0); + vec4 in11 = texelFetch(in_rgba, ivec2(pos.x, pos.y), 0); + vec4 in12 = texelFetch(in_rgba, ivec2(x_a1, pos.y), 0); + vec4 in20 = texelFetch(in_rgba, ivec2(x_m1, y_a1), 0); + vec4 in21 = texelFetch(in_rgba, ivec2(pos.x, y_a1), 0); + vec4 in22 = texelFetch(in_rgba, ivec2(x_a1, y_a1), 0); + + vec4 result = mat4(0.019100675, -0.014241565, 0.004667036, -0.03865062, 0.106731094, 0.026099661, 0.014594411, -0.011881356, 0.0040967264, -0.004626336, 0.006469508, 0.010875305, -0.033909045, -0.085905954, 0.07861378, 0.019452631) * max(in00, 0.f); + result += mat4(0.20777655, -0.060354974, 0.0023840065, -0.064121604, -0.17397617, 0.019293457, -0.09707183, 0.080641985, 0.01025124, -0.017382381, 0.008661793, -0.010995665, 0.21943407, -0.115574986, 0.14471593, -0.068836235) * max(in10, 0.f); + result += mat4(0.057942886, -0.06311754, 0.2253396, -0.04159292, -0.020731755, 0.007877151, 0.041525815, 0.025278691, 0.03041967, -0.025137542, 0.024364179, -0.024543528, 0.029438615, -0.015506873, 0.081686, -0.07812221) * max(in20, 0.f); + result += mat4(0.054237515, 0.0676094, -0.0047708177, 0.0043467237, -0.10032304, -0.020498628, 0.04240586, 0.07272254, 0.0784221, 0.017945962, -0.022310399, -0.013134622, 0.015638694, -0.10001543, 0.1043031, 0.05898838) * max(in01, 0.f); + result += mat4(-0.021652509, 0.35796642, 0.059497777, 0.23948468, 0.15454951, -0.10017235, -0.19072174, -0.44812536, -0.03974552, 0.04529369, 0.22207436, 0.026222564, -0.09705454, 0.5623026, -0.3354105, -0.017278556) * max(in11, 0.f); + result += mat4(-0.053682446, -0.03411237, -0.09399936, 0.15128824, -0.07463, -0.042020727, 0.0031783928, 0.13481957, -0.07731454, 0.044114403, -0.23085599, 0.060444202, -0.15015422, 0.0018040676, -0.18684982, 0.2812511) * max(in21, 0.f); + result += mat4(0.0029329916, 0.001596018, 0.0007512241, 0.016544111, -0.04876942, -0.05272409, 0.037884697, 0.049948208, 0.015518177, 0.11368592, -0.03815777, -0.013149978, -0.027638039, 0.107719295, -0.04115787, 0.02745414) * max(in02, 0.f); + result += mat4(0.016691081, 0.010204119, 0.04078854, 0.01613337, 0.03325829, 0.0114824055, -0.017286912, -0.07284126, -0.110984206, -0.21041764, 0.0089543555, 0.18986733, 0.01537506, -0.2059135, 0.029074017, 0.013117443) * max(in12, 0.f); + result += mat4(0.013965926, 0.029871881, 0.0034499036, -0.011343668, 0.022120327, -0.0068748263, 0.009324342, -0.039081004, 0.08032371, 0.050809264, 0.035050742, -0.2032847, 0.06305391, -0.021958945, 0.038569167, -0.22465245) * max(in22, 0.f); + result += mat4(0.046307724, -0.012419472, 0.007673863, -0.042344846, 0.011042414, 0.016994251, -0.018166406, -0.016955731, -0.13240299, 0.01768431, -0.027607648, 0.0699927, -0.02840628, 0.004414203, 0.0049618417, 0.011084679) * max(-in00, 0.f); + result += mat4(-0.119954154, -0.007455482, -0.031108133, -0.009946449, 0.0077065965, 0.01660345, 0.032943666, 0.016376585, 0.10273124, 0.1556573, -0.24643841, 0.107307844, -0.068235755, 0.0561896, -0.0104672015, 0.042693343) * max(-in10, 0.f); + result += mat4(-0.01634601, 0.04195375, -0.10401894, 0.047641944, -0.034602515, -0.0034419263, -0.010457858, 0.015194475, -0.03962551, -0.030031368, 0.16036317, 0.019283568, -0.05877721, 0.016504882, -0.15523468, 0.018161612) * max(-in20, 0.f); + result += mat4(-0.08083991, 0.0024665035, -0.049373373, 0.030371357, 0.0113322195, -0.014676956, 0.011646689, -0.01142667, 0.124930486, 0.06625774, -0.045840867, -0.009693036, -0.012649251, -0.07388084, 0.008790075, 0.0013844534) * max(-in01, 0.f); + result += mat4(-0.33941835, -0.2763476, -0.118311435, -0.063535266, 0.20936015, 0.13731301, 0.13443594, 0.07464433, 0.059650812, -0.36973104, 0.16444235, -0.37082872, 0.06432777, -0.18283032, -0.044489607, -0.13895285) * max(-in11, 0.f); + result += mat4(0.13533665, 0.08268915, -0.03675727, -0.14348659, 0.0186255, -0.05051692, 0.056702953, 0.0061717895, 0.047663026, -0.088188455, 0.23254345, -0.014015464, 0.08400204, -0.0073777726, 0.2202068, -0.12366078) * max(-in21, 0.f); + result += mat4(0.04361004, 0.046543695, 0.0064863074, -0.03358146, -0.022602187, 0.018138997, -0.011071864, 0.010244091, -0.019814799, -0.17250171, 0.040823266, -0.040131986, 0.010125854, 0.020660749, 0.0020435036, -0.010819304) * max(-in02, 0.f); + result += mat4(-0.004810193, -0.11286074, 0.051985834, 0.04788631, -0.023950428, 0.036145125, -0.038203828, 0.052401308, 0.022986965, 0.26420745, -0.06076917, -0.09252999, 0.03164547, 0.15652153, -0.037934, -0.0035418556) * max(-in12, 0.f); + result += mat4(0.03358366, -0.005219482, 0.007060882, -0.06569114, -0.02941682, 0.00966056, -0.0153679885, 0.019905418, -0.107232265, -0.03405676, -0.044340115, 0.26892832, -0.04723829, -0.02589829, 0.004563232, 0.19318114) * max(-in22, 0.f); + result += vec4(-0.00346731, -0.0046263863, -0.004627155, -0.0057769152); + + imageStore(out_rgba, pos, result); +} +)"; + +static constexpr char shader_pass4[] = R"( +//!DESC Anime4K-v3.2-Upscale-CNN-x2-(S)-Conv-4x3x3x3 +//!HOOK MAIN +//!BIND MAIN +//!SAVE conv2d_tf +//!WIDTH MAIN.w +//!HEIGHT MAIN.h +//!COMPONENTS 4 +//!WHEN OUTPUT.w MAIN.w / 1.200 > OUTPUT.h MAIN.h / 1.200 > * +#define go_0(x_off, y_off) (texelFetch(in_rgba, vec2(x_off, y_off), 0)) + +precision mediump float; + +layout (rgba8, binding = 0) writeonly uniform mediump image2D out_rgba; +layout (location = 0) uniform mediump sampler2D in_rgba; // rgba8 +layout (location = 1) uniform mediump sampler2D mid_rgba; // rgba +layout (location = 2) uniform ivec2 in_size; +layout (location = 3) uniform vec2 in_size_rev; +layout (location = 4) uniform vec2 out_size_rev; + +// vec4 hook() { +// vec2 f0 = fract(conv2d_last_tf_pos * conv2d_last_tf_size); +// ivec2 i0 = ivec2(f0 * vec2(2.0)); +// float c0 = conv2d_last_tf_tex((vec2(0.5) - f0) * conv2d_last_tf_pt + conv2d_last_tf_pos)[i0.y * 2 + i0.x]; +// float c1 = c0; +// float c2 = c1; +// float c3 = c2; +// return vec4(c0, c1, c2, c3) + MAIN_tex(MAIN_pos); +// } + +void main() { + precision highp float; + ivec2 pos = ivec2(gl_GlobalInvocationID.xy); + vec2 pos_norm = vec2(pos) * out_size_rev; + + vec2 f0 = fract(pos_norm * vec2(in_size)); // pixel + ivec2 i0 = ivec2(f0 * 2.f); + vec2 mid_tex_pos = (vec2(0.5) - f0) * in_size_rev + pos_norm; + + precision mediump float; + float cc = texture(mid_rgba, mid_tex_pos)[i0.y * 2 + i0.x]; + vec4 result = texelFetch(in_rgba, pos >> 1, 0) + cc; + + imageStore(out_rgba, pos, result); +} +)"; + +int Sr::init(const std::string &program_cache_dir) { + OPS_CHECK(inited_ == false, "already inited"); + + GLint local_size[3]; + + OPS_CHECK(BMF_LITE_StsOk == GLHelper::instance().build_program( + &program_pass0_, shader_pass0, "", + program_cache_dir, local_size, 16, 16, 1), + "compile program 0 error"); + OPS_CHECK(BMF_LITE_StsOk == GLHelper::instance().build_program( + &program_pass1_, shader_pass1, "", + program_cache_dir, local_size, 16, 16, 1), + "compile program 1 error"); + OPS_CHECK(BMF_LITE_StsOk == GLHelper::instance().build_program( + &program_pass2_, shader_pass2, "", + program_cache_dir, local_size, 16, 16, 1), + "compile program 2 error"); + OPS_CHECK(BMF_LITE_StsOk == GLHelper::instance().build_program( + &program_pass3_, shader_pass3, "", + program_cache_dir, local_size, 16, 16, 1), + "compile program 3 error"); + OPS_CHECK(BMF_LITE_StsOk == GLHelper::instance().build_program( + &program_pass4_, shader_pass4, "", + program_cache_dir, local_size, 16, 16, 1), + "compile program 4 error"); + + local_size_x_ = local_size[0]; + local_size_y_ = local_size[1]; + + inited_ = true; + return BMF_LITE_StsOk; +} + +int Sr::run(GLuint in_tex, GLuint out_tex, int width, int height) { + OPS_CHECK(inited_, "please init first"); + if (in_width_ != width || in_height_ != height) { + in_width_ = width; + in_height_ = height; + + if (mid_tex0_ != GL_NONE) { + glDeleteTextures(1, &mid_tex0_); + mid_tex0_ = GL_NONE; + } + mid_tex0_ = GLHelper::instance().gen_itex(width, height, GL_RGBA16F, + GL_TEXTURE_2D, GL_NEAREST); + + if (mid_tex1_ != GL_NONE) { + glDeleteTextures(1, &mid_tex1_); + mid_tex1_ = GL_NONE; + } + mid_tex1_ = GLHelper::instance().gen_itex(width, height, GL_RGBA16F, + GL_TEXTURE_2D, GL_NEAREST); + } + GLint groups_x0 = UPDIV(width, local_size_x_); + GLint groups_y0 = UPDIV(height, local_size_y_); + + GLint groups_x1 = UPDIV(width * 2, local_size_x_); + GLint groups_y1 = UPDIV(height * 2, local_size_y_); + { + // pass0 + glUseProgram(program_pass0_); + glBindImageTexture(0, mid_tex0_, 0, GL_FALSE, 0, GL_WRITE_ONLY, + GL_RGBA16F); + + int tex_id = 0; + glActiveTexture(GL_TEXTURE0 + tex_id); + glBindTexture(GL_TEXTURE_2D, in_tex); + glUniform1i(0, tex_id); + + glUniform2i(1, width, height); + + glDispatchCompute(groups_x0, groups_y0, 1); + glMemoryBarrier(GL_SHADER_IMAGE_ACCESS_BARRIER_BIT); + } + { + // pass1 + glUseProgram(program_pass1_); + glBindImageTexture(0, mid_tex1_, 0, GL_FALSE, 0, GL_WRITE_ONLY, + GL_RGBA16F); + + int tex_id = 0; + glActiveTexture(GL_TEXTURE0 + tex_id); + glBindTexture(GL_TEXTURE_2D, mid_tex0_); + glUniform1i(0, tex_id); + + glUniform2i(1, width, height); + + glDispatchCompute(groups_x0, groups_y0, 1); + glMemoryBarrier(GL_SHADER_IMAGE_ACCESS_BARRIER_BIT); + } + { + // pass2 + glUseProgram(program_pass2_); + glBindImageTexture(0, mid_tex0_, 0, GL_FALSE, 0, GL_WRITE_ONLY, + GL_RGBA16F); + + int tex_id = 0; + glActiveTexture(GL_TEXTURE0 + tex_id); + glBindTexture(GL_TEXTURE_2D, mid_tex1_); + glUniform1i(0, tex_id); + + glUniform2i(1, width, height); + + glDispatchCompute(groups_x0, groups_y0, 1); + glMemoryBarrier(GL_SHADER_IMAGE_ACCESS_BARRIER_BIT); + } + { + // pass3 + glUseProgram(program_pass3_); + glBindImageTexture(0, mid_tex1_, 0, GL_FALSE, 0, GL_WRITE_ONLY, + GL_RGBA16F); + + int tex_id = 0; + glActiveTexture(GL_TEXTURE0 + tex_id); + glBindTexture(GL_TEXTURE_2D, mid_tex0_); + glUniform1i(0, tex_id); + + glUniform2i(1, width, height); + + glDispatchCompute(groups_x0, groups_y0, 1); + glMemoryBarrier(GL_SHADER_IMAGE_ACCESS_BARRIER_BIT); + } + { + // pass4 + glUseProgram(program_pass4_); + glBindImageTexture(0, out_tex, 0, GL_FALSE, 0, GL_WRITE_ONLY, GL_RGBA8); + + int tex_id = 0; + glActiveTexture(GL_TEXTURE0 + tex_id); + glBindTexture(GL_TEXTURE_2D, in_tex); + glUniform1i(0, tex_id); + tex_id++; + glActiveTexture(GL_TEXTURE0 + tex_id); + glBindTexture(GL_TEXTURE_2D, mid_tex1_); + glUniform1i(1, tex_id); + + float in_width_rev = 1.f / width; + float in_height_rev = 1.f / height; + float out_width_rev = 1.f / (width * 2 - 1); + float out_height_rev = 1.f / (height * 2 - 1); + glUniform2i(2, width, height); + glUniform2f(3, in_width_rev, in_height_rev); + glUniform2f(4, out_width_rev, out_height_rev); + + glDispatchCompute(groups_x1, groups_y1, 1); + glMemoryBarrier(GL_SHADER_IMAGE_ACCESS_BARRIER_BIT); + } + + return BMF_LITE_StsOk; +} + +Sr::~Sr() { + if (program_pass0_ != GL_NONE) { + glDeleteProgram(program_pass0_); + program_pass0_ = GL_NONE; + } + if (program_pass1_ != GL_NONE) { + glDeleteProgram(program_pass1_); + program_pass0_ = GL_NONE; + } + if (program_pass2_ != GL_NONE) { + glDeleteProgram(program_pass2_); + program_pass2_ = GL_NONE; + } + if (program_pass3_ != GL_NONE) { + glDeleteProgram(program_pass3_); + program_pass3_ = GL_NONE; + } + if (program_pass4_ != GL_NONE) { + glDeleteProgram(program_pass4_); + program_pass4_ = GL_NONE; + } + + if (mid_tex0_ != GL_NONE) { + glDeleteTextures(1, &mid_tex0_); + mid_tex0_ = GL_NONE; + } + if (mid_tex1_ != GL_NONE) { + glDeleteTextures(1, &mid_tex1_); + mid_tex1_ = GL_NONE; + } +} +} // namespace opengl +} // namespace bmf_lite \ No newline at end of file diff --git a/bmf_lite/src/algorithm/modules/operators/opengl/sr/sr.h b/bmf_lite/src/algorithm/modules/operators/opengl/sr/sr.h new file mode 100644 index 00000000..052de4ee --- /dev/null +++ b/bmf_lite/src/algorithm/modules/operators/opengl/sr/sr.h @@ -0,0 +1,66 @@ +/* + * Copyright 2023 Babit Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef _BMF_ALGORITHM_MODULES_OPS_OPENGL_SR_H_ +#define _BMF_ALGORITHM_MODULES_OPS_OPENGL_SR_H_ +#include +#include "opengl/gl_helper.h" + +namespace bmf_lite { +namespace opengl { + +/** + * @brief Super Resolutioin 2x + * + */ +class Sr { + public: + int init(const std::string &program_cache_dir); + /** + * @brief + * + * @param in_tex texture2D with RGBA8 format and content + * @param out_tex texture2D with RGBA8 format and content + * @param width + * @param height + * @return true + * @return false + */ + int run(GLuint in_tex, GLuint out_tex, int width, int height); + + ~Sr(); + + private: + GLuint program_pass0_ = GL_NONE; + GLuint program_pass1_ = GL_NONE; + GLuint program_pass2_ = GL_NONE; + GLuint program_pass3_ = GL_NONE; + GLuint program_pass4_ = GL_NONE; + + int in_width_ = 0; + int in_height_ = 0; + + GLint local_size_x_ = 0; + GLint local_size_y_ = 0; + + GLuint mid_tex0_ = GL_NONE; + GLuint mid_tex1_ = GL_NONE; + + bool inited_ = false; +}; // Sr + +} // namespace opengl +} // namespace bmf_lite +#endif diff --git a/bmf_lite/src/algorithm/modules/operators/opengl/statistic/statistic.cpp b/bmf_lite/src/algorithm/modules/operators/opengl/statistic/statistic.cpp new file mode 100644 index 00000000..f08b50ed --- /dev/null +++ b/bmf_lite/src/algorithm/modules/operators/opengl/statistic/statistic.cpp @@ -0,0 +1,142 @@ +/* + * Copyright 2023 Babit Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#include "statistic.h" + +namespace bmf_lite { +namespace opengl { +static constexpr char statistic_src[] = R"( +layout (location = 0) uniform mediump sampler2D in_rgba; +layout (location = 1) uniform ivec2 in_size; +layout(binding = 0) buffer FEATURE +{ + uint histograms[256]; + uint min; + uint max; + uint sum; +} features; +shared uint shared_sum[256]; +shared uint shared_max[256]; +shared uint shared_min[256]; +void main() +{ + uint tmp_max = uint(0); + uint tmp_sum = uint(0); + uint tmp_min = uint(1000); + ivec2 pos = ivec2(gl_GlobalInvocationID.xy); + uint localID = gl_LocalInvocationIndex; + uint localSize = gl_WorkGroupSize.x * gl_WorkGroupSize.y; + int height = in_size.y; + int width = in_size.x; + for(int ih = pos.y; ih < height; ih += 256){ + for(int iw = pos.x; iw < width; iw += 256){ + ivec2 pos_in = ivec2(iw, ih); + if(pos_in.x < width && pos_in.y < height){ + uint y = clamp(uint(round(255.f * dot(vec3(0.299, 0.587, 0.114), texelFetch(in_rgba, pos_in, 0).xyz))), uint(0), uint(255)); + tmp_min = min(tmp_min, y); + tmp_max = max(tmp_max, y); + tmp_sum += y; + atomicAdd(features.histograms[y], uint(1)); + } + } + } + shared_max[localID] = tmp_max; + shared_sum[localID] = tmp_sum; + shared_min[localID] = tmp_min; + for(uint offset = (localSize / uint(2)); offset > uint(0); offset >>= 1) { + memoryBarrier(); + barrier(); + if(localID < offset) { + shared_sum[localID] += shared_sum[localID + offset]; + shared_min[localID] = min(shared_min[localID], shared_min[localID + offset]); + shared_max[localID] = max(shared_max[localID], shared_max[localID + offset]); + } + } + memoryBarrier(); + barrier(); + if(localID == uint(0)){ + atomicAdd(features.sum, shared_sum[0]); + atomicMax(features.max, shared_max[0]); + atomicMin(features.min, shared_min[0]); + } +})"; + +int Statistic::init(const std::string &program_cache_dir) { + OPS_CHECK(!inited_, "already inited"); + std::string program_source = statistic_src; + + OPS_CHECK(BMF_LITE_StsOk == GLHelper::instance().build_program( + &program_id_, program_source, "", + program_cache_dir, local_size_, 16, 16, 1), + "get_program_from_cache_dir fail"); + + glGenBuffers(1, &features_); + glBindBuffer(GL_SHADER_STORAGE_BUFFER, features_); + int tmp_data[259] = {}; + memset(tmp_data, 0, 259 * sizeof(int)); + glBufferData(GL_SHADER_STORAGE_BUFFER, 259 * sizeof(int), tmp_data, + GL_DYNAMIC_READ); + glBindBuffer(GL_SHADER_STORAGE_BUFFER, 0); + inited_ = true; + return BMF_LITE_StsOk; +} + +int Statistic::run(GLuint in_tex, int width, int height, int *histogram, + int *min, int *max, int *sum) { + OPS_CHECK(inited_, "init first"); + OPS_CHECK(histogram != nullptr && min != nullptr && max != nullptr && + sum != nullptr, + "histogram, min, max, sum must not be null"); + auto num_groups_x = UPDIV(256, local_size_[0]); + auto num_groups_y = UPDIV(256, local_size_[1]); + + glUseProgram(program_id_); + + int tex_id = 0; + glActiveTexture(GL_TEXTURE0 + tex_id); + glBindTexture(GL_TEXTURE_2D, in_tex); + glUniform1i(0, tex_id); + + glUniform2i(1, width, height); + + glBindBufferBase(GL_SHADER_STORAGE_BUFFER, 0, features_); + glDispatchCompute(num_groups_x, num_groups_y, 1); + glMemoryBarrier(GL_BUFFER_UPDATE_BARRIER_BIT | + GL_SHADER_STORAGE_BARRIER_BIT); + + uint32_t *data = (uint32_t *)glMapBufferRange( + GL_SHADER_STORAGE_BUFFER, 0, 259 * sizeof(int), GL_MAP_READ_BIT); + OPS_CHECK(data != NULL, "map data buffer error"); + memset(data, 0, 259 * sizeof(int)); + memcpy(histogram, data, 256 * sizeof(int)); + *min = data[256]; + *max = data[257]; + *sum = data[258]; + OPS_CHECK(glUnmapBuffer(GL_SHADER_STORAGE_BUFFER) == GL_TRUE, + "unmap data erro"); + glBindBufferBase(GL_SHADER_STORAGE_BUFFER, 0, 0); + + OPS_CHECK_OPENGL; + return BMF_LITE_StsOk; +} + +Statistic::~Statistic() { + if (program_id_ != GL_NONE) { + glDeleteProgram(program_id_); + program_id_ = GL_NONE; + } +} +} // namespace opengl +} // namespace bmf_lite diff --git a/bmf_lite/src/algorithm/modules/operators/opengl/statistic/statistic.h b/bmf_lite/src/algorithm/modules/operators/opengl/statistic/statistic.h new file mode 100644 index 00000000..4b8323aa --- /dev/null +++ b/bmf_lite/src/algorithm/modules/operators/opengl/statistic/statistic.h @@ -0,0 +1,60 @@ +/* + * Copyright 2023 Babit Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef _BMF_ALGORITHM_MODULES_OPS_OPENGL_STATISTIC_H_ +#define _BMF_ALGORITHM_MODULES_OPS_OPENGL_STATISTIC_H_ +#include +#include "opengl/gl_helper.h" + +namespace bmf_lite { +namespace opengl { + +/** + * @brief statistic histogram/min/max/sum + * + */ +class Statistic { + public: + int init(const std::string &program_cache_dir); + /** + * @brief + * + * @param in_tex + * @param width + * @param height + * @param out_tex + * @param histogram + * @param min + * @param max + * @param sum + * @return BMF_LITE_ERROR_CODE + */ + int run(GLuint in_tex, int width, int height, int *histogram, int *min, + int *max, int *sum); + + ~Statistic(); + + private: + GLuint program_id_ = GL_NONE; + GLuint features_; + + GLint local_size_[3] = {16, 16, 1}; + + bool inited_ = false; +}; // Statistic + +} // namespace opengl +} // namespace bmf_lite +#endif diff --git a/bmf_lite/src/algorithm/modules/operators/utils/SHA256.cpp b/bmf_lite/src/algorithm/modules/operators/utils/SHA256.cpp new file mode 100644 index 00000000..c5e3604a --- /dev/null +++ b/bmf_lite/src/algorithm/modules/operators/utils/SHA256.cpp @@ -0,0 +1,186 @@ +/* + * MIT License + * + * Copyright (c) 2021 Jérémy LAMBERT (SystemGlitch) + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +#include "SHA256.h" +#include +#include +#include + +namespace bmf_lite { + +constexpr std::array SHA256::K; + +SHA256::SHA256() : m_blocklen(0), m_bitlen(0) { + m_state[0] = 0x6a09e667; + m_state[1] = 0xbb67ae85; + m_state[2] = 0x3c6ef372; + m_state[3] = 0xa54ff53a; + m_state[4] = 0x510e527f; + m_state[5] = 0x9b05688c; + m_state[6] = 0x1f83d9ab; + m_state[7] = 0x5be0cd19; +} + +void SHA256::update(const uint8_t *data, size_t length) { + for (size_t i = 0; i < length; i++) { + m_data[m_blocklen++] = data[i]; + if (m_blocklen == 64) { + transform(); + + // End of the block + m_bitlen += 512; + m_blocklen = 0; + } + } +} + +void SHA256::update(const std::string &data) { + update(reinterpret_cast(data.c_str()), data.size()); +} + +std::array SHA256::digest() { + std::array hash; + + pad(); + revert(hash); + + return hash; +} + +uint32_t SHA256::rotr(uint32_t x, uint32_t n) { + return (x >> n) | (x << (32 - n)); +} + +uint32_t SHA256::choose(uint32_t e, uint32_t f, uint32_t g) { + return (e & f) ^ (~e & g); +} + +uint32_t SHA256::majority(uint32_t a, uint32_t b, uint32_t c) { + return (a & (b | c)) | (b & c); +} + +uint32_t SHA256::sig0(uint32_t x) { + return SHA256::rotr(x, 7) ^ SHA256::rotr(x, 18) ^ (x >> 3); +} + +uint32_t SHA256::sig1(uint32_t x) { + return SHA256::rotr(x, 17) ^ SHA256::rotr(x, 19) ^ (x >> 10); +} + +void SHA256::transform() { + uint32_t maj, xorA, ch, xorE, sum, newA, newE, m[64]; + uint32_t state[8]; + + for (uint8_t i = 0, j = 0; i < 16; + i++, j += 4) { // Split data in 32 bit blocks for the 16 first words + m[i] = (m_data[j] << 24) | (m_data[j + 1] << 16) | + (m_data[j + 2] << 8) | (m_data[j + 3]); + } + + for (uint8_t k = 16; k < 64; k++) { // Remaining 48 blocks + m[k] = SHA256::sig1(m[k - 2]) + m[k - 7] + SHA256::sig0(m[k - 15]) + + m[k - 16]; + } + + for (uint8_t i = 0; i < 8; i++) { + state[i] = m_state[i]; + } + + for (uint8_t i = 0; i < 64; i++) { + maj = SHA256::majority(state[0], state[1], state[2]); + xorA = SHA256::rotr(state[0], 2) ^ SHA256::rotr(state[0], 13) ^ + SHA256::rotr(state[0], 22); + + ch = choose(state[4], state[5], state[6]); + + xorE = SHA256::rotr(state[4], 6) ^ SHA256::rotr(state[4], 11) ^ + SHA256::rotr(state[4], 25); + + sum = m[i] + K[i] + state[7] + ch + xorE; + newA = xorA + maj + sum; + newE = state[3] + sum; + + state[7] = state[6]; + state[6] = state[5]; + state[5] = state[4]; + state[4] = newE; + state[3] = state[2]; + state[2] = state[1]; + state[1] = state[0]; + state[0] = newA; + } + + for (uint8_t i = 0; i < 8; i++) { + m_state[i] += state[i]; + } +} + +void SHA256::pad() { + + uint64_t i = m_blocklen; + uint8_t end = m_blocklen < 56 ? 56 : 64; + + m_data[i++] = 0x80; // Append a bit 1 + while (i < end) { + m_data[i++] = 0x00; // Pad with zeros + } + + if (m_blocklen >= 56) { + transform(); + memset(m_data, 0, 56); + } + + // Append to the padding the total message's length in bits and transform. + m_bitlen += m_blocklen * 8; + m_data[63] = m_bitlen; + m_data[62] = m_bitlen >> 8; + m_data[61] = m_bitlen >> 16; + m_data[60] = m_bitlen >> 24; + m_data[59] = m_bitlen >> 32; + m_data[58] = m_bitlen >> 40; + m_data[57] = m_bitlen >> 48; + m_data[56] = m_bitlen >> 56; + transform(); +} + +void SHA256::revert(std::array &hash) { + // SHA uses big endian byte ordering + // Revert all bytes + for (uint8_t i = 0; i < 4; i++) { + for (uint8_t j = 0; j < 8; j++) { + hash[i + (j * 4)] = (m_state[j] >> (24 - i * 8)) & 0x000000ff; + } + } +} + +std::string SHA256::toString(const std::array &digest) { + std::stringstream s; + s << std::setfill('0') << std::hex; + + for (uint8_t i = 0; i < 32; i++) { + s << std::setw(2) << (unsigned int)digest[i]; + } + + return s.str(); +} +} // namespace bmf_lite diff --git a/bmf_lite/src/algorithm/modules/operators/utils/SHA256.h b/bmf_lite/src/algorithm/modules/operators/utils/SHA256.h new file mode 100644 index 00000000..3cb08bd5 --- /dev/null +++ b/bmf_lite/src/algorithm/modules/operators/utils/SHA256.h @@ -0,0 +1,72 @@ +/* + * MIT License + * + * Copyright (c) 2021 Jérémy LAMBERT (SystemGlitch) + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +#ifndef _BMF_LITE_SRC_ALGORITHM_MODULES_OPS_UTILS_SHA256_H_ +#define _BMF_LITE_SRC_ALGORITHM_MODULES_OPS_UTILS_SHA256_H_ + +#include +#include +#include + +namespace bmf_lite { +class SHA256 { + + public: + SHA256(); + void update(const uint8_t *data, size_t length); + void update(const std::string &data); + std::array digest(); + + static std::string toString(const std::array &digest); + + private: + uint8_t m_data[64]; + uint32_t m_blocklen; + uint64_t m_bitlen; + uint32_t m_state[8]; // A, B, C, D, E, F, G, H + + static constexpr std::array K = { + 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, + 0x923f82a4, 0xab1c5ed5, 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, + 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174, 0xe49b69c1, 0xefbe4786, + 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da, + 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, + 0x06ca6351, 0x14292967, 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, + 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85, 0xa2bfe8a1, 0xa81a664b, + 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070, + 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, + 0x5b9cca4f, 0x682e6ff3, 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, + 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2}; + + static uint32_t rotr(uint32_t x, uint32_t n); + static uint32_t choose(uint32_t e, uint32_t f, uint32_t g); + static uint32_t majority(uint32_t a, uint32_t b, uint32_t c); + static uint32_t sig0(uint32_t x); + static uint32_t sig1(uint32_t x); + void transform(); + void pad(); + void revert(std::array &hash); +}; + +} // namespace bmf_lite +#endif \ No newline at end of file diff --git a/bmf_lite/src/algorithm/modules/operators/utils/macros.h b/bmf_lite/src/algorithm/modules/operators/utils/macros.h new file mode 100644 index 00000000..f210709f --- /dev/null +++ b/bmf_lite/src/algorithm/modules/operators/utils/macros.h @@ -0,0 +1,103 @@ +#include "common/error_code.h" + +/* + * Copyright 2023 Babit Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#define ALIGNX(x, a) (((x) + (a) - 1) / (a) * (a)) +#define UPDIV(x, a) (((x) - 1) / (a) + 1) + +#if __APPLE__ +#define OPS_LOG_DEBUG(format, ...) \ + NSLog(@"[D][bmf_lite][%s, %s, %d]" format, __FILE_NAME__, __FUNCTION__, \ + __LINE__, ##__VA_ARGS__) +#define OPS_LOG_INFO(format, ...) \ + NSLog(@"[I][bmf_lite][%s, %s, %d]" format, __FILE_NAME__, __FUNCTION__, \ + __LINE__, ##__VA_ARGS__) +#define OPS_LOG_WARN(format, ...) \ + NSLog(@"[W][bmf_lite][%s, %s, %d]" format, __FILE_NAME__, __FUNCTION__, \ + __LINE__, ##__VA_ARGS__) +#define OPS_LOG_ERROR(format, ...) \ + NSLog(@"[E][bmf_lite][%s, %s, %d]" format, __FILE_NAME__, __FUNCTION__, \ + __LINE__, ##__VA_ARGS__) +#define OPS_LOG_FATAL(format, ...) \ + NSLog(@"[F][bmf_lite][%s, %s, %d]" format, __FILE_NAME__, __FUNCTION__, \ + __LINE__, ##__VA_ARGS__) +#elif __ANDROID__ +#include +#define OPS_LOG_DEBUG(format, ...) \ + __android_log_print(ANDROID_LOG_DEBUG, "bmf_lite", "[%s, %s, %d]" format, \ + __FILE_NAME__, __FUNCTION__, __LINE__, ##__VA_ARGS__) +#define OPS_LOG_INFO(format, ...) \ + __android_log_print(ANDROID_LOG_INFO, "bmf_lite", "[%s, %s, %d]" format, \ + __FILE_NAME__, __FUNCTION__, __LINE__, ##__VA_ARGS__) +#define OPS_LOG_WARN(format, ...) \ + __android_log_print(ANDROID_LOG_WARN, "bmf_lite", "[%s, %s, %d]" format, \ + __FILE_NAME__, __FUNCTION__, __LINE__, ##__VA_ARGS__) +#define OPS_LOG_ERROR(format, ...) \ + __android_log_print(ANDROID_LOG_ERROR, "bmf_lite", "[%s, %s, %d]" format, \ + __FILE_NAME__, __FUNCTION__, __LINE__, ##__VA_ARGS__) +#define OPS_LOG_FATAL(format, ...) \ + __android_log_print(ANDROID_LOG_FATAL, "bmf_lite", "[%s, %s, %d]" format, \ + __FILE_NAME__, __FUNCTION__, __LINE__, ##__VA_ARGS__) +#else +#ifdef __GNUC__ +#define OPS_LOG_DEBUG(format, ...) \ + printf("[D][bmf_lite][%s, %s, %d]\"" format "\"\n", __BASE_FILE__, \ + __FUNCTION__, __LINE__, ##__VA_ARGS__) +#define OPS_LOG_INFO(format, ...) \ + printf("[I][bmf_lite][%s, %s, %d]\"" format "\"\n", __BASE_FILE__, \ + __FUNCTION__, __LINE__, ##__VA_ARGS__) +#define OPS_LOG_WARN(format, ...) \ + printf("[W][bmf_lite][%s, %s, %d]\"" format "\"\n", __BASE_FILE__, \ + __FUNCTION__, __LINE__, ##__VA_ARGS__) +#define OPS_LOG_ERROR(format, ...) \ + printf("[E][bmf_lite][%s, %s, %d]\"" format "\"\n", __BASE_FILE__, \ + __FUNCTION__, __LINE__, ##__VA_ARGS__) +#define OPS_LOG_FATAL(format, ...) \ + printf("[F][bmf_lite][%s, %s, %d]\"" format "\"\n", __BASE_FILE__, \ + __FUNCTION__, __LINE__, ##__VA_ARGS__) +#else +#define OPS_LOG_DEBUG(format, ...) \ + printf("[D][bmf_lite][%s, %s, %d]" format "\n", __FILE_NAME__, \ + __FUNCTION__, __LINE__, ##__VA_ARGS__) +#define OPS_LOG_INFO(format, ...) \ + printf("[I][bmf_lite][%s, %s, %d]" format "\n", __FILE_NAME__, \ + __FUNCTION__, __LINE__, ##__VA_ARGS__) +#define OPS_LOG_WARN(format, ...) \ + printf("[W][bmf_lite][%s, %s, %d]" format "\n", __FILE_NAME__, \ + __FUNCTION__, __LINE__, ##__VA_ARGS__) +#define OPS_LOG_ERROR(format, ...) \ + printf("[E][bmf_lite][%s, %s, %d]" format "\n", __FILE_NAME__, \ + __FUNCTION__, __LINE__, ##__VA_ARGS__) +#define OPS_LOG_FATAL(format, ...) \ + printf("[F][bmf_lite][%s, %s, %d]" format "\n", __FILE_NAME__, \ + __FUNCTION__, __LINE__, ##__VA_ARGS__) +#endif +#endif + +#define OPS_CHECK(cmd, format, ...) \ + if (!(cmd)) { \ + OPS_LOG_ERROR(format, ##__VA_ARGS__); \ + return BMF_LITE_OpsError; \ + } + +#define OPS_CHECK_OPENGL \ + { \ + GLenum error = glGetError(); \ + if (GL_NO_ERROR != error) { \ + OPS_LOG_ERROR("error_code: 0x%x", error); \ + return BMF_LITE_OpsError; \ + } \ + } \ No newline at end of file diff --git a/bmf_lite/src/algorithm/modules/super_resolution/super_resolution_algorithm.cpp b/bmf_lite/src/algorithm/modules/super_resolution/super_resolution_algorithm.cpp new file mode 100644 index 00000000..16ff29ee --- /dev/null +++ b/bmf_lite/src/algorithm/modules/super_resolution/super_resolution_algorithm.cpp @@ -0,0 +1,245 @@ +#if (defined(__ANDROID__) || defined(__OHOS__)) && \ + defined(BMF_LITE_ENABLE_SUPER_RESOLUTION) +#include "super_resolution_algorithm.h" +#include "algorithm/bmf_video_frame.h" +#include "common/error_code.h" +#include "opengl/sr/sr.h" +#include +namespace bmf_lite { +struct SuperResolutionInitParam { + int algorithm_type = -1; // algorithm_type + int algorithm_version = -1; // algorithm_version + int scale_mode = -1; // process 1.5 or 2 + int backend = -1; + int process_mode = -1; // process image or video + int max_width = -1; // max input width + int max_height = -1; // max input height + std::string license_module_name; // tob license name + std::string program_cache_dir; // save program cache dir + std::string library_path; + int sharp_levels = -1; // mutlti sharp level + std::string weight_path; // multi sharp super resolution weight + bool operator==(const SuperResolutionInitParam ¶m) { + if (algorithm_type == param.algorithm_type && + algorithm_version == param.algorithm_version && + scale_mode == param.scale_mode) + return true; + return false; + } +}; +class SuperResolutionProcessParam { + public: + int scale_mode = 0; + int sharp_level = 0; + float *mvp = NULL; +}; +class SuperResolutionImpl { + public: + struct SuperResolutionInitParam init_param_; + struct SuperResolutionProcessParam process_param_; + + std::shared_ptr sr_hp_; + + std::shared_ptr video_pool_; + VideoFrame out_frame_; + + SuperResolutionImpl() {}; + ~SuperResolutionImpl() {}; + int parseInitParam(Param param, SuperResolutionInitParam &init_param) { + if (param.getInt("algorithm_type", init_param.algorithm_type) != 0) { + return BMF_LITE_StsBadArg; + } + if (param.getInt("scale_mode", init_param.scale_mode) != 0) { + return BMF_LITE_StsBadArg; + } + if (param.getInt("backend", init_param.backend) != 0) { + return BMF_LITE_StsBadArg; + } + if (param.getInt("process_mode", init_param.process_mode) != 0) { + return BMF_LITE_StsBadArg; + } + if (param.getInt("max_width", init_param.max_width) != 0) { + return BMF_LITE_StsBadArg; + } + if (param.getInt("max_height", init_param.max_height) != 0) { + return BMF_LITE_StsBadArg; + } + if (param.getString("license_module_name", + init_param.license_module_name) != 0) { + return BMF_LITE_StsBadArg; + } + if (param.getString("program_cache_dir", + init_param.program_cache_dir) != 0) { + return BMF_LITE_StsBadArg; + } + if (param.getInt("sharp_levels", init_param.sharp_levels) != 0) { + return BMF_LITE_StsBadArg; + } + if (param.getString("weight_path", init_param.weight_path) != 0) { + return BMF_LITE_StsBadArg; + } + return 0; + } + int parseProcessParam(Param param, + SuperResolutionProcessParam &process_param) { + if (param.getInt("sharp_level", process_param.sharp_level) != 0) { + return BMF_LITE_StsBadArg; + } + if (param.getInt("scale_mode", process_param.scale_mode) != 0) { + return BMF_LITE_StsBadArg; + } + return 0; + } + int setParam(Param param) { + struct SuperResolutionInitParam init_param; + int res = parseInitParam(param, init_param); + if (res < 0) { + return res; + } + res = setParam(init_param); + if (res < 0) { + return res; + } + return 0; + } + int setParam(SuperResolutionInitParam param) { + if (init_param_ == param) { + // do nothing + // std::cout<<"setParam"<<" set do nothing"<(); + hydra_result = sr_hp_->init(init_param_.program_cache_dir); + if (0 != hydra_result) { + return BMF_LITE_OpsError; + } + bmf_lite::MemoryType memory_type = + bmf_lite::MemoryType::kOpenGLTexture2d; + std::shared_ptr device_context; + bmf_lite::HWDeviceType device_type = bmf_lite::kHWDeviceTypeEGLCtx; + bmf_lite::HardwareDeviceCreateInfo create_info; + create_info.device_type = device_type; + bmf_lite::EGLContextInfo context_info; + context_info.egl_context = NULL; + context_info.egl_display = NULL; + context_info.egl_draw_surface = NULL; + context_info.egl_read_surface = NULL; + create_info.context_info = &context_info; + int res = bmf_lite::HWDeviceContextManager::createHwDeviceContext( + &create_info, device_context); + if (res < 0) { + return res; + } + std::shared_ptr allocator = + bmf_lite::AllocatorManager::getAllocator(memory_type, + device_context); + int max_size = 2; + video_pool_ = std::make_shared( + allocator, device_context, max_size); + if (video_pool_ == NULL) { + return BMF_LITE_StsNoMem; + } + init_param_ = param; + return 0; + } + } + int preProcess(VideoFrame frame, + SuperResolutionProcessParam process_param) { + return 0; + } + int createProcessOutVideoFrame(VideoFrame &frame, + SuperResolutionProcessParam process_param) { + return 0; + } + int processVideoFrame(VideoFrame frame, Param param) { + SuperResolutionProcessParam process_param; + int res = parseProcessParam(param, process_param); + if (res < 0) { + return res; + } + std::shared_ptr video_buffer = frame.buffer(); + bmf_lite::HardwareDataInfo hardware_data_info = + video_buffer->hardwareDataInfo(); + hardware_data_info.mutable_flag = 1; + std::shared_ptr output_video_buffer = + video_pool_->acquireObject(video_buffer->width() * 2, + video_buffer->height() * 2, + hardware_data_info); + if (output_video_buffer == NULL) { + return BMF_LITE_StsNoMem; + } + out_frame_ = VideoFrame(output_video_buffer); + // std::cout<<"SuperResolutionAlgorithm::processVideoFrame + // "<<"processVideoFrame"<width(); + int height = in_frame.buffer()->height(); + int in_tex = (long)(in_frame.buffer()->data()); + int out_tex = (long)(out_frame.buffer()->data()); + int sharp_level = process_param.sharp_level; + float *mvp = process_param.mvp; + float cm_[9] = {1, -0.00093, 1.401687, 1, -0.3437, + -0.71417, 1, 1.77216, 0.00099}; + float co_[3] = {0, -0.5, -0.5}; + int ops_res = sr_hp_->run(in_tex, out_tex, width, height); + if (0 != ops_res) { + return BMF_LITE_OpsError; + } + return 0; + } + int getVideoFrameOutput(VideoFrame &frame, Param ¶m) { + frame = out_frame_; + out_frame_ = VideoFrame(); + return 0; + } + int unInit() { return 0; }; +}; + +SuperResolutionAlgorithm::SuperResolutionAlgorithm() {}; +SuperResolutionAlgorithm::~SuperResolutionAlgorithm() {}; +int SuperResolutionAlgorithm::setParam(Param param) { + if (impl_ == NULL) { + impl_ = std::make_shared(); + } + return impl_->setParam(param); +} +int SuperResolutionAlgorithm::processVideoFrame(VideoFrame frame, Param param) { + return impl_->processVideoFrame(frame, param); +} +int SuperResolutionAlgorithm::getVideoFrameOutput(VideoFrame &frame, + Param ¶m) { + return impl_->getVideoFrameOutput(frame, param); +} +int SuperResolutionAlgorithm::unInit() { return impl_->unInit(); }; +int SuperResolutionAlgorithm::processMultiVideoFrame( + std::vector videoframes, Param param) { + return BMF_LITE_StsFuncNotImpl; +} +int SuperResolutionAlgorithm::getMultiVideoFrameOutput( + std::vector &videoframes, Param ¶m) { + return BMF_LITE_StsFuncNotImpl; +} +int SuperResolutionAlgorithm::getProcessProperty(Param ¶m) { + return BMF_LITE_StsFuncNotImpl; +} + +int SuperResolutionAlgorithm::setInputProperty(Param attr) { + return BMF_LITE_StsFuncNotImpl; +} + +int SuperResolutionAlgorithm::getOutputProperty(Param &attr) { + return BMF_LITE_StsFuncNotImpl; +} +} // namespace bmf_lite +#endif \ No newline at end of file diff --git a/bmf_lite/src/algorithm/modules/super_resolution/super_resolution_algorithm.h b/bmf_lite/src/algorithm/modules/super_resolution/super_resolution_algorithm.h new file mode 100644 index 00000000..e2166534 --- /dev/null +++ b/bmf_lite/src/algorithm/modules/super_resolution/super_resolution_algorithm.h @@ -0,0 +1,35 @@ +#ifndef _BMF_SUPER_RESOLUTION_ALGORITHM_H_ +#define _BMF_SUPER_RESOLUTION_ALGORITHM_H_ +#include "algorithm/algorithm_interface.h" +#include "algorithm/bmf_algorithm.h" +#include "media/video_buffer/video_buffer_pool.h" + +namespace bmf_lite { + +class SuperResolutionImpl; +class SuperResolutionAlgorithm : public IAlgorithmInterface { + public: + SuperResolutionAlgorithm(); + virtual ~SuperResolutionAlgorithm(); + + int setParam(Param param) override; + int unInit(); + + int processVideoFrame(VideoFrame frame, Param param) override; + int getVideoFrameOutput(VideoFrame &frame, Param ¶m) override; + + int processMultiVideoFrame(std::vector videoframes, + Param param) override; + int getMultiVideoFrameOutput(std::vector &videoframes, + Param ¶m) override; + + int getProcessProperty(Param ¶m) override; + int setInputProperty(Param attr) override; + int getOutputProperty(Param &attr) override; + + std::shared_ptr impl_ = nullptr; +}; + +} // namespace bmf_lite + +#endif \ No newline at end of file diff --git a/bmf_lite/src/algorithm/modules/super_resolution/super_resolution_algorithm.mm b/bmf_lite/src/algorithm/modules/super_resolution/super_resolution_algorithm.mm new file mode 100644 index 00000000..aa18db5f --- /dev/null +++ b/bmf_lite/src/algorithm/modules/super_resolution/super_resolution_algorithm.mm @@ -0,0 +1,239 @@ +#include "super_resolution_algorithm.h" +#include "algorithm/bmf_video_frame.h" +#include "common/error_code.h" +#include "media/video_buffer/metal_texture_video_buffer/mtl_device_context.h" +#include "media/video_buffer/transform/cvpixelbuffer_transformer.h" +#include "metal/sr/sr.h" +#include "metal/metal_helper.h" +#import + +#if defined(__APPLE__) && defined(BMF_LITE_ENABLE_SUPER_RESOLUTION) + +namespace bmf_lite { + +struct SuperResolutionInitParam { + int algorithm_type = 0; + int scale_mode = -1; + int process_mode = -1; + int max_width = -1; + int max_height = -1; + int pool_size = 2; + std::string library_path; + bool operator==(const SuperResolutionInitParam ¶m) { + if (algorithm_type == param.algorithm_type && + scale_mode == param.scale_mode) { + return true; + } + return false; + } +}; + +struct SuperResolutionProcessParam {}; + +class SuperResolutionImpl{ +public: + int parseInitParam(Param param, SuperResolutionInitParam &init_param) { + if (param.getInt("algorithm_type", init_param.algorithm_type) != 0) { + return BMF_LITE_StsBadArg; + } + if (param.getInt("scale_mode", init_param.scale_mode) != 0) { + return BMF_LITE_StsBadArg; + } + if (param.getInt("process_mode", init_param.process_mode) != 0) { + return BMF_LITE_StsBadArg; + } + if (param.getInt("max_width", init_param.max_width) != 0) { + return BMF_LITE_StsBadArg; + } + if (param.getInt("max_height", init_param.max_height) != 0) { + return BMF_LITE_StsBadArg; + } + if (param.getString("library_path", init_param.library_path) != 0) { + return BMF_LITE_StsBadArg; + } + return BMF_LITE_StsOk; + } + + int parseProcessParam(const Param ¶m, SuperResolutionProcessParam &process_param) { + return BMF_LITE_StsOk; + } + + int setParam(Param param) { + struct SuperResolutionInitParam init_param; + int ret = parseInitParam(param, init_param); + if (ret != BMF_LITE_StsOk) { + return ret; + } + + if (init_param_ == init_param && sr_hp_ != nullptr) { + return BMF_LITE_StsOk; + } + + sr_hp_.reset(new (std::nothrow) metal::Sr()); + ret = sr_hp_->init(); + if (ret != BMF_LITE_StsOk) { + return ret; + } + command_queue_ = [metal::MetalHelper::instance().mtl_device() newCommandQueue]; + MemoryType memory_type = MemoryType::kCVPixelBuffer; + std::shared_ptr mtl_device_context = std::make_shared(); + mtl_device_context->create_context(); + + std::shared_ptr allocator = AllocatorManager::getAllocator(memory_type, mtl_device_context); + pool_ = std::make_shared(allocator, mtl_device_context, init_param.pool_size); + + HardwareDataInfo hardware_data_info_in; + hardware_data_info_in.mem_type = MemoryType::kCVPixelBuffer; + + HardwareDataInfo hardware_data_info_out; + hardware_data_info_out.mem_type = MemoryType::kMultiMetalTexture; + + trans_ = std::make_shared(); + ret = trans_->init(hardware_data_info_in, mtl_device_context, hardware_data_info_out); + if (ret != BMF_LITE_StsOk) { + return ret; + } + init_param_ = init_param; + + return BMF_LITE_StsOk; + } + + int processVideoFrame(VideoFrame *in_frame, std::shared_ptr obuf, const SuperResolutionProcessParam &process_param) { + std::shared_ptr ibuf = in_frame->buffer(); + if (ibuf == nullptr) { + return BMF_LITE_StsBadArg; + } + + std::shared_ptr temp_ibuf = nullptr; + int ret = trans_->trans(ibuf, temp_ibuf); + if (ret != BMF_LITE_StsOk) { + return ret; + } + + VideoFrame temp_iframe(temp_ibuf); + + VideoTextureList *temp_multi_data = (VideoTextureList *)(temp_iframe.buffer()->data()); + id y_tex = (__bridge_transfer id)(temp_multi_data->texture_list[0]->data()); + id uv_tex = (__bridge_transfer id)(temp_multi_data->texture_list[1]->data()); + + std::shared_ptr temp_obuf = nullptr; + + ret = trans_->trans(obuf, temp_obuf); + if (ret != BMF_LITE_StsOk) { + return ret; + } + + VideoFrame temp_oframe(temp_obuf); + + VideoTextureList *out_multi_data = (VideoTextureList *)(temp_oframe.buffer()->data()); + id y_otex = (__bridge_transfer id)(out_multi_data->texture_list[0]->data()); + id uv_otex = (__bridge_transfer id)(out_multi_data->texture_list[1]->data()); + + if (y_tex == nil || uv_tex == nil || y_otex == nil || uv_otex == nil) { + return BMF_LITE_StsTexTypeError; + } + + ret = sr_hp_->run(y_tex, uv_tex, y_otex, uv_otex, command_queue_); + if (ret != BMF_LITE_StsOk) { + return ret; + } + return BMF_LITE_StsOk; + } + + SuperResolutionImpl() {} + + int processVideoFrame(VideoFrame frame, Param ¶m) { + SuperResolutionProcessParam process_param; + int ret = parseProcessParam(param, process_param); + if (ret != BMF_LITE_StsOk) { + return ret; + } + + std::shared_ptr video_buffer = frame.buffer(); + if (pool_ == nullptr) { + return BMF_LITE_OpsError; + } + + HardwareDataInfo hardware_data_info; + hardware_data_info.mem_type = MemoryType::kCVPixelBuffer; + hardware_data_info.internal_format = video_buffer->hardwareDataInfo().internal_format; + + // Todo: if have attachment + int ow = video_buffer->width() * scale_ratio_; + int oh = video_buffer->height() * scale_ratio_; + output_video_buffer_ = nullptr; + output_video_buffer_ = pool_->acquireObject(ow, oh, hardware_data_info); + + if (output_video_buffer_ == nullptr) { + return BMF_LITE_StsNoMem; + } + + return processVideoFrame(&frame, output_video_buffer_, process_param); + } + + int getVideoFrameOutput(VideoFrame &frame, const Param ¶m) { + frame = VideoFrame(output_video_buffer_); + return 0; + } + + ~SuperResolutionImpl() { + command_queue_ = nil; + sr_hp_ = nullptr; + trans_ = nil; + pool_ = nil; + } + +private: + id command_queue_ = nil; + SuperResolutionInitParam init_param_; + std::shared_ptr sr_hp_ = nullptr; + std::shared_ptr trans_ = nullptr; + std::shared_ptr pool_ = nullptr; + std::shared_ptr output_video_buffer_; + float scale_ratio_ = 2.0f; +}; + +int SuperResolutionAlgorithm::setParam(Param param) { + if (impl_ == nullptr) { + impl_.reset(new (std::nothrow) SuperResolutionImpl()); + } + return impl_->setParam(param); +} + +int SuperResolutionAlgorithm::processVideoFrame(VideoFrame frame, Param param) { + return impl_->processVideoFrame(frame, param); +} + +int SuperResolutionAlgorithm::getVideoFrameOutput(VideoFrame &frame, Param ¶m) { + return impl_->getVideoFrameOutput(frame, param); +} + +int SuperResolutionAlgorithm::processMultiVideoFrame(std::vector videoframes, Param param) { + return -1; +} + +int SuperResolutionAlgorithm::getMultiVideoFrameOutput(std::vector &videoframes, Param ¶m) { + return -1; +} + +int SuperResolutionAlgorithm::unInit() { impl_ = nullptr; } + +SuperResolutionAlgorithm::SuperResolutionAlgorithm() {} + +SuperResolutionAlgorithm::~SuperResolutionAlgorithm() {} + +int SuperResolutionAlgorithm::getProcessProperty(Param ¶m) { + return BMF_LITE_StsFuncNotImpl; +} + +int SuperResolutionAlgorithm::setInputProperty(Param attr) { + return BMF_LITE_StsFuncNotImpl; +} + +int SuperResolutionAlgorithm::getOutputProperty(Param &attr) { + return BMF_LITE_StsFuncNotImpl; +} + +} + +#endif \ No newline at end of file diff --git a/bmf_lite/src/common/bmf_param.cpp b/bmf_lite/src/common/bmf_param.cpp new file mode 100644 index 00000000..4d7aff26 --- /dev/null +++ b/bmf_lite/src/common/bmf_param.cpp @@ -0,0 +1,249 @@ +/* + * Copyright 2024 Babit Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "common/bmf_param.h" +#include "common/error_code.h" +#include +#include +#include +#include +#include + +namespace bmf_lite { +enum class ParamDataType { + UNKNOWN = 0, + INT_TYPE = 1, + LONG_TYPE = 2, + FLOAT_TYPE = 3, + DOUBLE_TYPE = 4, + STRING_TYPE = 5, + INT_LIST_TYPE = 6, + FLOAT_LIST_TYPE = 7, + DOUBLE_LIST_TYPE = 8, + STRING_LIST_TYPE = 9, +}; + +struct ParamData { + ParamDataType data_type = ParamDataType::UNKNOWN; + int int_data; + int64_t long_data; + float float_data; + double double_data; + std::string string_data; + std::vector int_list_data; + std::vector float_list_data; + std::vector double_list_data; + std::vector string_list_data; +}; + +class ParamImpl { + public: + std::map json_value_; +}; + +Param::Param() { param_impl_ = std::make_shared(); } + +bool Param::has_key(std::string name) { + if (param_impl_->json_value_.empty()) { + return false; + } + if (param_impl_->json_value_.count(name) > 0) { + return true; + } else { + return false; + } +} + +int Param::erase(std::string name) { + if (param_impl_->json_value_.empty() || + param_impl_->json_value_.count(name) > 0) { + return BMF_LITE_StsOk; + } + return param_impl_->json_value_.erase(name); +} + +int Param::getInt(std::string name, int &result) { + if (has_key(name) && + (param_impl_->json_value_[name].data_type == ParamDataType::INT_TYPE)) { + result = param_impl_->json_value_[name].int_data; + return BMF_LITE_StsOk; + } else { + return BMF_LITE_StsBadArg; + } +} + +int Param::setInt(std::string name, int result) { + ParamData param_data; + param_data.data_type = ParamDataType::INT_TYPE; + param_data.int_data = result; + param_impl_->json_value_[name] = param_data; + return BMF_LITE_StsOk; +} + +int Param::getLong(std::string name, int64_t &result) { + if (has_key(name) && (param_impl_->json_value_[name].data_type == + ParamDataType::LONG_TYPE)) { + result = param_impl_->json_value_[name].long_data; + return BMF_LITE_StsOk; + } else { + return BMF_LITE_StsBadArg; + } + return BMF_LITE_StsOk; +} + +int Param::setLong(std::string name, int64_t result) { + ParamData param_data; + param_data.data_type = ParamDataType::LONG_TYPE; + param_data.long_data = result; + param_impl_->json_value_[name] = param_data; + return BMF_LITE_StsOk; +} + +int Param::getFloat(std::string name, float &result) { + if (has_key(name) && (param_impl_->json_value_[name].data_type == + ParamDataType::FLOAT_TYPE)) { + result = param_impl_->json_value_[name].float_data; + return BMF_LITE_StsOk; + } else { + return BMF_LITE_StsBadArg; + } + return BMF_LITE_StsOk; +} + +int Param::setFloat(std::string name, float result) { + ParamData param_data; + param_data.data_type = ParamDataType::FLOAT_TYPE; + param_data.float_data = result; + param_impl_->json_value_[name] = param_data; + return BMF_LITE_StsOk; +} + +int Param::getDouble(std::string name, double &result) { + if (has_key(name) && (param_impl_->json_value_[name].data_type == + ParamDataType::DOUBLE_TYPE)) { + result = param_impl_->json_value_[name].double_data; + return BMF_LITE_StsOk; + } else { + return BMF_LITE_StsBadArg; + } + return BMF_LITE_StsOk; +} + +int Param::setDouble(std::string name, double result) { + ParamData param_data; + param_data.data_type = ParamDataType::DOUBLE_TYPE; + param_data.double_data = result; + param_impl_->json_value_[name] = param_data; + return BMF_LITE_StsOk; +} + +int Param::getString(std::string name, std::string &result) { + if (has_key(name) && (param_impl_->json_value_[name].data_type == + ParamDataType::STRING_TYPE)) { + result = param_impl_->json_value_[name].string_data; + return BMF_LITE_StsOk; + } else { + return BMF_LITE_StsBadArg; + } + return BMF_LITE_StsOk; +} + +int Param::setString(std::string name, std::string result) { + ParamData param_data; + param_data.data_type = ParamDataType::STRING_TYPE; + param_data.string_data = result; + param_impl_->json_value_[name] = param_data; + return BMF_LITE_StsOk; +} + +int Param::getIntList(std::string name, std::vector &result) { + if (has_key(name) && (param_impl_->json_value_[name].data_type == + ParamDataType::INT_LIST_TYPE)) { + result = param_impl_->json_value_[name].int_list_data; + return 0; + } else { + return BMF_LITE_StsBadArg; + } + return 0; +} + +int Param::setIntList(std::string name, std::vector result) { + ParamData param_data; + param_data.data_type = ParamDataType::INT_LIST_TYPE; + param_data.int_list_data = result; + param_impl_->json_value_[name] = param_data; + return 0; +} + +int Param::getFloatList(std::string name, std::vector &result) { + if (has_key(name) && (param_impl_->json_value_[name].data_type == + ParamDataType::FLOAT_LIST_TYPE)) { + result = param_impl_->json_value_[name].float_list_data; + return 0; + } else { + return BMF_LITE_StsBadArg; + } + return 0; +} + +int Param::setFloatList(std::string name, std::vector result) { + ParamData param_data; + param_data.data_type = ParamDataType::FLOAT_LIST_TYPE; + param_data.float_list_data = result; + param_impl_->json_value_[name] = param_data; + return 0; +} + +int Param::getDoubleList(std::string name, std::vector &result) { + if (has_key(name) && (param_impl_->json_value_[name].data_type == + ParamDataType::DOUBLE_LIST_TYPE)) { + result = param_impl_->json_value_[name].double_list_data; + return 0; + } else { + return BMF_LITE_StsBadArg; + } + return 0; +} + +int Param::setDoubleList(std::string name, std::vector result) { + ParamData param_data; + param_data.data_type = ParamDataType::DOUBLE_LIST_TYPE; + param_data.double_list_data = result; + param_impl_->json_value_[name] = param_data; + return 0; +} + +int Param::getStringList(std::string name, std::vector &result) { + if (has_key(name) && (param_impl_->json_value_[name].data_type == + ParamDataType::STRING_LIST_TYPE)) { + result = param_impl_->json_value_[name].string_list_data; + return 0; + } else { + return BMF_LITE_StsBadArg; + } + return 0; +} + +int Param::setStringList(std::string name, std::vector result) { + ParamData param_data; + param_data.data_type = ParamDataType::STRING_LIST_TYPE; + param_data.string_list_data = result; + param_impl_->json_value_[name] = param_data; + return 0; +} + +std::string Param::dump() { return ""; } +} // namespace bmf_lite diff --git a/bmf_lite/src/media/video_buffer/cvpixelbuffer_video_buffer/cvpixelbuffer_video_buffer.h b/bmf_lite/src/media/video_buffer/cvpixelbuffer_video_buffer/cvpixelbuffer_video_buffer.h new file mode 100644 index 00000000..097891ef --- /dev/null +++ b/bmf_lite/src/media/video_buffer/cvpixelbuffer_video_buffer/cvpixelbuffer_video_buffer.h @@ -0,0 +1,46 @@ +/* + * Copyright 2024 Babit Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef _BMFLITE_CVPIXELBUFFER_VIDEOBUFFER_H_ +#define _BMFLITE_CVPIXELBUFFER_VIDEOBUFFER_H_ + +#include "media/video_buffer/hardware_device_context.h" +#include "media/video_buffer/video_buffer.h" + +namespace bmf_lite { + +class CVPixelBufferVideoBuffer : public VideoBuffer { + public: + CVPixelBufferVideoBuffer(void *cv_pixel_buffer, int width, int height, + HardwareDataInfo hardware_data_info, + std::shared_ptr device_context); + ~CVPixelBufferVideoBuffer(); + std::shared_ptr getHWDeviceContext(); + int width(); + int height(); + + void *data() { return (void *)cv_pixel_buffer_; } + + MemoryType memoryType() { return MemoryType::kCVPixelBuffer; } + + HardwareDataInfo hardwareDataInfo(); + + void *cv_pixel_buffer_; +}; + +} // namespace bmf_lite + +#endif \ No newline at end of file diff --git a/bmf_lite/src/media/video_buffer/cvpixelbuffer_video_buffer/cvpixelbuffer_video_buffer.mm b/bmf_lite/src/media/video_buffer/cvpixelbuffer_video_buffer/cvpixelbuffer_video_buffer.mm new file mode 100644 index 00000000..a7fba5c1 --- /dev/null +++ b/bmf_lite/src/media/video_buffer/cvpixelbuffer_video_buffer/cvpixelbuffer_video_buffer.mm @@ -0,0 +1,53 @@ +/* + * Copyright 2024 Babit Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "cvpixelbuffer_video_buffer.h" + +#ifdef BMF_LITE_ENABLE_CVPIXELBUFFER + +namespace bmf_lite { +CVPixelBufferVideoBuffer::CVPixelBufferVideoBuffer( + void *cv_pixel_buffer, int width, int height, HardwareDataInfo data_info, + std::shared_ptr device_context) { + cv_pixel_buffer_ = cv_pixel_buffer; + width_ = width; + height_ = height; + hardware_data_info_ = data_info; + device_context_ = device_context; +}; + +CVPixelBufferVideoBuffer::~CVPixelBufferVideoBuffer() { + if (deleter_) { + deleter_(this); + } +} + +int CVPixelBufferVideoBuffer::width() { return width_; } + +int CVPixelBufferVideoBuffer::height() { return height_; } + +std::shared_ptr +CVPixelBufferVideoBuffer::getHWDeviceContext() { + return device_context_; +} + +HardwareDataInfo CVPixelBufferVideoBuffer::hardwareDataInfo() { + return hardware_data_info_; +} + +} // namespace bmf_lite + +#endif \ No newline at end of file diff --git a/bmf_lite/src/media/video_buffer/cvpixelbuffer_video_buffer/cvpixelbuffer_video_buffer_allocator.h b/bmf_lite/src/media/video_buffer/cvpixelbuffer_video_buffer/cvpixelbuffer_video_buffer_allocator.h new file mode 100644 index 00000000..5332d10d --- /dev/null +++ b/bmf_lite/src/media/video_buffer/cvpixelbuffer_video_buffer/cvpixelbuffer_video_buffer_allocator.h @@ -0,0 +1,34 @@ +/* + * Copyright 2024 Babit Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef _BMFLITE_CVPIXELBUFFER_VIDEOBUFFER_ALLOCATOR_H_ +#define _BMFLITE_CVPIXELBUFFER_VIDEOBUFFER_ALLOCATOR_H_ + +#include "media/video_buffer/video_buffer_allocator.h" + +namespace bmf_lite { +class CVPixelBufferVideoBufferAllocator : public VideoBufferAllocator { + public: + CVPixelBufferVideoBufferAllocator(); + ~CVPixelBufferVideoBufferAllocator(); + int allocVideoBuffer(int width, int height, HardwareDataInfo *data_info, + std::shared_ptr device_context, + VideoBuffer *&video_buffer); + static int releaseVideoBuffer(VideoBuffer *video_buffer); +}; +} // namespace bmf_lite + +#endif // _BMFLITE_CVPIXELBUFFER_VIDEOBUFFER_ALLOCATOR_H_ \ No newline at end of file diff --git a/bmf_lite/src/media/video_buffer/cvpixelbuffer_video_buffer/cvpixelbuffer_video_buffer_allocator.mm b/bmf_lite/src/media/video_buffer/cvpixelbuffer_video_buffer/cvpixelbuffer_video_buffer_allocator.mm new file mode 100644 index 00000000..a57b1eaf --- /dev/null +++ b/bmf_lite/src/media/video_buffer/cvpixelbuffer_video_buffer/cvpixelbuffer_video_buffer_allocator.mm @@ -0,0 +1,71 @@ +/* + * Copyright 2024 Babit Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifdef BMF_LITE_ENABLE_CVPIXELBUFFER + +#include "cvpixelbuffer_video_buffer_allocator.h" +#include "common/error_code.h" +#include "cvpixelbuffer_video_buffer.h" +#import +#import +#import + +namespace bmf_lite { + +CVPixelBufferVideoBufferAllocator::CVPixelBufferVideoBufferAllocator() {} +CVPixelBufferVideoBufferAllocator::~CVPixelBufferVideoBufferAllocator() {} + +int CVPixelBufferVideoBufferAllocator::allocVideoBuffer( + int width, int height, HardwareDataInfo *data_info, + std::shared_ptr device_context, + VideoBuffer *&video_buffer) { + // HWDeviceContextGuard device_guard(device_context); + CVPixelBufferRef cv_pixel_buffer; + if (data_info->internal_format == BMF_LITE_CV_NV12) { + NSDictionary *options = @{ + (__bridge NSString *)kCVPixelBufferIOSurfacePropertiesKey : @{}, + }; + int format = kCVPixelFormatType_420YpCbCr8BiPlanarVideoRange; + CVReturn result = CVPixelBufferCreate( + kCFAllocatorDefault, width, height, format, + (__bridge CFDictionaryRef)options, &cv_pixel_buffer); + if (result != 0) { + return BMF_LITE_COREVIDEO_ERROR; + } + video_buffer = new CVPixelBufferVideoBuffer(cv_pixel_buffer, width, height, + *data_info, device_context); + video_buffer->setDeleter([](VideoBuffer *video_buffer) { + CVPixelBufferVideoBufferAllocator::releaseVideoBuffer(video_buffer); + }); + } + return 0; +} + +int CVPixelBufferVideoBufferAllocator::releaseVideoBuffer( + VideoBuffer *video_buffer) { + std::shared_ptr device_context = + video_buffer->getHWDeviceContext(); + CVPixelBufferVideoBuffer *cv_pixel_buffer = + (CVPixelBufferVideoBuffer *)video_buffer; + if (cv_pixel_buffer != NULL) { + CVPixelBufferRelease((CVPixelBufferRef)(cv_pixel_buffer->cv_pixel_buffer_)); + } + return 0; +} // namespace bmf_lite + +} + +#endif \ No newline at end of file diff --git a/bmf_lite/src/media/video_buffer/gl_texture_video_buffer/egl_hardware_device_context.cpp b/bmf_lite/src/media/video_buffer/gl_texture_video_buffer/egl_hardware_device_context.cpp new file mode 100644 index 00000000..a646fb4a --- /dev/null +++ b/bmf_lite/src/media/video_buffer/gl_texture_video_buffer/egl_hardware_device_context.cpp @@ -0,0 +1,184 @@ +/* + * Copyright 2024 Babit Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifdef BMF_LITE_ENABLE_OPENGLTEXTUREBUFFER + +#define GL_GLEXT_PROTOTYPES +#define EGL_EGLEXT_PROTOTYPES + +#include "egl_hardware_device_context.h" +#include "common/error_code.h" +#include +#include + +namespace bmf_lite { +EglHWDeviceContext::~EglHWDeviceContext() { + if (owned_) { + if (egl_display_ != NULL) { + if (egl_read_surface_ != egl_draw_surface_ && + egl_draw_surface_ != NULL) { + if (!eglDestroySurface(egl_display_, egl_draw_surface_)) { + // BMF_LITE_ERR("eglDestroySurface write surface failed"); + } + } + if (egl_read_surface_ != NULL) { + if (!eglDestroySurface(egl_display_, egl_read_surface_)) { + // BMF_LITE_ERR("eglDestroySurface read surface failed"); + } + } + if (egl_context_ != NULL) { + if (!eglDestroyContext(egl_display_, egl_context_)) { + // BMF_LITE_ERR("eglDestroyContext failed"); + } + } + + if (!eglTerminate(egl_display_)) { + // BMF_LITE_ERR("eglTerminate failed"); + } + } + } else { + if (free_func_) { + free_func_(user_data_); + } + } +} + +EglHWDeviceContext::EglHWDeviceContext(void *egl_display, void *egl_context, + void *egl_read_surface, + void *egl_draw_surface, int owned) { + egl_display_ = egl_display; + egl_context_ = egl_context; + egl_read_surface_ = egl_read_surface; + egl_draw_surface_ = egl_draw_surface; + owned_ = owned; +} + +int EglHWDeviceContext::setFreeFunc(FreeFunc free_func, void *user_data) { + free_func_ = free_func; + user_data_ = user_data; + return 0; +} + +EglHWDeviceContext::EglHWDeviceContext() {} + +int EglHWDeviceContext::create_context(void *shared_context) { + egl_display_ = eglGetDisplay(EGL_DEFAULT_DISPLAY); + if (egl_display_ == EGL_NO_DISPLAY) { + // BMF_LITE_ERR("egl get display failed"); + return BMF_LITE_EGLError; + } + int majorVersion; + int minorVersion; + if (!eglInitialize(egl_display_, &majorVersion, &minorVersion)) { + // BMF_LITE_ERR("egl eglInitialize failed"); + return BMF_LITE_EGLError; + } + EGLint numConfigs; + const EGLint configAttribs[] = {EGL_SURFACE_TYPE, + EGL_PBUFFER_BIT, + EGL_RENDERABLE_TYPE, + EGL_OPENGL_ES2_BIT, + EGL_RED_SIZE, + 8, + EGL_GREEN_SIZE, + 8, + EGL_BLUE_SIZE, + 8, + EGL_ALPHA_SIZE, + 8, + EGL_NONE}; + + EGLConfig surfaceConfig; + if (!eglChooseConfig(egl_display_, configAttribs, &surfaceConfig, 1, + &numConfigs)) { + // BMF_LITE_ERR("egl eglChooseConfig failed"); + return BMF_LITE_EGLError; + } + + static const EGLint contextAttribs[] = {EGL_CONTEXT_CLIENT_VERSION, 3, + EGL_NONE}; + egl_context_ = + eglCreateContext(egl_display_, surfaceConfig, NULL, contextAttribs); + if (egl_context_ == NULL) { + // BMF_LITE_ERR("egl eglCreateContext failed"); + if (!eglTerminate(egl_display_)) { + // BMF_LITE_ERR("eglTerminate failed"); + } + egl_display_ = NULL; + return BMF_LITE_EGLError; + } + static const EGLint surfaceAttribs[] = {EGL_WIDTH, 1, EGL_HEIGHT, 1, + EGL_NONE}; + egl_read_surface_ = + eglCreatePbufferSurface(egl_display_, surfaceConfig, surfaceAttribs); + if (egl_read_surface_ == NULL) { + // BMF_LITE_ERR("egl eglCreatePbufferSurface failed"); + if (!eglDestroyContext(egl_display_, egl_context_)) { + // BMF_LITE_ERR("eglDestroyContext failed"); + } + egl_context_ = NULL; + if (!eglTerminate(egl_display_)) { + // BMF_LITE_ERR("eglTerminate failed"); + } + egl_display_ = NULL; + return BMF_LITE_EGLError; + } + egl_draw_surface_ = egl_read_surface_; + owned_ = 1; + return 0; +} + +int EglHWDeviceContext::setCurrent() { + if (egl_context_ != NULL && egl_read_surface_ != NULL && + egl_draw_surface_ != NULL && egl_display_ != NULL) { + if (!eglBindAPI(EGL_OPENGL_ES_API)) { + // BMF_LITE_ERR("eglBindAPI failed"); + return BMF_LITE_EGLError; + } + void *current_context = eglGetCurrentContext(); + if (current_context == egl_context_) { + return 0; + } + if (!eglMakeCurrent(egl_display_, egl_draw_surface_, egl_read_surface_, + egl_context_)) { + // BMF_LITE_ERR("eglMakeCurrent failed"); + return BMF_LITE_EGLError; + } + } + return BMF_LITE_StsBadArg; +} + +std::shared_ptr EglHWDeviceContext::storeCurrent() { + std::shared_ptr context = + std::make_shared(); + context->egl_display_ = eglGetCurrentDisplay(); + context->egl_draw_surface_ = eglGetCurrentSurface(EGL_DRAW); + context->egl_read_surface_ = eglGetCurrentSurface(EGL_READ); + context->egl_context_ = eglGetCurrentContext(); + return context; +} + +int EglHWDeviceContext::getContextInfo(void *&context_info) { + info.egl_context = egl_context_; + info.egl_display = egl_display_; + info.egl_draw_surface = egl_draw_surface_; + info.egl_read_surface = egl_read_surface_; + context_info = &info; + return 0; +} +} // namespace bmf_lite + +#endif \ No newline at end of file diff --git a/bmf_lite/src/media/video_buffer/gl_texture_video_buffer/egl_hardware_device_context.h b/bmf_lite/src/media/video_buffer/gl_texture_video_buffer/egl_hardware_device_context.h new file mode 100644 index 00000000..7be19893 --- /dev/null +++ b/bmf_lite/src/media/video_buffer/gl_texture_video_buffer/egl_hardware_device_context.h @@ -0,0 +1,52 @@ +/* + * Copyright 2024 Babit Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef _BMF_EGL_HARDWARE_DEVICE_CONTEXT_H_ +#define _BMF_EGL_HARDWARE_DEVICE_CONTEXT_H_ + +#include "media/video_buffer/hardware_device_context.h" +#include +#include + +namespace bmf_lite { + +class EglHWDeviceContext : public HWDeviceContext { + public: + std::shared_ptr storeCurrent(); + HWDeviceType deviceType() { return kHWDeviceTypeEGLCtx; } + EglHWDeviceContext(void *egl_display, void *egl_context, + void *egl_read_surface, void *egl_draw_surface, + int owned); + EglHWDeviceContext(); + ~EglHWDeviceContext(); + int setFreeFunc(FreeFunc free_func, void *user_data); + int create_context(void *egl_context = NULL); + int setCurrent(); + int getContextInfo(void *&info); + EGLContextInfo info; + void *egl_display_ = NULL; + void *egl_context_ = NULL; + void *egl_read_surface_ = NULL; + void *egl_draw_surface_ = NULL; + int owned_ = 0; + + FreeFunc free_func_ = NULL; + void *user_data_ = NULL; +}; + +} // namespace bmf_lite + +#endif \ No newline at end of file diff --git a/bmf_lite/src/media/video_buffer/gl_texture_video_buffer/gl_texture_video_buffer.cpp b/bmf_lite/src/media/video_buffer/gl_texture_video_buffer/gl_texture_video_buffer.cpp new file mode 100644 index 00000000..780d0168 --- /dev/null +++ b/bmf_lite/src/media/video_buffer/gl_texture_video_buffer/gl_texture_video_buffer.cpp @@ -0,0 +1,57 @@ +/* + * Copyright 2024 Babit Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifdef BMF_LITE_ENABLE_OPENGLTEXTUREBUFFER +#include "gl_texture_video_buffer.h" + +namespace bmf_lite { +GlTextureVideoBuffer::GlTextureVideoBuffer( + int texture_id, int width, int height, HardwareDataInfo hardware_data_info, + std::shared_ptr device_context) { + texture_id_ = texture_id; + width_ = width; + height_ = height; + device_context_ = device_context; + hardware_data_info_ = hardware_data_info; +} + +GlTextureVideoBuffer::~GlTextureVideoBuffer() { + if (deleter_) { + deleter_(this); + } +} + +int GlTextureVideoBuffer::width() { return width_; } + +int GlTextureVideoBuffer::height() { return height_; } + +int GlTextureVideoBuffer::getTextureId() { return texture_id_; } + +std::shared_ptr GlTextureVideoBuffer::getHWDeviceContext() { + return device_context_; +} + +MemoryType GlTextureVideoBuffer::memoryType() { + return hardware_data_info_.mem_type; +} + +HardwareDataInfo GlTextureVideoBuffer::hardwareDataInfo() { + return hardware_data_info_; +} + +} // namespace bmf_lite + +#endif \ No newline at end of file diff --git a/bmf_lite/src/media/video_buffer/gl_texture_video_buffer/gl_texture_video_buffer.h b/bmf_lite/src/media/video_buffer/gl_texture_video_buffer/gl_texture_video_buffer.h new file mode 100644 index 00000000..8c79d0f8 --- /dev/null +++ b/bmf_lite/src/media/video_buffer/gl_texture_video_buffer/gl_texture_video_buffer.h @@ -0,0 +1,43 @@ +/* + * Copyright 2024 Babit Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef _BMF_GLTEXTURE_VIDEO_BUFFER_H_ +#define _BMF_GLTEXTURE_VIDEO_BUFFER_H_ + +#include "media/video_buffer/hardware_device_context.h" +#include "media/video_buffer/video_buffer.h" + +namespace bmf_lite { + +class GlTextureVideoBuffer : public VideoBuffer { + public: + GlTextureVideoBuffer(int texture_id, int width, int height, + HardwareDataInfo hardware_data_info, + std::shared_ptr device_context); + ~GlTextureVideoBuffer(); + std::shared_ptr getHWDeviceContext(); + int width(); + int height(); + int getTextureId(); + HardwareDataInfo hardwareDataInfo(); + void *data() { return (void *)texture_id_; }; + MemoryType memoryType(); + int texture_id_; +}; + +} // namespace bmf_lite + +#endif \ No newline at end of file diff --git a/bmf_lite/src/media/video_buffer/gl_texture_video_buffer/gl_texture_video_buffer_allocator.cpp b/bmf_lite/src/media/video_buffer/gl_texture_video_buffer/gl_texture_video_buffer_allocator.cpp new file mode 100644 index 00000000..cda7e3b2 --- /dev/null +++ b/bmf_lite/src/media/video_buffer/gl_texture_video_buffer/gl_texture_video_buffer_allocator.cpp @@ -0,0 +1,120 @@ +/* + * Copyright 2024 Babit Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifdef BMF_LITE_ENABLE_OPENGLTEXTUREBUFFER +#define GL_GLEXT_PROTOTYPES +#define EGL_EGLEXT_PROTOTYPES + +#include "gl_texture_video_buffer_allocator.h" +#include "gl_texture_video_buffer.h" +#include +#include +#include + +namespace bmf_lite { +#define GL_CHECK_RETURN(FUNC) \ + FUNC; \ + { \ + GLenum glError = glGetError(); \ + if (glError != GL_NO_ERROR) { \ + std::cout << "Call " << #FUNC << "failed error code:" << glError \ + << std::endl; \ + return -1; \ + } \ + } + +GlTextureVideoBufferAllocator::GlTextureVideoBufferAllocator() {} + +GlTextureVideoBufferAllocator::~GlTextureVideoBufferAllocator() {} + +int GlTextureVideoBufferAllocator::allocVideoBuffer( + int width, int height, HardwareDataInfo *data_info, + std::shared_ptr device_context, + VideoBuffer *&video_buffer) { + // printf("device_guard\n"); + // HWDeviceContextGuard device_guard(device_context); + // printf("device_guard end\n"); + + GLuint texture_id = 0; + GL_CHECK_RETURN(glGenTextures(1, &texture_id)); + GL_CHECK_RETURN(glBindTexture(GL_TEXTURE_2D, texture_id)); + + // set the texture wrapping parameters + GL_CHECK_RETURN( + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE)); + GL_CHECK_RETURN( + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE)); + + GL_CHECK_RETURN( + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST)); + GL_CHECK_RETURN( + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST)); + if (data_info->mutable_flag != 0) { + int internal_format = 0; + if (data_info->internal_format == GLES_TEXTURE_RGBA) { + internal_format = GL_RGBA8; + } + if (data_info->internal_format == GLES_TEXTURE_RGBA8UI) { + internal_format = GL_RGBA8UI; + } + // printf("glTexStorage2D\n"); + GL_CHECK_RETURN( + glTexStorage2D(GL_TEXTURE_2D, 1, internal_format, width, height)); + } else { + int internal_format = 0; + int foramt = 0; + if (data_info->internal_format == GLES_TEXTURE_RGBA) { + internal_format = GL_RGBA; + foramt = GL_RGBA; + } + // std::cout<<" internal_format:"<setDeleter([](VideoBuffer *video_buffer) { + GlTextureVideoBufferAllocator::releaseVideoBuffer(video_buffer); + }); + return 0; + } + return 0; +} + +int GlTextureVideoBufferAllocator::releaseVideoBuffer( + VideoBuffer *video_buffer) { + std::shared_ptr device_context = + video_buffer->getHWDeviceContext(); + // HWDeviceContextGuard device_guard(device_context); + if (video_buffer != NULL && + video_buffer->memoryType() == MemoryType::kOpenGLTexture2d) { + GlTextureVideoBuffer *gl_texture_video_buffer = + (GlTextureVideoBuffer *)video_buffer; + GLuint texture_id = gl_texture_video_buffer->getTextureId(); + if (texture_id != 0) { + glDeleteTextures(1, &texture_id); + } + } + video_buffer = NULL; + return 0; +} + +} // namespace bmf_lite +#endif \ No newline at end of file diff --git a/bmf_lite/src/media/video_buffer/gl_texture_video_buffer/gl_texture_video_buffer_allocator.h b/bmf_lite/src/media/video_buffer/gl_texture_video_buffer/gl_texture_video_buffer_allocator.h new file mode 100644 index 00000000..fd8ef424 --- /dev/null +++ b/bmf_lite/src/media/video_buffer/gl_texture_video_buffer/gl_texture_video_buffer_allocator.h @@ -0,0 +1,36 @@ +/* + * Copyright 2024 Babit Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef _BMF_GLTEXTURE_VIDEO_BUFFER_ALLOCATOR_H_ +#define _BMF_GLTEXTURE_VIDEO_BUFFER_ALLOCATOR_H_ + +#include "media/video_buffer/video_buffer_allocator.h" + +namespace bmf_lite { + +class GlTextureVideoBufferAllocator : public VideoBufferAllocator { + public: + GlTextureVideoBufferAllocator(); + ~GlTextureVideoBufferAllocator(); + int allocVideoBuffer(int width, int height, HardwareDataInfo *data_info, + std::shared_ptr device_context, + VideoBuffer *&video_buffer); + static int releaseVideoBuffer(VideoBuffer *video_buffer); +}; + +} // namespace bmf_lite + +#endif \ No newline at end of file diff --git a/bmf_lite/src/media/video_buffer/hardware_device_context.cpp b/bmf_lite/src/media/video_buffer/hardware_device_context.cpp new file mode 100644 index 00000000..679790d3 --- /dev/null +++ b/bmf_lite/src/media/video_buffer/hardware_device_context.cpp @@ -0,0 +1,132 @@ +/* + * Copyright 2024 Babit Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "common/error_code.h" +#include "media/video_buffer/hardware_device_context.h" +#include "media/video_buffer/gl_texture_video_buffer/egl_hardware_device_context.h" +#include "media/video_buffer/metal_texture_video_buffer/mtl_device_context.h" + +namespace bmf_lite { + +int HWDeviceContextManager::getCurrentHwDeviceContext( + const HWDeviceType device_type, std::shared_ptr &context) { + if (device_type == kHWDeviceTypeEGLCtx) { +#ifdef BMF_LITE_ENABLE_OPENGLTEXTUREBUFFER + std::shared_ptr egl_context = + std::make_shared(); + context = egl_context->storeCurrent(); + return BMF_LITE_StsOk; +#endif + } + if (device_type == kHWDeviceTypeMTL) { +#ifdef BMF_LITE_ENABLE_METALBUFFER + std::shared_ptr egl_context = + std::make_shared(); + context = egl_context->storeCurrent(); + return BMF_LITE_StsOk; +#endif + } + if (device_type == kHWDeviceTypeNone) { +#ifdef BMF_LITE_ENABLE_CPUMEMORYBUFFER + return BMF_LITE_StsOk; +#endif + } + + return BMF_LITE_StsBadArg; +} + +int HWDeviceContextManager::createHwDeviceContext( + HardwareDeviceCreateInfo *create_info, + std::shared_ptr &context) { + if (create_info == NULL) { + // BMF_LITE_ERR("create info is NULL"); + return BMF_LITE_StsBadArg; + } + + if (create_info->device_type == kHWDeviceTypeEGLCtx) { +#ifdef BMF_LITE_ENABLE_OPENGLTEXTUREBUFFER + EGLContextInfo *egl_info = + (EGLContextInfo *)(create_info->context_info); + + std::shared_ptr egl_context = + std::make_shared(); + int res = egl_context->create_context(egl_info->egl_context); + if (res < 0) { + return res; + } + context = egl_context; + return 0; +#endif + } + if (create_info->device_type == kHWDeviceTypeMTL) { +#ifdef BMF_LITE_ENABLE_METALBUFFER + + std::shared_ptr mtl_context = + std::make_shared(); + int res = mtl_context->create_context(); + if (res < 0) { + return res; + } + context = mtl_context; + return BMF_LITE_StsOk; +#endif + } + if (create_info->device_type == kHWDeviceTypeNone) { +#ifdef BMF_LITE_ENABLE_CPUMEMORYBUFFER + return BMF_LITE_StsOk; +#endif + } + return BMF_LITE_StsBadArg; +} + +int HWDeviceContextManager::setHwDeviceContext( + HardwareDeviceSetInfo *set_info, + std::shared_ptr &context) { + if (set_info == NULL) { + // BMF_LITE_ERR("create info is NULL"); + return BMF_LITE_StsBadArg; + } + if (set_info->device_type == kHWDeviceTypeEGLCtx) { +#ifdef BMF_LITE_ENABLE_OPENGLTEXTUREBUFFER + EGLContextInfo *egl_info = (EGLContextInfo *)(set_info->context_info); + + std::shared_ptr egl_context = + std::make_shared( + egl_info->egl_display, egl_info->egl_context, + egl_info->egl_read_surface, egl_info->egl_draw_surface, + set_info->owned); + egl_context->setFreeFunc(set_info->free_func, set_info->user_data); + context = egl_context; + return BMF_LITE_StsOk; +#endif + } + if (set_info->device_type == kHWDeviceTypeMTL) { +#ifdef BMF_LITE_ENABLE_METALBUFFER + void *mtl_info = (void *)(set_info->context_info); + std::shared_ptr mtl_context = + std::make_shared(mtl_info); + return BMF_LITE_StsOk; +#endif + } + if (set_info->device_type == kHWDeviceTypeNone) { +#ifdef BMF_LITE_ENABLE_CPUMEMORYBUFFER + return BMF_LITE_StsOk; +#endif + } + return BMF_LITE_StsBadArg; +} + +} // namespace bmf_lite \ No newline at end of file diff --git a/bmf_lite/src/media/video_buffer/memory_video_buffer/cpu_memory_video_buffer.cpp b/bmf_lite/src/media/video_buffer/memory_video_buffer/cpu_memory_video_buffer.cpp new file mode 100644 index 00000000..7fe11077 --- /dev/null +++ b/bmf_lite/src/media/video_buffer/memory_video_buffer/cpu_memory_video_buffer.cpp @@ -0,0 +1,56 @@ +/* + * Copyright 2024 Babit Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifdef BMF_LITE_ENABLE_CPUMEMORYBUFFER +#include "cpu_memory_video_buffer.h" + +namespace bmf_lite { +CpuMemoryVideoBuffer::CpuMemoryVideoBuffer( + void *memory_data, int width, int height, + HardwareDataInfo hardware_data_info, + std::shared_ptr device_context) { + memory_data_ = memory_data; + width_ = width; + height_ = height; + device_context_ = device_context; + hardware_data_info_ = hardware_data_info; +} + +CpuMemoryVideoBuffer::~CpuMemoryVideoBuffer() { + if (deleter_) { + deleter_(this); + } +} + +int CpuMemoryVideoBuffer::width() { return width_; } + +int CpuMemoryVideoBuffer::height() { return height_; } + +std::shared_ptr CpuMemoryVideoBuffer::getHWDeviceContext() { + return device_context_; +} + +MemoryType CpuMemoryVideoBuffer::memoryType() { + return hardware_data_info_.mem_type; +} + +HardwareDataInfo CpuMemoryVideoBuffer::hardwareDataInfo() { + return hardware_data_info_; +} + +} // namespace bmf_lite + +#endif \ No newline at end of file diff --git a/bmf_lite/src/media/video_buffer/memory_video_buffer/cpu_memory_video_buffer.h b/bmf_lite/src/media/video_buffer/memory_video_buffer/cpu_memory_video_buffer.h new file mode 100644 index 00000000..eb01ca8a --- /dev/null +++ b/bmf_lite/src/media/video_buffer/memory_video_buffer/cpu_memory_video_buffer.h @@ -0,0 +1,42 @@ +/* + * Copyright 2024 Babit Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef _BMF_CPU_MEMORY_VIDEO_BUFFER_H_ +#define _BMF_CPU_MEMORY_VIDEO_BUFFER_H_ + +#include "media/video_buffer/hardware_device_context.h" +#include "media/video_buffer/video_buffer.h" + +namespace bmf_lite { + +class CpuMemoryVideoBuffer : public VideoBuffer { + public: + CpuMemoryVideoBuffer(void *memory_data, int width, int height, + HardwareDataInfo hardware_data_info, + std::shared_ptr device_context); + ~CpuMemoryVideoBuffer(); + std::shared_ptr getHWDeviceContext(); + int width(); + int height(); + HardwareDataInfo hardwareDataInfo(); + void *data() { return (void *)memory_data_; }; + MemoryType memoryType(); + void *memory_data_; +}; + +} // namespace bmf_lite + +#endif \ No newline at end of file diff --git a/bmf_lite/src/media/video_buffer/memory_video_buffer/cpu_memory_video_buffer_allocator.cpp b/bmf_lite/src/media/video_buffer/memory_video_buffer/cpu_memory_video_buffer_allocator.cpp new file mode 100644 index 00000000..f29c55e4 --- /dev/null +++ b/bmf_lite/src/media/video_buffer/memory_video_buffer/cpu_memory_video_buffer_allocator.cpp @@ -0,0 +1,98 @@ +/* + * Copyright 2024 Babit Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifdef BMF_LITE_ENABLE_CPUMEMORYBUFFER +#define GL_GLEXT_PROTOTYPES +#define EGL_EGLEXT_PROTOTYPES + +#include "cpu_memory_video_buffer_allocator.h" +#include "cpu_memory_video_buffer.h" + +#include +#include +#include + +namespace bmf_lite { +#define GL_CHECK_RETURN(FUNC) \ + FUNC; \ + { \ + GLenum glError = glGetError(); \ + if (glError != GL_NO_ERROR) { \ + std::cout << "Call " << #FUNC << "failed error code:" << glError \ + << std::endl; \ + return -1; \ + } \ + } + +CpuMemoryVideoBufferAllocator::CpuMemoryVideoBufferAllocator() {} + +CpuMemoryVideoBufferAllocator::~CpuMemoryVideoBufferAllocator() {} + +int CpuMemoryVideoBufferAllocator::allocVideoBuffer( + int width, int height, HardwareDataInfo *data_info, + std::shared_ptr device_context, + VideoBuffer *&video_buffer) { + void *cpu_memory_ptr = nullptr; + + switch (data_info->internal_format) { + case CPU_RGB: + cpu_memory_ptr = (void *)(new unsigned char[width * height * 3]); + break; + case CPU_RGBA: + cpu_memory_ptr = (void *)(new unsigned char[width * height * 4]); + break; + case CPU_RGBFLOAT: + cpu_memory_ptr = (void *)(new float[width * height * 3]); + break; + case CPU_RGBAFLOAT: + cpu_memory_ptr = (void *)(new float[width * height * 4]); + break; + default: + cpu_memory_ptr = (void *)(new unsigned char[width * height * 3]); + break; + } + + video_buffer = new CpuMemoryVideoBuffer(cpu_memory_ptr, width, height, + *data_info, device_context); + if (video_buffer != NULL) { + video_buffer->setDeleter([](VideoBuffer *video_buffer) { + CpuMemoryVideoBufferAllocator::releaseVideoBuffer(video_buffer); + }); + return 0; + } + return 0; +} + +int CpuMemoryVideoBufferAllocator::releaseVideoBuffer( + VideoBuffer *video_buffer) { + std::shared_ptr device_context = + video_buffer->getHWDeviceContext(); + if (video_buffer != NULL && + video_buffer->memoryType() == MemoryType::kByteMemory) { + CpuMemoryVideoBuffer *cpu_video_buffer = + (CpuMemoryVideoBuffer *)video_buffer; + void *cpu_memory_ptr = cpu_video_buffer->data(); + if (cpu_memory_ptr != 0) { + delete[] cpu_memory_ptr; + cpu_memory_ptr = NULL; + } + } + video_buffer = NULL; + return 0; +} + +} // namespace bmf_lite +#endif \ No newline at end of file diff --git a/bmf_lite/src/media/video_buffer/memory_video_buffer/cpu_memory_video_buffer_allocator.h b/bmf_lite/src/media/video_buffer/memory_video_buffer/cpu_memory_video_buffer_allocator.h new file mode 100644 index 00000000..57d7642f --- /dev/null +++ b/bmf_lite/src/media/video_buffer/memory_video_buffer/cpu_memory_video_buffer_allocator.h @@ -0,0 +1,36 @@ +/* + * Copyright 2024 Babit Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef _BMF_CPU_MEMORY_VIDEO_BUFFER_ALLOCATOR_H_ +#define _BMF_CPU_MEMORY_VIDEO_BUFFER_ALLOCATOR_H_ + +#include "media/video_buffer/video_buffer_allocator.h" + +namespace bmf_lite { + +class CpuMemoryVideoBufferAllocator : public VideoBufferAllocator { + public: + CpuMemoryVideoBufferAllocator(); + ~CpuMemoryVideoBufferAllocator(); + int allocVideoBuffer(int width, int height, HardwareDataInfo *data_info, + std::shared_ptr device_context, + VideoBuffer *&video_buffer); + static int releaseVideoBuffer(VideoBuffer *video_buffer); +}; + +} // namespace bmf_lite + +#endif \ No newline at end of file diff --git a/bmf_lite/src/media/video_buffer/metal_texture_video_buffer/metal_texture_video_buffer.h b/bmf_lite/src/media/video_buffer/metal_texture_video_buffer/metal_texture_video_buffer.h new file mode 100644 index 00000000..9ae5e9da --- /dev/null +++ b/bmf_lite/src/media/video_buffer/metal_texture_video_buffer/metal_texture_video_buffer.h @@ -0,0 +1,43 @@ +/* + * Copyright 2024 Babit Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef _BMFLITE_METAL_TEXTURE_VIDEOBUFFER_H_ +#define _BMFLITE_METAL_TEXTURE_VIDEOBUFFER_H_ + +#include "media/video_buffer/hardware_device_context.h" +#include "media/video_buffer/video_buffer.h" + +namespace bmf_lite { + +class MetalTextureVideoBufferImpl; +class MetalTextureVideoBuffer : public VideoBuffer { + public: + MetalTextureVideoBuffer(void *texture_id, int width, int height, + HardwareDataInfo hardware_data_info, + std::shared_ptr device_context); + ~MetalTextureVideoBuffer(); + std::shared_ptr getHWDeviceContext(); + int width(); + int height(); + HardwareDataInfo hardwareDataInfo(); + void *data(); + MemoryType memoryType() { return MemoryType::kMetalTexture; } + // void* texture_id_; + std::shared_ptr impl_; +}; + +} // namespace bmf_lite +#endif // _BMFLITE_METAL_TEXTURE_VIDEOBUFFER_H_ \ No newline at end of file diff --git a/bmf_lite/src/media/video_buffer/metal_texture_video_buffer/metal_texture_video_buffer.mm b/bmf_lite/src/media/video_buffer/metal_texture_video_buffer/metal_texture_video_buffer.mm new file mode 100644 index 00000000..e123b100 --- /dev/null +++ b/bmf_lite/src/media/video_buffer/metal_texture_video_buffer/metal_texture_video_buffer.mm @@ -0,0 +1,68 @@ +/* + * Copyright 2024 Babit Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifdef BMF_LITE_ENABLE_METALBUFFER + +#include "metal_texture_video_buffer.h" +#import +#import +#import + +namespace bmf_lite { + +class MetalTextureVideoBufferImpl { +public: + id texture; +}; + +MetalTextureVideoBuffer::MetalTextureVideoBuffer( + void *texture_id, int width, int height, + HardwareDataInfo hardware_data_info, + std::shared_ptr device_context) { + impl_ = std::make_shared(); + impl_->texture = (__bridge_transfer id)texture_id; + + width_ = width; + height_ = height; + device_context_ = device_context; + hardware_data_info_ = hardware_data_info; +} + +MetalTextureVideoBuffer::~MetalTextureVideoBuffer() { + if (deleter_) { + deleter_(this); + } +} + +int MetalTextureVideoBuffer::width() { return width_; } + +int MetalTextureVideoBuffer::height() { return height_; } + +void *MetalTextureVideoBuffer::data() { + return (__bridge_retained void *)(impl_->texture); +} + +std::shared_ptr MetalTextureVideoBuffer::getHWDeviceContext() { + return device_context_; +} + +HardwareDataInfo MetalTextureVideoBuffer::hardwareDataInfo() { + return hardware_data_info_; +} + +} + +#endif \ No newline at end of file diff --git a/bmf_lite/src/media/video_buffer/metal_texture_video_buffer/metal_texture_video_buffer_allocator.h b/bmf_lite/src/media/video_buffer/metal_texture_video_buffer/metal_texture_video_buffer_allocator.h new file mode 100644 index 00000000..df418832 --- /dev/null +++ b/bmf_lite/src/media/video_buffer/metal_texture_video_buffer/metal_texture_video_buffer_allocator.h @@ -0,0 +1,35 @@ +/* + * Copyright 2024 Babit Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef _BMFLITE_METAL_TEXTURE_VIDEOBUFFER_ALLOCATOR_H_ +#define _BMFLITE_METAL_TEXTURE_VIDEOBUFFER_ALLOCATOR_H_ + +#include "media/video_buffer/video_buffer_allocator.h" + +namespace bmf_lite { +class MetalTextureVideoBufferAllocator : public VideoBufferAllocator { + public: + MetalTextureVideoBufferAllocator(); + ~MetalTextureVideoBufferAllocator(); + int allocVideoBuffer(int width, int height, HardwareDataInfo *data_info, + std::shared_ptr device_context, + VideoBuffer *&video_buffer); + static int releaseVideoBuffer(VideoBuffer *video_buffer); +}; + +} // namespace bmf_lite + +#endif // _BMFLITE_METAL_TEXTURE_VIDEOBUFFER_ALLOCATOR_H_ \ No newline at end of file diff --git a/bmf_lite/src/media/video_buffer/metal_texture_video_buffer/metal_texture_video_buffer_allocator.mm b/bmf_lite/src/media/video_buffer/metal_texture_video_buffer/metal_texture_video_buffer_allocator.mm new file mode 100644 index 00000000..8d1a87e8 --- /dev/null +++ b/bmf_lite/src/media/video_buffer/metal_texture_video_buffer/metal_texture_video_buffer_allocator.mm @@ -0,0 +1,69 @@ +/* + * Copyright 2024 Babit Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifdef BMF_LITE_ENABLE_METALBUFFER + +#include "metal_texture_video_buffer_allocator.h" +#include "common/error_code.h" +#include "metal_texture_video_buffer.h" +#include "utils/log.h" +#import +#import +#import + +namespace bmf_lite { + +MetalTextureVideoBufferAllocator::MetalTextureVideoBufferAllocator() {} + +MetalTextureVideoBufferAllocator::~MetalTextureVideoBufferAllocator() {} + +int MetalTextureVideoBufferAllocator::allocVideoBuffer( + int width, int height, HardwareDataInfo *data_info, + std::shared_ptr device_context, + VideoBuffer *&video_buffer) { + void *info; + device_context->getContextInfo(info); + id device = (__bridge_transfer id)info; + MTLPixelFormat pixel_format = MTLPixelFormatR8Unorm; + if (data_info->internal_format == BMF_LITE_MTL_R8Unorm) { + pixel_format = MTLPixelFormatR8Unorm; + } else if (data_info->internal_format == BMF_LITE_MTL_RG8Unorm) { + pixel_format = MTLPixelFormatRG8Unorm; + } + MTLTextureDescriptor *td = + [MTLTextureDescriptor texture2DDescriptorWithPixelFormat:pixel_format + width:width + height:height + mipmapped:NO]; + td.usage = MTLTextureUsageShaderRead | MTLTextureUsageShaderWrite; + // td.storageMode = data_info->storage_mode; + + id texture = [device newTextureWithDescriptor:td]; + void *texture_id = (__bridge_retained void *)texture; + NSLog(@"malloc texture %@", texture); + video_buffer = new MetalTextureVideoBuffer(texture_id, width, height, + *data_info, device_context); + return BMF_LITE_StsOk; +} + +int MetalTextureVideoBufferAllocator::releaseVideoBuffer( + VideoBuffer *video_buffer) { + return BMF_LITE_StsOk; +} + +} + +#endif \ No newline at end of file diff --git a/bmf_lite/src/media/video_buffer/metal_texture_video_buffer/mtl_device_context.h b/bmf_lite/src/media/video_buffer/metal_texture_video_buffer/mtl_device_context.h new file mode 100644 index 00000000..6ccd6855 --- /dev/null +++ b/bmf_lite/src/media/video_buffer/metal_texture_video_buffer/mtl_device_context.h @@ -0,0 +1,42 @@ +/* + * Copyright 2024 Babit Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef _BMFLITE_MTL_DEVICE_CONTEXT_H_ +#define _BMFLITE_MTL_DEVICE_CONTEXT_H_ + +#include "media/video_buffer/hardware_device_context.h" +#include +#include + +namespace bmf_lite { + +class MtlDeviceContextStruct; +class MtlDeviceContext : public HWDeviceContext { + public: + std::shared_ptr storeCurrent(); + HWDeviceType deviceType() { return kHWDeviceTypeMTL; } + MtlDeviceContext(); + MtlDeviceContext(void *info); + ~MtlDeviceContext(); + int create_context(); + int setCurrent(); + int getContextInfo(void *&info); + std::shared_ptr impl_; +}; + +} // namespace bmf_lite + +#endif // _BMFLITE_MTL_DEVICE_CONTEXT_H_ \ No newline at end of file diff --git a/bmf_lite/src/media/video_buffer/metal_texture_video_buffer/mtl_device_context.mm b/bmf_lite/src/media/video_buffer/metal_texture_video_buffer/mtl_device_context.mm new file mode 100644 index 00000000..be19f95d --- /dev/null +++ b/bmf_lite/src/media/video_buffer/metal_texture_video_buffer/mtl_device_context.mm @@ -0,0 +1,59 @@ +/* + * Copyright 2024 Babit Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifdef BMF_LITE_ENABLE_METALBUFFER + +#include "mtl_device_context.h" +#import +#import +#import + +namespace bmf_lite { + +class MtlDeviceContextStruct { +public: + id device; +}; + +MtlDeviceContext::MtlDeviceContext() {} + +MtlDeviceContext::MtlDeviceContext(void *info) { + impl_ = std::make_shared(); + impl_->device = (__bridge_transfer id)info; +} + +MtlDeviceContext::~MtlDeviceContext() {} + +std::shared_ptr MtlDeviceContext::storeCurrent() { + return NULL; +} + +int MtlDeviceContext::create_context() { + impl_ = std::make_shared(); + impl_->device = MTLCreateSystemDefaultDevice(); + return 0; +} + +int MtlDeviceContext::setCurrent() { return 0; } + +int MtlDeviceContext::getContextInfo(void *&info) { + info = (__bridge_retained void *)impl_->device; + return 0; +} + +} + +#endif \ No newline at end of file diff --git a/bmf_lite/src/media/video_buffer/metal_texture_video_buffer/multi_metal_texture_video_buffer.h b/bmf_lite/src/media/video_buffer/metal_texture_video_buffer/multi_metal_texture_video_buffer.h new file mode 100644 index 00000000..482c0335 --- /dev/null +++ b/bmf_lite/src/media/video_buffer/metal_texture_video_buffer/multi_metal_texture_video_buffer.h @@ -0,0 +1,47 @@ +/* + * Copyright 2024 Babit Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef _BMFLITE_MULTI_METAL_TEXTURE_VIDEOBUFFER_H_ +#define _BMFLITE_MULTI_METAL_TEXTURE_VIDEOBUFFER_H_ + +#include "media/video_buffer/hardware_device_context.h" +#include "media/video_buffer/video_buffer.h" + +namespace bmf_lite { + +class MultiMetalTextureVideoBufferImpl; +class MultiMetalTextureVideoBuffer : public VideoBuffer { + public: + MultiMetalTextureVideoBuffer( + void *texture_id, int width, int height, + HardwareDataInfo hardware_data_info, + std::shared_ptr device_context); + + ~MultiMetalTextureVideoBuffer(); + + std::shared_ptr getHWDeviceContext(); + int width(); + int height(); + HardwareDataInfo hardwareDataInfo(); + void *data(); + MemoryType memoryType() { return MemoryType::kMultiMetalTexture; } + // void* texture_id_; + std::shared_ptr impl_; +}; + +} // namespace bmf_lite + +#endif // _BMFLITE_MULTI_METAL_TEXTURE_VIDEOBUFFER_H_ \ No newline at end of file diff --git a/bmf_lite/src/media/video_buffer/metal_texture_video_buffer/multi_metal_texture_video_buffer.mm b/bmf_lite/src/media/video_buffer/metal_texture_video_buffer/multi_metal_texture_video_buffer.mm new file mode 100644 index 00000000..6841d05a --- /dev/null +++ b/bmf_lite/src/media/video_buffer/metal_texture_video_buffer/multi_metal_texture_video_buffer.mm @@ -0,0 +1,85 @@ +/* + * Copyright 2024 Babit Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifdef BMF_LITE_ENABLE_METALBUFFER + +#include "multi_metal_texture_video_buffer.h" +#import +#import +#import + +namespace bmf_lite { + +class MultiMetalTextureVideoBufferImpl { +public: + struct VideoTextureList *textures_; +}; + +MultiMetalTextureVideoBuffer::MultiMetalTextureVideoBuffer( + void *texture, int width, int height, HardwareDataInfo hardware_data_info, + std::shared_ptr device_context) { + impl_ = std::make_shared(); + // struct VideoTextureList *texture_list = (struct VideoTextureList *)texture; + // impl_->textures_ = new struct VideoTextureList(); + + // impl_->textures_->texture_list = + // (VideoBuffer **)malloc(texture_list->num * sizeof(VideoBuffer *)); + // for (int i = 0; i < texture_list->num; i++) { + // impl_->textures_->texture_list[i] = texture_list->texture_list[i]; + // } + impl_->textures_ = (struct VideoTextureList *)texture; + width_ = width; + height_ = height; + device_context_ = device_context; + hardware_data_info_ = hardware_data_info; +}; + +MultiMetalTextureVideoBuffer::~MultiMetalTextureVideoBuffer() { + if (deleter_) { + deleter_(this); + } + if (impl_) { + for (int i = 0; i < impl_->textures_->num; i++) { + delete impl_->textures_->texture_list[i]; + impl_->textures_->texture_list[i] = nullptr; + } + if (impl_->textures_->texture_list) { + free(impl_->textures_->texture_list); + impl_->textures_->texture_list = nullptr; + } + + delete impl_->textures_; + impl_->textures_ = nullptr; + } +} + +int MultiMetalTextureVideoBuffer::width() { return width_; } + +int MultiMetalTextureVideoBuffer::height() { return height_; } + +void *MultiMetalTextureVideoBuffer::data() { return impl_->textures_; } + +std::shared_ptr MultiMetalTextureVideoBuffer::getHWDeviceContext() { + return device_context_; +} + +HardwareDataInfo MultiMetalTextureVideoBuffer::hardwareDataInfo() { + return hardware_data_info_; +} + +} + +#endif \ No newline at end of file diff --git a/bmf_lite/src/media/video_buffer/metal_texture_video_buffer/multi_metal_texture_video_buffer_allocator.h b/bmf_lite/src/media/video_buffer/metal_texture_video_buffer/multi_metal_texture_video_buffer_allocator.h new file mode 100644 index 00000000..b81343f0 --- /dev/null +++ b/bmf_lite/src/media/video_buffer/metal_texture_video_buffer/multi_metal_texture_video_buffer_allocator.h @@ -0,0 +1,36 @@ +/* + * Copyright 2024 Babit Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef _BMFLITE_MULTI_METAL_TEXTURE_VIDEOBUFFER_ALLOCATOR_H_ +#define _BMFLITE_MULTI_METAL_TEXTURE_VIDEOBUFFER_ALLOCATOR_H_ + +#include "media/video_buffer/video_buffer_allocator.h" + +namespace bmf_lite { + +class MultiMetalTextureVideoBufferAllocator : public VideoBufferAllocator { + public: + MultiMetalTextureVideoBufferAllocator(); + ~MultiMetalTextureVideoBufferAllocator(); + int allocVideoBuffer(int width, int height, HardwareDataInfo *data_info, + std::shared_ptr device_context, + VideoBuffer *&video_buffer); + static int releaseVideoBuffer(VideoBuffer *video_buffer); +}; + +} // namespace bmf_lite + +#endif // _BMFLITE_MULTI_METAL_TEXTURE_VIDEOBUFFER_ALLOCATOR_H_ \ No newline at end of file diff --git a/bmf_lite/src/media/video_buffer/metal_texture_video_buffer/multi_metal_texture_video_buffer_allocator.mm b/bmf_lite/src/media/video_buffer/metal_texture_video_buffer/multi_metal_texture_video_buffer_allocator.mm new file mode 100644 index 00000000..460cc187 --- /dev/null +++ b/bmf_lite/src/media/video_buffer/metal_texture_video_buffer/multi_metal_texture_video_buffer_allocator.mm @@ -0,0 +1,86 @@ +/* + * Copyright 2024 Babit Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifdef BMF_LITE_ENABLE_METALBUFFER + +#include "multi_metal_texture_video_buffer_allocator.h" +#include "common/error_code.h" +#include "metal_texture_video_buffer_allocator.h" +#include "multi_metal_texture_video_buffer.h" +#include "utils/log.h" +#import +#import +#import + +namespace bmf_lite { + +MultiMetalTextureVideoBufferAllocator::MultiMetalTextureVideoBufferAllocator(){} + +MultiMetalTextureVideoBufferAllocator::~MultiMetalTextureVideoBufferAllocator(){} + +int MultiMetalTextureVideoBufferAllocator::allocVideoBuffer( + int width, int height, HardwareDataInfo *data_info, + std::shared_ptr device_context, + VideoBuffer *&video_buffer) { + void *info; + device_context->getContextInfo(info); + id device = (__bridge_transfer id)info; + struct VideoTextureList *texture_list = new VideoTextureList(); + if (data_info->internal_format == BMF_LITE_MTL_NV12) { + MetalTextureVideoBufferAllocator metal_texture_video_buffer_allocator; + texture_list->num = 2; + texture_list->texture_list = + (VideoBuffer **)malloc(sizeof(VideoBuffer *) * texture_list->num); + + VideoBuffer *y_metal_texture_video_buffer = NULL; + HardwareDataInfo temp_data_info; + temp_data_info.internal_format = BMF_LITE_MTL_R8Unorm; + metal_texture_video_buffer_allocator.allocVideoBuffer( + width, height, &temp_data_info, device_context, + y_metal_texture_video_buffer); + y_metal_texture_video_buffer->setDeleter([](VideoBuffer *video_buffer) { + MetalTextureVideoBufferAllocator::releaseVideoBuffer(video_buffer); + }); + + texture_list->texture_list[0] = y_metal_texture_video_buffer; + + VideoBuffer *uv_metal_texture_video_buffer = NULL; + temp_data_info.internal_format = BMF_LITE_MTL_RG8Unorm; + metal_texture_video_buffer_allocator.allocVideoBuffer( + width, height, &temp_data_info, device_context, + uv_metal_texture_video_buffer); + y_metal_texture_video_buffer->setDeleter([](VideoBuffer *video_buffer) { + MetalTextureVideoBufferAllocator::releaseVideoBuffer(video_buffer); + }); + texture_list->texture_list[1] = uv_metal_texture_video_buffer; + } + + video_buffer = new MultiMetalTextureVideoBuffer(texture_list, width, height, + *data_info, device_context); + video_buffer->setDeleter([](VideoBuffer *video_buffer) { + MultiMetalTextureVideoBufferAllocator::releaseVideoBuffer(video_buffer); + }); + return 0; +} + +int MultiMetalTextureVideoBufferAllocator::releaseVideoBuffer( + VideoBuffer *video_buffer) { + return 0; +} + +} + +#endif \ No newline at end of file diff --git a/bmf_lite/src/media/video_buffer/raw_video_buffer.cpp b/bmf_lite/src/media/video_buffer/raw_video_buffer.cpp new file mode 100644 index 00000000..eb29d80b --- /dev/null +++ b/bmf_lite/src/media/video_buffer/raw_video_buffer.cpp @@ -0,0 +1,59 @@ +/* + * Copyright 2024 Babit Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "raw_video_buffer.h" + +namespace bmf_lite { + +class RawVideoBufferImpl { + public: + void *data; +}; + +RawVideoBuffer::RawVideoBuffer( + void *data, int width, int height, HardwareDataInfo hardware_data_info, + std::shared_ptr device_context) { + impl_ = std::make_shared(); + + impl_->data = data; + + width_ = width; + height_ = height; + device_context_ = device_context; + hardware_data_info_ = hardware_data_info; +} + +RawVideoBuffer::~RawVideoBuffer() { + if (deleter_) { + deleter_(this); + } +} + +int RawVideoBuffer::width() { return width_; } + +int RawVideoBuffer::height() { return height_; } + +void *RawVideoBuffer::data() { return impl_->data; } + +std::shared_ptr RawVideoBuffer::getHWDeviceContext() { + return device_context_; +} + +HardwareDataInfo RawVideoBuffer::hardwareDataInfo() { + return hardware_data_info_; +} + +} // namespace bmf_lite diff --git a/bmf_lite/src/media/video_buffer/raw_video_buffer.h b/bmf_lite/src/media/video_buffer/raw_video_buffer.h new file mode 100644 index 00000000..a3f5e185 --- /dev/null +++ b/bmf_lite/src/media/video_buffer/raw_video_buffer.h @@ -0,0 +1,44 @@ +/* + * Copyright 2024 Babit Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef _BMFLITE_RAW_VIDEOBUFFER_H_ +#define _BMFLITE_RAW_VIDEOBUFFER_H_ + +#include "media/video_buffer/hardware_device_context.h" +#include "media/video_buffer/video_buffer.h" + +namespace bmf_lite { + +class RawVideoBufferImpl; +class RawVideoBuffer : public VideoBuffer { + public: + RawVideoBuffer(void *data, int width, int height, + HardwareDataInfo hardware_data_info, + std::shared_ptr device_context); + ~RawVideoBuffer(); + std::shared_ptr getHWDeviceContext(); + int width(); + int height(); + HardwareDataInfo hardwareDataInfo(); + void *data(); + MemoryType memoryType() { return MemoryType::kRaw; } + + std::shared_ptr impl_; +}; + +} // namespace bmf_lite + +#endif // _BMFLITE_RAW_VIDEOBUFFER_H_ diff --git a/bmf_lite/src/media/video_buffer/transform/cvpixelbuffer_transformer.h b/bmf_lite/src/media/video_buffer/transform/cvpixelbuffer_transformer.h new file mode 100644 index 00000000..80cccb31 --- /dev/null +++ b/bmf_lite/src/media/video_buffer/transform/cvpixelbuffer_transformer.h @@ -0,0 +1,67 @@ +/* + * Copyright 2024 Babit Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef _BMFLITE_CVPIXELBUFFER_TRANSFORMER_H_ +#define _BMFLITE_CVPIXELBUFFER_TRANSFORMER_H_ + +#include "media/video_buffer/transformer.h" +#include +#include + +namespace bmf_lite { + +class CvPixelBufferTransformerImpl; +class CvPixelBufferTransformer { + public: + CvPixelBufferTransformer(); + ~CvPixelBufferTransformer(); + + int init(HardwareDataInfo hardware_data_info_in, + std::shared_ptr context, + HardwareDataInfo hardware_data_info_out); + + int trans(std::shared_ptr in_video_buffer, + std::shared_ptr &output_video_buffer); + + private: + std::shared_ptr impl_; +}; + +class PixelBufferAndTxtureFmt { + public: + explicit PixelBufferAndTxtureFmt(OSType pixel_format); + + inline MTLPixelFormat getTexFormatByPlane(int plane); + + inline int getPlaneCount(); + inline int getWidthByPlaneIndexWithOriginWidth(int index, int width); + inline int getHeightByPlaneIndexWithOriginHeight(int index, int height); + + inline bool support(); + + private: + OSType pixel_buffer_fmt_; + MTLPixelFormat tex0_fmt_; + MTLPixelFormat tex1_fmt_; + MTLPixelFormat tex2_fmt_; + int plane_count_; + bool support_ = true; + int32_t plane_ratio_[3]; +}; // end class PixelBufferAndTxtureFmt + +} // namespace bmf_lite + +#endif // _BMFLITE_CVPIXELBUFFER_TRANSFORMER_H_ \ No newline at end of file diff --git a/bmf_lite/src/media/video_buffer/transform/cvpixelbuffer_transformer.mm b/bmf_lite/src/media/video_buffer/transform/cvpixelbuffer_transformer.mm new file mode 100644 index 00000000..da82aeb4 --- /dev/null +++ b/bmf_lite/src/media/video_buffer/transform/cvpixelbuffer_transformer.mm @@ -0,0 +1,254 @@ +/* + * Copyright 2024 Babit Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifdef BMF_LITE_ENABLE_METALBUFFER + +#include "cvpixelbuffer_transformer.h" +#include "common/error_code.h" +#include "../metal_texture_video_buffer/metal_texture_video_buffer.h" +#include "../metal_texture_video_buffer/multi_metal_texture_video_buffer.h" +#import +#import +#import + +namespace bmf_lite { + +PixelBufferAndTxtureFmt::PixelBufferAndTxtureFmt(OSType pixel_format) { + pixel_buffer_fmt_ = pixel_format; + support_ = true; + switch (pixel_buffer_fmt_) { + case kCVPixelFormatType_32BGRA: + tex0_fmt_ = MTLPixelFormatBGRA8Unorm; + tex1_fmt_ = MTLPixelFormatInvalid; + tex2_fmt_ = MTLPixelFormatInvalid; + plane_count_ = 1; + plane_ratio_[0] = 0x114; + plane_ratio_[1] = 0x00; + plane_ratio_[2] = 0x00; + break; + case kCVPixelFormatType_ARGB2101010LEPacked: + tex0_fmt_ = MTLPixelFormatRGB10A2Unorm; + tex1_fmt_ = MTLPixelFormatInvalid; + tex2_fmt_ = MTLPixelFormatInvalid; + plane_count_ = 1; + plane_ratio_[0] = 0x114; + plane_ratio_[1] = 0x00; + plane_ratio_[2] = 0x00; + break; + case kCVPixelFormatType_420YpCbCr8BiPlanarVideoRange: + tex0_fmt_ = MTLPixelFormatR8Unorm; + tex1_fmt_ = MTLPixelFormatRG8Unorm; + tex2_fmt_ = MTLPixelFormatInvalid; + plane_count_ = 2; + plane_ratio_[0] = 0x111; + plane_ratio_[1] = 0x222; + plane_ratio_[2] = 0x00; + break; + case kCVPixelFormatType_420YpCbCr10BiPlanarVideoRange: + tex0_fmt_ = MTLPixelFormatR16Unorm; + tex1_fmt_ = MTLPixelFormatRG16Unorm; + tex2_fmt_ = MTLPixelFormatInvalid; + plane_count_ = 2; + plane_ratio_[0] = 0x111; + plane_ratio_[1] = 0x222; + plane_ratio_[2] = 0x00; + break; + case kCVPixelFormatType_420YpCbCr8BiPlanarFullRange: + tex0_fmt_ = MTLPixelFormatR8Unorm; + tex1_fmt_ = MTLPixelFormatRG8Unorm; + tex2_fmt_ = MTLPixelFormatInvalid; + plane_count_ = 2; + plane_ratio_[0] = 0x111; + plane_ratio_[1] = 0x222; + plane_ratio_[2] = 0x00; + break; + case kCVPixelFormatType_420YpCbCr10BiPlanarFullRange: + tex0_fmt_ = MTLPixelFormatR16Unorm; + tex1_fmt_ = MTLPixelFormatRG16Unorm; + tex2_fmt_ = MTLPixelFormatInvalid; + plane_count_ = 2; + plane_ratio_[0] = 0x111; + plane_ratio_[1] = 0x222; + plane_ratio_[2] = 0x00; + break; + case kCVPixelFormatType_420YpCbCr8Planar: + tex0_fmt_ = MTLPixelFormatR8Unorm; + tex1_fmt_ = MTLPixelFormatR8Unorm; + tex2_fmt_ = MTLPixelFormatR8Unorm; + plane_count_ = 3; + plane_ratio_[0] = 0x111; + plane_ratio_[1] = 0x221; + plane_ratio_[2] = 0x221; + break; + case kCVPixelFormatType_420YpCbCr8PlanarFullRange: + tex0_fmt_ = MTLPixelFormatR8Unorm; + tex1_fmt_ = MTLPixelFormatR8Unorm; + tex2_fmt_ = MTLPixelFormatR8Unorm; + plane_count_ = 3; + plane_ratio_[0] = 0x111; + plane_ratio_[1] = 0x221; + plane_ratio_[2] = 0x221; + break; + case kCVPixelFormatType_OneComponent16Half: + tex0_fmt_ = MTLPixelFormatR16Float; + tex1_fmt_ = MTLPixelFormatInvalid; + tex2_fmt_ = MTLPixelFormatInvalid; + plane_count_ = 1; + plane_ratio_[0] = 0x114; + plane_ratio_[1] = 0x00; + plane_ratio_[2] = 0x00; + break; + default: + tex0_fmt_ = MTLPixelFormatInvalid; + tex1_fmt_ = MTLPixelFormatInvalid; + tex2_fmt_ = MTLPixelFormatInvalid; + plane_ratio_[0] = 0x00; + plane_ratio_[1] = 0x00; + plane_ratio_[2] = 0x00; + support_ = false; + break; + } +} + +MTLPixelFormat PixelBufferAndTxtureFmt::getTexFormatByPlane(int plane) { + return (plane == 0) ? tex0_fmt_ : ((plane == 1) ? tex1_fmt_ : ((plane == 2) ? tex2_fmt_ : MTLPixelFormatInvalid)); +} + +int PixelBufferAndTxtureFmt::getPlaneCount() { + return plane_count_; +} + +int PixelBufferAndTxtureFmt::getWidthByPlaneIndexWithOriginWidth(int index, int width) { + return width / (((plane_ratio_[index])>>4)&0xf); +} + +int PixelBufferAndTxtureFmt::getHeightByPlaneIndexWithOriginHeight(int index, int height) { + return height / (((plane_ratio_[index])>>8)&0xf); +} + +bool PixelBufferAndTxtureFmt::support() { + return support_; +} + +class CvPixelBufferTransformerImpl { +public: + std::shared_ptr device_context_; + CVMetalTextureCacheRef metal_cache_ = nil; + bool inited_ = false; + + ~CvPixelBufferTransformerImpl() { + if (metal_cache_ != nil) { + CVMetalTextureCacheFlush(metal_cache_, 0); + CFRelease(metal_cache_); + metal_cache_ = nil; + } + } +}; + +CvPixelBufferTransformer::CvPixelBufferTransformer() {} + +int CvPixelBufferTransformer::init(HardwareDataInfo hardware_data_info_in, + std::shared_ptr device_context, + HardwareDataInfo hardware_data_info_out) { + impl_ = std::make_shared(); + impl_->inited_ = false; + if (nullptr == device_context) { + return BMF_LITE_StsBadArg; + } + impl_->device_context_ = device_context; + + void *info; + device_context->getContextInfo(info); + id device = (__bridge_transfer id)info; + if (nil == device) { + return BMF_LITE_StsBadArg; + } + + if (hardware_data_info_in.mem_type == MemoryType::kCVPixelBuffer && + hardware_data_info_out.mem_type == MemoryType::kMultiMetalTexture) { + CVReturn ret = CVMetalTextureCacheCreate(kCFAllocatorDefault, nil, device, + nil, &(impl_->metal_cache_)); + if (ret == kCVReturnSuccess) { + impl_->inited_ = true; + return BMF_LITE_StsOk; + } + } + return BMF_LITE_StsBadArg; +} + + +int CvPixelBufferTransformer::trans(std::shared_ptr in_video_buffer, + std::shared_ptr &output_video_buffer) { + if (impl_->inited_ && in_video_buffer->memoryType() == MemoryType::kCVPixelBuffer) { + CVPixelBufferRef ibuffer = (CVPixelBufferRef)in_video_buffer->data(); + int width = CVPixelBufferGetWidth(ibuffer); + int height = CVPixelBufferGetHeight(ibuffer); + OSType fmt = CVPixelBufferGetPixelFormatType(ibuffer); + PixelBufferAndTxtureFmt fmt_mp(fmt); + if (!fmt_mp.support()) { + return BMF_LITE_FmtNoSupport; + } + size_t plane_count = fmt_mp.getPlaneCount(); + CVReturn ret = kCVReturnSuccess; + struct VideoTextureList *texture_list = new VideoTextureList(); + texture_list->num = plane_count; + texture_list->texture_list = (VideoBuffer **)malloc(sizeof(VideoBuffer *) * texture_list->num); + + for (size_t i = 0; i < plane_count; ++i) { + CVMetalTextureRef tex_ref; + MTLPixelFormat mtl_fmt = fmt_mp.getTexFormatByPlane(i); + int plane_width = fmt_mp.getWidthByPlaneIndexWithOriginWidth(i, width); + int plane_height = fmt_mp.getHeightByPlaneIndexWithOriginHeight(i, height); + ret = CVMetalTextureCacheCreateTextureFromImage(kCFAllocatorDefault, impl_->metal_cache_, ibuffer, nil, + mtl_fmt, plane_width, plane_height, i, &tex_ref); + if (kCVReturnSuccess != ret) { + for (int j = 0; j < plane_count; ++j) { + if (nullptr != texture_list->texture_list[i]) { + delete texture_list->texture_list[i]; + texture_list->texture_list[i] = nullptr; + } + } + if (texture_list != nullptr) { + delete texture_list; + texture_list = nullptr; + } + } + HardwareDataInfo temp_data_info; + // todo fmt + temp_data_info.internal_format = mtl_fmt; + id tex = CVMetalTextureGetTexture(tex_ref); + void *tex_ptr = (__bridge_retained void *)tex; + MetalTextureVideoBuffer *metal_texture_video_buffer = new MetalTextureVideoBuffer(tex_ptr, plane_width, plane_height, temp_data_info, + impl_->device_context_); + texture_list->texture_list[i] = metal_texture_video_buffer; + + CFRelease(tex_ref); + } + HardwareDataInfo data_info; + data_info.mem_type = MemoryType::kMultiMetalTexture; + // todo fmt mp + data_info.internal_format = BMF_LITE_MTL_NV12; + output_video_buffer = std::make_shared(texture_list, width, height, data_info, impl_->device_context_); + return BMF_LITE_StsOk; + } + return BMF_LITE_StsNotProcess; +} + +CvPixelBufferTransformer::~CvPixelBufferTransformer(){} + +} + +#endif diff --git a/bmf_lite/src/media/video_buffer/transform/gl_texture_transformer.cpp b/bmf_lite/src/media/video_buffer/transform/gl_texture_transformer.cpp new file mode 100644 index 00000000..f212da91 --- /dev/null +++ b/bmf_lite/src/media/video_buffer/transform/gl_texture_transformer.cpp @@ -0,0 +1,230 @@ +/* + * Copyright 2024 Babit Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifdef BMF_LITE_ENABLE_CPUMEMORYBUFFER +#ifdef BMF_LITE_ENABLE_OPENGLTEXTUREBUFFER +#include "gl_texture_transformer.h" +#include "common/error_code.h" +#include +#include +#include +#include "opengl/resize/resize.h" +namespace bmf_lite { + +class GLTextureTransformerImpl { + public: + std::shared_ptr device_context_; + bool inited_ = false; + unsigned int fbo_ = 0; + unsigned char *byte_data_ptr_ = nullptr; + float *float_data_ptr_ = nullptr; + unsigned char *cache_data_ptr_ = nullptr; + GLuint resize_texture_id = 0; + int need_resize = 0; + std::shared_ptr resize_ = nullptr; + ~GLTextureTransformerImpl() {} +}; + +GLTextureTransformer::GLTextureTransformer() {} + +int GLTextureTransformer::init( + HardwareDataInfo hardware_data_info_in, + std::shared_ptr device_context) { + impl_ = std::make_shared(); + impl_->inited_ = true; + return BMF_LITE_StsOk; +} + +int GLTextureTransformer::transTexture2Memory( + std::shared_ptr in_video_buffer, + std::shared_ptr &out_video_buffer) { + if (impl_->inited_ && + in_video_buffer->memoryType() == MemoryType::kOpenGLTexture2d && + out_video_buffer->memoryType() == MemoryType::kByteMemory) { + int width = in_video_buffer->width(); + int height = in_video_buffer->height(); + int in_tex = (long)(in_video_buffer->data()); + int out_width = out_video_buffer->width(); + int out_height = out_video_buffer->height(); + impl_->need_resize = 0; + if (impl_->byte_data_ptr_ == nullptr) { + impl_->byte_data_ptr_ = + (new unsigned char[out_width * out_height * + 4]); // Large model with fixed width and + // height + } + if (out_width != width || out_height != height) { + impl_->need_resize = 1; + if (impl_->resize_texture_id == 0) { + glGenTextures(1, &impl_->resize_texture_id); + glBindTexture(GL_TEXTURE_2D, impl_->resize_texture_id); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, + GL_LINEAR); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, + GL_LINEAR); + glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, out_width, out_height, + 0, GL_RGBA, GL_UNSIGNED_BYTE, 0); + } + if (impl_->resize_ == nullptr) { + impl_->resize_ = std::make_shared(); + impl_->resize_->init(""); + } + } + if (impl_->need_resize == 1) { + impl_->resize_->run(in_tex, impl_->resize_texture_id, width, height, + out_width, out_height); + in_tex = impl_->resize_texture_id; + } + glBindTexture(GL_TEXTURE_2D, in_tex); + if (impl_->fbo_ == 0) { + glGenFramebuffers(1, &impl_->fbo_); + } + glBindFramebuffer(GL_FRAMEBUFFER, impl_->fbo_); + glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, + GL_TEXTURE_2D, in_tex, 0); + glReadPixels(0, 0, out_width, out_height, GL_RGBA, GL_UNSIGNED_BYTE, + impl_->byte_data_ptr_); + glBindFramebuffer(GL_FRAMEBUFFER, 0); + + if (out_video_buffer->memoryType() == MemoryType::kByteMemory && + out_video_buffer->hardwareDataInfo().internal_format == + bmf_lite::CPU_RGBFLOAT) { + float *tmp_ptr = (float *)out_video_buffer->data(); + for (int i = 0; i < out_height; i++) { + for (int j = 0; j < out_width; j++) { // 4 channel to 3 channel + tmp_ptr[i * out_width * 3 + j * 3] = + float( + impl_->byte_data_ptr_[i * out_width * 4 + j * 4]) / + 255.0f; + tmp_ptr[i * out_width * 3 + j * 3 + 1] = + float(impl_->byte_data_ptr_[i * out_width * 4 + j * 4 + + 1]) / + 255.0f; + tmp_ptr[i * out_width * 3 + j * 3 + 2] = + float(impl_->byte_data_ptr_[i * out_width * 4 + j * 4 + + 2]) / + 255.0f; + } + } + } else { + return BMF_LITE_StsBadArg; + } + } + return BMF_LITE_StsOk; +} + +int GLTextureTransformer::transMemory2Texture( + std::shared_ptr in_video_buffer, + std::shared_ptr out_video_buffer) { + if (impl_->inited_ && + out_video_buffer->memoryType() == MemoryType::kOpenGLTexture2d && + in_video_buffer->memoryType() == MemoryType::kByteMemory) { + int width = in_video_buffer->width(); + int height = in_video_buffer->height(); + int out_width = out_video_buffer->width(); + int out_height = out_video_buffer->height(); + int texutre = (long)(out_video_buffer->data()); + if (impl_->cache_data_ptr_ == nullptr) { + impl_->cache_data_ptr_ = + (new unsigned char[width * height * + 4]); // Large model with fixed width and + // height + } + impl_->need_resize = 0; + if (in_video_buffer->memoryType() == MemoryType::kByteMemory && + in_video_buffer->hardwareDataInfo().internal_format == + bmf_lite::CPU_RGBFLOAT) { + float *memory_data = (float *)in_video_buffer->data(); + for (int i = 0; i < height; i++) { + for (int j = 0; j < width; j++) { // 4 channel to 3 channel + impl_->cache_data_ptr_[i * width * 4 + j * 4] = + (unsigned char)(255.f * + memory_data[i * width * 3 + j * 3]); + impl_->cache_data_ptr_[i * width * 4 + j * 4 + 1] = + (unsigned char)(255.f * + memory_data[i * width * 3 + j * 3 + 1]); + impl_->cache_data_ptr_[i * width * 4 + j * 4 + 2] = + (unsigned char)(255.f * + memory_data[i * width * 3 + j * 3 + 2]); + impl_->cache_data_ptr_[i * width * 4 + j * 4 + 3] = 255; + } + } + } else { + return BMF_LITE_StsBadArg; + } + + if (texutre > 0) { + int tex_id = texutre; + if (out_width != width || out_height != height) { + impl_->need_resize = 1; + if (impl_->resize_texture_id == 0) { + glGenTextures(1, &impl_->resize_texture_id); + glBindTexture(GL_TEXTURE_2D, impl_->resize_texture_id); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, + GL_REPEAT); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, + GL_REPEAT); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, + GL_LINEAR); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, + GL_LINEAR); + glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, out_width, + out_height, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0); + } + tex_id = impl_->resize_texture_id; + if (impl_->resize_ == nullptr) { + impl_->resize_ = std::make_shared(); + impl_->resize_->init(""); + } + } + glBindTexture(GL_TEXTURE_2D, tex_id); + glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, width, height, GL_RGBA, + GL_UNSIGNED_BYTE, impl_->cache_data_ptr_); + if (impl_->need_resize == 1) { + impl_->resize_->run(tex_id, texutre, width, height, out_width, + out_height); + } + } else { + return BMF_LITE_StsBadArg; + } + } else { + return BMF_LITE_StsBadArg; + } + return BMF_LITE_StsOk; +} + +GLTextureTransformer::~GLTextureTransformer() { + if (impl_->fbo_ != 0) { + glDeleteFramebuffers(1, &impl_->fbo_); + impl_->fbo_ = 0; + } + if (impl_->cache_data_ptr_ != nullptr) { + delete[] impl_->cache_data_ptr_; + impl_->cache_data_ptr_ = nullptr; + } + if (impl_->byte_data_ptr_ != nullptr) { + delete[] impl_->byte_data_ptr_; + impl_->byte_data_ptr_ = nullptr; + } + if (impl_->resize_texture_id != 0) { + glDeleteTextures(1, (unsigned int *)&(impl_->resize_texture_id)); + } +} +} // namespace bmf_lite +#endif +#endif diff --git a/bmf_lite/src/media/video_buffer/transform/gl_texture_transformer.h b/bmf_lite/src/media/video_buffer/transform/gl_texture_transformer.h new file mode 100644 index 00000000..d2d6fe9a --- /dev/null +++ b/bmf_lite/src/media/video_buffer/transform/gl_texture_transformer.h @@ -0,0 +1,45 @@ +/* + * Copyright 2024 Babit Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef _BMFLITE_GL_TEXTURE_TRANSFORMER_H_ +#define _BMFLITE_GL_TEXTURE_TRANSFORMER_H_ + +#include "media/video_buffer/transformer.h" + +namespace bmf_lite { + +class GLTextureTransformerImpl; +class GLTextureTransformer { + public: + GLTextureTransformer(); + ~GLTextureTransformer(); + + int init(HardwareDataInfo hardware_data_info_in, + std::shared_ptr context); + + int transTexture2Memory(std::shared_ptr in_video_buffer, + std::shared_ptr &out_video_buffer); + + int transMemory2Texture(std::shared_ptr in_video_buffer, + std::shared_ptr out_video_buffer); + + private: + std::shared_ptr impl_; +}; + +} // namespace bmf_lite + +#endif // _BMFLITE_GLTEXTURE_TRANSFORMER_H_ \ No newline at end of file diff --git a/bmf_lite/src/media/video_buffer/video_buffer.cpp b/bmf_lite/src/media/video_buffer/video_buffer.cpp new file mode 100644 index 00000000..16a2a7ae --- /dev/null +++ b/bmf_lite/src/media/video_buffer/video_buffer.cpp @@ -0,0 +1,89 @@ +/* + * Copyright 2024 Babit Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "common/error_code.h" +#include "media/video_buffer/video_buffer.h" +#include "media/video_buffer/raw_video_buffer.h" +#include "media/video_buffer/cvpixelbuffer_video_buffer/cvpixelbuffer_video_buffer.h" +#include "media/video_buffer/gl_texture_video_buffer/gl_texture_video_buffer.h" +#include "media/video_buffer/gl_texture_video_buffer/gl_texture_video_buffer_allocator.h" +#include "media/video_buffer/metal_texture_video_buffer/metal_texture_video_buffer.h" +#include "media/video_buffer/metal_texture_video_buffer/multi_metal_texture_video_buffer.h" +#include + +namespace bmf_lite { + +int VideoBufferManager::createVideoBuffer( + int width, int height, HardwareDataInfo *hardware_data_info, + std::shared_ptr context, + std::shared_ptr &video_buffer) { + + std::shared_ptr allocator = + AllocatorManager::getAllocator(hardware_data_info->mem_type, context); + VideoBuffer *video_buffer_p; + allocator->allocVideoBuffer(width, height, hardware_data_info, context, + video_buffer_p); + std::shared_ptr shared_buffer(video_buffer_p); + video_buffer = shared_buffer; + + return BMF_LITE_StsOk; +} + +int VideoBufferManager::createTextureVideoBufferFromExistingData( + void *data, int width, int height, HardwareDataInfo *hardware_data_info, + std::shared_ptr context, VideoBuffer::UserDeleter deleter, + std::shared_ptr &video_buffer) { + + if (hardware_data_info->mem_type == MemoryType::kOpenGLTexture2d || + hardware_data_info->mem_type == MemoryType::kOpenGLTextureExternalOes) { +#ifdef BMF_LITE_ENABLE_OPENGLTEXTUREBUFFER + video_buffer = std::make_shared( + (long)(data), width, height, *hardware_data_info, context); + video_buffer->setDeleter(deleter); +#endif + } else if (hardware_data_info->mem_type == MemoryType::kMetalTexture) { +#ifdef BMF_LITE_ENABLE_METALBUFFER + video_buffer = std::make_shared( + data, width, height, *hardware_data_info, context); + video_buffer->setDeleter(deleter); +#endif + } else if (hardware_data_info->mem_type == MemoryType::kMultiMetalTexture) { +#ifdef BMF_LITE_ENABLE_METALBUFFER + video_buffer = std::make_shared( + data, width, height, *hardware_data_info, context); + video_buffer->setDeleter(deleter); +#endif + } else if (hardware_data_info->mem_type == MemoryType::kCVPixelBuffer) { +#ifdef BMF_LITE_ENABLE_METALBUFFER + video_buffer = std::make_shared( + data, width, height, *hardware_data_info, context); + video_buffer->setDeleter(deleter); +#endif + } else if (hardware_data_info->mem_type == MemoryType::kRaw) { + video_buffer = std::make_shared( + data, width, height, *hardware_data_info, context); + video_buffer->setDeleter(deleter); + } else if (hardware_data_info->mem_type == MemoryType::kByteMemory) { +#ifdef BMF_LITE_ENABLE_CPUMEMORYBUFFER + video_buffer = std::make_shared( + data, width, height, *hardware_data_info, context); + video_buffer->setDeleter(deleter); +#endif + } + return BMF_LITE_StsOk; +} + +} // namespace bmf_lite \ No newline at end of file diff --git a/bmf_lite/src/media/video_buffer/video_buffer_allocator.cpp b/bmf_lite/src/media/video_buffer/video_buffer_allocator.cpp new file mode 100644 index 00000000..a4e2c35b --- /dev/null +++ b/bmf_lite/src/media/video_buffer/video_buffer_allocator.cpp @@ -0,0 +1,54 @@ +/* + * Copyright 2024 Babit Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include +#include +#include +#include +#include +#include + +namespace bmf_lite { + +std::shared_ptr AllocatorManager::getAllocator( + const MemoryType memory_type, + std::shared_ptr device_context) { + + if (memory_type == MemoryType::kOpenGLTexture2d) { +#ifdef BMF_LITE_ENABLE_OPENGLTEXTUREBUFFER + return std::make_shared(); +#endif + } else if (memory_type == MemoryType::kMetalTexture) { +#ifdef BMF_LITE_ENABLE_METALBUFFER + return std::make_shared(); +#endif + } else if (memory_type == MemoryType::kMultiMetalTexture) { +#ifdef BMF_LITE_ENABLE_METALBUFFER + return std::make_shared(); +#endif + } else if (memory_type == MemoryType::kCVPixelBuffer) { +#ifdef BMF_LITE_ENABLE_CVPIXELBUFFER + return std::make_shared(); +#endif + } else if (memory_type == MemoryType::kByteMemory) { +#ifdef BMF_LITE_ENABLE_CPUMEMORYBUFFER + return std::make_shared(); +#endif + } + return NULL; +} + +} // namespace bmf_lite \ No newline at end of file diff --git a/bmf_lite/src/media/video_buffer/video_buffer_pool.cpp b/bmf_lite/src/media/video_buffer/video_buffer_pool.cpp new file mode 100644 index 00000000..6d745268 --- /dev/null +++ b/bmf_lite/src/media/video_buffer/video_buffer_pool.cpp @@ -0,0 +1,165 @@ +/* + * Copyright 2024 Babit Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "media/video_buffer/video_buffer_pool.h" + +namespace bmf_lite { + +VideoBufferPool::VideoBufferPool( + int width, int height, std::shared_ptr allocator, + HardwareDataInfo hardware_data_info, + std::shared_ptr device_context, int size) + : width_(width), height_(height), device_context_(device_context), + size_(size), hardware_data_info_(hardware_data_info), + allocator_(allocator) {} + +VideoBufferPool::~VideoBufferPool() { + for (int i = 0; i < allocated_buffer_.size(); i++) { + allocated_buffer_[i]->setPool(NULL); + } +} + +MemoryType VideoBufferPool::memoryType() { + if (device_context_ != NULL) { + if (device_context_->deviceType() == kHWDeviceTypeEGLCtx) { + return MemoryType::kOpenGLTexture2d; + } + } + return MemoryType::kUnknown; +} + +std::shared_ptr VideoBufferPool::acquireObject() { + if (valid_buffer_.size() > 0) { + std::shared_ptr buffer = valid_buffer_[0]; + valid_buffer_.erase(valid_buffer_.begin()); + return buffer; + } else { + if (allocated_buffer_.size() >= size_) { + return NULL; + } else { + VideoBuffer *buffer = NULL; + if (allocator_->allocVideoBuffer(width_, height_, + &hardware_data_info_, + device_context_, buffer) == 0) { + std::shared_ptr shared_buffer( + buffer, [](VideoBuffer *obj) { + if (obj && !obj->poolRetain()) { + delete obj; + } + }); + shared_buffer->setPool(this); + allocated_buffer_.push_back(buffer); + return shared_buffer; + } + } + } + return NULL; +} + +bool VideoBufferPool::reuseMemory(void *buffer) { + std::shared_ptr share_buffer( + (VideoBuffer *)buffer, [](VideoBuffer *obj) { + if (obj && !obj->poolRetain()) { + delete obj; + } + }); + share_buffer->setPool(this); + valid_buffer_.push_back(share_buffer); + return true; +} + +VideoBufferMultiPool::VideoBufferMultiPool( + std::shared_ptr allocator, + std::shared_ptr device_context, int size) { + device_context_ = device_context; + size_ = size; + allocator_ = allocator; +} + +VideoBufferMultiPool::~VideoBufferMultiPool() { + for (int i = 0; i < allocated_buffer_.size(); i++) { + allocated_buffer_[i]->setPool(NULL); + } +} + +bool VideoBufferMultiPool::checkSame(std::shared_ptr video_buffer, + int width, int height, + HardwareDataInfo hardware_data_info) { + if (video_buffer->width() == width && video_buffer->height() == height && + video_buffer->hardwareDataInfo() == hardware_data_info) { + return true; + } else { + return false; + } + return false; +} + +std::shared_ptr +VideoBufferMultiPool::acquireObject(int width, int height, + HardwareDataInfo hardware_data_info) { + for (int i = 0; i < valid_buffer_.size(); i++) { + if (checkSame(valid_buffer_[i], width, height, hardware_data_info)) { + std::shared_ptr buffer = valid_buffer_[i]; + valid_buffer_.erase(valid_buffer_.begin() + i); + return buffer; + } + } + if (allocated_buffer_.size() >= size_ && valid_buffer_.size() > 0) { + std::shared_ptr buffer = valid_buffer_[0]; + VideoBuffer *ptr = buffer.get(); + for (int i = 0; i < allocated_buffer_.size(); i++) { + if (allocated_buffer_[i] == ptr) { + allocated_buffer_[i]->setPool(NULL); + allocated_buffer_.erase(allocated_buffer_.begin() + i); + break; + } + } + valid_buffer_.erase(valid_buffer_.begin()); + } + { + if (allocated_buffer_.size() >= size_) { + return NULL; + } else { + VideoBuffer *buffer = NULL; + if (allocator_->allocVideoBuffer(width, height, &hardware_data_info, + device_context_, buffer) == 0) { + std::shared_ptr shared_buffer( + buffer, [](VideoBuffer *obj) { + if (obj && !obj->poolRetain()) { + delete obj; + } + }); + shared_buffer->setPool(this); + allocated_buffer_.push_back(buffer); + return shared_buffer; + }; + } + } + return NULL; +} +bool VideoBufferMultiPool::reuseMemory(void *buffer) { + std::shared_ptr share_buffer( + (VideoBuffer *)buffer, [](VideoBuffer *obj) { + if (obj && !obj->poolRetain()) { + delete obj; + } + }); + share_buffer->setPool(this); + valid_buffer_.push_back(share_buffer); + return true; +} + +} // namespace bmf_lite diff --git a/bmf_lite/src/utils/log.h b/bmf_lite/src/utils/log.h new file mode 100644 index 00000000..5e6eed04 --- /dev/null +++ b/bmf_lite/src/utils/log.h @@ -0,0 +1,293 @@ +/* + * Copyright 2024 Babit Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef _BMFLITE_LOG_H_ +#define _BMFLITE_LOG_H_ + +#if defined(DEBUG) || defined(BMFLITE_LOG_LEVEL_DEBUG) +#define LOGD +#define LOGI +#define LOGW +#define LOGE +#define LOGF + +#elif BMFLITE_LOG_LEVEL_INFO +#define LOGI +#define LOGW +#define LOGE +#define LOGF + +#elif BMFLITE_LOG_LEVEL_WARNING +#define LOGW +#define LOGE +#define LOGF + +#elif BMFLITE_LOG_LEVEL_ERROR +#define LOGE +#define LOGF + +#elif BMFLITE_LOG_LEVEL_FATAL +#define LOGF + +#else +#define LOGI +#define LOGW +#define LOGE +#define LOGF + +#endif + +#ifdef __APPLE__ +#import + +#ifdef LOGD +#define BMFLITE_LOGD(tag, format, ...) \ + NSLog(@"[D][%s][%s, %s, %d]" format, tag, __FILE_NAME__, __FUNCTION__, \ + __LINE__, ##__VA_ARGS__) +#else +#define BMFLITE_LOGD(tag, format, ...) +#endif + +#ifdef LOGI +#define BMFLITE_LOGI(tag, format, ...) \ + NSLog(@"[I][%s][%s, %s, %d]" format, tag, __FILE_NAME__, __FUNCTION__, \ + __LINE__, ##__VA_ARGS__) +#else +#define BMFLITE_LOGI(tag, format, ...) +#endif + +#ifdef LOGW +#define BMFLITE_LOGW(tag, format, ...) \ + NSLog(@"[W][%s][%s, %s, %d]" format, tag, __FILE_NAME__, __FUNCTION__, \ + __LINE__, ##__VA_ARGS__) +#else +#define BMFLITE_LOGW(tag, format, ...) +#endif + +#ifdef LOGE +#define BMFLITE_LOGE(tag, format, ...) \ + NSLog(@"[E][%s][%s, %s, %d]" format, tag, __FILE_NAME__, __FUNCTION__, \ + __LINE__, ##__VA_ARGS__) +#else +#define BMFLITE_LOGE(tag, format, ...) +#endif + +#ifdef LOGF +#define BMFLITE_LOGF(tag, format, ...) \ + NSLog(@"[F][%s][%s, %s, %d]" format, tag, __FILE_NAME__, __FUNCTION__, \ + __LINE__, ##__VA_ARGS__) +#else +#define BMFLITE_LOGF(tag, format, ...) +#endif + +#elif __ANDROID__ +#include + +#ifdef LOGD +#define BMFLITE_LOGD(tag, ...) \ + (__android_log_print(ANDROID_LOG_DEBUG, tag, __VA_ARGS__)) +#else +#define BMFLITE_LOGD(tag, ...) +#endif + +#ifdef LOGI +#define BMFLITE_LOGI(tag, ...) \ + (__android_log_print(ANDROID_LOG_INFO, tag, __VA_ARGS__)) +#else +#define BMFLITE_LOGI(tag, ...) +#endif + +#ifdef LOGW +#define BMFLITE_LOGW(tag, ...) \ + (__android_log_print(ANDROID_LOG_WARN, tag, __VA_ARGS__)) +#else +#define BMFLITE_LOGW(tag, ...) +#endif + +#ifdef LOGE +#define BMFLITE_LOGE(tag, ...) \ + (__android_log_print(ANDROID_LOG_ERROR, tag, __VA_ARGS__)) +#else +#define BMFLITE_LOGE(tag, ...) +#endif + +#ifdef LOGF +#define BMFLITE_LOGF(tag, ...) \ + (__android_log_print(ANDROID_LOG_FATAL, tag, __VA_ARGS__)) +#else +#define BMFLITE_LOGF(tag, ...) +#endif + +#ifdef LOGD +#define BMFLITE_VLOGD(tag, ...) \ + (__android_log_vprint(ANDROID_LOG_DEBUG, tag, __VA_ARGS__)) +#else +#define BMFLITE_VLOGD(tag, ...) +#endif + +#ifdef LOGI +#define BMFLITE_VLOGI(tag, ...) \ + (__android_log_vprint(ANDROID_LOG_INFO, tag, __VA_ARGS__)) +#else +#define BMFLITE_VLOGI(tag, ...) +#endif + +#ifdef LOGW +#define BMFLITE_VLOGW(tag, ...) \ + (__android_log_vprint(ANDROID_LOG_WARN, tag, __VA_ARGS__)) +#else +#define BMFLITE_VLOGW(tag, ...) +#endif + +#ifdef LOGE +#define BMFLITE_VLOGE(tag, ...) \ + (__android_log_vprint(ANDROID_LOG_ERROR, tag, __VA_ARGS__)) +#else +#define BMFLITE_VLOGE(tag, ...) +#endif + +#ifdef LOGF +#define BMFLITE_VLOGF(tag, ...) \ + (__android_log_vprint(ANDROID_LOG_FATAL, tag, __VA_ARGS__)) +#else +#define BMFLITE_VLOGF(tag, ...) +#endif + +#elif __OHOS__ +#include + +#ifdef LOGD +#define BMFLITE_LOGD(tag, ...) \ + ((void)OH_LOG_Print(LOG_APP, LOG_DEBUG, LOG_DOMAIN, tag, __VA_ARGS__)) +#else +#define BMFLITE_LOGD(tag, ...) +#endif + +#ifdef LOGI +#define BMFLITE_LOGI(tag, ...) \ + ((void)OH_LOG_Print(LOG_APP, LOG_INFO, LOG_DOMAIN, tag, __VA_ARGS__)) +#else +#define BMFLITE_LOGI(tag, ...) +#endif + +#ifdef LOGW +#define BMFLITE_LOGW(tag, ...) \ + ((void)OH_LOG_Print(LOG_APP, LOG_WARN, LOG_DOMAIN, tag, __VA_ARGS__)) +#else +#define BMFLITE_LOGW(tag, ...) +#endif + +#ifdef LOGE +#define BMFLITE_LOGE(tag, ...) \ + ((void)OH_LOG_Print(LOG_APP, LOG_ERROR, LOG_DOMAIN, tag, __VA_ARGS__)) +#else +#define BMFLITE_LOGE(tag, ...) +#endif + +#ifdef LOGF +#define BMFLITE_LOGF(tag, ...) \ + ((void)OH_LOG_Print(LOG_APP, LOG_FATAL, LOG_DOMAIN, tag, __VA_ARGS__)) +#else +#define BMFLITE_LOGF(tag, ...) +#endif + +#elif __GNUC__ + +#ifdef LOGD +#define BMFLITE_LOGD(tag, format, ...) \ + printf("[D][%s][%s, %s, %d]\"" format "\"\n", tag, __BASE_FILE__, \ + __FUNCTION__, __LINE__, ##__VA_ARGS__) +#else +#define BMFLITE_LOGD(tag, format, ...) +#endif + +#ifdef LOGI +#define BMFLITE_LOGI(tag, format, ...) \ + printf("[I][%s][%s, %s, %d]\"" format "\"\n", tag, __BASE_FILE__, \ + __FUNCTION__, __LINE__, ##__VA_ARGS__) +#else +#define BMFLITE_LOGI(tag, format, ...) +#endif + +#ifdef LOGW +#define BMFLITE_LOGW(tag, format, ...) \ + printf("[W][%s][%s, %s, %d]\"" format "\"\n", tag, __BASE_FILE__, \ + __FUNCTION__, __LINE__, ##__VA_ARGS__) +#else +#define BMFLITE_LOGW(tag, format, ...) +#endif + +#ifdef LOGE +#define BMFLITE_LOGE(tag, format, ...) \ + printf("[E][%s][%s, %s, %d]\"" format "\"\n", tag, __BASE_FILE__, \ + __FUNCTION__, __LINE__, ##__VA_ARGS__) +#else +#define BMFLITE_LOGE(tag, format, ...) +#endif + +#ifdef LOGF +#define BMFLITE_LOGF(tag, format, ...) \ + printf("[F][%s][%s, %s, %d]\"" format "\"\n", tag, __BASE_FILE__, \ + __FUNCTION__, __LINE__, ##__VA_ARGS__) +#else +#define BMFLITE_LOGF(tag, format, ...) +#endif + +#else + +#ifdef LOGD +#define BMFLITE_LOGD(tag, format, ...) \ + printf("[D][%s][%s, %s, %d]" format "\n", tag, __FILE_NAME__, \ + __FUNCTION__, __LINE__, ##__VA_ARGS__) +#else +#define BMFLITE_LOGD(tag, format, ...) +#endif + +#ifdef LOGI +#define BMFLITE_LOGI(tag, format, ...) \ + printf("[I][%s][%s, %s, %d]" format "\n", tag, __FILE_NAME__, \ + __FUNCTION__, __LINE__, ##__VA_ARGS__) +#else +#define BMFLITE_LOGI(tag, format, ...) +#endif + +#ifdef LOGW +#define BMFLITE_LOGW(tag, format, ...) \ + printf("[W][%s][%s, %s, %d]" format "\n", tag, __FILE_NAME__, \ + __FUNCTION__, __LINE__, ##__VA_ARGS__) +#else +#define BMFLITE_LOGW(tag, format, ...) +#endif + +#ifdef LOGE +#define BMFLITE_LOGE(tag, format, ...) \ + printf("[E][%s][%s, %s, %d]" format "\n", tag, __FILE_NAME__, \ + __FUNCTION__, __LINE__, ##__VA_ARGS__) +#else +#define BMFLITE_LOGE(tag, format, ...) +#endif + +#ifdef LOGF +#define BMFLITE_LOGF(tag, format, ...) \ + printf("[F][%s][%s, %s, %d]" format "\n", tag, __FILE_NAME__, \ + __FUNCTION__, __LINE__, ##__VA_ARGS__) +#else +#define BMFLITE_LOGF(tag, format, ...) +#endif + +#endif + +#endif \ No newline at end of file diff --git a/bmf_lite/test_android.sh b/bmf_lite/test_android.sh new file mode 100644 index 00000000..2e925f5c --- /dev/null +++ b/bmf_lite/test_android.sh @@ -0,0 +1,41 @@ +#!/bin/bash +set -e +# PWD=$(dirname "$0") +# echo $PWD +# cd $PWD + +device_id=$1 +# log_file_base=/data/local/tmp/hydra_ci/work_space/log/ +curr_date=`date +%Y-%m-%d` +curr_time=`date +%H-%M-%S` +root_work_space="/data/local/tmp/bmf_ci/work_space" +task_work_space="${root_work_space}/${curr_date}_${curr_time}" +echo ${task_work_space} +adb -s ${device_id} shell "rm -rf ${task_work_space}/*" +adb -s ${device_id} shell "mkdir -p ${task_work_space}/" + +# upload so and bin +adb -s ${device_id} push build_android/bin/test_bmf_lite_android_interface ${task_work_space}/ +adb -s ${device_id} push demo/test_data/3.jpg ${task_work_space}/ +if [ "$(uname)" = 'Darwin' ] +then + adb -s ${device_id} push ${ANDROID_NDK_ROOT}/toolchains/llvm/prebuilt/darwin-x86_64/lib64/clang/9.0.8/lib/linux/aarch64/libomp.so ${task_work_space}/ +else + adb -s ${device_id} push /usr/local/android-ndk-r21b/toolchains/llvm/prebuilt/linux-x86_64/lib64/clang/9.0.8/lib/linux/aarch64/libomp.so ${task_work_space}/ +fi + + +echo "cd ${task_work_space} &&" > adb_run_cmd.txt +echo "export LD_LIBRARY_PATH=${task_work_space}:$LD_LIBRARY_PATH &&" >> adb_run_cmd.txt + + +echo './test_bmf_lite_android_interface &&' >> adb_run_cmd.txt + +echo 'echo "clear workspace" &&' >> adb_run_cmd.txt +echo 'cd ../../ &&' >> adb_run_cmd.txt +# echo "rm -rf ${task_work_space} &&" >> adb_run_cmd.txt +# +echo 'echo "all test ok :)"' >> adb_run_cmd.txt + +adb -s ${device_id} shell < adb_run_cmd.txt +echo 'ALL TESTES PASSED :)' diff --git a/bmf_lite/test_ohos.sh b/bmf_lite/test_ohos.sh new file mode 100644 index 00000000..bace5327 --- /dev/null +++ b/bmf_lite/test_ohos.sh @@ -0,0 +1,37 @@ +#!/bin/bash +set -e + +device_id=$1 +curr_date=`date +%Y-%m-%d` +curr_time=`date +%H-%M-%S` +root_work_space="/data/local/tmp/bmf_ci/work_space" +task_work_space="${root_work_space}/${curr_date}_${curr_time}" +echo ${task_work_space} +hdc -t ${device_id} shell "rm -rf ${task_work_space}/*" +hdc -t ${device_id} shell "mkdir -p ${task_work_space}/" + +# upload so and bin +hdc -t ${device_id} file send build_ohos/bin/test_bmf_lite_ohos_interface ${task_work_space}/ +hdc -t ${device_id} file send demo/test_data/ ${task_work_space}/ +if [ "$(uname)" = 'Darwin' ] +then + hdc -t ${device_id} file send ${OHOS_NATIVE_ROOT}/sysroot/usr/lib/aarch64-linux-ohos/libEGL.so ${task_work_space}/ + hdc -t ${device_id} file send ${OHOS_NATIVE_ROOT}/sysroot/usr/lib/aarch64-linux-ohos/libGLESv3.so ${task_work_space}/ + # hdc -t ${device_id} file send ${OHOS_NATIVE_ROOT}/sysroot/usr/lib/aarch64-linux-ohos/libhilog_ndk.z.so ${task_work_space}/ +fi +echo "cd ${task_work_space} &&" > adb_run_cmd.txt +echo "export LD_LIBRARY_PATH=${task_work_space}:$LD_LIBRARY_PATH &&" >> adb_run_cmd.txt + + +echo './test_bmf_lite_ohos_interface &&' >> adb_run_cmd.txt + +echo 'echo "clear workspace" &&' >> adb_run_cmd.txt +echo 'cd ../../ &&' >> adb_run_cmd.txt +echo "rm -rf ${task_work_space} &&" >> adb_run_cmd.txt +# +echo 'echo "all test ok :)"' >> adb_run_cmd.txt + +hdc -t ${device_id} shell < adb_run_cmd.txt +echo 'ALL TESTES PASSED :)' + +# 我好不容易写完了才发现它居然不能运行