From f6d7fd6f4d2245c498394f4450f1a8ee176436a6 Mon Sep 17 00:00:00 2001 From: Jerome Laban Date: Thu, 31 Mar 2022 14:43:50 -0400 Subject: [PATCH 01/11] feat: Add basic Skottie support --- binding/Binding/Skottie/Animation.cs | 91 + .../Binding/Skottie/InvalidationController.cs | 55 + binding/Binding/Skottie/SkiaApi.cs | 110 + native/android/build.cake | 1 + native/ios/build.cake | 1 + native/linux/build.cake | 1 + native/macos/build.cake | 1 + native/tizen/build.cake | 1 + native/tvos/build.cake | 1 + native/uwp/build.cake | 1 + native/wasm/build.cake | 1 + native/watchos/build.cake | 1 + native/windows/build.cake | 1 + samples/Gallery/Shared/Media/LottieLogo1.json | 7390 +++++++++++++++++ samples/Gallery/Shared/SampleBase.cs | 9 +- samples/Gallery/Shared/SampleMedia.cs | 1 + .../Gallery/Shared/Samples/SkottieSample.cs | 78 + tests/Content/images/LottieLogo1.json | 7390 +++++++++++++++++ tests/Tests/Skottie/AnimationTest.cs | 20 + 19 files changed, 15153 insertions(+), 1 deletion(-) create mode 100644 binding/Binding/Skottie/Animation.cs create mode 100644 binding/Binding/Skottie/InvalidationController.cs create mode 100644 binding/Binding/Skottie/SkiaApi.cs create mode 100644 samples/Gallery/Shared/Media/LottieLogo1.json create mode 100644 samples/Gallery/Shared/Samples/SkottieSample.cs create mode 100644 tests/Content/images/LottieLogo1.json create mode 100644 tests/Tests/Skottie/AnimationTest.cs diff --git a/binding/Binding/Skottie/Animation.cs b/binding/Binding/Skottie/Animation.cs new file mode 100644 index 00000000000..ed6de597899 --- /dev/null +++ b/binding/Binding/Skottie/Animation.cs @@ -0,0 +1,91 @@ +using System; +using System.ComponentModel; +using System.IO; +using System.Runtime.InteropServices; + +namespace SkiaSharp.Skottie +{ + public unsafe class Animation : SKObject + { + public enum RenderFlags + { + SkipTopLevelIsolation = 0x01, + DisableTopLevelClipping = 0x02, + } + + internal Animation (IntPtr handle, bool owns) + : base (handle, owns) + { + } + + // SK_C_API skottie_animation_t* skottie_animation_make_from_string(const char* data, size_t length); + public static Animation Make (string data) + => GetObject (SkiaApi.skottie_animation_make_from_string (data, data.Length)); + + // SK_C_API skottie_animation_t* skottie_animation_make_from_stream(sk_stream_filestream_t* stream); + public static Animation Make (SKStream stream) + => GetObject (SkiaApi.skottie_animation_make_from_stream (stream.Handle)); + + // SK_C_API skottie_animation_t* skottie_animation_make_from_file(const char* path); + public static Animation MakeFromFile(string path) + => GetObject (SkiaApi.skottie_animation_make_from_file (path)); + + //SK_C_API void skottie_animation_render(skottie_animation_t *instance, sk_canvas_t *canvas, sk_rect_t *dst); + public unsafe void Render(SKCanvas canvas, SKRect dst) + => SkiaApi.skottie_animation_render (Handle, canvas.Handle, &dst); + + //SK_C_API void skottie_animation_render_with_flags(skottie_animation_t *instance, sk_canvas_t *canvas, sk_rect_t *dst, skottie_animation_renderflags_t flags); + public void Render (SKCanvas canvas, SKRect dst, RenderFlags flags) + => SkiaApi.skottie_animation_render_with_flags (Handle, canvas.Handle, &dst, flags); + + //SK_C_API void skottie_animation_seek(skottie_animation_t *instance, SkScalar t, sksg_invalidation_controller_t *ic); + public void Seek (float t, InvalidationController ic) => SkiaApi.skottie_animation_seek (Handle, t, ic?.Handle ?? IntPtr.Zero); + + //SK_C_API void skottie_animation_seek_frame(skottie_animation_t *instance, double t, sksg_invalidation_controller_t *ic); + public void SeekFrame(float t, InvalidationController ic) + => SkiaApi.skottie_animation_seek_frame (Handle, t, ic.Handle); + + //SK_C_API void skottie_animation_seek_frame_time(skottie_animation_t *instance, double t, sksg_invalidation_controller_t *ic); + public void SeekFrameTime(float t, InvalidationController ic) + => SkiaApi.skottie_animation_seek_frame_time (Handle, t, ic?.Handle ?? IntPtr.Zero); + + //SK_C_API double skottie_animation_get_duration(skottie_animation_t *instance); + public double Duration + => SkiaApi.skottie_animation_get_duration (Handle); + + //SK_C_API double skottie_animation_get_fps(skottie_animation_t *instance); + public double Fps + => SkiaApi.skottie_animation_get_fps (Handle); + + //SK_C_API double skottie_animation_get_in_point(skottie_animation_t *instance); + public double InPoint + => SkiaApi.skottie_animation_get_in_point (Handle); + + //SK_C_API double skottie_animation_get_out_point(skottie_animation_t *instance); + public double OutPoint + => SkiaApi.skottie_animation_get_out_point (Handle); + + //SK_C_API void skottie_animation_get_version(skottie_animation_t *instance, sk_string_t *); + public string Version { + get { + using var str = new SKString (); + + SkiaApi.skottie_animation_get_version (Handle, str.Handle); + + return str.ToString(); + } + } + + //SK_C_API skottie_animation_get_size(skottie_animation_t *instance, sk_size_t* size); + public unsafe SKSize Size { + get { + SKSize size; + SkiaApi.skottie_animation_get_size (Handle, &size); + return size; + } + } + + internal static Animation GetObject (IntPtr handle) => + handle == IntPtr.Zero ? null : new Animation (handle, true); + } +} diff --git a/binding/Binding/Skottie/InvalidationController.cs b/binding/Binding/Skottie/InvalidationController.cs new file mode 100644 index 00000000000..a8faed301a6 --- /dev/null +++ b/binding/Binding/Skottie/InvalidationController.cs @@ -0,0 +1,55 @@ +using System; +using System.ComponentModel; +using System.IO; +using System.Runtime.InteropServices; + +namespace SkiaSharp.Skottie +{ + public unsafe class InvalidationController : SKObject + { + public InvalidationController () + : this (IntPtr.Zero, true) + { + Handle = SkiaApi.sksg_invalidation_controller_new (); + } + + internal InvalidationController (IntPtr handle, bool owns) + : base (handle, owns) + { + } + + // SK_C_API void sksg_invalidation_controller_inval (sksg_invalidation_controller_t* instance, sk_rect_t* rect, sk_matrix_t* matrix); + public unsafe void Inval(SKRect rect, SKMatrix matrix) + { + SkiaApi.sksg_invalidation_controller_inval (Handle, &rect, &matrix); + } + + // SK_C_API void sksg_invalidation_controller_get_bounds (sksg_invalidation_controller_t* instance, sk_rect_t* bounds); + public unsafe SKRect Bounds + { + get { + SKRect rect; + SkiaApi.sksg_invalidation_controller_get_bounds (Handle, &rect); + return rect; + } + } + + // SK_C_API void sksg_invalidation_controller_begin (sksg_invalidation_controller_t* instance); + public unsafe void Begin () + { + SkiaApi.sksg_invalidation_controller_begin (Handle); + } + + // SK_C_API void sksg_invalidation_controller_end (sksg_invalidation_controller_t* instance); + public unsafe void End () + { + SkiaApi.sksg_invalidation_controller_end (Handle); + } + + // SK_C_API void sksg_invalidation_controller_reset (sksg_invalidation_controller_t* instance); + public unsafe void Reset () + { + SkiaApi.sksg_invalidation_controller_reset (Handle); + } + } +} diff --git a/binding/Binding/Skottie/SkiaApi.cs b/binding/Binding/Skottie/SkiaApi.cs new file mode 100644 index 00000000000..ae44ebac5c1 --- /dev/null +++ b/binding/Binding/Skottie/SkiaApi.cs @@ -0,0 +1,110 @@ +using System; +using System.ComponentModel; +using System.IO; +using System.Runtime.InteropServices; + +namespace SkiaSharp +{ + #region Class declarations + + using sk_canvas_t = IntPtr; + using sk_stream_filestream_t = IntPtr; + using sk_string_t = IntPtr; + + #endregion + + using skottie_animation_t = IntPtr; + using sksg_invalidation_controller_t = IntPtr; + + internal partial class SkiaApi + { + // + // Animation + // + + // SK_C_API skottie_animation_t* skottie_animation_make_from_string(const char* data, size_t length); + [DllImport (SKIA, CallingConvention = CallingConvention.Cdecl)] + internal static extern skottie_animation_t skottie_animation_make_from_string (string data, int length); + + // SK_C_API skottie_animation_t* skottie_animation_make_from_stream(sk_stream_filestream_t* stream); + [DllImport (SKIA, CallingConvention = CallingConvention.Cdecl)] + internal static extern skottie_animation_t skottie_animation_make_from_stream (sk_stream_filestream_t fileStream); + + // SK_C_API skottie_animation_t* skottie_animation_make_from_file(const char* path); + [DllImport (SKIA, CallingConvention = CallingConvention.Cdecl)] + internal static extern skottie_animation_t skottie_animation_make_from_file (string path); + + // SK_C_API void skottie_animation_render(skottie_animation_t *instance, sk_canvas_t *canvas, sk_rect_t *dst); + [DllImport (SKIA, CallingConvention = CallingConvention.Cdecl)] + internal unsafe static extern void skottie_animation_render (skottie_animation_t instance, sk_canvas_t canvas, SKRect* dst); + + // SK_C_API void skottie_animation_render_with_flags(skottie_animation_t *instance, sk_canvas_t *canvas, sk_rect_t *dst, skottie_animation_renderflags_t flags); + [DllImport (SKIA, CallingConvention = CallingConvention.Cdecl)] + internal unsafe static extern void skottie_animation_render_with_flags (skottie_animation_t instance, sk_canvas_t canvas, SKRect* dst, Skottie.Animation.RenderFlags flags); + + // SK_C_API void skottie_animation_seek(skottie_animation_t *instance, SkScalar t, sksg_invalidation_controller_t *ic); + [DllImport (SKIA, CallingConvention = CallingConvention.Cdecl)] + internal unsafe static extern void skottie_animation_seek (skottie_animation_t instance, float t, sksg_invalidation_controller_t ic); + + // SK_C_API void skottie_animation_seek_frame(skottie_animation_t *instance, double t, sksg_invalidation_controller_t *ic); + [DllImport (SKIA, CallingConvention = CallingConvention.Cdecl)] + internal unsafe static extern void skottie_animation_seek_frame (skottie_animation_t instance, float t, sksg_invalidation_controller_t ic); + + // SK_C_API void skottie_animation_seek_frame_time(skottie_animation_t *instance, double t, sksg_invalidation_controller_t *ic); + [DllImport (SKIA, CallingConvention = CallingConvention.Cdecl)] + internal unsafe static extern void skottie_animation_seek_frame_time (skottie_animation_t instance, float t, sksg_invalidation_controller_t ic); + + // SK_C_API double skottie_animation_get_duration(skottie_animation_t *instance); + [DllImport (SKIA, CallingConvention = CallingConvention.Cdecl)] + internal unsafe static extern double skottie_animation_get_duration (skottie_animation_t instance); + + // SK_C_API double skottie_animation_get_fps(skottie_animation_t *instance); + [DllImport (SKIA, CallingConvention = CallingConvention.Cdecl)] + internal unsafe static extern double skottie_animation_get_fps (skottie_animation_t instance); + + // SK_C_API double skottie_animation_get_in_point(skottie_animation_t *instance); + [DllImport (SKIA, CallingConvention = CallingConvention.Cdecl)] + internal unsafe static extern double skottie_animation_get_in_point (skottie_animation_t instance); + + // SK_C_API double skottie_animation_get_out_point(skottie_animation_t *instance); + [DllImport (SKIA, CallingConvention = CallingConvention.Cdecl)] + internal unsafe static extern double skottie_animation_get_out_point (skottie_animation_t instance); + + // SK_C_API sk_string_t* skottie_animation_get_version(skottie_animation_t *instance); + [DllImport (SKIA, CallingConvention = CallingConvention.Cdecl)] + internal unsafe static extern void skottie_animation_get_version (skottie_animation_t instance, sk_string_t version); + + // SK_C_API sk_size_t skottie_animation_get_size(skottie_animation_t *instance); + [DllImport (SKIA, CallingConvention = CallingConvention.Cdecl)] + internal unsafe static extern void skottie_animation_get_size (skottie_animation_t instance, SKSize* size); + + // + // InvalidationController + // + + // SK_C_API sksg_invalidation_controller_t* sksg_invalidation_controller_new (); + [DllImport (SKIA, CallingConvention = CallingConvention.Cdecl)] + internal unsafe static extern sksg_invalidation_controller_t sksg_invalidation_controller_new (); + + // SK_C_API void sksg_invalidation_controller_inval (sksg_invalidation_controller_t* instance, sk_rect_t* rect, sk_matrix_t* matrix); + [DllImport (SKIA, CallingConvention = CallingConvention.Cdecl)] + internal unsafe static extern void sksg_invalidation_controller_inval (sksg_invalidation_controller_t instance, SKRect* rect, SKMatrix* matrix); + + // SK_C_API void sksg_invalidation_controller_bounds (sksg_invalidation_controller_t* instance, sk_rect_t* bounds); + [DllImport (SKIA, CallingConvention = CallingConvention.Cdecl)] + internal unsafe static extern void sksg_invalidation_controller_get_bounds (sksg_invalidation_controller_t instance, SKRect* bounds); + + // SK_C_API void sksg_invalidation_controller_begin (sksg_invalidation_controller_t* instance); + [DllImport (SKIA, CallingConvention = CallingConvention.Cdecl)] + internal unsafe static extern void sksg_invalidation_controller_begin (sksg_invalidation_controller_t instance); + + // SK_C_API void sksg_invalidation_controller_end (sksg_invalidation_controller_t* instance); + [DllImport (SKIA, CallingConvention = CallingConvention.Cdecl)] + internal unsafe static extern void sksg_invalidation_controller_end (sksg_invalidation_controller_t instance); + + // SK_C_API void sksg_invalidation_controller_reset (sksg_invalidation_controller_t* instance); + [DllImport (SKIA, CallingConvention = CallingConvention.Cdecl)] + internal unsafe static extern void sksg_invalidation_controller_reset (sksg_invalidation_controller_t instance); + + } +} diff --git a/native/android/build.cake b/native/android/build.cake index 7f11096f1b0..7da2b657bb1 100644 --- a/native/android/build.cake +++ b/native/android/build.cake @@ -35,6 +35,7 @@ Task("libSkiaSharp") $"skia_use_system_libwebp=false " + $"skia_use_system_zlib=false " + $"skia_use_vulkan={SUPPORT_VULKAN} ".ToLower () + + $"skia_enable_skottie=true " + $"extra_cflags=[ '-DSKIA_C_DLL', '-DHAVE_SYSCALL_GETRANDOM', '-DXML_DEV_URANDOM' ] " + $"ndk='{ANDROID_NDK_HOME}' " + $"ndk_api={(skiaArch == "x64" || skiaArch == "arm64" ? 21 : 16)}"); diff --git a/native/ios/build.cake b/native/ios/build.cake index 1c3ef966715..14e155d790e 100644 --- a/native/ios/build.cake +++ b/native/ios/build.cake @@ -41,6 +41,7 @@ Task("libSkiaSharp") $"skia_use_system_libpng=false " + $"skia_use_system_libwebp=false " + $"skia_use_system_zlib=false " + + $"skia_enable_skottie=true " + $"extra_cflags=[ '-DSKIA_C_DLL', '-DHAVE_ARC4RANDOM_BUF' ] "); RunXCodeBuild("libSkiaSharp/libSkiaSharp.xcodeproj", "libSkiaSharp", sdk, arch, platform: VARIANT); diff --git a/native/linux/build.cake b/native/linux/build.cake index 86c45652363..2c1427aae5d 100644 --- a/native/linux/build.cake +++ b/native/linux/build.cake @@ -73,6 +73,7 @@ Task("libSkiaSharp") $"skia_use_system_libpng=false " + $"skia_use_system_libwebp=false " + $"skia_use_system_zlib=false " + + $"skia_enable_skottie=true " + $"skia_use_vulkan={SUPPORT_VULKAN} ".ToLower() + $"extra_asmflags=[] " + $"extra_cflags=[ '-DSKIA_C_DLL', '-DHAVE_SYSCALL_GETRANDOM', '-DXML_DEV_URANDOM' ] " + diff --git a/native/macos/build.cake b/native/macos/build.cake index 42e3e4622c3..a76e31238d3 100644 --- a/native/macos/build.cake +++ b/native/macos/build.cake @@ -35,6 +35,7 @@ Task("libSkiaSharp") $"skia_use_system_libpng=false " + $"skia_use_system_libwebp=false " + $"skia_use_system_zlib=false " + + $"skia_enable_skottie=true " + $"extra_cflags=[ '-DSKIA_C_DLL', '-DHAVE_ARC4RANDOM_BUF', '-stdlib=libc++' ] " + $"extra_ldflags=[ '-stdlib=libc++' ]"); diff --git a/native/tizen/build.cake b/native/tizen/build.cake index 01bdc9e7f34..a35df68a208 100644 --- a/native/tizen/build.cake +++ b/native/tizen/build.cake @@ -34,6 +34,7 @@ Task("libSkiaSharp") $"skia_use_system_libpng=false " + $"skia_use_system_libwebp=false " + $"skia_use_system_zlib=true " + + $"skia_enable_skottie=true " + $"extra_cflags=[ '-DSKIA_C_DLL', '-DXML_DEV_URANDOM', '-DSK_NO_MAKE_SHARED_PTR' ] " + $"ncli='{TIZEN_STUDIO_HOME}' " + $"ncli_version='4.0'"); diff --git a/native/tvos/build.cake b/native/tvos/build.cake index f9e37267645..e04d62cee15 100644 --- a/native/tvos/build.cake +++ b/native/tvos/build.cake @@ -30,6 +30,7 @@ Task("libSkiaSharp") $"skia_use_system_libpng=false " + $"skia_use_system_libwebp=false " + $"skia_use_system_zlib=false " + + $"skia_enable_skottie=true " + $"extra_cflags=[ '-DSKIA_C_DLL', '-DHAVE_ARC4RANDOM_BUF' ] "); RunXCodeBuild("libSkiaSharp/libSkiaSharp.xcodeproj", "libSkiaSharp", sdk, arch); diff --git a/native/uwp/build.cake b/native/uwp/build.cake index 4dd0413f62a..d7a4c6f78f3 100644 --- a/native/uwp/build.cake +++ b/native/uwp/build.cake @@ -37,6 +37,7 @@ Task("libSkiaSharp") $"skia_use_system_libpng=false " + $"skia_use_system_libwebp=false " + $"skia_use_system_zlib=false " + + $"skia_enable_skottie=true " + win_vcvars_version + $"extra_cflags=[ " + $" '-DSKIA_C_DLL', '/MD{d}', '/EHsc', '/Z7', " + diff --git a/native/wasm/build.cake b/native/wasm/build.cake index 1f3a4bb1950..dd3ad005497 100644 --- a/native/wasm/build.cake +++ b/native/wasm/build.cake @@ -47,6 +47,7 @@ Task("libSkiaSharp") $"skia_use_system_zlib=false " + $"skia_use_vulkan=false " + $"skia_use_wuffs=true " + + $"skia_enable_skottie=true " + $"use_PIC=false " + $"extra_cflags=[ " + $" '-DSKIA_C_DLL', '-DXML_POOR_ENTROPY', " + diff --git a/native/watchos/build.cake b/native/watchos/build.cake index c6b0514543b..3c8e7791fc6 100644 --- a/native/watchos/build.cake +++ b/native/watchos/build.cake @@ -32,6 +32,7 @@ Task("libSkiaSharp") $"skia_use_system_libpng=false " + $"skia_use_system_libwebp=false " + $"skia_use_system_zlib=false " + + $"skia_enable_skottie=true " + $"extra_cflags=[ '-DSKIA_C_DLL', '-DHAVE_ARC4RANDOM_BUF' ] "); RunXCodeBuild("libSkiaSharp/libSkiaSharp.xcodeproj", "libSkiaSharp", sdk, arch); diff --git a/native/windows/build.cake b/native/windows/build.cake index f370d029faf..0cda591bd37 100644 --- a/native/windows/build.cake +++ b/native/windows/build.cake @@ -48,6 +48,7 @@ Task("libSkiaSharp") $"skia_use_system_libpng=false " + $"skia_use_system_libwebp=false " + $"skia_use_system_zlib=false " + + $"skia_enable_skottie=true " + $"skia_use_vulkan={SUPPORT_VULKAN} ".ToLower () + clang + win_vcvars_version + diff --git a/samples/Gallery/Shared/Media/LottieLogo1.json b/samples/Gallery/Shared/Media/LottieLogo1.json new file mode 100644 index 00000000000..cb637e3ea77 --- /dev/null +++ b/samples/Gallery/Shared/Media/LottieLogo1.json @@ -0,0 +1,7390 @@ +{ + "assets": [], + "layers": [ + { + "ddd": 0, + "ind": 0, + "ty": 1, + "nm": "MASTER", + "ks": { + "o": { "k": 0 }, + "r": { "k": 0 }, + "p": { "k": [ 214.457, 347.822, 0 ] }, + "a": { "k": [ 60, 60, 0 ] }, + "s": { "k": [ 100, 100, 100 ] } + }, + "ao": 0, + "sw": 120, + "sh": 120, + "sc": "#ffffff", + "ip": 12, + "op": 179, + "st": 0, + "bm": 0, + "sr": 1 + }, + { + "ddd": 0, + "ind": 1, + "ty": 4, + "nm": "S5-Y 4", + "parent": 0, + "ks": { + "o": { "k": 100 }, + "r": { "k": -89.1 }, + "p": { "k": [ 53.205, 131.606, 0 ] }, + "a": { "k": [ 0, 0, 0 ] }, + "s": { "k": [ 100, 100, 100 ] } + }, + "ao": 0, + "shapes": [ + { + "ty": "gr", + "it": [ + { + "ind": 0, + "ty": "sh", + "ks": { + "k": { + "i": [ + [ 0, 0 ], + [ 0, 0 ] + ], + "o": [ + [ 0, 0 ], + [ 0, 0 ] + ], + "v": [ + [ 142.038, 29.278 ], + [ 131.282, 21.807 ] + ], + "c": false + } + }, + "nm": "Path 1" + }, + { + "ty": "tm", + "s": { + "k": [ + { + "i": { + "x": [ 0.833 ], + "y": [ 0.833 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p833_0p833_0p167_0p167" ], + "t": 76, + "s": [ 87 ], + "e": [ 50.633 ] + }, + { + "i": { + "x": [ 0.833 ], + "y": [ 0.833 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p833_0p833_0p167_0p167" ], + "t": 79, + "s": [ 50.633 ], + "e": [ 0 ] + }, + { "t": 83 } + ], + "ix": 1 + }, + "e": { + "k": [ + { + "i": { + "x": [ 0.833 ], + "y": [ 0.833 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p833_0p833_0p167_0p167" ], + "t": 76, + "s": [ 100 ], + "e": [ 75.856 ] + }, + { + "i": { + "x": [ 0.833 ], + "y": [ 0.833 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p833_0p833_0p167_0p167" ], + "t": 79, + "s": [ 75.856 ], + "e": [ 0 ] + }, + { "t": 83 } + ], + "ix": 2 + }, + "o": { + "k": 0, + "ix": 3 + }, + "m": 1, + "ix": 2, + "nm": "Trim Paths 1" + }, + { + "ty": "st", + "fillEnabled": true, + "c": { "k": [ 1, 1, 1, 1 ] }, + "o": { "k": 100 }, + "w": { "k": 2 }, + "lc": 2, + "lj": 1, + "ml": 4, + "nm": "Stroke 1" + }, + { + "ty": "tr", + "p": { + "k": [ 0, 0 ], + "ix": 2 + }, + "a": { + "k": [ 0, 0 ], + "ix": 1 + }, + "s": { + "k": [ 100, 100 ], + "ix": 3 + }, + "r": { + "k": 0, + "ix": 6 + }, + "o": { + "k": 100, + "ix": 7 + }, + "sk": { + "k": 0, + "ix": 4 + }, + "sa": { + "k": 0, + "ix": 5 + }, + "nm": "Transform" + } + ], + "nm": "Shape 1" + } + ], + "ip": 76, + "op": 84, + "st": 40, + "bm": 0, + "sr": 1 + }, + { + "ddd": 0, + "ind": 2, + "ty": 4, + "nm": "S4-Y 4", + "parent": 0, + "ks": { + "o": { "k": 100 }, + "r": { "k": -89.1 }, + "p": { "k": [ 53.205, 131.606, 0 ] }, + "a": { "k": [ 0, 0, 0 ] }, + "s": { "k": [ 100, 100, 100 ] } + }, + "ao": 0, + "shapes": [ + { + "ty": "gr", + "it": [ + { + "ind": 0, + "ty": "sh", + "ks": { + "k": { + "i": [ + [ 0, 0 ], + [ 0, 0 ] + ], + "o": [ + [ 0, 0 ], + [ 0, 0 ] + ], + "v": [ + [ 142.183, -5.112 ], + [ 130.029, 5.016 ] + ], + "c": false + } + }, + "nm": "Path 1" + }, + { + "ty": "tm", + "s": { + "k": [ + { + "i": { + "x": [ 0.833 ], + "y": [ 0.833 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p833_0p833_0p167_0p167" ], + "t": 76, + "s": [ 87 ], + "e": [ 43.833 ] + }, + { + "i": { + "x": [ 0.833 ], + "y": [ 0.833 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p833_0p833_0p167_0p167" ], + "t": 79, + "s": [ 43.833 ], + "e": [ 0 ] + }, + { "t": 83 } + ], + "ix": 1 + }, + "e": { + "k": [ + { + "i": { + "x": [ 0.833 ], + "y": [ 0.833 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p833_0p833_0p167_0p167" ], + "t": 76, + "s": [ 100 ], + "e": [ 66.356 ] + }, + { + "i": { + "x": [ 0.833 ], + "y": [ 0.833 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p833_0p833_0p167_0p167" ], + "t": 79, + "s": [ 66.356 ], + "e": [ 0 ] + }, + { "t": 83 } + ], + "ix": 2 + }, + "o": { + "k": 0, + "ix": 3 + }, + "m": 1, + "ix": 2, + "nm": "Trim Paths 1" + }, + { + "ty": "st", + "fillEnabled": true, + "c": { "k": [ 1, 1, 1, 1 ] }, + "o": { "k": 100 }, + "w": { "k": 2 }, + "lc": 2, + "lj": 1, + "ml": 4, + "nm": "Stroke 1" + }, + { + "ty": "tr", + "p": { + "k": [ 0, 0 ], + "ix": 2 + }, + "a": { + "k": [ 0, 0 ], + "ix": 1 + }, + "s": { + "k": [ 100, 100 ], + "ix": 3 + }, + "r": { + "k": 0, + "ix": 6 + }, + "o": { + "k": 100, + "ix": 7 + }, + "sk": { + "k": 0, + "ix": 4 + }, + "sa": { + "k": 0, + "ix": 5 + }, + "nm": "Transform" + } + ], + "nm": "Shape 1" + } + ], + "ip": 76, + "op": 84, + "st": 40, + "bm": 0, + "sr": 1 + }, + { + "ddd": 0, + "ind": 3, + "ty": 4, + "nm": "S3-Y 4", + "parent": 0, + "ks": { + "o": { "k": 100 }, + "r": { "k": -89.1 }, + "p": { "k": [ 53.205, 131.606, 0 ] }, + "a": { "k": [ 0, 0, 0 ] }, + "s": { "k": [ 100, 100, 100 ] } + }, + "ao": 0, + "shapes": [ + { + "ty": "gr", + "it": [ + { + "ind": 0, + "ty": "sh", + "ks": { + "k": { + "i": [ + [ 0, 0 ], + [ 0, 0 ] + ], + "o": [ + [ 0, 0 ], + [ 0, 0 ] + ], + "v": [ + [ 147.699, 13.025 ], + [ 133.195, 13.21 ] + ], + "c": false + } + }, + "nm": "Path 1" + }, + { + "ty": "tm", + "s": { + "k": [ + { + "i": { + "x": [ 0.833 ], + "y": [ 0.833 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p833_0p833_0p167_0p167" ], + "t": 76, + "s": [ 87 ], + "e": [ 42.133 ] + }, + { + "i": { + "x": [ 0.833 ], + "y": [ 0.833 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p833_0p833_0p167_0p167" ], + "t": 79, + "s": [ 42.133 ], + "e": [ 0 ] + }, + { "t": 83 } + ], + "ix": 1 + }, + "e": { + "k": [ + { + "i": { + "x": [ 0.833 ], + "y": [ 0.833 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p833_0p833_0p167_0p167" ], + "t": 76, + "s": [ 100 ], + "e": [ 66.356 ] + }, + { + "i": { + "x": [ 0.833 ], + "y": [ 0.833 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p833_0p833_0p167_0p167" ], + "t": 79, + "s": [ 66.356 ], + "e": [ 0 ] + }, + { "t": 83 } + ], + "ix": 2 + }, + "o": { + "k": 0, + "ix": 3 + }, + "m": 1, + "ix": 2, + "nm": "Trim Paths 1" + }, + { + "ty": "st", + "fillEnabled": true, + "c": { "k": [ 1, 1, 1, 1 ] }, + "o": { "k": 100 }, + "w": { "k": 2 }, + "lc": 2, + "lj": 1, + "ml": 4, + "nm": "Stroke 1" + }, + { + "ty": "tr", + "p": { + "k": [ 0, 0 ], + "ix": 2 + }, + "a": { + "k": [ 0, 0 ], + "ix": 1 + }, + "s": { + "k": [ 100, 100 ], + "ix": 3 + }, + "r": { + "k": 0, + "ix": 6 + }, + "o": { + "k": 100, + "ix": 7 + }, + "sk": { + "k": 0, + "ix": 4 + }, + "sa": { + "k": 0, + "ix": 5 + }, + "nm": "Transform" + } + ], + "nm": "Shape 1" + } + ], + "ip": 76, + "op": 84, + "st": 40, + "bm": 0, + "sr": 1 + }, + { + "ddd": 0, + "ind": 4, + "ty": 4, + "nm": "S5-Y 3", + "parent": 0, + "ks": { + "o": { "k": 100 }, + "r": { "k": 97.9 }, + "p": { "k": [ 58.205, -39.394, 0 ] }, + "a": { "k": [ 0, 0, 0 ] }, + "s": { "k": [ 100, 100, 100 ] } + }, + "ao": 0, + "shapes": [ + { + "ty": "gr", + "it": [ + { + "ind": 0, + "ty": "sh", + "ks": { + "k": { + "i": [ + [ 0, 0 ], + [ 0, 0 ] + ], + "o": [ + [ 0, 0 ], + [ 0, 0 ] + ], + "v": [ + [ 145.677, 22.22 ], + [ 134.922, 14.749 ] + ], + "c": false + } + }, + "nm": "Path 1" + }, + { + "ty": "tm", + "s": { + "k": [ + { + "i": { + "x": [ 0.833 ], + "y": [ 0.833 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p833_0p833_0p167_0p167" ], + "t": 75, + "s": [ 87 ], + "e": [ 50.633 ] + }, + { + "i": { + "x": [ 0.833 ], + "y": [ 0.833 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p833_0p833_0p167_0p167" ], + "t": 78, + "s": [ 50.633 ], + "e": [ 0 ] + }, + { "t": 82 } + ], + "ix": 1 + }, + "e": { + "k": [ + { + "i": { + "x": [ 0.833 ], + "y": [ 0.833 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p833_0p833_0p167_0p167" ], + "t": 75, + "s": [ 100 ], + "e": [ 75.856 ] + }, + { + "i": { + "x": [ 0.833 ], + "y": [ 0.833 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p833_0p833_0p167_0p167" ], + "t": 78, + "s": [ 75.856 ], + "e": [ 0 ] + }, + { "t": 82 } + ], + "ix": 2 + }, + "o": { + "k": 0, + "ix": 3 + }, + "m": 1, + "ix": 2, + "nm": "Trim Paths 1" + }, + { + "ty": "st", + "fillEnabled": true, + "c": { "k": [ 1, 1, 1, 1 ] }, + "o": { "k": 100 }, + "w": { "k": 2 }, + "lc": 2, + "lj": 1, + "ml": 4, + "nm": "Stroke 1" + }, + { + "ty": "tr", + "p": { + "k": [ 0, 0 ], + "ix": 2 + }, + "a": { + "k": [ 0, 0 ], + "ix": 1 + }, + "s": { + "k": [ 100, 100 ], + "ix": 3 + }, + "r": { + "k": 0, + "ix": 6 + }, + "o": { + "k": 100, + "ix": 7 + }, + "sk": { + "k": 0, + "ix": 4 + }, + "sa": { + "k": 0, + "ix": 5 + }, + "nm": "Transform" + } + ], + "nm": "Shape 1" + } + ], + "ip": 75, + "op": 83, + "st": 39, + "bm": 0, + "sr": 1 + }, + { + "ddd": 0, + "ind": 5, + "ty": 4, + "nm": "S4-Y 3", + "parent": 0, + "ks": { + "o": { "k": 100 }, + "r": { "k": 97.9 }, + "p": { "k": [ 58.205, -39.394, 0 ] }, + "a": { "k": [ 0, 0, 0 ] }, + "s": { "k": [ 100, 100, 100 ] } + }, + "ao": 0, + "shapes": [ + { + "ty": "gr", + "it": [ + { + "ind": 0, + "ty": "sh", + "ks": { + "k": { + "i": [ + [ 0, 0 ], + [ 0, 0 ] + ], + "o": [ + [ 0, 0 ], + [ 0, 0 ] + ], + "v": [ + [ 144.429, -5.397 ], + [ 132.275, 4.731 ] + ], + "c": false + } + }, + "nm": "Path 1" + }, + { + "ty": "tm", + "s": { + "k": [ + { + "i": { + "x": [ 0.833 ], + "y": [ 0.833 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p833_0p833_0p167_0p167" ], + "t": 75, + "s": [ 87 ], + "e": [ 43.833 ] + }, + { + "i": { + "x": [ 0.833 ], + "y": [ 0.833 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p833_0p833_0p167_0p167" ], + "t": 78, + "s": [ 43.833 ], + "e": [ 0 ] + }, + { "t": 82 } + ], + "ix": 1 + }, + "e": { + "k": [ + { + "i": { + "x": [ 0.833 ], + "y": [ 0.833 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p833_0p833_0p167_0p167" ], + "t": 75, + "s": [ 100 ], + "e": [ 66.356 ] + }, + { + "i": { + "x": [ 0.833 ], + "y": [ 0.833 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p833_0p833_0p167_0p167" ], + "t": 78, + "s": [ 66.356 ], + "e": [ 0 ] + }, + { "t": 82 } + ], + "ix": 2 + }, + "o": { + "k": 0, + "ix": 3 + }, + "m": 1, + "ix": 2, + "nm": "Trim Paths 1" + }, + { + "ty": "st", + "fillEnabled": true, + "c": { "k": [ 1, 1, 1, 1 ] }, + "o": { "k": 100 }, + "w": { "k": 2 }, + "lc": 2, + "lj": 1, + "ml": 4, + "nm": "Stroke 1" + }, + { + "ty": "tr", + "p": { + "k": [ 0, 0 ], + "ix": 2 + }, + "a": { + "k": [ 0, 0 ], + "ix": 1 + }, + "s": { + "k": [ 100, 100 ], + "ix": 3 + }, + "r": { + "k": 0, + "ix": 6 + }, + "o": { + "k": 100, + "ix": 7 + }, + "sk": { + "k": 0, + "ix": 4 + }, + "sa": { + "k": 0, + "ix": 5 + }, + "nm": "Transform" + } + ], + "nm": "Shape 1" + } + ], + "ip": 75, + "op": 83, + "st": 39, + "bm": 0, + "sr": 1 + }, + { + "ddd": 0, + "ind": 6, + "ty": 4, + "nm": "S3-Y 3", + "parent": 0, + "ks": { + "o": { "k": 100 }, + "r": { "k": 97.9 }, + "p": { "k": [ 58.205, -39.394, 0 ] }, + "a": { "k": [ 0, 0, 0 ] }, + "s": { "k": [ 100, 100, 100 ] } + }, + "ao": 0, + "shapes": [ + { + "ty": "gr", + "it": [ + { + "ind": 0, + "ty": "sh", + "ks": { + "k": { + "i": [ + [ 0, 0 ], + [ 0, 0 ] + ], + "o": [ + [ 0, 0 ], + [ 0, 0 ] + ], + "v": [ + [ 149.624, 8.244 ], + [ 136.648, 10.156 ] + ], + "c": false + } + }, + "nm": "Path 1" + }, + { + "ty": "tm", + "s": { + "k": [ + { + "i": { + "x": [ 0.833 ], + "y": [ 0.833 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p833_0p833_0p167_0p167" ], + "t": 75, + "s": [ 87 ], + "e": [ 42.133 ] + }, + { + "i": { + "x": [ 0.833 ], + "y": [ 0.833 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p833_0p833_0p167_0p167" ], + "t": 78, + "s": [ 42.133 ], + "e": [ 0 ] + }, + { "t": 82 } + ], + "ix": 1 + }, + "e": { + "k": [ + { + "i": { + "x": [ 0.833 ], + "y": [ 0.833 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p833_0p833_0p167_0p167" ], + "t": 75, + "s": [ 100 ], + "e": [ 66.356 ] + }, + { + "i": { + "x": [ 0.833 ], + "y": [ 0.833 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p833_0p833_0p167_0p167" ], + "t": 78, + "s": [ 66.356 ], + "e": [ 0 ] + }, + { "t": 82 } + ], + "ix": 2 + }, + "o": { + "k": 0, + "ix": 3 + }, + "m": 1, + "ix": 2, + "nm": "Trim Paths 1" + }, + { + "ty": "st", + "fillEnabled": true, + "c": { "k": [ 1, 1, 1, 1 ] }, + "o": { "k": 100 }, + "w": { "k": 2 }, + "lc": 2, + "lj": 1, + "ml": 4, + "nm": "Stroke 1" + }, + { + "ty": "tr", + "p": { + "k": [ 0, 0 ], + "ix": 2 + }, + "a": { + "k": [ 0, 0 ], + "ix": 1 + }, + "s": { + "k": [ 100, 100 ], + "ix": 3 + }, + "r": { + "k": 0, + "ix": 6 + }, + "o": { + "k": 100, + "ix": 7 + }, + "sk": { + "k": 0, + "ix": 4 + }, + "sa": { + "k": 0, + "ix": 5 + }, + "nm": "Transform" + } + ], + "nm": "Shape 1" + } + ], + "ip": 75, + "op": 83, + "st": 39, + "bm": 0, + "sr": 1 + }, + { + "ddd": 0, + "ind": 7, + "ty": 4, + "nm": "S13", + "parent": 0, + "ks": { + "o": { "k": 100 }, + "r": { "k": 0 }, + "p": { "k": [ 25.043, 45.678, 0 ] }, + "a": { "k": [ 0, 0, 0 ] }, + "s": { "k": [ 100, 100, 100 ] } + }, + "ao": 0, + "shapes": [ + { + "ty": "gr", + "it": [ + { + "ind": 0, + "ty": "sh", + "ks": { + "k": { + "i": [ + [ 0, 0 ], + [ 0, 0 ] + ], + "o": [ + [ 0, 0 ], + [ 0, 0 ] + ], + "v": [ + [ 128, 3.65 ], + [ 78.25, 3.5 ] + ], + "c": false + } + }, + "nm": "Path 1" + }, + { + "ty": "tm", + "s": { + "k": [ + { + "i": { + "x": [ 0.833 ], + "y": [ 0.833 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p833_0p833_0p167_0p167" ], + "t": 85, + "s": [ 87 ], + "e": [ 21.233 ] + }, + { + "i": { + "x": [ 0.833 ], + "y": [ 0.833 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p833_0p833_0p167_0p167" ], + "t": 90, + "s": [ 21.233 ], + "e": [ 0 ] + }, + { "t": 94 } + ], + "ix": 1 + }, + "e": { + "k": [ + { + "i": { + "x": [ 0.833 ], + "y": [ 0.833 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p833_0p833_0p167_0p167" ], + "t": 85, + "s": [ 100 ], + "e": [ 66.356 ] + }, + { + "i": { + "x": [ 0.833 ], + "y": [ 0.833 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p833_0p833_0p167_0p167" ], + "t": 90, + "s": [ 66.356 ], + "e": [ 0 ] + }, + { "t": 94 } + ], + "ix": 2 + }, + "o": { + "k": 0, + "ix": 3 + }, + "m": 1, + "ix": 2, + "nm": "Trim Paths 1" + }, + { + "ty": "st", + "fillEnabled": true, + "c": { "k": [ 1, 1, 1, 1 ] }, + "o": { "k": 100 }, + "w": { "k": 1.5 }, + "lc": 2, + "lj": 1, + "ml": 4, + "nm": "Stroke 1" + }, + { + "ty": "tr", + "p": { + "k": [ 0, 0 ], + "ix": 2 + }, + "a": { + "k": [ 0, 0 ], + "ix": 1 + }, + "s": { + "k": [ 100, 100 ], + "ix": 3 + }, + "r": { + "k": 0, + "ix": 6 + }, + "o": { + "k": 100, + "ix": 7 + }, + "sk": { + "k": 0, + "ix": 4 + }, + "sa": { + "k": 0, + "ix": 5 + }, + "nm": "Transform" + } + ], + "nm": "Shape 1" + } + ], + "ip": 85, + "op": 95, + "st": 49, + "bm": 0, + "sr": 1 + }, + { + "ddd": 0, + "ind": 8, + "ty": 4, + "nm": "S12", + "parent": 0, + "ks": { + "o": { "k": 100 }, + "r": { "k": 0 }, + "p": { "k": [ 25.043, 45.678, 0 ] }, + "a": { "k": [ 0, 0, 0 ] }, + "s": { "k": [ 100, 100, 100 ] } + }, + "ao": 0, + "shapes": [ + { + "ty": "gr", + "it": [ + { + "ind": 0, + "ty": "sh", + "ks": { + "k": { + "i": [ + [ 0, 0 ], + [ 0, 0 ] + ], + "o": [ + [ 0, 0 ], + [ 0, 0 ] + ], + "v": [ + [ 119.25, -20.05 ], + [ 63.5, -20.5 ] + ], + "c": false + } + }, + "nm": "Path 1" + }, + { + "ty": "tm", + "s": { + "k": [ + { + "i": { + "x": [ 0.833 ], + "y": [ 0.833 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p833_0p833_0p167_0p167" ], + "t": 84, + "s": [ 87 ], + "e": [ 21.233 ] + }, + { + "i": { + "x": [ 0.833 ], + "y": [ 0.833 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p833_0p833_0p167_0p167" ], + "t": 87, + "s": [ 21.233 ], + "e": [ 0 ] + }, + { "t": 91 } + ], + "ix": 1 + }, + "e": { + "k": [ + { + "i": { + "x": [ 0.833 ], + "y": [ 0.833 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p833_0p833_0p167_0p167" ], + "t": 84, + "s": [ 100 ], + "e": [ 66.356 ] + }, + { + "i": { + "x": [ 0.833 ], + "y": [ 0.833 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p833_0p833_0p167_0p167" ], + "t": 87, + "s": [ 66.356 ], + "e": [ 0 ] + }, + { "t": 91 } + ], + "ix": 2 + }, + "o": { + "k": 0, + "ix": 3 + }, + "m": 1, + "ix": 2, + "nm": "Trim Paths 1" + }, + { + "ty": "st", + "fillEnabled": true, + "c": { "k": [ 1, 1, 1, 1 ] }, + "o": { "k": 100 }, + "w": { "k": 1.5 }, + "lc": 2, + "lj": 1, + "ml": 4, + "nm": "Stroke 1" + }, + { + "ty": "tr", + "p": { + "k": [ 0, 0 ], + "ix": 2 + }, + "a": { + "k": [ 0, 0 ], + "ix": 1 + }, + "s": { + "k": [ 100, 100 ], + "ix": 3 + }, + "r": { + "k": 0, + "ix": 6 + }, + "o": { + "k": 100, + "ix": 7 + }, + "sk": { + "k": 0, + "ix": 4 + }, + "sa": { + "k": 0, + "ix": 5 + }, + "nm": "Transform" + } + ], + "nm": "Shape 1" + } + ], + "ip": 84, + "op": 94, + "st": 48, + "bm": 0, + "sr": 1 + }, + { + "ddd": 0, + "ind": 9, + "ty": 4, + "nm": "S11", + "parent": 0, + "ks": { + "o": { "k": 100 }, + "r": { "k": 0 }, + "p": { "k": [ 25.043, 45.678, 0 ] }, + "a": { "k": [ 0, 0, 0 ] }, + "s": { "k": [ 100, 100, 100 ] } + }, + "ao": 0, + "shapes": [ + { + "ty": "gr", + "it": [ + { + "ind": 0, + "ty": "sh", + "ks": { + "k": { + "i": [ + [ 0, 0 ], + [ 0, 0 ] + ], + "o": [ + [ 0, 0 ], + [ 0, 0 ] + ], + "v": [ + [ 119.5, -45.05 ], + [ 82.75, -44.75 ] + ], + "c": false + } + }, + "nm": "Path 1" + }, + { + "ty": "tm", + "s": { + "k": [ + { + "i": { + "x": [ 0.833 ], + "y": [ 0.833 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p833_0p833_0p167_0p167" ], + "t": 80, + "s": [ 87 ], + "e": [ 21.233 ] + }, + { + "i": { + "x": [ 0.833 ], + "y": [ 0.833 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p833_0p833_0p167_0p167" ], + "t": 83, + "s": [ 21.233 ], + "e": [ 0 ] + }, + { "t": 87 } + ], + "ix": 1 + }, + "e": { + "k": [ + { + "i": { + "x": [ 0.833 ], + "y": [ 0.833 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p833_0p833_0p167_0p167" ], + "t": 80, + "s": [ 100 ], + "e": [ 66.356 ] + }, + { + "i": { + "x": [ 0.833 ], + "y": [ 0.833 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p833_0p833_0p167_0p167" ], + "t": 83, + "s": [ 66.356 ], + "e": [ 0 ] + }, + { "t": 87 } + ], + "ix": 2 + }, + "o": { + "k": 0, + "ix": 3 + }, + "m": 1, + "ix": 2, + "nm": "Trim Paths 1" + }, + { + "ty": "st", + "fillEnabled": true, + "c": { "k": [ 1, 1, 1, 1 ] }, + "o": { "k": 100 }, + "w": { "k": 1.5 }, + "lc": 2, + "lj": 1, + "ml": 4, + "nm": "Stroke 1" + }, + { + "ty": "tr", + "p": { + "k": [ 0, 0 ], + "ix": 2 + }, + "a": { + "k": [ 0, 0 ], + "ix": 1 + }, + "s": { + "k": [ 100, 100 ], + "ix": 3 + }, + "r": { + "k": 0, + "ix": 6 + }, + "o": { + "k": 100, + "ix": 7 + }, + "sk": { + "k": 0, + "ix": 4 + }, + "sa": { + "k": 0, + "ix": 5 + }, + "nm": "Transform" + } + ], + "nm": "Shape 1" + } + ], + "ip": 80, + "op": 90, + "st": 44, + "bm": 0, + "sr": 1 + }, + { + "ddd": 0, + "ind": 10, + "ty": 4, + "nm": "S5-Y 2", + "parent": 0, + "ks": { + "o": { "k": 100 }, + "r": { "k": 0 }, + "p": { "k": [ 25.043, 45.678, 0 ] }, + "a": { "k": [ 0, 0, 0 ] }, + "s": { "k": [ 100, 100, 100 ] } + }, + "ao": 0, + "shapes": [ + { + "ty": "gr", + "it": [ + { + "ind": 0, + "ty": "sh", + "ks": { + "k": { + "i": [ + [ 0, 0 ], + [ 0, 0 ] + ], + "o": [ + [ 0, 0 ], + [ 0, 0 ] + ], + "v": [ + [ 169.5, 18.073 ], + [ 137.481, 11.365 ] + ], + "c": false + } + }, + "nm": "Path 1" + }, + { + "ty": "tm", + "s": { + "k": [ + { + "i": { + "x": [ 0.833 ], + "y": [ 0.833 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p833_0p833_0p167_0p167" ], + "t": 97, + "s": [ 87 ], + "e": [ 50.633 ] + }, + { + "i": { + "x": [ 0.833 ], + "y": [ 0.833 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p833_0p833_0p167_0p167" ], + "t": 100, + "s": [ 50.633 ], + "e": [ 0 ] + }, + { "t": 107 } + ], + "ix": 1 + }, + "e": { + "k": [ + { + "i": { + "x": [ 0.833 ], + "y": [ 0.833 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p833_0p833_0p167_0p167" ], + "t": 97, + "s": [ 100 ], + "e": [ 75.856 ] + }, + { + "i": { + "x": [ 0.833 ], + "y": [ 0.833 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p833_0p833_0p167_0p167" ], + "t": 100, + "s": [ 75.856 ], + "e": [ 0 ] + }, + { "t": 107 } + ], + "ix": 2 + }, + "o": { + "k": 0, + "ix": 3 + }, + "m": 1, + "ix": 2, + "nm": "Trim Paths 1" + }, + { + "ty": "st", + "fillEnabled": true, + "c": { "k": [ 1, 1, 1, 1 ] }, + "o": { "k": 100 }, + "w": { "k": 2 }, + "lc": 2, + "lj": 1, + "ml": 4, + "nm": "Stroke 1" + }, + { + "ty": "tr", + "p": { + "k": [ 0, 0 ], + "ix": 2 + }, + "a": { + "k": [ 0, 0 ], + "ix": 1 + }, + "s": { + "k": [ 100, 100 ], + "ix": 3 + }, + "r": { + "k": 0, + "ix": 6 + }, + "o": { + "k": 100, + "ix": 7 + }, + "sk": { + "k": 0, + "ix": 4 + }, + "sa": { + "k": 0, + "ix": 5 + }, + "nm": "Transform" + } + ], + "nm": "Shape 1" + } + ], + "ip": 97, + "op": 107, + "st": 61, + "bm": 0, + "sr": 1 + }, + { + "ddd": 0, + "ind": 11, + "ty": 4, + "nm": "S4-Y 2", + "parent": 0, + "ks": { + "o": { "k": 100 }, + "r": { "k": 0 }, + "p": { "k": [ 25.043, 45.678, 0 ] }, + "a": { "k": [ 0, 0, 0 ] }, + "s": { "k": [ 100, 100, 100 ] } + }, + "ao": 0, + "shapes": [ + { + "ty": "gr", + "it": [ + { + "ind": 0, + "ty": "sh", + "ks": { + "k": { + "i": [ + [ 0, 0 ], + [ 0, 0 ] + ], + "o": [ + [ 0, 0 ], + [ 0, 0 ] + ], + "v": [ + [ 156.45, -23.05 ], + [ 132, 2.75 ] + ], + "c": false + } + }, + "nm": "Path 1" + }, + { + "ty": "tm", + "s": { + "k": [ + { + "i": { + "x": [ 0.833 ], + "y": [ 0.833 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p833_0p833_0p167_0p167" ], + "t": 97, + "s": [ 87 ], + "e": [ 43.833 ] + }, + { + "i": { + "x": [ 0.833 ], + "y": [ 0.833 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p833_0p833_0p167_0p167" ], + "t": 100, + "s": [ 43.833 ], + "e": [ 0 ] + }, + { "t": 107 } + ], + "ix": 1 + }, + "e": { + "k": [ + { + "i": { + "x": [ 0.833 ], + "y": [ 0.833 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p833_0p833_0p167_0p167" ], + "t": 97, + "s": [ 100 ], + "e": [ 66.356 ] + }, + { + "i": { + "x": [ 0.833 ], + "y": [ 0.833 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p833_0p833_0p167_0p167" ], + "t": 100, + "s": [ 66.356 ], + "e": [ 0 ] + }, + { "t": 107 } + ], + "ix": 2 + }, + "o": { + "k": 0, + "ix": 3 + }, + "m": 1, + "ix": 2, + "nm": "Trim Paths 1" + }, + { + "ty": "st", + "fillEnabled": true, + "c": { "k": [ 1, 1, 1, 1 ] }, + "o": { "k": 100 }, + "w": { "k": 2 }, + "lc": 2, + "lj": 1, + "ml": 4, + "nm": "Stroke 1" + }, + { + "ty": "tr", + "p": { + "k": [ 0, 0 ], + "ix": 2 + }, + "a": { + "k": [ 0, 0 ], + "ix": 1 + }, + "s": { + "k": [ 100, 100 ], + "ix": 3 + }, + "r": { + "k": 0, + "ix": 6 + }, + "o": { + "k": 100, + "ix": 7 + }, + "sk": { + "k": 0, + "ix": 4 + }, + "sa": { + "k": 0, + "ix": 5 + }, + "nm": "Transform" + } + ], + "nm": "Shape 1" + } + ], + "ip": 97, + "op": 107, + "st": 61, + "bm": 0, + "sr": 1 + }, + { + "ddd": 0, + "ind": 12, + "ty": 4, + "nm": "S3-Y 2", + "parent": 0, + "ks": { + "o": { "k": 100 }, + "r": { "k": 0 }, + "p": { "k": [ 25.043, 45.678, 0 ] }, + "a": { "k": [ 0, 0, 0 ] }, + "s": { "k": [ 100, 100, 100 ] } + }, + "ao": 0, + "shapes": [ + { + "ty": "gr", + "it": [ + { + "ind": 0, + "ty": "sh", + "ks": { + "k": { + "i": [ + [ 0, 0 ], + [ 0, 0 ] + ], + "o": [ + [ 0, 0 ], + [ 0, 0 ] + ], + "v": [ + [ 166.731, -7.927 ], + [ 136.731, 7.115 ] + ], + "c": false + } + }, + "nm": "Path 1" + }, + { + "ty": "tm", + "s": { + "k": [ + { + "i": { + "x": [ 0.833 ], + "y": [ 0.833 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p833_0p833_0p167_0p167" ], + "t": 97, + "s": [ 87 ], + "e": [ 42.133 ] + }, + { + "i": { + "x": [ 0.833 ], + "y": [ 0.833 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p833_0p833_0p167_0p167" ], + "t": 100, + "s": [ 42.133 ], + "e": [ 0 ] + }, + { "t": 107 } + ], + "ix": 1 + }, + "e": { + "k": [ + { + "i": { + "x": [ 0.833 ], + "y": [ 0.833 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p833_0p833_0p167_0p167" ], + "t": 97, + "s": [ 100 ], + "e": [ 66.356 ] + }, + { + "i": { + "x": [ 0.833 ], + "y": [ 0.833 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p833_0p833_0p167_0p167" ], + "t": 100, + "s": [ 66.356 ], + "e": [ 0 ] + }, + { "t": 107 } + ], + "ix": 2 + }, + "o": { + "k": 0, + "ix": 3 + }, + "m": 1, + "ix": 2, + "nm": "Trim Paths 1" + }, + { + "ty": "st", + "fillEnabled": true, + "c": { "k": [ 1, 1, 1, 1 ] }, + "o": { "k": 100 }, + "w": { "k": 2 }, + "lc": 2, + "lj": 1, + "ml": 4, + "nm": "Stroke 1" + }, + { + "ty": "tr", + "p": { + "k": [ 0, 0 ], + "ix": 2 + }, + "a": { + "k": [ 0, 0 ], + "ix": 1 + }, + "s": { + "k": [ 100, 100 ], + "ix": 3 + }, + "r": { + "k": 0, + "ix": 6 + }, + "o": { + "k": 100, + "ix": 7 + }, + "sk": { + "k": 0, + "ix": 4 + }, + "sa": { + "k": 0, + "ix": 5 + }, + "nm": "Transform" + } + ], + "nm": "Shape 1" + } + ], + "ip": 97, + "op": 107, + "st": 61, + "bm": 0, + "sr": 1 + }, + { + "ddd": 0, + "ind": 13, + "ty": 4, + "nm": "S6-Y", + "parent": 0, + "ks": { + "o": { "k": 100 }, + "r": { "k": 0 }, + "p": { "k": [ 25.043, 45.678, 0 ] }, + "a": { "k": [ 0, 0, 0 ] }, + "s": { "k": [ 100, 100, 100 ] } + }, + "ao": 0, + "shapes": [ + { + "ty": "gr", + "it": [ + { + "ind": 0, + "ty": "sh", + "ks": { + "k": { + "i": [ + [ 0, 0 ], + [ 0, 0 ] + ], + "o": [ + [ 0, 0 ], + [ 0, 0 ] + ], + "v": [ + [ -87.5, 20.95 ], + [ -48.75, 54.75 ] + ], + "c": false + } + }, + "nm": "Path 1" + }, + { + "ty": "tm", + "s": { + "k": [ + { + "i": { + "x": [ 0.833 ], + "y": [ 0.833 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p833_0p833_0p167_0p167" ], + "t": 54, + "s": [ 87 ], + "e": [ 43.933 ] + }, + { + "i": { + "x": [ 0.833 ], + "y": [ 0.833 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p833_0p833_0p167_0p167" ], + "t": 57, + "s": [ 43.933 ], + "e": [ 0 ] + }, + { "t": 64 } + ], + "ix": 1 + }, + "e": { + "k": [ + { + "i": { + "x": [ 0.833 ], + "y": [ 0.833 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p833_0p833_0p167_0p167" ], + "t": 54, + "s": [ 100 ], + "e": [ 70.456 ] + }, + { + "i": { + "x": [ 0.833 ], + "y": [ 0.833 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p833_0p833_0p167_0p167" ], + "t": 57, + "s": [ 70.456 ], + "e": [ 0 ] + }, + { "t": 64 } + ], + "ix": 2 + }, + "o": { + "k": 0, + "ix": 3 + }, + "m": 1, + "ix": 2, + "nm": "Trim Paths 1" + }, + { + "ty": "st", + "fillEnabled": true, + "c": { "k": [ 1, 1, 1, 1 ] }, + "o": { "k": 100 }, + "w": { "k": 2 }, + "lc": 2, + "lj": 1, + "ml": 4, + "nm": "Stroke 1" + }, + { + "ty": "tr", + "p": { + "k": [ 0, 0 ], + "ix": 2 + }, + "a": { + "k": [ 0, 0 ], + "ix": 1 + }, + "s": { + "k": [ 100, 100 ], + "ix": 3 + }, + "r": { + "k": 0, + "ix": 6 + }, + "o": { + "k": 100, + "ix": 7 + }, + "sk": { + "k": 0, + "ix": 4 + }, + "sa": { + "k": 0, + "ix": 5 + }, + "nm": "Transform" + } + ], + "nm": "Shape 1" + } + ], + "ip": 54, + "op": 64, + "st": 18, + "bm": 0, + "sr": 1 + }, + { + "ddd": 0, + "ind": 14, + "ty": 4, + "nm": "S5-Y", + "parent": 0, + "ks": { + "o": { "k": 100 }, + "r": { "k": 0 }, + "p": { "k": [ 25.043, 45.678, 0 ] }, + "a": { "k": [ 0, 0, 0 ] }, + "s": { "k": [ 100, 100, 100 ] } + }, + "ao": 0, + "shapes": [ + { + "ty": "gr", + "it": [ + { + "ind": 0, + "ty": "sh", + "ks": { + "k": { + "i": [ + [ 0, 0 ], + [ 0, 0 ] + ], + "o": [ + [ 0, 0 ], + [ 0, 0 ] + ], + "v": [ + [ -94.5, 37.073 ], + [ -48.769, 55.365 ] + ], + "c": false + } + }, + "nm": "Path 1" + }, + { + "ty": "tm", + "s": { + "k": [ + { + "i": { + "x": [ 0.833 ], + "y": [ 0.833 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p833_0p833_0p167_0p167" ], + "t": 54, + "s": [ 87 ], + "e": [ 50.633 ] + }, + { + "i": { + "x": [ 0.833 ], + "y": [ 0.833 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p833_0p833_0p167_0p167" ], + "t": 57, + "s": [ 50.633 ], + "e": [ 0 ] + }, + { "t": 64 } + ], + "ix": 1 + }, + "e": { + "k": [ + { + "i": { + "x": [ 0.833 ], + "y": [ 0.833 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p833_0p833_0p167_0p167" ], + "t": 54, + "s": [ 100 ], + "e": [ 75.856 ] + }, + { + "i": { + "x": [ 0.833 ], + "y": [ 0.833 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p833_0p833_0p167_0p167" ], + "t": 57, + "s": [ 75.856 ], + "e": [ 0 ] + }, + { "t": 64 } + ], + "ix": 2 + }, + "o": { + "k": 0, + "ix": 3 + }, + "m": 1, + "ix": 2, + "nm": "Trim Paths 1" + }, + { + "ty": "st", + "fillEnabled": true, + "c": { "k": [ 1, 1, 1, 1 ] }, + "o": { "k": 100 }, + "w": { "k": 2 }, + "lc": 2, + "lj": 1, + "ml": 4, + "nm": "Stroke 1" + }, + { + "ty": "tr", + "p": { + "k": [ 0, 0 ], + "ix": 2 + }, + "a": { + "k": [ 0, 0 ], + "ix": 1 + }, + "s": { + "k": [ 100, 100 ], + "ix": 3 + }, + "r": { + "k": 0, + "ix": 6 + }, + "o": { + "k": 100, + "ix": 7 + }, + "sk": { + "k": 0, + "ix": 4 + }, + "sa": { + "k": 0, + "ix": 5 + }, + "nm": "Transform" + } + ], + "nm": "Shape 1" + } + ], + "ip": 54, + "op": 64, + "st": 18, + "bm": 0, + "sr": 1 + }, + { + "ddd": 0, + "ind": 15, + "ty": 4, + "nm": "S4-Y", + "parent": 0, + "ks": { + "o": { "k": 100 }, + "r": { "k": 0 }, + "p": { "k": [ 25.043, 45.678, 0 ] }, + "a": { "k": [ 0, 0, 0 ] }, + "s": { "k": [ 100, 100, 100 ] } + }, + "ao": 0, + "shapes": [ + { + "ty": "gr", + "it": [ + { + "ind": 0, + "ty": "sh", + "ks": { + "k": { + "i": [ + [ 0, 0 ], + [ 0, 0 ] + ], + "o": [ + [ 0, 0 ], + [ 0, 0 ] + ], + "v": [ + [ 7.45, 21.95 ], + [ -32.75, 55.75 ] + ], + "c": false + } + }, + "nm": "Path 1" + }, + { + "ty": "tm", + "s": { + "k": [ + { + "i": { + "x": [ 0.833 ], + "y": [ 0.833 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p833_0p833_0p167_0p167" ], + "t": 54, + "s": [ 87 ], + "e": [ 43.833 ] + }, + { + "i": { + "x": [ 0.833 ], + "y": [ 0.833 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p833_0p833_0p167_0p167" ], + "t": 57, + "s": [ 43.833 ], + "e": [ 0 ] + }, + { "t": 64 } + ], + "ix": 1 + }, + "e": { + "k": [ + { + "i": { + "x": [ 0.833 ], + "y": [ 0.833 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p833_0p833_0p167_0p167" ], + "t": 54, + "s": [ 100 ], + "e": [ 66.356 ] + }, + { + "i": { + "x": [ 0.833 ], + "y": [ 0.833 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p833_0p833_0p167_0p167" ], + "t": 57, + "s": [ 66.356 ], + "e": [ 0 ] + }, + { "t": 64 } + ], + "ix": 2 + }, + "o": { + "k": 0, + "ix": 3 + }, + "m": 1, + "ix": 2, + "nm": "Trim Paths 1" + }, + { + "ty": "st", + "fillEnabled": true, + "c": { "k": [ 1, 1, 1, 1 ] }, + "o": { "k": 100 }, + "w": { "k": 2 }, + "lc": 2, + "lj": 1, + "ml": 4, + "nm": "Stroke 1" + }, + { + "ty": "tr", + "p": { + "k": [ 0, 0 ], + "ix": 2 + }, + "a": { + "k": [ 0, 0 ], + "ix": 1 + }, + "s": { + "k": [ 100, 100 ], + "ix": 3 + }, + "r": { + "k": 0, + "ix": 6 + }, + "o": { + "k": 100, + "ix": 7 + }, + "sk": { + "k": 0, + "ix": 4 + }, + "sa": { + "k": 0, + "ix": 5 + }, + "nm": "Transform" + } + ], + "nm": "Shape 1" + } + ], + "ip": 54, + "op": 64, + "st": 18, + "bm": 0, + "sr": 1 + }, + { + "ddd": 0, + "ind": 16, + "ty": 4, + "nm": "S3-Y", + "parent": 0, + "ks": { + "o": { "k": 100 }, + "r": { "k": 0 }, + "p": { "k": [ 25.043, 45.678, 0 ] }, + "a": { "k": [ 0, 0, 0 ] }, + "s": { "k": [ 100, 100, 100 ] } + }, + "ao": 0, + "shapes": [ + { + "ty": "gr", + "it": [ + { + "ind": 0, + "ty": "sh", + "ks": { + "k": { + "i": [ + [ 0, 0 ], + [ 0, 0 ] + ], + "o": [ + [ 0, 0 ], + [ 0, 0 ] + ], + "v": [ + [ 16.231, 39.073 ], + [ -32.769, 57.365 ] + ], + "c": false + } + }, + "nm": "Path 1" + }, + { + "ty": "tm", + "s": { + "k": [ + { + "i": { + "x": [ 0.833 ], + "y": [ 0.833 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p833_0p833_0p167_0p167" ], + "t": 54, + "s": [ 87 ], + "e": [ 42.133 ] + }, + { + "i": { + "x": [ 0.833 ], + "y": [ 0.833 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p833_0p833_0p167_0p167" ], + "t": 57, + "s": [ 42.133 ], + "e": [ 0 ] + }, + { "t": 64 } + ], + "ix": 1 + }, + "e": { + "k": [ + { + "i": { + "x": [ 0.833 ], + "y": [ 0.833 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p833_0p833_0p167_0p167" ], + "t": 54, + "s": [ 100 ], + "e": [ 66.356 ] + }, + { + "i": { + "x": [ 0.833 ], + "y": [ 0.833 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p833_0p833_0p167_0p167" ], + "t": 57, + "s": [ 66.356 ], + "e": [ 0 ] + }, + { "t": 64 } + ], + "ix": 2 + }, + "o": { + "k": 0, + "ix": 3 + }, + "m": 1, + "ix": 2, + "nm": "Trim Paths 1" + }, + { + "ty": "st", + "fillEnabled": true, + "c": { "k": [ 1, 1, 1, 1 ] }, + "o": { "k": 100 }, + "w": { "k": 2 }, + "lc": 2, + "lj": 1, + "ml": 4, + "nm": "Stroke 1" + }, + { + "ty": "tr", + "p": { + "k": [ 0, 0 ], + "ix": 2 + }, + "a": { + "k": [ 0, 0 ], + "ix": 1 + }, + "s": { + "k": [ 100, 100 ], + "ix": 3 + }, + "r": { + "k": 0, + "ix": 6 + }, + "o": { + "k": 100, + "ix": 7 + }, + "sk": { + "k": 0, + "ix": 4 + }, + "sa": { + "k": 0, + "ix": 5 + }, + "nm": "Transform" + } + ], + "nm": "Shape 1" + } + ], + "ip": 54, + "op": 64, + "st": 18, + "bm": 0, + "sr": 1 + }, + { + "ddd": 0, + "ind": 17, + "ty": 4, + "nm": "S8", + "parent": 0, + "ks": { + "o": { "k": 100 }, + "r": { "k": 0 }, + "p": { "k": [ 25.043, 45.678, 0 ] }, + "a": { "k": [ 0, 0, 0 ] }, + "s": { "k": [ 100, 100, 100 ] } + }, + "ao": 0, + "shapes": [ + { + "ty": "gr", + "it": [ + { + "ind": 0, + "ty": "sh", + "ks": { + "k": { + "i": [ + [ 0, 0 ], + [ -0.148, 14.256 ], + [ 10.476, 0 ], + [ 0, 0 ] + ], + "o": [ + [ 0, 0 ], + [ -8.551, -8.263 ], + [ -21.454, 0 ], + [ 0, 0 ] + ], + "v": [ + [ -3, 35.95 ], + [ -1.352, -6.756 ], + [ -32.046, -20.579 ], + [ -42.25, 4.25 ] + ], + "c": false + } + }, + "nm": "Path 1" + }, + { + "ty": "tm", + "s": { + "k": [ + { + "i": { + "x": [ 0.833 ], + "y": [ 0.833 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p833_0p833_0p167_0p167" ], + "t": 65, + "s": [ 87 ], + "e": [ 21.233 ] + }, + { + "i": { + "x": [ 0.833 ], + "y": [ 0.833 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p833_0p833_0p167_0p167" ], + "t": 70, + "s": [ 21.233 ], + "e": [ 0 ] + }, + { "t": 75 } + ], + "ix": 1 + }, + "e": { + "k": [ + { + "i": { + "x": [ 0.833 ], + "y": [ 0.833 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p833_0p833_0p167_0p167" ], + "t": 65, + "s": [ 100 ], + "e": [ 66.356 ] + }, + { + "i": { + "x": [ 0.833 ], + "y": [ 0.833 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p833_0p833_0p167_0p167" ], + "t": 70, + "s": [ 66.356 ], + "e": [ 0 ] + }, + { "t": 75 } + ], + "ix": 2 + }, + "o": { + "k": 0, + "ix": 3 + }, + "m": 1, + "ix": 2, + "nm": "Trim Paths 1" + }, + { + "ty": "st", + "fillEnabled": true, + "c": { "k": [ 1, 1, 1, 1 ] }, + "o": { "k": 100 }, + "w": { "k": 1.5 }, + "lc": 2, + "lj": 1, + "ml": 4, + "nm": "Stroke 1" + }, + { + "ty": "tr", + "p": { + "k": [ 0, 0 ], + "ix": 2 + }, + "a": { + "k": [ 0, 0 ], + "ix": 1 + }, + "s": { + "k": [ 100, 100 ], + "ix": 3 + }, + "r": { + "k": 0, + "ix": 6 + }, + "o": { + "k": 100, + "ix": 7 + }, + "sk": { + "k": 0, + "ix": 4 + }, + "sa": { + "k": 0, + "ix": 5 + }, + "nm": "Transform" + } + ], + "nm": "Shape 1" + } + ], + "ip": 65, + "op": 75, + "st": 29, + "bm": 0, + "sr": 1 + }, + { + "ddd": 0, + "ind": 18, + "ty": 4, + "nm": "S7", + "parent": 0, + "ks": { + "o": { "k": 100 }, + "r": { "k": 0 }, + "p": { "k": [ 25.043, 45.678, 0 ] }, + "a": { "k": [ 0, 0, 0 ] }, + "s": { "k": [ 100, 100, 100 ] } + }, + "ao": 0, + "shapes": [ + { + "ty": "gr", + "it": [ + { + "ind": 0, + "ty": "sh", + "ks": { + "k": { + "i": [ + [ 27, 1.45 ], + [ 31.046, -1.421 ], + [ 0, 0 ] + ], + "o": [ + [ -27, -1.45 ], + [ -26.426, 1.21 ], + [ 0, 0 ] + ], + "v": [ + [ 34.5, -13.05 ], + [ -35.046, -35.579 ], + [ -62.25, -5.75 ] + ], + "c": false + } + }, + "nm": "Path 1" + }, + { + "ty": "tm", + "s": { + "k": [ + { + "i": { + "x": [ 0.833 ], + "y": [ 0.833 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p833_0p833_0p167_0p167" ], + "t": 65, + "s": [ 87 ], + "e": [ 21.233 ] + }, + { + "i": { + "x": [ 0.833 ], + "y": [ 0.833 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p833_0p833_0p167_0p167" ], + "t": 70, + "s": [ 21.233 ], + "e": [ 0 ] + }, + { "t": 75 } + ], + "ix": 1 + }, + "e": { + "k": [ + { + "i": { + "x": [ 0.833 ], + "y": [ 0.833 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p833_0p833_0p167_0p167" ], + "t": 65, + "s": [ 100 ], + "e": [ 66.356 ] + }, + { + "i": { + "x": [ 0.833 ], + "y": [ 0.833 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p833_0p833_0p167_0p167" ], + "t": 70, + "s": [ 66.356 ], + "e": [ 0 ] + }, + { "t": 75 } + ], + "ix": 2 + }, + "o": { + "k": 0, + "ix": 3 + }, + "m": 1, + "ix": 2, + "nm": "Trim Paths 1" + }, + { + "ty": "st", + "fillEnabled": true, + "c": { "k": [ 1, 1, 1, 1 ] }, + "o": { "k": 100 }, + "w": { "k": 1.5 }, + "lc": 2, + "lj": 1, + "ml": 4, + "nm": "Stroke 1" + }, + { + "ty": "tr", + "p": { + "k": [ 0, 0 ], + "ix": 2 + }, + "a": { + "k": [ 0, 0 ], + "ix": 1 + }, + "s": { + "k": [ 100, 100 ], + "ix": 3 + }, + "r": { + "k": 0, + "ix": 6 + }, + "o": { + "k": 100, + "ix": 7 + }, + "sk": { + "k": 0, + "ix": 4 + }, + "sa": { + "k": 0, + "ix": 5 + }, + "nm": "Transform" + } + ], + "nm": "Shape 1" + } + ], + "ip": 65, + "op": 75, + "st": 29, + "bm": 0, + "sr": 1 + }, + { + "ddd": 0, + "ind": 19, + "ty": 4, + "nm": "S2-Y", + "parent": 0, + "ks": { + "o": { "k": 100 }, + "r": { "k": 0 }, + "p": { "k": [ 25.043, 45.678, 0 ] }, + "a": { "k": [ 0, 0, 0 ] }, + "s": { "k": [ 100, 100, 100 ] } + }, + "ao": 0, + "shapes": [ + { + "ty": "gr", + "it": [ + { + "ind": 0, + "ty": "sh", + "ks": { + "k": { + "i": [ + [ 0, 0 ], + [ 1.9, -10.768 ], + [ 1, -19 ] + ], + "o": [ + [ 0, 0 ], + [ -3.167, 17.951 ], + [ -1, 19 ] + ], + "v": [ + [ -67.25, -105.5 ], + [ -72.333, -84.201 ], + [ -76.5, -37.75 ] + ], + "c": false + } + }, + "nm": "Path 1" + }, + { + "ty": "tm", + "s": { + "k": [ + { + "i": { + "x": [ 0.833 ], + "y": [ 0.833 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p833_0p833_0p167_0p167" ], + "t": 29, + "s": [ 87 ], + "e": [ 25.333 ] + }, + { + "i": { + "x": [ 0.833 ], + "y": [ 0.833 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p833_0p833_0p167_0p167" ], + "t": 33, + "s": [ 25.333 ], + "e": [ 0 ] + }, + { "t": 36 } + ], + "ix": 1 + }, + "e": { + "k": [ + { + "i": { + "x": [ 0.833 ], + "y": [ 0.833 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p833_0p833_0p167_0p167" ], + "t": 29, + "s": [ 100 ], + "e": [ 69.056 ] + }, + { + "i": { + "x": [ 0.833 ], + "y": [ 0.833 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p833_0p833_0p167_0p167" ], + "t": 33, + "s": [ 69.056 ], + "e": [ 0 ] + }, + { "t": 36 } + ], + "ix": 2 + }, + "o": { + "k": 0, + "ix": 3 + }, + "m": 1, + "ix": 2, + "nm": "Trim Paths 1" + }, + { + "ty": "st", + "fillEnabled": true, + "c": { "k": [ 1, 1, 1, 1 ] }, + "o": { "k": 100 }, + "w": { "k": 1.5 }, + "lc": 2, + "lj": 1, + "ml": 4, + "nm": "Stroke 1" + }, + { + "ty": "tr", + "p": { + "k": [ 0, 0 ], + "ix": 2 + }, + "a": { + "k": [ 0, 0 ], + "ix": 1 + }, + "s": { + "k": [ 100, 100 ], + "ix": 3 + }, + "r": { + "k": 0, + "ix": 6 + }, + "o": { + "k": 100, + "ix": 7 + }, + "sk": { + "k": 0, + "ix": 4 + }, + "sa": { + "k": 0, + "ix": 5 + }, + "nm": "Transform" + } + ], + "nm": "Shape 1" + } + ], + "ip": 30, + "op": 37, + "st": -7, + "bm": 0, + "sr": 1 + }, + { + "ddd": 0, + "ind": 20, + "ty": 4, + "nm": "S1-Y", + "parent": 0, + "ks": { + "o": { "k": 100 }, + "r": { "k": 0 }, + "p": { "k": [ 25.043, 45.678, 0 ] }, + "a": { "k": [ 0, 0, 0 ] }, + "s": { "k": [ 100, 100, 100 ] } + }, + "ao": 0, + "shapes": [ + { + "ty": "gr", + "it": [ + { + "ind": 0, + "ty": "sh", + "ks": { + "k": { + "i": [ + [ 0, 0 ], + [ 1.9, -10.768 ], + [ 1, -19 ] + ], + "o": [ + [ 0, 0 ], + [ -3.167, 17.951 ], + [ -1, 19 ] + ], + "v": [ + [ -67.125, -112 ], + [ -75.458, -89.951 ], + [ -80.375, -39.25 ] + ], + "c": false + } + }, + "nm": "Path 1" + }, + { + "ty": "tm", + "s": { + "k": [ + { + "i": { + "x": [ 0.833 ], + "y": [ 0.833 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p833_0p833_0p167_0p167" ], + "t": 29, + "s": [ 87 ], + "e": [ 37.533 ] + }, + { + "i": { + "x": [ 0.833 ], + "y": [ 0.833 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p833_0p833_0p167_0p167" ], + "t": 33, + "s": [ 37.533 ], + "e": [ 0 ] + }, + { "t": 36 } + ], + "ix": 1 + }, + "e": { + "k": [ + { + "i": { + "x": [ 0.833 ], + "y": [ 0.833 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p833_0p833_0p167_0p167" ], + "t": 29, + "s": [ 100 ], + "e": [ 66.356 ] + }, + { + "i": { + "x": [ 0.833 ], + "y": [ 0.833 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p833_0p833_0p167_0p167" ], + "t": 33, + "s": [ 66.356 ], + "e": [ 0 ] + }, + { "t": 36 } + ], + "ix": 2 + }, + "o": { + "k": 0, + "ix": 3 + }, + "m": 1, + "ix": 2, + "nm": "Trim Paths 1" + }, + { + "ty": "st", + "fillEnabled": true, + "c": { "k": [ 1, 1, 1, 1 ] }, + "o": { "k": 100 }, + "w": { "k": 1.5 }, + "lc": 2, + "lj": 1, + "ml": 4, + "nm": "Stroke 1" + }, + { + "ty": "tr", + "p": { + "k": [ 0, 0 ], + "ix": 2 + }, + "a": { + "k": [ 0, 0 ], + "ix": 1 + }, + "s": { + "k": [ 100, 100 ], + "ix": 3 + }, + "r": { + "k": 0, + "ix": 6 + }, + "o": { + "k": 100, + "ix": 7 + }, + "sk": { + "k": 0, + "ix": 4 + }, + "sa": { + "k": 0, + "ix": 5 + }, + "nm": "Transform" + } + ], + "nm": "Shape 1" + } + ], + "ip": 30, + "op": 37, + "st": -7, + "bm": 0, + "sr": 1 + }, + { + "ddd": 0, + "ind": 21, + "ty": 4, + "nm": "Dot1", + "parent": 0, + "ks": { + "o": { "k": 100 }, + "r": { "k": 0 }, + "p": { + "k": [ + { + "i": { + "x": 0.833, + "y": 0.833 + }, + "o": { + "x": 0.823, + "y": 0 + }, + "n": "0p833_0p833_0p823_0", + "t": -3, + "s": [ 295.771, 108.994, 0 ], + "e": [ 35.771, 108.994, 0 ], + "to": [ 0, 0, 0 ], + "ti": [ 0, 0, 0 ] + }, + { "t": 16 } + ] + }, + "a": { "k": [ 196.791, 266.504, 0 ] }, + "s": { "k": [ 100, 100, 100 ] } + }, + "ao": 0, + "shapes": [ + { + "ty": "gr", + "it": [ + { + "d": 1, + "ty": "el", + "s": { "k": [ 9.4, 9.4 ] }, + "p": { "k": [ 0.8, -0.5 ] }, + "nm": "Ellipse Path 1" + }, + { + "ty": "fl", + "fillEnabled": true, + "c": { "k": [ 1, 1, 1, 1 ] }, + "o": { "k": 100 }, + "nm": "Fill 1" + }, + { + "ty": "tr", + "p": { + "k": [ 196, 267 ], + "ix": 2 + }, + "a": { + "k": [ 0, 0 ], + "ix": 1 + }, + "s": { + "k": [ 100, 100 ], + "ix": 3 + }, + "r": { + "k": 0, + "ix": 6 + }, + "o": { + "k": 100, + "ix": 7 + }, + "sk": { + "k": 0, + "ix": 4 + }, + "sa": { + "k": 0, + "ix": 5 + }, + "nm": "Transform" + } + ], + "nm": "Ellipse 1" + } + ], + "ip": -5, + "op": 17, + "st": -36, + "bm": 0, + "sr": 1 + }, + { + "ddd": 0, + "ind": 22, + "ty": 4, + "nm": "L-B", + "parent": 0, + "ks": { + "o": { "k": 100 }, + "r": { "k": 0 }, + "p": { "k": [ 39.043, 45.678, 0 ] }, + "a": { "k": [ 250, 250, 0 ] }, + "s": { "k": [ 100, 100, 100 ] } + }, + "ao": 0, + "shapes": [ + { + "ty": "gr", + "it": [ + { + "ind": 0, + "ty": "sh", + "ks": { + "k": { + "i": [ + [ 0, 0 ], + [ 25.671, -4.167 ], + [ 1.456, 6.902 ], + [ -8.481, 1.863 ], + [ -47.562, 13.01 ], + [ -0.501, 0.133 ], + [ -71.423, -2.315 ] + ], + "o": [ + [ 0, 0 ], + [ -8.224, 1.335 ], + [ -1.456, -6.903 ], + [ 23.817, -5.233 ], + [ 0.16, -0.044 ], + [ 0.501, -0.133 ], + [ 0, 0 ] + ], + "v": [ + [ -8.837, -58.229 ], + [ -35.834, 33.662 ], + [ -51.688, 23.148 ], + [ -41.174, 7.293 ], + [ 51.797, 44.178 ], + [ 53.188, 43.741 ], + [ 140.394, 43.672 ] + ], + "c": false + } + }, + "nm": "Path 1" + }, + { + "ty": "st", + "fillEnabled": true, + "c": { "k": [ 0, 0.48, 0.53, 1 ] }, + "o": { "k": 100 }, + "w": { "k": 9.194 }, + "lc": 2, + "lj": 1, + "ml": 10, + "nm": "Stroke 1" + }, + { + "ty": "tr", + "p": { + "k": [ 166.029, 270.643 ], + "ix": 2 + }, + "a": { + "k": [ 0, 0 ], + "ix": 1 + }, + "s": { + "k": [ 100, 100 ], + "ix": 3 + }, + "r": { + "k": 0, + "ix": 6 + }, + "o": { + "k": 100, + "ix": 7 + }, + "sk": { + "k": 0, + "ix": 4 + }, + "sa": { + "k": 0, + "ix": 5 + }, + "nm": "Transform" + } + ], + "nm": "Group 8" + }, + { + "ty": "tm", + "s": { + "k": [ + { + "i": { + "x": [ 0.703 ], + "y": [ 0.821 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p703_0p821_0p167_0p167" ], + "t": 18, + "s": [ 80 ], + "e": [ 50 ] + }, + { + "i": { + "x": [ 0.263 ], + "y": [ 1 ] + }, + "o": { + "x": [ 0.037 ], + "y": [ 0.168 ] + }, + "n": [ "0p263_1_0p037_0p168" ], + "t": 23, + "s": [ 50 ], + "e": [ 30 ] + }, + { "t": 55 } + ], + "ix": 1 + }, + "e": { + "k": [ + { + "i": { + "x": [ 0.337 ], + "y": [ 1 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p337_1_0p167_0p167" ], + "t": 18, + "s": [ 81 ], + "e": [ 73.4 ] + }, + { "t": 29 } + ], + "ix": 2 + }, + "o": { + "k": 0, + "ix": 3 + }, + "m": 1, + "ix": 2, + "nm": "Trim Paths 1" + } + ], + "ip": 18, + "op": 179, + "st": 8, + "bm": 0, + "sr": 1 + }, + { + "ddd": 0, + "ind": 23, + "ty": 4, + "nm": "L-Y", + "parent": 0, + "ks": { + "o": { "k": 100 }, + "r": { "k": 0 }, + "p": { "k": [ 39.043, 45.678, 0 ] }, + "a": { "k": [ 250, 250, 0 ] }, + "s": { "k": [ 100, 100, 100 ] } + }, + "ao": 0, + "shapes": [ + { + "ty": "gr", + "it": [ + { + "ind": 0, + "ty": "sh", + "ks": { + "k": { + "i": [ + [ 0, 0 ], + [ 25.671, -4.167 ], + [ 1.456, 6.902 ], + [ -8.481, 1.863 ], + [ -47.562, 13.01 ], + [ -0.501, 0.133 ], + [ -71.423, -2.315 ] + ], + "o": [ + [ 0, 0 ], + [ -8.224, 1.335 ], + [ -1.456, -6.903 ], + [ 23.817, -5.233 ], + [ 0.16, -0.044 ], + [ 0.501, -0.133 ], + [ 0, 0 ] + ], + "v": [ + [ -8.837, -58.229 ], + [ -35.834, 33.662 ], + [ -51.688, 23.148 ], + [ -41.174, 7.293 ], + [ 51.797, 44.178 ], + [ 53.188, 43.741 ], + [ 140.394, 43.672 ] + ], + "c": false + } + }, + "nm": "Path 1" + }, + { + "ty": "st", + "fillEnabled": true, + "c": { "k": [ 1, 1, 1, 1 ] }, + "o": { "k": 100 }, + "w": { "k": 8.4 }, + "lc": 2, + "lj": 1, + "ml": 10, + "nm": "Stroke 1" + }, + { + "ty": "tr", + "p": { + "k": [ 166.029, 270.643 ], + "ix": 2 + }, + "a": { + "k": [ 0, 0 ], + "ix": 1 + }, + "s": { + "k": [ 100, 100 ], + "ix": 3 + }, + "r": { + "k": 0, + "ix": 6 + }, + "o": { + "k": 100, + "ix": 7 + }, + "sk": { + "k": 0, + "ix": 4 + }, + "sa": { + "k": 0, + "ix": 5 + }, + "nm": "Transform" + } + ], + "nm": "Group 8" + }, + { + "ty": "tm", + "s": { + "k": [ + { + "i": { + "x": [ 0.703 ], + "y": [ 0.857 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p703_0p857_0p167_0p167" ], + "t": 16, + "s": [ 80 ], + "e": [ 50 ] + }, + { + "i": { + "x": [ 0.938 ], + "y": [ 1 ] + }, + "o": { + "x": [ 0.333 ], + "y": [ 0.202 ] + }, + "n": [ "0p938_1_0p333_0p202" ], + "t": 20, + "s": [ 50 ], + "e": [ 0 ] + }, + { "t": 28 } + ], + "ix": 1 + }, + "e": { + "k": [ + { + "i": { + "x": [ 0.337 ], + "y": [ 1 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p337_1_0p167_0p167" ], + "t": 16, + "s": [ 81 ], + "e": [ 73.4 ] + }, + { "t": 27 } + ], + "ix": 2 + }, + "o": { + "k": 0, + "ix": 3 + }, + "m": 1, + "ix": 2, + "nm": "Trim Paths 1" + } + ], + "ip": 16, + "op": 179, + "st": 8, + "bm": 0, + "sr": 1 + }, + { + "ddd": 0, + "ind": 24, + "ty": 1, + "nm": "N", + "parent": 0, + "ks": { + "o": { "k": 0 }, + "r": { "k": 0 }, + "p": { + "k": [ + { + "i": { + "x": 0.26, + "y": 1 + }, + "o": { + "x": 0.167, + "y": 0.167 + }, + "n": "0p26_1_0p167_0p167", + "t": 28, + "s": [ -33.667, 8.182, 0 ], + "e": [ -33.667, -72.818, 0 ], + "to": [ 0, 0, 0 ], + "ti": [ 0, 0, 0 ] + }, + { + "i": { + "x": 0.833, + "y": 0.833 + }, + "o": { + "x": 0.74, + "y": 0 + }, + "n": "0p833_0p833_0p74_0", + "t": 40, + "s": [ -33.667, -72.818, 0 ], + "e": [ -33.667, 102.057, 0 ], + "to": [ 0, 0, 0 ], + "ti": [ 0, 0, 0 ] + }, + { "t": 54 } + ] + }, + "a": { "k": [ 60, 60, 0 ] }, + "s": { "k": [ 100, 100, 100 ] } + }, + "ao": 0, + "sw": 120, + "sh": 120, + "sc": "#ffffff", + "ip": 28, + "op": 54, + "st": 0, + "bm": 0, + "sr": 1 + }, + { + "ddd": 0, + "ind": 25, + "ty": 4, + "nm": "Dot-Y", + "parent": 24, + "ks": { + "o": { "k": 100 }, + "r": { "k": 0 }, + "p": { + "k": [ + { + "i": { + "x": 0.833, + "y": 0.833 + }, + "o": { + "x": 0.167, + "y": 0.167 + }, + "n": "0p833_0p833_0p167_0p167", + "t": 28, + "s": [ 39.875, 60, 0 ], + "e": [ 79.375, 60, 0 ], + "to": [ 6.58333349227905, 0, 0 ], + "ti": [ -6.58333349227905, 0, 0 ] + }, + { "t": 54 } + ] + }, + "a": { "k": [ 196.791, 266.504, 0 ] }, + "s": { "k": [ 100, 100, 100 ] } + }, + "ao": 0, + "shapes": [ + { + "ty": "gr", + "it": [ + { + "d": 1, + "ty": "el", + "s": { "k": [ 9.4, 9.4 ] }, + "p": { "k": [ 0.8, -0.5 ] }, + "nm": "Ellipse Path 1" + }, + { + "ty": "fl", + "fillEnabled": true, + "c": { "k": [ 1, 1, 1, 1 ] }, + "o": { "k": 100 }, + "nm": "Fill 1" + }, + { + "ty": "tr", + "p": { + "k": [ 196, 267 ], + "ix": 2 + }, + "a": { + "k": [ 0, 0 ], + "ix": 1 + }, + "s": { + "k": [ 100, 100 ], + "ix": 3 + }, + "r": { + "k": 0, + "ix": 6 + }, + "o": { + "k": 100, + "ix": 7 + }, + "sk": { + "k": 0, + "ix": 4 + }, + "sa": { + "k": 0, + "ix": 5 + }, + "nm": "Transform" + } + ], + "nm": "Ellipse 1" + } + ], + "ip": 28, + "op": 54, + "st": 4, + "bm": 0, + "sr": 1 + }, + { + "ddd": 0, + "ind": 26, + "ty": 4, + "nm": "T1a-B", + "parent": 36, + "ks": { + "o": { "k": 100 }, + "r": { "k": 0 }, + "p": { "k": [ 250, 250, 0 ] }, + "a": { "k": [ 250, 250, 0 ] }, + "s": { "k": [ 100, 100, 100 ] } + }, + "ao": 0, + "shapes": [ + { + "ty": "gr", + "it": [ + { + "ind": 0, + "ty": "sh", + "ks": { + "k": { + "i": [ + [ -0.5, 9.501 ], + [ -0.048, 5.655 ], + [ 0.054, 0.06 ], + [ 0.946, 1.486 ], + [ -9.967, 8.05 ], + [ -40.546, 0 ] + ], + "o": [ + [ 0.031, -0.594 ], + [ 0.076, -8.978 ], + [ -1.161, -1.3 ], + [ -5.939, -9.327 ], + [ 24.677, -19.929 ], + [ 0, 0 ] + ], + "v": [ + [ -30.72, 63.761 ], + [ -30.741, 45.192 ], + [ -37.397, 27.014 ], + [ -40.698, 22.661 ], + [ -37.873, -7.117 ], + [ 49.506, 11.559 ] + ], + "c": false + } + }, + "nm": "Path 1" + }, + { + "ty": "tm", + "s": { + "k": 24.9, + "ix": 1 + }, + "e": { + "k": [ + { + "i": { + "x": [ 0.673 ], + "y": [ 1 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p673_1_0p167_0p167" ], + "t": 70, + "s": [ 24.9 ], + "e": [ 89.1 ] + }, + { "t": 84 } + ], + "ix": 2 + }, + "o": { + "k": 0, + "ix": 3 + }, + "m": 1, + "ix": 2, + "nm": "Trim Paths 1" + }, + { + "ty": "st", + "fillEnabled": true, + "c": { "k": [ 1, 1, 1, 1 ] }, + "o": { "k": 100 }, + "w": { "k": 9.194 }, + "lc": 2, + "lj": 1, + "ml": 10, + "nm": "Stroke 1" + }, + { + "ty": "tr", + "p": { + "k": [ 227.677, 234.375 ], + "ix": 2 + }, + "a": { + "k": [ 0, 0 ], + "ix": 1 + }, + "s": { + "k": [ 100, 100 ], + "ix": 3 + }, + "r": { + "k": 0, + "ix": 6 + }, + "o": { + "k": 100, + "ix": 7 + }, + "sk": { + "k": 0, + "ix": 4 + }, + "sa": { + "k": 0, + "ix": 5 + }, + "nm": "Transform" + } + ], + "nm": "Group 9" + } + ], + "ip": 70, + "op": 179, + "st": 17, + "bm": 0, + "sr": 1 + }, + { + "ddd": 0, + "ind": 27, + "ty": 4, + "nm": "T2a-B", + "parent": 0, + "ks": { + "o": { "k": 100 }, + "r": { "k": 0 }, + "p": { "k": [ 39.043, 45.678, 0 ] }, + "a": { "k": [ 250, 250, 0 ] }, + "s": { "k": [ 100, 100, 100 ] } + }, + "ao": 0, + "shapes": [ + { + "ty": "gr", + "it": [ + { + "ind": 0, + "ty": "sh", + "ks": { + "k": { + "i": [ + [ 0, 0 ], + [ 0, 0 ] + ], + "o": [ + [ 0, 0 ], + [ 0, 0 ] + ], + "v": [ + [ 1.681, -29.992 ], + [ -1.681, 29.992 ] + ], + "c": false + } + }, + "nm": "Path 1" + }, + { + "ty": "tm", + "s": { + "k": [ + { + "i": { + "x": [ 0.06 ], + "y": [ 1 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p06_1_0p167_0p167" ], + "t": 75, + "s": [ 50 ], + "e": [ 0 ] + }, + { "t": 85 } + ], + "ix": 1 + }, + "e": { + "k": [ + { + "i": { + "x": [ 0.06 ], + "y": [ 1 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p06_1_0p167_0p167" ], + "t": 75, + "s": [ 50 ], + "e": [ 100 ] + }, + { "t": 85 } + ], + "ix": 2 + }, + "o": { + "k": 0, + "ix": 3 + }, + "m": 1, + "ix": 2, + "nm": "Trim Paths 1" + }, + { + "ty": "st", + "fillEnabled": true, + "c": { "k": [ 0, 0.48, 0.53, 1 ] }, + "o": { "k": 100 }, + "w": { "k": 9.194 }, + "lc": 3, + "lj": 1, + "ml": 10, + "nm": "Stroke 1" + }, + { + "ty": "tr", + "p": { + "k": [ 277.698, 247.258 ], + "ix": 2 + }, + "a": { + "k": [ 0, 0 ], + "ix": 1 + }, + "s": { + "k": [ 100, 100 ], + "ix": 3 + }, + "r": { + "k": 0, + "ix": 6 + }, + "o": { + "k": 100, + "ix": 7 + }, + "sk": { + "k": 0, + "ix": 4 + }, + "sa": { + "k": 0, + "ix": 5 + }, + "nm": "Transform" + } + ], + "nm": "Group 7" + } + ], + "ip": 75, + "op": 179, + "st": 15, + "bm": 0, + "sr": 1 + }, + { + "ddd": 0, + "ind": 28, + "ty": 4, + "nm": "T1a-Y 2", + "parent": 0, + "ks": { + "o": { "k": 100 }, + "r": { "k": 0 }, + "p": { + "k": [ + { + "i": { + "x": 0.667, + "y": 1 + }, + "o": { + "x": 0.167, + "y": 0.167 + }, + "n": "0p667_1_0p167_0p167", + "t": 56, + "s": [ 39.043, 48.678, 0 ], + "e": [ 39.043, 45.678, 0 ], + "to": [ 0, 0, 0 ], + "ti": [ 0, 0, 0 ] + }, + { "t": 64 } + ] + }, + "a": { "k": [ 250, 250, 0 ] }, + "s": { "k": [ 100, 100, 100 ] } + }, + "ao": 0, + "shapes": [ + { + "ty": "gr", + "it": [ + { + "ind": 0, + "ty": "sh", + "ks": { + "k": { + "i": [ + [ -0.5, 9.501 ], + [ -0.048, 5.655 ], + [ 0.054, 0.06 ], + [ 0.946, 1.486 ], + [ -9.967, 8.05 ], + [ -40.546, 0 ] + ], + "o": [ + [ 0.031, -0.594 ], + [ 0.076, -8.978 ], + [ -1.161, -1.3 ], + [ -5.939, -9.327 ], + [ 24.677, -19.929 ], + [ 0, 0 ] + ], + "v": [ + [ -30.72, 63.761 ], + [ -30.741, 45.192 ], + [ -37.397, 27.014 ], + [ -40.698, 22.661 ], + [ -37.873, -7.117 ], + [ 49.506, 11.559 ] + ], + "c": false + } + }, + "nm": "Path 1" + }, + { + "ty": "tm", + "s": { + "k": [ + { + "i": { + "x": [ 0.833 ], + "y": [ 1 ] + }, + "o": { + "x": [ 0.301 ], + "y": [ 0 ] + }, + "n": [ "0p833_1_0p301_0" ], + "t": 54, + "s": [ 0 ], + "e": [ 24.9 ] + }, + { "t": 70 } + ], + "ix": 1 + }, + "e": { + "k": [ + { + "i": { + "x": [ 0.667 ], + "y": [ 1 ] + }, + "o": { + "x": [ 0.301 ], + "y": [ 0 ] + }, + "n": [ "0p667_1_0p301_0" ], + "t": 54, + "s": [ 0 ], + "e": [ 100 ] + }, + { "t": 78 } + ], + "ix": 2 + }, + "o": { + "k": 0, + "ix": 3 + }, + "m": 1, + "ix": 2, + "nm": "Trim Paths 1" + }, + { + "ty": "st", + "fillEnabled": true, + "c": { "k": [ 0, 0.48, 0.53, 1 ] }, + "o": { "k": 100 }, + "w": { "k": 8.4 }, + "lc": 2, + "lj": 1, + "ml": 10, + "nm": "Stroke 1" + }, + { + "ty": "tr", + "p": { + "k": [ 227.677, 234.375 ], + "ix": 2 + }, + "a": { + "k": [ 0, 0 ], + "ix": 1 + }, + "s": { + "k": [ 100, 100 ], + "ix": 3 + }, + "r": { + "k": 0, + "ix": 6 + }, + "o": { + "k": 100, + "ix": 7 + }, + "sk": { + "k": 0, + "ix": 4 + }, + "sa": { + "k": 0, + "ix": 5 + }, + "nm": "Transform" + } + ], + "nm": "Group 9" + } + ], + "ip": 59, + "op": 179, + "st": 12, + "bm": 0, + "sr": 1 + }, + { + "ddd": 0, + "ind": 29, + "ty": 4, + "nm": "O-B", + "parent": 0, + "ks": { + "o": { "k": 100 }, + "r": { "k": 0 }, + "p": { + "k": [ + { + "i": { + "x": 0.833, + "y": 0.833 + }, + "o": { + "x": 0.167, + "y": 0.167 + }, + "n": "0p833_0p833_0p167_0p167", + "t": 31, + "s": [ -62.792, 73.057, 0 ], + "e": [ -53.792, 7.557, 0 ], + "to": [ 0, 0, 0 ], + "ti": [ 0, 0, 0 ] + }, + { + "i": { + "x": 0.638, + "y": 1 + }, + "o": { + "x": 0.167, + "y": 0.198 + }, + "n": "0p638_1_0p167_0p198", + "t": 35.257, + "s": [ -53.792, 7.557, 0 ], + "e": [ -33.667, -72.818, 0 ], + "to": [ 0, 0, 0 ], + "ti": [ -19.1562919616699, 1.73831975460052, 0 ] + }, + { + "i": { + "x": 0.795, + "y": 1 + }, + "o": { + "x": 0.523, + "y": 0 + }, + "n": "0p795_1_0p523_0", + "t": 44, + "s": [ -33.667, -72.818, 0 ], + "e": [ -14.167, 102.182, 0 ], + "to": [ 16.2075271606445, -1.47073686122894, 0 ], + "ti": [ 0, 0, 0 ] + }, + { + "i": { + "x": 0.348, + "y": 1 + }, + "o": { + "x": 0.18, + "y": 0 + }, + "n": "0p348_1_0p18_0", + "t": 54, + "s": [ -14.167, 102.182, 0 ], + "e": [ -14.167, 59.182, 0 ], + "to": [ 0, 0, 0 ], + "ti": [ 0, 0, 0 ] + }, + { + "i": { + "x": 0.27, + "y": 1 + }, + "o": { + "x": 0.693, + "y": 0 + }, + "n": "0p27_1_0p693_0", + "t": 63, + "s": [ -14.167, 59.182, 0 ], + "e": [ -14.167, 62.182, 0 ], + "to": [ 0, 0, 0 ], + "ti": [ 0, 0, 0 ] + }, + { "t": 73 } + ] + }, + "a": { "k": [ 196.791, 266.504, 0 ] }, + "s": { "k": [ 100, 100, 100 ] } + }, + "ao": 0, + "shapes": [ + { + "ty": "gr", + "it": [ + { + "d": 1, + "ty": "el", + "s": { + "k": [ + { + "i": { + "x": [ 0.667, 0.667 ], + "y": [ 1, 1 ] + }, + "o": { + "x": [ 0.333, 0.333 ], + "y": [ 0, 0 ] + }, + "n": [ "0p667_1_0p333_0", "0p667_1_0p333_0" ], + "t": 54, + "s": [ 3, 3 ], + "e": [ 44.6, 44.6 ] + }, + { "t": 61 } + ] + }, + "p": { "k": [ 0.8, -0.5 ] }, + "nm": "Ellipse Path 1" + }, + { + "ty": "st", + "fillEnabled": true, + "c": { "k": [ 0, 0.48, 0.53, 1 ] }, + "o": { "k": 100 }, + "w": { "k": 9.194 }, + "lc": 2, + "lj": 1, + "ml": 4, + "nm": "Stroke 1" + }, + { + "ty": "tr", + "p": { + "k": [ 196, 267 ], + "ix": 2 + }, + "a": { + "k": [ 0, 0 ], + "ix": 1 + }, + "s": { + "k": [ 100, 100 ], + "ix": 3 + }, + "r": { + "k": 0, + "ix": 6 + }, + "o": { + "k": 100, + "ix": 7 + }, + "sk": { + "k": 0, + "ix": 4 + }, + "sa": { + "k": 0, + "ix": 5 + }, + "nm": "Transform" + } + ], + "nm": "Ellipse 1" + }, + { + "ty": "tm", + "s": { + "k": [ + { + "i": { + "x": [ 0.833 ], + "y": [ 0.833 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p833_0p833_0p167_0p167" ], + "t": 54, + "s": [ 0 ], + "e": [ 30 ] + }, + { + "i": { + "x": [ 0.432 ], + "y": [ 1 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 1.124 ] + }, + "n": [ "0p432_1_0p167_1p124" ], + "t": 63, + "s": [ 30 ], + "e": [ 39.9 ] + }, + { "t": 91 } + ], + "ix": 1 + }, + "e": { + "k": [ + { + "i": { + "x": [ 0.833 ], + "y": [ 0.833 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p833_0p833_0p167_0p167" ], + "t": 54, + "s": [ 100 ], + "e": [ 88 ] + }, + { + "i": { + "x": [ 0.833 ], + "y": [ 0.833 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p833_0p833_0p167_0p167" ], + "t": 63, + "s": [ 88 ], + "e": [ 88 ] + }, + { "t": 91 } + ], + "ix": 2 + }, + "o": { + "k": 0, + "ix": 3 + }, + "m": 1, + "ix": 2, + "nm": "Trim Paths 1" + } + ], + "ip": 54, + "op": 179, + "st": 4, + "bm": 0, + "sr": 1 + }, + { + "ddd": 0, + "ind": 30, + "ty": 4, + "nm": "O-Y", + "parent": 0, + "ks": { + "o": { "k": 100 }, + "r": { "k": 0 }, + "p": { + "k": [ + { + "i": { + "x": 0.833, + "y": 0.833 + }, + "o": { + "x": 0.167, + "y": 0.167 + }, + "n": "0p833_0p833_0p167_0p167", + "t": 31, + "s": [ -62.792, 73.057, 0 ], + "e": [ -53.792, 7.557, 0 ], + "to": [ 0, 0, 0 ], + "ti": [ 0, 0, 0 ] + }, + { + "i": { + "x": 0.638, + "y": 1 + }, + "o": { + "x": 0.167, + "y": 0.198 + }, + "n": "0p638_1_0p167_0p198", + "t": 35.257, + "s": [ -53.792, 7.557, 0 ], + "e": [ -33.667, -72.818, 0 ], + "to": [ 0, 0, 0 ], + "ti": [ -19.1562919616699, 1.73831975460052, 0 ] + }, + { + "i": { + "x": 0.795, + "y": 1 + }, + "o": { + "x": 0.523, + "y": 0 + }, + "n": "0p795_1_0p523_0", + "t": 44, + "s": [ -33.667, -72.818, 0 ], + "e": [ -14.167, 102.182, 0 ], + "to": [ 16.2075271606445, -1.47073686122894, 0 ], + "ti": [ 0, 0, 0 ] + }, + { + "i": { + "x": 0.348, + "y": 1 + }, + "o": { + "x": 0.18, + "y": 0 + }, + "n": "0p348_1_0p18_0", + "t": 54, + "s": [ -14.167, 102.182, 0 ], + "e": [ -14.167, 59.182, 0 ], + "to": [ 0, 0, 0 ], + "ti": [ 0, 0, 0 ] + }, + { + "i": { + "x": 0.27, + "y": 1 + }, + "o": { + "x": 0.693, + "y": 0 + }, + "n": "0p27_1_0p693_0", + "t": 63, + "s": [ -14.167, 59.182, 0 ], + "e": [ -14.167, 62.182, 0 ], + "to": [ 0, 0, 0 ], + "ti": [ 0, 0, 0 ] + }, + { "t": 73 } + ] + }, + "a": { "k": [ 196.791, 266.504, 0 ] }, + "s": { "k": [ 100, 100, 100 ] } + }, + "ao": 0, + "shapes": [ + { + "ty": "gr", + "it": [ + { + "d": 1, + "ty": "el", + "s": { + "k": [ + { + "i": { + "x": [ 0.667, 0.667 ], + "y": [ 1, 1 ] + }, + "o": { + "x": [ 0.333, 0.333 ], + "y": [ 0, 0 ] + }, + "n": [ "0p667_1_0p333_0", "0p667_1_0p333_0" ], + "t": 54, + "s": [ 3, 3 ], + "e": [ 44.6, 44.6 ] + }, + { "t": 61 } + ] + }, + "p": { "k": [ 0.8, -0.5 ] }, + "nm": "Ellipse Path 1" + }, + { + "ty": "st", + "fillEnabled": true, + "c": { "k": [ 1, 1, 1, 1 ] }, + "o": { "k": 100 }, + "w": { "k": 8.8 }, + "lc": 1, + "lj": 1, + "ml": 4, + "nm": "Stroke 1" + }, + { + "ty": "tr", + "p": { + "k": [ 196, 267 ], + "ix": 2 + }, + "a": { + "k": [ 0, 0 ], + "ix": 1 + }, + "s": { + "k": [ 100, 100 ], + "ix": 3 + }, + "r": { + "k": 0, + "ix": 6 + }, + "o": { + "k": 100, + "ix": 7 + }, + "sk": { + "k": 0, + "ix": 4 + }, + "sa": { + "k": 0, + "ix": 5 + }, + "nm": "Transform" + } + ], + "nm": "Ellipse 1" + } + ], + "ip": 54, + "op": 179, + "st": 4, + "bm": 0, + "sr": 1 + }, + { + "ddd": 0, + "ind": 31, + "ty": 4, + "nm": "T1b-B", + "parent": 0, + "ks": { + "o": { "k": 100 }, + "r": { "k": 0 }, + "p": { "k": [ 39.043, 45.678, 0 ] }, + "a": { "k": [ 250, 250, 0 ] }, + "s": { "k": [ 100, 100, 100 ] } + }, + "ao": 0, + "shapes": [ + { + "ty": "gr", + "it": [ + { + "ind": 0, + "ty": "sh", + "ks": { + "k": { + "i": [ + [ 0, 0 ], + [ 0, 0 ] + ], + "o": [ + [ 0, 0 ], + [ 0, 0 ] + ], + "v": [ + [ 1.768, -25.966 ], + [ -1.768, 25.966 ] + ], + "c": false + } + }, + "nm": "Path 1" + }, + { + "ty": "tm", + "s": { + "k": 0, + "ix": 1 + }, + "e": { + "k": [ + { + "i": { + "x": [ 0.21 ], + "y": [ 1 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p21_1_0p167_0p167" ], + "t": 81, + "s": [ 11.7 ], + "e": [ 100 ] + }, + { "t": 88 } + ], + "ix": 2 + }, + "o": { + "k": 0, + "ix": 3 + }, + "m": 1, + "ix": 2, + "nm": "Trim Paths 1" + }, + { + "ty": "st", + "fillEnabled": true, + "c": { "k": [ 1, 1, 1, 1 ] }, + "o": { "k": 100 }, + "w": { "k": 9.194 }, + "lc": 2, + "lj": 2, + "nm": "Stroke 1" + }, + { + "ty": "tr", + "p": { + "k": [ 242.756, 265.581 ], + "ix": 2 + }, + "a": { + "k": [ 0, 0 ], + "ix": 1 + }, + "s": { + "k": [ 100, 100 ], + "ix": 3 + }, + "r": { + "k": 0, + "ix": 6 + }, + "o": { + "k": 100, + "ix": 7 + }, + "sk": { + "k": 0, + "ix": 4 + }, + "sa": { + "k": 0, + "ix": 5 + }, + "nm": "Transform" + } + ], + "nm": "Group 10" + } + ], + "ip": 81, + "op": 179, + "st": 26, + "bm": 0, + "sr": 1 + }, + { + "ddd": 0, + "ind": 32, + "ty": 4, + "nm": "T1b-Y", + "parent": 0, + "ks": { + "o": { "k": 100 }, + "r": { "k": 0 }, + "p": { "k": [ 39.043, 45.678, 0 ] }, + "a": { "k": [ 250, 250, 0 ] }, + "s": { "k": [ 100, 100, 100 ] } + }, + "ao": 0, + "shapes": [ + { + "ty": "gr", + "it": [ + { + "ind": 0, + "ty": "sh", + "ks": { + "k": { + "i": [ + [ 0, 0 ], + [ 0, 0 ] + ], + "o": [ + [ 0, 0 ], + [ 0, 0 ] + ], + "v": [ + [ 1.768, -25.966 ], + [ -1.768, 25.966 ] + ], + "c": false + } + }, + "nm": "Path 1" + }, + { + "ty": "tm", + "s": { + "k": [ + { + "i": { + "x": [ 0.833 ], + "y": [ 0.833 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p833_0p833_0p167_0p167" ], + "t": 70, + "s": [ 0 ], + "e": [ 0 ] + }, + { "t": 75 } + ], + "ix": 1 + }, + "e": { + "k": [ + { + "i": { + "x": [ 0.833 ], + "y": [ 0.833 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p833_0p833_0p167_0p167" ], + "t": 70, + "s": [ 11.7 ], + "e": [ 100 ] + }, + { "t": 75 } + ], + "ix": 2 + }, + "o": { + "k": 0, + "ix": 3 + }, + "m": 1, + "ix": 2, + "nm": "Trim Paths 1" + }, + { + "ty": "st", + "fillEnabled": true, + "c": { "k": [ 0, 0.48, 0.53, 1 ] }, + "o": { "k": 100 }, + "w": { "k": 8.4 }, + "lc": 2, + "lj": 2, + "nm": "Stroke 1" + }, + { + "ty": "tr", + "p": { + "k": [ 242.756, 265.581 ], + "ix": 2 + }, + "a": { + "k": [ 0, 0 ], + "ix": 1 + }, + "s": { + "k": [ 100, 100 ], + "ix": 3 + }, + "r": { + "k": 0, + "ix": 6 + }, + "o": { + "k": 100, + "ix": 7 + }, + "sk": { + "k": 0, + "ix": 4 + }, + "sa": { + "k": 0, + "ix": 5 + }, + "nm": "Transform" + } + ], + "nm": "Group 10" + } + ], + "ip": 70, + "op": 161, + "st": 15, + "bm": 0, + "sr": 1 + }, + { + "ddd": 0, + "ind": 33, + "ty": 4, + "nm": "T2b-B", + "parent": 0, + "ks": { + "o": { "k": 100 }, + "r": { "k": 0 }, + "p": { "k": [ 39.043, 45.678, 0 ] }, + "a": { "k": [ 250, 250, 0 ] }, + "s": { "k": [ 100, 100, 100 ] } + }, + "ao": 0, + "shapes": [ + { + "ty": "gr", + "it": [ + { + "ind": 0, + "ty": "sh", + "ks": { + "k": { + "i": [ + [ 0, 0 ], + [ 0, 0 ] + ], + "o": [ + [ 0, 0 ], + [ 0, 0 ] + ], + "v": [ + [ 246.65, 213.814 ], + [ 340.956, 213.628 ] + ], + "c": false + } + }, + "nm": "Path 1" + }, + { + "ty": "tm", + "s": { + "k": [ + { + "i": { + "x": [ 0.12 ], + "y": [ 1 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p12_1_0p167_0p167" ], + "t": 82, + "s": [ 29 ], + "e": [ 0 ] + }, + { "t": 91 } + ], + "ix": 1 + }, + "e": { + "k": [ + { + "i": { + "x": [ 0.12 ], + "y": [ 1 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p12_1_0p167_0p167" ], + "t": 82, + "s": [ 41.1 ], + "e": [ 66.5 ] + }, + { "t": 91 } + ], + "ix": 2 + }, + "o": { + "k": 0, + "ix": 3 + }, + "m": 1, + "ix": 2, + "nm": "Trim Paths 1" + }, + { + "ty": "st", + "fillEnabled": true, + "c": { "k": [ 0, 0.48, 0.53, 1 ] }, + "o": { "k": 100 }, + "w": { "k": 9.194 }, + "lc": 2, + "lj": 1, + "ml": 10, + "nm": "Stroke 1" + }, + { + "ty": "tr", + "p": { + "k": [ 0, 0 ], + "ix": 2 + }, + "a": { + "k": [ 0, 0 ], + "ix": 1 + }, + "s": { + "k": [ 100, 100 ], + "ix": 3 + }, + "r": { + "k": 0, + "ix": 6 + }, + "o": { + "k": 100, + "ix": 7 + }, + "sk": { + "k": 0, + "ix": 4 + }, + "sa": { + "k": 0, + "ix": 5 + }, + "nm": "Transform" + } + ], + "nm": "Group 5" + } + ], + "ip": 82, + "op": 179, + "st": -17, + "bm": 0, + "sr": 1 + }, + { + "ddd": 0, + "ind": 34, + "ty": 4, + "nm": "T2a-Y", + "parent": 0, + "ks": { + "o": { "k": 100 }, + "r": { "k": 0 }, + "p": { "k": [ 39.043, 45.678, 0 ] }, + "a": { "k": [ 250, 250, 0 ] }, + "s": { "k": [ 100, 100, 100 ] } + }, + "ao": 0, + "shapes": [ + { + "ty": "gr", + "it": [ + { + "ind": 0, + "ty": "sh", + "ks": { + "k": { + "i": [ + [ 0, 0 ], + [ 0, 0 ] + ], + "o": [ + [ 0, 0 ], + [ 0, 0 ] + ], + "v": [ + [ 1.681, -29.992 ], + [ -1.681, 29.992 ] + ], + "c": false + } + }, + "nm": "Path 1" + }, + { + "ty": "tm", + "s": { + "k": [ + { + "i": { + "x": [ 0.06 ], + "y": [ 1 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p06_1_0p167_0p167" ], + "t": 72, + "s": [ 50 ], + "e": [ 0 ] + }, + { "t": 82 } + ], + "ix": 1 + }, + "e": { + "k": [ + { + "i": { + "x": [ 0.06 ], + "y": [ 1 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p06_1_0p167_0p167" ], + "t": 72, + "s": [ 50 ], + "e": [ 100 ] + }, + { "t": 82 } + ], + "ix": 2 + }, + "o": { + "k": 0, + "ix": 3 + }, + "m": 1, + "ix": 2, + "nm": "Trim Paths 1" + }, + { + "ty": "st", + "fillEnabled": true, + "c": { "k": [ 1, 1, 1, 1 ] }, + "o": { "k": 100 }, + "w": { "k": 9.194 }, + "lc": 3, + "lj": 1, + "ml": 10, + "nm": "Stroke 1" + }, + { + "ty": "tr", + "p": { + "k": [ 277.698, 247.258 ], + "ix": 2 + }, + "a": { + "k": [ 0, 0 ], + "ix": 1 + }, + "s": { + "k": [ 100, 100 ], + "ix": 3 + }, + "r": { + "k": 0, + "ix": 6 + }, + "o": { + "k": 100, + "ix": 7 + }, + "sk": { + "k": 0, + "ix": 4 + }, + "sa": { + "k": 0, + "ix": 5 + }, + "nm": "Transform" + } + ], + "nm": "Group 7" + } + ], + "ip": 72, + "op": 89, + "st": 12, + "bm": 0, + "sr": 1 + }, + { + "ddd": 0, + "ind": 35, + "ty": 4, + "nm": "T2b-Y", + "parent": 0, + "ks": { + "o": { "k": 100 }, + "r": { "k": 0 }, + "p": { "k": [ 39.043, 45.678, 0 ] }, + "a": { "k": [ 250, 250, 0 ] }, + "s": { "k": [ 100, 100, 100 ] } + }, + "ao": 0, + "shapes": [ + { + "ty": "gr", + "it": [ + { + "ind": 0, + "ty": "sh", + "ks": { + "k": { + "i": [ + [ 0, 0 ], + [ 0, 0 ] + ], + "o": [ + [ 0, 0 ], + [ 0, 0 ] + ], + "v": [ + [ 246.65, 213.814 ], + [ 340.956, 213.628 ] + ], + "c": false + } + }, + "nm": "Path 1" + }, + { + "ty": "tm", + "s": { + "k": [ + { + "i": { + "x": [ 0.12 ], + "y": [ 1 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p12_1_0p167_0p167" ], + "t": 76, + "s": [ 29 ], + "e": [ 0 ] + }, + { "t": 85 } + ], + "ix": 1 + }, + "e": { + "k": [ + { + "i": { + "x": [ 0.12 ], + "y": [ 1 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p12_1_0p167_0p167" ], + "t": 76, + "s": [ 41.1 ], + "e": [ 66.5 ] + }, + { "t": 85 } + ], + "ix": 2 + }, + "o": { + "k": 0, + "ix": 3 + }, + "m": 1, + "ix": 2, + "nm": "Trim Paths 1" + }, + { + "ty": "st", + "fillEnabled": true, + "c": { "k": [ 1, 1, 1, 1 ] }, + "o": { "k": 100 }, + "w": { "k": 9.194 }, + "lc": 2, + "lj": 1, + "ml": 10, + "nm": "Stroke 1" + }, + { + "ty": "tr", + "p": { + "k": [ 0, 0 ], + "ix": 2 + }, + "a": { + "k": [ 0, 0 ], + "ix": 1 + }, + "s": { + "k": [ 100, 100 ], + "ix": 3 + }, + "r": { + "k": 0, + "ix": 6 + }, + "o": { + "k": 100, + "ix": 7 + }, + "sk": { + "k": 0, + "ix": 4 + }, + "sa": { + "k": 0, + "ix": 5 + }, + "nm": "Transform" + } + ], + "nm": "Group 5" + } + ], + "ip": 76, + "op": 92, + "st": -23, + "bm": 0, + "sr": 1 + }, + { + "ddd": 0, + "ind": 36, + "ty": 4, + "nm": "T1a-Y", + "parent": 0, + "ks": { + "o": { "k": 100 }, + "r": { "k": 0 }, + "p": { + "k": [ + { + "i": { + "x": 0.667, + "y": 1 + }, + "o": { + "x": 0.167, + "y": 0.167 + }, + "n": "0p667_1_0p167_0p167", + "t": 56, + "s": [ 39.043, 48.678, 0 ], + "e": [ 39.043, 45.678, 0 ], + "to": [ 0, 0, 0 ], + "ti": [ 0, 0, 0 ] + }, + { "t": 64 } + ] + }, + "a": { "k": [ 250, 250, 0 ] }, + "s": { "k": [ 100, 100, 100 ] } + }, + "ao": 0, + "shapes": [ + { + "ty": "gr", + "it": [ + { + "ind": 0, + "ty": "sh", + "ks": { + "k": { + "i": [ + [ -0.5, 9.501 ], + [ -0.048, 5.655 ], + [ 0.054, 0.06 ], + [ 0.946, 1.486 ], + [ -9.967, 8.05 ], + [ -40.546, 0 ] + ], + "o": [ + [ 0.031, -0.594 ], + [ 0.076, -8.978 ], + [ -1.161, -1.3 ], + [ -5.939, -9.327 ], + [ 24.677, -19.929 ], + [ 0, 0 ] + ], + "v": [ + [ -30.72, 63.761 ], + [ -30.741, 45.192 ], + [ -37.397, 27.014 ], + [ -40.698, 22.661 ], + [ -37.873, -7.117 ], + [ 49.506, 11.559 ] + ], + "c": false + } + }, + "nm": "Path 1" + }, + { + "ty": "tm", + "s": { + "k": [ + { + "i": { + "x": [ 0.833 ], + "y": [ 1 ] + }, + "o": { + "x": [ 0.301 ], + "y": [ 0 ] + }, + "n": [ "0p833_1_0p301_0" ], + "t": 54, + "s": [ 0 ], + "e": [ 24.9 ] + }, + { "t": 70 } + ], + "ix": 1 + }, + "e": { + "k": [ + { + "i": { + "x": [ 0.667 ], + "y": [ 1 ] + }, + "o": { + "x": [ 0.301 ], + "y": [ 0 ] + }, + "n": [ "0p667_1_0p301_0" ], + "t": 54, + "s": [ 0 ], + "e": [ 100 ] + }, + { "t": 74 } + ], + "ix": 2 + }, + "o": { + "k": 0, + "ix": 3 + }, + "m": 1, + "ix": 2, + "nm": "Trim Paths 1" + }, + { + "ty": "st", + "fillEnabled": true, + "c": { "k": [ 1, 1, 1, 1 ] }, + "o": { "k": 100 }, + "w": { "k": 8.4 }, + "lc": 2, + "lj": 1, + "ml": 10, + "nm": "Stroke 1" + }, + { + "ty": "tr", + "p": { + "k": [ 227.677, 234.375 ], + "ix": 2 + }, + "a": { + "k": [ 0, 0 ], + "ix": 1 + }, + "s": { + "k": [ 100, 100 ], + "ix": 3 + }, + "r": { + "k": 0, + "ix": 6 + }, + "o": { + "k": 100, + "ix": 7 + }, + "sk": { + "k": 0, + "ix": 4 + }, + "sa": { + "k": 0, + "ix": 5 + }, + "nm": "Transform" + } + ], + "nm": "Group 9" + } + ], + "ip": 59, + "op": 156, + "st": 12, + "bm": 0, + "sr": 1 + }, + { + "ddd": 0, + "ind": 37, + "ty": 4, + "nm": "E1-B", + "parent": 38, + "ks": { + "o": { "k": 100 }, + "r": { "k": 0 }, + "p": { "k": [ 344.672, 214.842, 0 ] }, + "a": { "k": [ 344.672, 214.842, 0 ] }, + "s": { "k": [ 100, 100, 100 ] } + }, + "ao": 0, + "shapes": [ + { + "ty": "gr", + "it": [ + { + "ind": 0, + "ty": "sh", + "ks": { + "k": { + "i": [ + [ 0, 0 ], + [ 0, 0 ] + ], + "o": [ + [ 0, 0 ], + [ 0, 0 ] + ], + "v": [ + [ -13.664, -0.145 ], + [ 62.163, 0.29 ] + ], + "c": false + } + }, + "nm": "Path 1" + }, + { + "ty": "st", + "fillEnabled": true, + "c": { "k": [ 1, 1, 1, 1 ] }, + "o": { "k": 100 }, + "w": { "k": 9.562 }, + "lc": 2, + "lj": 1, + "ml": 10, + "nm": "Stroke 1" + }, + { + "ty": "tr", + "p": { + "k": [ 344.672, 214.842 ], + "ix": 2 + }, + "a": { + "k": [ 0, 0 ], + "ix": 1 + }, + "s": { + "k": [ 100, 100 ], + "ix": 3 + }, + "r": { + "k": 0, + "ix": 6 + }, + "o": { + "k": 100, + "ix": 7 + }, + "sk": { + "k": 0, + "ix": 4 + }, + "sa": { + "k": 0, + "ix": 5 + }, + "nm": "Transform" + } + ], + "nm": "Group 2" + }, + { + "ty": "tm", + "s": { + "k": [ + { + "i": { + "x": [ 0.12 ], + "y": [ 0.12 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p12_0p12_0p167_0p167" ], + "t": 84, + "s": [ 0 ], + "e": [ 0 ] + }, + { "t": 93 } + ], + "ix": 1 + }, + "e": { + "k": [ + { + "i": { + "x": [ 0.12 ], + "y": [ 1 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p12_1_0p167_0p167" ], + "t": 84, + "s": [ 0 ], + "e": [ 37.5 ] + }, + { "t": 93 } + ], + "ix": 2 + }, + "o": { + "k": 0, + "ix": 3 + }, + "m": 1, + "ix": 2, + "nm": "Trim Paths 1" + } + ], + "ip": 84, + "op": 179, + "st": 84, + "bm": 0, + "sr": 1 + }, + { + "ddd": 0, + "ind": 38, + "ty": 4, + "nm": "E1-Y", + "parent": 0, + "ks": { + "o": { "k": 100 }, + "r": { "k": 0 }, + "p": { + "k": [ + { + "i": { + "x": 0.12, + "y": 1 + }, + "o": { + "x": 0.167, + "y": 0.167 + }, + "n": "0p12_1_0p167_0p167", + "t": 79, + "s": [ 113.715, 9.146, 0 ], + "e": [ 137.715, 9.146, 0 ], + "to": [ 0, 0, 0 ], + "ti": [ 0, 0, 0 ] + }, + { + "i": { + "x": 0.12, + "y": 1 + }, + "o": { + "x": 0.167, + "y": 0 + }, + "n": "0p12_1_0p167_0", + "t": 88, + "s": [ 137.715, 9.146, 0 ], + "e": [ 133.715, 9.146, 0 ], + "to": [ 0, 0, 0 ], + "ti": [ 0, 0, 0 ] + }, + { "t": 92 } + ] + }, + "a": { "k": [ 344.672, 214.842, 0 ] }, + "s": { "k": [ 100, 100, 100 ] } + }, + "ao": 0, + "shapes": [ + { + "ty": "gr", + "it": [ + { + "ind": 0, + "ty": "sh", + "ks": { + "k": { + "i": [ + [ 0, 0 ], + [ 0, 0 ] + ], + "o": [ + [ 0, 0 ], + [ 0, 0 ] + ], + "v": [ + [ -13.664, -0.145 ], + [ 62.163, 0.29 ] + ], + "c": false + } + }, + "nm": "Path 1" + }, + { + "ty": "st", + "fillEnabled": true, + "c": { "k": [ 0, 0.48, 0.53, 1 ] }, + "o": { "k": 100 }, + "w": { "k": 8.4 }, + "lc": 2, + "lj": 1, + "ml": 10, + "nm": "Stroke 1" + }, + { + "ty": "tr", + "p": { + "k": [ 344.672, 214.842 ], + "ix": 2 + }, + "a": { + "k": [ 0, 0 ], + "ix": 1 + }, + "s": { + "k": [ 100, 100 ], + "ix": 3 + }, + "r": { + "k": 0, + "ix": 6 + }, + "o": { + "k": 100, + "ix": 7 + }, + "sk": { + "k": 0, + "ix": 4 + }, + "sa": { + "k": 0, + "ix": 5 + }, + "nm": "Transform" + } + ], + "nm": "Group 2" + }, + { + "ty": "tm", + "s": { + "k": [ + { + "i": { + "x": [ 0.12 ], + "y": [ 0.12 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p12_0p12_0p167_0p167" ], + "t": 79, + "s": [ 0 ], + "e": [ 0 ] + }, + { "t": 88 } + ], + "ix": 1 + }, + "e": { + "k": [ + { + "i": { + "x": [ 0.12 ], + "y": [ 1 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p12_1_0p167_0p167" ], + "t": 79, + "s": [ 0 ], + "e": [ 37.5 ] + }, + { "t": 88 } + ], + "ix": 2 + }, + "o": { + "k": 0, + "ix": 3 + }, + "m": 1, + "ix": 2, + "nm": "Trim Paths 1" + } + ], + "ip": 79, + "op": 94, + "st": 79, + "bm": 0, + "sr": 1 + }, + { + "ddd": 0, + "ind": 39, + "ty": 4, + "nm": "E2-B", + "parent": 40, + "ks": { + "o": { "k": 100 }, + "r": { "k": 0 }, + "p": { "k": [ 332.05, 237.932, 0 ] }, + "a": { "k": [ 332.05, 237.932, 0 ] }, + "s": { "k": [ 100, 100, 100 ] } + }, + "ao": 0, + "shapes": [ + { + "ty": "gr", + "it": [ + { + "ind": 0, + "ty": "sh", + "ks": { + "k": { + "i": [ + [ 0, 0 ], + [ 0, 0 ] + ], + "o": [ + [ 0, 0 ], + [ 0, 0 ] + ], + "v": [ + [ -26.67, -0.283 ], + [ 99.171, 0.066 ] + ], + "c": false + } + }, + "nm": "Path 1" + }, + { + "ty": "tm", + "s": { + "k": [ + { + "i": { + "x": [ 0.12 ], + "y": [ 0.12 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p12_0p12_0p167_0p167" ], + "t": 86, + "s": [ 0 ], + "e": [ 0 ] + }, + { "t": 95 } + ], + "ix": 1 + }, + "e": { + "k": [ + { + "i": { + "x": [ 0.12 ], + "y": [ 1 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p12_1_0p167_0p167" ], + "t": 86, + "s": [ 0 ], + "e": [ 43 ] + }, + { "t": 95 } + ], + "ix": 2 + }, + "o": { + "k": 0, + "ix": 3 + }, + "m": 1, + "ix": 2, + "nm": "Trim Paths 1" + }, + { + "ty": "st", + "fillEnabled": true, + "c": { "k": [ 1, 1, 1, 1 ] }, + "o": { "k": 100 }, + "w": { "k": 9.562 }, + "lc": 2, + "lj": 1, + "ml": 10, + "nm": "Stroke 1" + }, + { + "ty": "tr", + "p": { + "k": [ 331.664, 238.14 ], + "ix": 2 + }, + "a": { + "k": [ 0, 0 ], + "ix": 1 + }, + "s": { + "k": [ 100, 100 ], + "ix": 3 + }, + "r": { + "k": 0, + "ix": 6 + }, + "o": { + "k": 100, + "ix": 7 + }, + "sk": { + "k": 0, + "ix": 4 + }, + "sa": { + "k": 0, + "ix": 5 + }, + "nm": "Transform" + } + ], + "nm": "Group 3" + } + ], + "ip": 86, + "op": 179, + "st": 86, + "bm": 0, + "sr": 1 + }, + { + "ddd": 0, + "ind": 40, + "ty": 4, + "nm": "E2-Y", + "parent": 0, + "ks": { + "o": { "k": 100 }, + "r": { "k": 0 }, + "p": { + "k": [ + { + "i": { + "x": 0.12, + "y": 1 + }, + "o": { + "x": 0.167, + "y": 0.167 + }, + "n": "0p12_1_0p167_0p167", + "t": 83, + "s": [ 109.092, 33.61, 0 ], + "e": [ 121.092, 33.61, 0 ], + "to": [ 0, 0, 0 ], + "ti": [ 0, 0, 0 ] + }, + { + "i": { + "x": 0.12, + "y": 0.12 + }, + "o": { + "x": 0.167, + "y": 0.167 + }, + "n": "0p12_0p12_0p167_0p167", + "t": 92, + "s": [ 121.092, 33.61, 0 ], + "e": [ 121.092, 33.61, 0 ], + "to": [ 0, 0, 0 ], + "ti": [ 0, 0, 0 ] + }, + { "t": 96 } + ] + }, + "a": { "k": [ 332.05, 237.932, 0 ] }, + "s": { "k": [ 100, 100, 100 ] } + }, + "ao": 0, + "shapes": [ + { + "ty": "gr", + "it": [ + { + "ind": 0, + "ty": "sh", + "ks": { + "k": { + "i": [ + [ 0, 0 ], + [ 0, 0 ] + ], + "o": [ + [ 0, 0 ], + [ 0, 0 ] + ], + "v": [ + [ -26.67, -0.283 ], + [ 99.171, 0.066 ] + ], + "c": false + } + }, + "nm": "Path 1" + }, + { + "ty": "tm", + "s": { + "k": [ + { + "i": { + "x": [ 0.12 ], + "y": [ 0.12 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p12_0p12_0p167_0p167" ], + "t": 83, + "s": [ 0 ], + "e": [ 0 ] + }, + { "t": 92 } + ], + "ix": 1 + }, + "e": { + "k": [ + { + "i": { + "x": [ 0.12 ], + "y": [ 1 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p12_1_0p167_0p167" ], + "t": 83, + "s": [ 0 ], + "e": [ 43 ] + }, + { "t": 92 } + ], + "ix": 2 + }, + "o": { + "k": 0, + "ix": 3 + }, + "m": 1, + "ix": 2, + "nm": "Trim Paths 1" + }, + { + "ty": "st", + "fillEnabled": true, + "c": { "k": [ 0, 0.48, 0.53, 1 ] }, + "o": { "k": 100 }, + "w": { "k": 8.4 }, + "lc": 2, + "lj": 1, + "ml": 10, + "nm": "Stroke 1" + }, + { + "ty": "tr", + "p": { + "k": [ 331.664, 238.14 ], + "ix": 2 + }, + "a": { + "k": [ 0, 0 ], + "ix": 1 + }, + "s": { + "k": [ 100, 100 ], + "ix": 3 + }, + "r": { + "k": 0, + "ix": 6 + }, + "o": { + "k": 100, + "ix": 7 + }, + "sk": { + "k": 0, + "ix": 4 + }, + "sa": { + "k": 0, + "ix": 5 + }, + "nm": "Transform" + } + ], + "nm": "Group 3" + } + ], + "ip": 83, + "op": 96, + "st": 83, + "bm": 0, + "sr": 1 + }, + { + "ddd": 0, + "ind": 41, + "ty": 4, + "nm": "I-B", + "parent": 42, + "ks": { + "o": { "k": 100 }, + "r": { "k": 0 }, + "p": { "k": [ 303.802, 282.182, 0 ] }, + "a": { "k": [ 303.802, 282.182, 0 ] }, + "s": { "k": [ 100, 100, 100 ] } + }, + "ao": 0, + "shapes": [ + { + "ty": "gr", + "it": [ + { + "ind": 0, + "ty": "sh", + "ks": { + "k": { + "i": [ + [ 0, 0 ], + [ 0, 0 ] + ], + "o": [ + [ 0, 0 ], + [ 0, 0 ] + ], + "v": [ + [ 0.859, -21.143 ], + [ -4.359, 70.392 ] + ], + "c": false + } + }, + "nm": "Path 1" + }, + { + "ty": "tm", + "s": { + "k": [ + { + "i": { + "x": [ 0.12 ], + "y": [ 0.12 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p12_0p12_0p167_0p167" ], + "t": 81, + "s": [ 0 ], + "e": [ 0 ] + }, + { "t": 91 } + ], + "ix": 1 + }, + "e": { + "k": [ + { + "i": { + "x": [ 0.12 ], + "y": [ 1 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p12_1_0p167_0p167" ], + "t": 81, + "s": [ 0 ], + "e": [ 45.7 ] + }, + { "t": 91 } + ], + "ix": 2 + }, + "o": { + "k": 0, + "ix": 3 + }, + "m": 1, + "ix": 2, + "nm": "Trim Paths 1" + }, + { + "ty": "st", + "fillEnabled": true, + "c": { "k": [ 1, 1, 1, 1 ] }, + "o": { "k": 100 }, + "w": { "k": 9.194 }, + "lc": 3, + "lj": 1, + "ml": 10, + "nm": "Stroke 1" + }, + { + "ty": "tr", + "p": { + "k": [ 304.135, 282.409 ], + "ix": 2 + }, + "a": { + "k": [ 0, 0 ], + "ix": 1 + }, + "s": { + "k": [ 100, 100 ], + "ix": 3 + }, + "r": { + "k": 0, + "ix": 6 + }, + "o": { + "k": 100, + "ix": 7 + }, + "sk": { + "k": 0, + "ix": 4 + }, + "sa": { + "k": 0, + "ix": 5 + }, + "nm": "Transform" + } + ], + "nm": "Group 6" + } + ], + "ip": 81, + "op": 179, + "st": 18, + "bm": 0, + "sr": 1 + }, + { + "ddd": 0, + "ind": 42, + "ty": 4, + "nm": "I-Y", + "parent": 0, + "ks": { + "o": { "k": 100 }, + "r": { "k": 0 }, + "p": { + "k": [ + { + "i": { + "x": 0.12, + "y": 1 + }, + "o": { + "x": 0.167, + "y": 0.167 + }, + "n": "0p12_1_0p167_0p167", + "t": 78, + "s": [ 93.594, 62.861, 0 ], + "e": [ 92.626, 82.829, 0 ], + "to": [ 0, 0, 0 ], + "ti": [ 0, 0, 0 ] + }, + { + "i": { + "x": 0.12, + "y": 1 + }, + "o": { + "x": 0.167, + "y": 0 + }, + "n": "0p12_1_0p167_0", + "t": 88, + "s": [ 92.626, 82.829, 0 ], + "e": [ 92.844, 77.861, 0 ], + "to": [ 0, 0, 0 ], + "ti": [ 0, 0, 0 ] + }, + { "t": 92 } + ] + }, + "a": { "k": [ 303.802, 282.182, 0 ] }, + "s": { "k": [ 100, 100, 100 ] } + }, + "ao": 0, + "shapes": [ + { + "ty": "gr", + "it": [ + { + "ind": 0, + "ty": "sh", + "ks": { + "k": { + "i": [ + [ 0, 0 ], + [ 0, 0 ] + ], + "o": [ + [ 0, 0 ], + [ 0, 0 ] + ], + "v": [ + [ 0.859, -21.143 ], + [ -4.359, 70.392 ] + ], + "c": false + } + }, + "nm": "Path 1" + }, + { + "ty": "tm", + "s": { + "k": [ + { + "i": { + "x": [ 0.12 ], + "y": [ 0.12 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p12_0p12_0p167_0p167" ], + "t": 78, + "s": [ 0 ], + "e": [ 0 ] + }, + { "t": 88 } + ], + "ix": 1 + }, + "e": { + "k": [ + { + "i": { + "x": [ 0.12 ], + "y": [ 1 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p12_1_0p167_0p167" ], + "t": 78, + "s": [ 0 ], + "e": [ 45.7 ] + }, + { "t": 88 } + ], + "ix": 2 + }, + "o": { + "k": 0, + "ix": 3 + }, + "m": 1, + "ix": 2, + "nm": "Trim Paths 1" + }, + { + "ty": "st", + "fillEnabled": true, + "c": { "k": [ 0, 0.48, 0.53, 1 ] }, + "o": { "k": 100 }, + "w": { "k": 8.4 }, + "lc": 3, + "lj": 1, + "ml": 10, + "nm": "Stroke 1" + }, + { + "ty": "tr", + "p": { + "k": [ 304.135, 282.409 ], + "ix": 2 + }, + "a": { + "k": [ 0, 0 ], + "ix": 1 + }, + "s": { + "k": [ 100, 100 ], + "ix": 3 + }, + "r": { + "k": 0, + "ix": 6 + }, + "o": { + "k": 100, + "ix": 7 + }, + "sk": { + "k": 0, + "ix": 4 + }, + "sa": { + "k": 0, + "ix": 5 + }, + "nm": "Transform" + } + ], + "nm": "Group 6" + } + ], + "ip": 78, + "op": 93, + "st": 15, + "bm": 0, + "sr": 1 + }, + { + "ddd": 0, + "ind": 43, + "ty": 4, + "nm": "E3-B", + "parent": 44, + "ks": { + "o": { "k": 100 }, + "r": { "k": 0 }, + "p": { "k": [ 345.189, 261.801, 0 ] }, + "a": { "k": [ 345.124, 261.801, 0 ] }, + "s": { "k": [ 100, 100, 100 ] } + }, + "ao": 0, + "shapes": [ + { + "ty": "gr", + "it": [ + { + "ind": 0, + "ty": "sh", + "ks": { + "k": { + "i": [ + [ 0, 0 ], + [ 0, 0 ] + ], + "o": [ + [ 0, 0 ], + [ 0, 0 ] + ], + "v": [ + [ -13.664, -0.145 ], + [ 75.663, 0.29 ] + ], + "c": false + } + }, + "nm": "Path 1" + }, + { + "ty": "tm", + "s": { + "k": [ + { + "i": { + "x": [ 0.833 ], + "y": [ 0.833 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p833_0p833_0p167_0p167" ], + "t": 92, + "s": [ 0 ], + "e": [ 0 ] + }, + { "t": 97 } + ], + "ix": 1 + }, + "e": { + "k": [ + { + "i": { + "x": [ 0.833 ], + "y": [ 0.833 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p833_0p833_0p167_0p167" ], + "t": 92, + "s": [ 0 ], + "e": [ 31.6 ] + }, + { "t": 97 } + ], + "ix": 2 + }, + "o": { + "k": 0, + "ix": 3 + }, + "m": 1, + "ix": 2, + "nm": "Trim Paths 2" + }, + { + "ty": "st", + "fillEnabled": true, + "c": { "k": [ 1, 1, 1, 1 ] }, + "o": { "k": 100 }, + "w": { "k": 9.562 }, + "lc": 2, + "lj": 1, + "ml": 10, + "nm": "Stroke 1" + }, + { + "ty": "tr", + "p": { + "k": [ 344.674, 261.877 ], + "ix": 2 + }, + "a": { + "k": [ 0, 0 ], + "ix": 1 + }, + "s": { + "k": [ 100, 100 ], + "ix": 3 + }, + "r": { + "k": 0, + "ix": 6 + }, + "o": { + "k": 100, + "ix": 7 + }, + "sk": { + "k": 0, + "ix": 4 + }, + "sa": { + "k": 0, + "ix": 5 + }, + "nm": "Transform" + } + ], + "nm": "Group 1" + } + ], + "ip": 92, + "op": 179, + "st": 29, + "bm": 0, + "sr": 1 + }, + { + "ddd": 0, + "ind": 44, + "ty": 4, + "nm": "E3-Y", + "parent": 0, + "ks": { + "o": { "k": 100 }, + "r": { "k": 0 }, + "p": { + "k": [ + { + "i": { + "x": 0.667, + "y": 1 + }, + "o": { + "x": 0.167, + "y": 0.167 + }, + "n": "0p667_1_0p167_0p167", + "t": 84, + "s": [ 119.167, 57.479, 0 ], + "e": [ 137.167, 57.479, 0 ], + "to": [ 0, 0, 0 ], + "ti": [ 0, 0, 0 ] + }, + { + "i": { + "x": 0.667, + "y": 1 + }, + "o": { + "x": 0.167, + "y": 0 + }, + "n": "0p667_1_0p167_0", + "t": 92, + "s": [ 137.167, 57.479, 0 ], + "e": [ 134.167, 57.479, 0 ], + "to": [ 0, 0, 0 ], + "ti": [ 0, 0, 0 ] + }, + { "t": 96 } + ] + }, + "a": { "k": [ 345.124, 261.801, 0 ] }, + "s": { "k": [ 100, 100, 100 ] } + }, + "ao": 0, + "shapes": [ + { + "ty": "gr", + "it": [ + { + "ind": 0, + "ty": "sh", + "ks": { + "k": { + "i": [ + [ 0, 0 ], + [ 0, 0 ] + ], + "o": [ + [ 0, 0 ], + [ 0, 0 ] + ], + "v": [ + [ -13.664, -0.145 ], + [ 75.663, 0.29 ] + ], + "c": false + } + }, + "nm": "Path 1" + }, + { + "ty": "tm", + "s": { + "k": [ + { + "i": { + "x": [ 0.833 ], + "y": [ 0.833 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p833_0p833_0p167_0p167" ], + "t": 84, + "s": [ 0 ], + "e": [ 0 ] + }, + { "t": 92 } + ], + "ix": 1 + }, + "e": { + "k": [ + { + "i": { + "x": [ 0.833 ], + "y": [ 0.833 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p833_0p833_0p167_0p167" ], + "t": 84, + "s": [ 0 ], + "e": [ 31.6 ] + }, + { "t": 92 } + ], + "ix": 2 + }, + "o": { + "k": 0, + "ix": 3 + }, + "m": 1, + "ix": 2, + "nm": "Trim Paths 2" + }, + { + "ty": "st", + "fillEnabled": true, + "c": { "k": [ 0, 0.48, 0.53, 1 ] }, + "o": { "k": 100 }, + "w": { "k": 9.562 }, + "lc": 2, + "lj": 1, + "ml": 10, + "nm": "Stroke 1" + }, + { + "ty": "tr", + "p": { + "k": [ 344.674, 261.877 ], + "ix": 2 + }, + "a": { + "k": [ 0, 0 ], + "ix": 1 + }, + "s": { + "k": [ 100, 100 ], + "ix": 3 + }, + "r": { + "k": 0, + "ix": 6 + }, + "o": { + "k": 100, + "ix": 7 + }, + "sk": { + "k": 0, + "ix": 4 + }, + "sa": { + "k": 0, + "ix": 5 + }, + "nm": "Transform" + } + ], + "nm": "Group 1" + } + ], + "ip": 84, + "op": 102, + "st": 21, + "bm": 0, + "sr": 1 + }, + { + "ddd": 0, + "ind": 45, + "ty": 4, + "nm": "Dot-Y", + "parent": 46, + "ks": { + "o": { "k": 100 }, + "r": { "k": 0 }, + "p": { + "k": [ + { + "i": { + "x": 0, + "y": 0.812 + }, + "o": { + "x": 0, + "y": 0 + }, + "n": "0_0p812_0_0", + "t": 96, + "s": [ 43.263, 59.75, 0 ], + "e": [ 62.513, 59.75, 0 ], + "to": [ 0, 0, 0 ], + "ti": [ 0, 0, 0 ] + }, + { + "i": { + "x": 0.708, + "y": 1 + }, + "o": { + "x": 0.39, + "y": 0.707 + }, + "n": "0p708_1_0p39_0p707", + "t": 108, + "s": [ 62.513, 59.75, 0 ], + "e": [ 63.763, 59.75, 0 ], + "to": [ 0, 0, 0 ], + "ti": [ 0, 0, 0 ] + }, + { "t": 115 } + ] + }, + "a": { "k": [ 196.791, 266.504, 0 ] }, + "s": { "k": [ 100, 100, 100 ] } + }, + "ao": 0, + "shapes": [ + { + "ty": "gr", + "it": [ + { + "d": 1, + "ty": "el", + "s": { "k": [ 9.2, 9.2 ] }, + "p": { "k": [ 0.8, -0.5 ] }, + "nm": "Ellipse Path 1" + }, + { + "ty": "fl", + "fillEnabled": true, + "c": { "k": [ 1, 1, 1, 1 ] }, + "o": { "k": 100 }, + "nm": "Fill 1" + }, + { + "ty": "tr", + "p": { + "k": [ 196, 267 ], + "ix": 2 + }, + "a": { + "k": [ 0, 0 ], + "ix": 1 + }, + "s": { + "k": [ 100, 100 ], + "ix": 3 + }, + "r": { + "k": 0, + "ix": 6 + }, + "o": { + "k": 100, + "ix": 7 + }, + "sk": { + "k": 0, + "ix": 4 + }, + "sa": { + "k": 0, + "ix": 5 + }, + "nm": "Transform" + } + ], + "nm": "Ellipse 1" + } + ], + "ip": 96, + "op": 182, + "st": 65, + "bm": 0, + "sr": 1 + }, + { + "ddd": 0, + "ind": 46, + "ty": 1, + "nm": "Bncr", + "parent": 0, + "ks": { + "o": { "k": 0 }, + "r": { "k": 0 }, + "p": { + "k": [ + { + "i": { + "x": 0.18, + "y": 1 + }, + "o": { + "x": 0.167, + "y": 0.167 + }, + "n": "0p18_1_0p167_0p167", + "t": 96, + "s": [ 164.782, 57.473, 0 ], + "e": [ 164.782, 55.473, 0 ], + "to": [ 0, 0, 0 ], + "ti": [ 0, 0, 0 ] + }, + { + "i": { + "x": 0.833, + "y": 0.833 + }, + "o": { + "x": 0.82, + "y": 0 + }, + "n": "0p833_0p833_0p82_0", + "t": 99, + "s": [ 164.782, 55.473, 0 ], + "e": [ 164.782, 57.473, 0 ], + "to": [ 0, 0, 0 ], + "ti": [ 0, 0, 0 ] + }, + { + "i": { + "x": 0.18, + "y": 1 + }, + "o": { + "x": 0.167, + "y": 0.167 + }, + "n": "0p18_1_0p167_0p167", + "t": 102, + "s": [ 164.782, 57.473, 0 ], + "e": [ 164.782, 56.909, 0 ], + "to": [ 0, 0, 0 ], + "ti": [ 0, 0, 0 ] + }, + { + "i": { + "x": 0.833, + "y": 0.833 + }, + "o": { + "x": 0.82, + "y": 0 + }, + "n": "0p833_0p833_0p82_0", + "t": 105, + "s": [ 164.782, 56.909, 0 ], + "e": [ 164.782, 57.473, 0 ], + "to": [ 0, 0, 0 ], + "ti": [ 0, 0, 0 ] + }, + { "t": 108 } + ] + }, + "a": { "k": [ 60, 60, 0 ] }, + "s": { "k": [ 100, 100, 100 ] } + }, + "ao": 0, + "sw": 120, + "sh": 120, + "sc": "#ffffff", + "ip": 96, + "op": 182, + "st": 15, + "bm": 0, + "sr": 1 + }, + { + "ddd": 0, + "ind": 47, + "ty": 4, + "nm": "BG", + "ks": { + "o": { "k": 100 }, + "r": { "k": 0 }, + "p": { "k": [ 187.5, 333.5, 0 ] }, + "a": { "k": [ 0, 0, 0 ] }, + "s": { "k": [ 100, 100, 100 ] } + }, + "ao": 0, + "shapes": [ + { + "ty": "gr", + "it": [ + { + "ty": "rc", + "d": 1, + "s": { "k": [ 375, 667 ] }, + "p": { "k": [ 0, 0 ] }, + "r": { "k": 0 }, + "nm": "Rectangle Path 1" + }, + { + "ty": "fl", + "fillEnabled": true, + "c": { "k": [ 0, 0.82, 0.76, 1 ] }, + "o": { "k": 100 }, + "nm": "Fill 1" + }, + { + "ty": "tr", + "p": { + "k": [ 0, 0 ], + "ix": 2 + }, + "a": { + "k": [ 0, 0 ], + "ix": 1 + }, + "s": { + "k": [ 100, 100 ], + "ix": 3 + }, + "r": { + "k": 0, + "ix": 6 + }, + "o": { + "k": 100, + "ix": 7 + }, + "sk": { + "k": 0, + "ix": 4 + }, + "sa": { + "k": 0, + "ix": 5 + }, + "nm": "Transform" + } + ], + "nm": "Rectangle 1" + } + ], + "ip": 0, + "op": 179, + "st": 0, + "bm": 0, + "sr": 1 + } + ], + "v": "4.4.26", + "ddd": 0, + "ip": 0, + "op": 179, + "fr": 30, + "w": 375, + "h": 667 +} \ No newline at end of file diff --git a/samples/Gallery/Shared/SampleBase.cs b/samples/Gallery/Shared/SampleBase.cs index 5f5a80eb756..0a64912114d 100644 --- a/samples/Gallery/Shared/SampleBase.cs +++ b/samples/Gallery/Shared/SampleBase.cs @@ -157,7 +157,9 @@ protected override async Task OnInit() { await base.OnInit(); +#if !__WASM__ var scheduler = TaskScheduler.FromCurrentSynchronizationContext(); +#endif cts = new CancellationTokenSource(); var loop = Task.Run(async () => { @@ -165,7 +167,12 @@ protected override async Task OnInit() { await OnUpdate(cts.Token); - new Task(Refresh).Start(scheduler); + new Task(Refresh) +#if !__WASM__ + .Start(scheduler); +#else + .Start(); +#endif } }, cts.Token); } diff --git a/samples/Gallery/Shared/SampleMedia.cs b/samples/Gallery/Shared/SampleMedia.cs index 8ec974be95c..832c2854a03 100644 --- a/samples/Gallery/Shared/SampleMedia.cs +++ b/samples/Gallery/Shared/SampleMedia.cs @@ -26,6 +26,7 @@ public static class Images public static Stream LogosSvg => Embedded.Load("logos.svg"); public static Stream AnimatedHeartGif => Embedded.Load("animated-heart.gif"); public static Stream OpacitySvg => Embedded.Load("opacity.svg"); + public static Stream LottieLogo => Embedded.Load("LottieLogo1.json"); } public static class Fonts diff --git a/samples/Gallery/Shared/Samples/SkottieSample.cs b/samples/Gallery/Shared/Samples/SkottieSample.cs new file mode 100644 index 00000000000..844204f9bfd --- /dev/null +++ b/samples/Gallery/Shared/Samples/SkottieSample.cs @@ -0,0 +1,78 @@ +using System; +using System.Diagnostics; +using System.IO; +using System.Linq; +using System.Threading; +using System.Threading.Tasks; +using SkiaSharp; +using SkiaSharp.Skottie; + +namespace SkiaSharpSample.Samples +{ + [Preserve(AllMembers = true)] + public class SkottieSample : AnimatedSampleBase + { + private readonly Animation _animation; + private Stopwatch _watch = new Stopwatch(); + + [Preserve] + public SkottieSample() + { + using var reader = new StreamReader(SampleMedia.Images.LottieLogo); + + _animation = SkiaSharp.Skottie.Animation.Make(reader.ReadToEnd()); + _animation.Seek(0, null); + + Console.WriteLine($"SkottieSample(): Version:{_animation.Version} Duration:{_animation.Duration} Fps:{_animation.Fps} InPoint:{_animation.InPoint} OutPoint:{_animation.OutPoint}"); + } + + public override string Title => "Skottie"; + + public override SampleCategories Category => SampleCategories.General; + + protected override async Task OnInit() + { + try + { + await base.OnInit(); + + _watch.Start(); + } + catch (Exception e) + { + Console.WriteLine(e); + } + } + + protected override async Task OnUpdate(CancellationToken token) + { + try + { + await Task.Delay(25, token); + + _animation.SeekFrameTime((float)_watch.Elapsed.TotalSeconds, null); + + if(_watch.Elapsed.TotalSeconds > _animation.Duration) + { + _watch.Restart(); + } + } + catch(Exception e) + { + Console.WriteLine(e); + } + } + + protected override void OnDrawSample(SKCanvas canvas, int width, int height) + { + try + { + _animation.Render(canvas, new SKRect(0, 0, width, height)); + } + catch (Exception e) + { + Console.WriteLine(e); + } + } + } +} diff --git a/tests/Content/images/LottieLogo1.json b/tests/Content/images/LottieLogo1.json new file mode 100644 index 00000000000..cb637e3ea77 --- /dev/null +++ b/tests/Content/images/LottieLogo1.json @@ -0,0 +1,7390 @@ +{ + "assets": [], + "layers": [ + { + "ddd": 0, + "ind": 0, + "ty": 1, + "nm": "MASTER", + "ks": { + "o": { "k": 0 }, + "r": { "k": 0 }, + "p": { "k": [ 214.457, 347.822, 0 ] }, + "a": { "k": [ 60, 60, 0 ] }, + "s": { "k": [ 100, 100, 100 ] } + }, + "ao": 0, + "sw": 120, + "sh": 120, + "sc": "#ffffff", + "ip": 12, + "op": 179, + "st": 0, + "bm": 0, + "sr": 1 + }, + { + "ddd": 0, + "ind": 1, + "ty": 4, + "nm": "S5-Y 4", + "parent": 0, + "ks": { + "o": { "k": 100 }, + "r": { "k": -89.1 }, + "p": { "k": [ 53.205, 131.606, 0 ] }, + "a": { "k": [ 0, 0, 0 ] }, + "s": { "k": [ 100, 100, 100 ] } + }, + "ao": 0, + "shapes": [ + { + "ty": "gr", + "it": [ + { + "ind": 0, + "ty": "sh", + "ks": { + "k": { + "i": [ + [ 0, 0 ], + [ 0, 0 ] + ], + "o": [ + [ 0, 0 ], + [ 0, 0 ] + ], + "v": [ + [ 142.038, 29.278 ], + [ 131.282, 21.807 ] + ], + "c": false + } + }, + "nm": "Path 1" + }, + { + "ty": "tm", + "s": { + "k": [ + { + "i": { + "x": [ 0.833 ], + "y": [ 0.833 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p833_0p833_0p167_0p167" ], + "t": 76, + "s": [ 87 ], + "e": [ 50.633 ] + }, + { + "i": { + "x": [ 0.833 ], + "y": [ 0.833 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p833_0p833_0p167_0p167" ], + "t": 79, + "s": [ 50.633 ], + "e": [ 0 ] + }, + { "t": 83 } + ], + "ix": 1 + }, + "e": { + "k": [ + { + "i": { + "x": [ 0.833 ], + "y": [ 0.833 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p833_0p833_0p167_0p167" ], + "t": 76, + "s": [ 100 ], + "e": [ 75.856 ] + }, + { + "i": { + "x": [ 0.833 ], + "y": [ 0.833 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p833_0p833_0p167_0p167" ], + "t": 79, + "s": [ 75.856 ], + "e": [ 0 ] + }, + { "t": 83 } + ], + "ix": 2 + }, + "o": { + "k": 0, + "ix": 3 + }, + "m": 1, + "ix": 2, + "nm": "Trim Paths 1" + }, + { + "ty": "st", + "fillEnabled": true, + "c": { "k": [ 1, 1, 1, 1 ] }, + "o": { "k": 100 }, + "w": { "k": 2 }, + "lc": 2, + "lj": 1, + "ml": 4, + "nm": "Stroke 1" + }, + { + "ty": "tr", + "p": { + "k": [ 0, 0 ], + "ix": 2 + }, + "a": { + "k": [ 0, 0 ], + "ix": 1 + }, + "s": { + "k": [ 100, 100 ], + "ix": 3 + }, + "r": { + "k": 0, + "ix": 6 + }, + "o": { + "k": 100, + "ix": 7 + }, + "sk": { + "k": 0, + "ix": 4 + }, + "sa": { + "k": 0, + "ix": 5 + }, + "nm": "Transform" + } + ], + "nm": "Shape 1" + } + ], + "ip": 76, + "op": 84, + "st": 40, + "bm": 0, + "sr": 1 + }, + { + "ddd": 0, + "ind": 2, + "ty": 4, + "nm": "S4-Y 4", + "parent": 0, + "ks": { + "o": { "k": 100 }, + "r": { "k": -89.1 }, + "p": { "k": [ 53.205, 131.606, 0 ] }, + "a": { "k": [ 0, 0, 0 ] }, + "s": { "k": [ 100, 100, 100 ] } + }, + "ao": 0, + "shapes": [ + { + "ty": "gr", + "it": [ + { + "ind": 0, + "ty": "sh", + "ks": { + "k": { + "i": [ + [ 0, 0 ], + [ 0, 0 ] + ], + "o": [ + [ 0, 0 ], + [ 0, 0 ] + ], + "v": [ + [ 142.183, -5.112 ], + [ 130.029, 5.016 ] + ], + "c": false + } + }, + "nm": "Path 1" + }, + { + "ty": "tm", + "s": { + "k": [ + { + "i": { + "x": [ 0.833 ], + "y": [ 0.833 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p833_0p833_0p167_0p167" ], + "t": 76, + "s": [ 87 ], + "e": [ 43.833 ] + }, + { + "i": { + "x": [ 0.833 ], + "y": [ 0.833 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p833_0p833_0p167_0p167" ], + "t": 79, + "s": [ 43.833 ], + "e": [ 0 ] + }, + { "t": 83 } + ], + "ix": 1 + }, + "e": { + "k": [ + { + "i": { + "x": [ 0.833 ], + "y": [ 0.833 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p833_0p833_0p167_0p167" ], + "t": 76, + "s": [ 100 ], + "e": [ 66.356 ] + }, + { + "i": { + "x": [ 0.833 ], + "y": [ 0.833 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p833_0p833_0p167_0p167" ], + "t": 79, + "s": [ 66.356 ], + "e": [ 0 ] + }, + { "t": 83 } + ], + "ix": 2 + }, + "o": { + "k": 0, + "ix": 3 + }, + "m": 1, + "ix": 2, + "nm": "Trim Paths 1" + }, + { + "ty": "st", + "fillEnabled": true, + "c": { "k": [ 1, 1, 1, 1 ] }, + "o": { "k": 100 }, + "w": { "k": 2 }, + "lc": 2, + "lj": 1, + "ml": 4, + "nm": "Stroke 1" + }, + { + "ty": "tr", + "p": { + "k": [ 0, 0 ], + "ix": 2 + }, + "a": { + "k": [ 0, 0 ], + "ix": 1 + }, + "s": { + "k": [ 100, 100 ], + "ix": 3 + }, + "r": { + "k": 0, + "ix": 6 + }, + "o": { + "k": 100, + "ix": 7 + }, + "sk": { + "k": 0, + "ix": 4 + }, + "sa": { + "k": 0, + "ix": 5 + }, + "nm": "Transform" + } + ], + "nm": "Shape 1" + } + ], + "ip": 76, + "op": 84, + "st": 40, + "bm": 0, + "sr": 1 + }, + { + "ddd": 0, + "ind": 3, + "ty": 4, + "nm": "S3-Y 4", + "parent": 0, + "ks": { + "o": { "k": 100 }, + "r": { "k": -89.1 }, + "p": { "k": [ 53.205, 131.606, 0 ] }, + "a": { "k": [ 0, 0, 0 ] }, + "s": { "k": [ 100, 100, 100 ] } + }, + "ao": 0, + "shapes": [ + { + "ty": "gr", + "it": [ + { + "ind": 0, + "ty": "sh", + "ks": { + "k": { + "i": [ + [ 0, 0 ], + [ 0, 0 ] + ], + "o": [ + [ 0, 0 ], + [ 0, 0 ] + ], + "v": [ + [ 147.699, 13.025 ], + [ 133.195, 13.21 ] + ], + "c": false + } + }, + "nm": "Path 1" + }, + { + "ty": "tm", + "s": { + "k": [ + { + "i": { + "x": [ 0.833 ], + "y": [ 0.833 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p833_0p833_0p167_0p167" ], + "t": 76, + "s": [ 87 ], + "e": [ 42.133 ] + }, + { + "i": { + "x": [ 0.833 ], + "y": [ 0.833 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p833_0p833_0p167_0p167" ], + "t": 79, + "s": [ 42.133 ], + "e": [ 0 ] + }, + { "t": 83 } + ], + "ix": 1 + }, + "e": { + "k": [ + { + "i": { + "x": [ 0.833 ], + "y": [ 0.833 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p833_0p833_0p167_0p167" ], + "t": 76, + "s": [ 100 ], + "e": [ 66.356 ] + }, + { + "i": { + "x": [ 0.833 ], + "y": [ 0.833 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p833_0p833_0p167_0p167" ], + "t": 79, + "s": [ 66.356 ], + "e": [ 0 ] + }, + { "t": 83 } + ], + "ix": 2 + }, + "o": { + "k": 0, + "ix": 3 + }, + "m": 1, + "ix": 2, + "nm": "Trim Paths 1" + }, + { + "ty": "st", + "fillEnabled": true, + "c": { "k": [ 1, 1, 1, 1 ] }, + "o": { "k": 100 }, + "w": { "k": 2 }, + "lc": 2, + "lj": 1, + "ml": 4, + "nm": "Stroke 1" + }, + { + "ty": "tr", + "p": { + "k": [ 0, 0 ], + "ix": 2 + }, + "a": { + "k": [ 0, 0 ], + "ix": 1 + }, + "s": { + "k": [ 100, 100 ], + "ix": 3 + }, + "r": { + "k": 0, + "ix": 6 + }, + "o": { + "k": 100, + "ix": 7 + }, + "sk": { + "k": 0, + "ix": 4 + }, + "sa": { + "k": 0, + "ix": 5 + }, + "nm": "Transform" + } + ], + "nm": "Shape 1" + } + ], + "ip": 76, + "op": 84, + "st": 40, + "bm": 0, + "sr": 1 + }, + { + "ddd": 0, + "ind": 4, + "ty": 4, + "nm": "S5-Y 3", + "parent": 0, + "ks": { + "o": { "k": 100 }, + "r": { "k": 97.9 }, + "p": { "k": [ 58.205, -39.394, 0 ] }, + "a": { "k": [ 0, 0, 0 ] }, + "s": { "k": [ 100, 100, 100 ] } + }, + "ao": 0, + "shapes": [ + { + "ty": "gr", + "it": [ + { + "ind": 0, + "ty": "sh", + "ks": { + "k": { + "i": [ + [ 0, 0 ], + [ 0, 0 ] + ], + "o": [ + [ 0, 0 ], + [ 0, 0 ] + ], + "v": [ + [ 145.677, 22.22 ], + [ 134.922, 14.749 ] + ], + "c": false + } + }, + "nm": "Path 1" + }, + { + "ty": "tm", + "s": { + "k": [ + { + "i": { + "x": [ 0.833 ], + "y": [ 0.833 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p833_0p833_0p167_0p167" ], + "t": 75, + "s": [ 87 ], + "e": [ 50.633 ] + }, + { + "i": { + "x": [ 0.833 ], + "y": [ 0.833 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p833_0p833_0p167_0p167" ], + "t": 78, + "s": [ 50.633 ], + "e": [ 0 ] + }, + { "t": 82 } + ], + "ix": 1 + }, + "e": { + "k": [ + { + "i": { + "x": [ 0.833 ], + "y": [ 0.833 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p833_0p833_0p167_0p167" ], + "t": 75, + "s": [ 100 ], + "e": [ 75.856 ] + }, + { + "i": { + "x": [ 0.833 ], + "y": [ 0.833 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p833_0p833_0p167_0p167" ], + "t": 78, + "s": [ 75.856 ], + "e": [ 0 ] + }, + { "t": 82 } + ], + "ix": 2 + }, + "o": { + "k": 0, + "ix": 3 + }, + "m": 1, + "ix": 2, + "nm": "Trim Paths 1" + }, + { + "ty": "st", + "fillEnabled": true, + "c": { "k": [ 1, 1, 1, 1 ] }, + "o": { "k": 100 }, + "w": { "k": 2 }, + "lc": 2, + "lj": 1, + "ml": 4, + "nm": "Stroke 1" + }, + { + "ty": "tr", + "p": { + "k": [ 0, 0 ], + "ix": 2 + }, + "a": { + "k": [ 0, 0 ], + "ix": 1 + }, + "s": { + "k": [ 100, 100 ], + "ix": 3 + }, + "r": { + "k": 0, + "ix": 6 + }, + "o": { + "k": 100, + "ix": 7 + }, + "sk": { + "k": 0, + "ix": 4 + }, + "sa": { + "k": 0, + "ix": 5 + }, + "nm": "Transform" + } + ], + "nm": "Shape 1" + } + ], + "ip": 75, + "op": 83, + "st": 39, + "bm": 0, + "sr": 1 + }, + { + "ddd": 0, + "ind": 5, + "ty": 4, + "nm": "S4-Y 3", + "parent": 0, + "ks": { + "o": { "k": 100 }, + "r": { "k": 97.9 }, + "p": { "k": [ 58.205, -39.394, 0 ] }, + "a": { "k": [ 0, 0, 0 ] }, + "s": { "k": [ 100, 100, 100 ] } + }, + "ao": 0, + "shapes": [ + { + "ty": "gr", + "it": [ + { + "ind": 0, + "ty": "sh", + "ks": { + "k": { + "i": [ + [ 0, 0 ], + [ 0, 0 ] + ], + "o": [ + [ 0, 0 ], + [ 0, 0 ] + ], + "v": [ + [ 144.429, -5.397 ], + [ 132.275, 4.731 ] + ], + "c": false + } + }, + "nm": "Path 1" + }, + { + "ty": "tm", + "s": { + "k": [ + { + "i": { + "x": [ 0.833 ], + "y": [ 0.833 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p833_0p833_0p167_0p167" ], + "t": 75, + "s": [ 87 ], + "e": [ 43.833 ] + }, + { + "i": { + "x": [ 0.833 ], + "y": [ 0.833 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p833_0p833_0p167_0p167" ], + "t": 78, + "s": [ 43.833 ], + "e": [ 0 ] + }, + { "t": 82 } + ], + "ix": 1 + }, + "e": { + "k": [ + { + "i": { + "x": [ 0.833 ], + "y": [ 0.833 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p833_0p833_0p167_0p167" ], + "t": 75, + "s": [ 100 ], + "e": [ 66.356 ] + }, + { + "i": { + "x": [ 0.833 ], + "y": [ 0.833 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p833_0p833_0p167_0p167" ], + "t": 78, + "s": [ 66.356 ], + "e": [ 0 ] + }, + { "t": 82 } + ], + "ix": 2 + }, + "o": { + "k": 0, + "ix": 3 + }, + "m": 1, + "ix": 2, + "nm": "Trim Paths 1" + }, + { + "ty": "st", + "fillEnabled": true, + "c": { "k": [ 1, 1, 1, 1 ] }, + "o": { "k": 100 }, + "w": { "k": 2 }, + "lc": 2, + "lj": 1, + "ml": 4, + "nm": "Stroke 1" + }, + { + "ty": "tr", + "p": { + "k": [ 0, 0 ], + "ix": 2 + }, + "a": { + "k": [ 0, 0 ], + "ix": 1 + }, + "s": { + "k": [ 100, 100 ], + "ix": 3 + }, + "r": { + "k": 0, + "ix": 6 + }, + "o": { + "k": 100, + "ix": 7 + }, + "sk": { + "k": 0, + "ix": 4 + }, + "sa": { + "k": 0, + "ix": 5 + }, + "nm": "Transform" + } + ], + "nm": "Shape 1" + } + ], + "ip": 75, + "op": 83, + "st": 39, + "bm": 0, + "sr": 1 + }, + { + "ddd": 0, + "ind": 6, + "ty": 4, + "nm": "S3-Y 3", + "parent": 0, + "ks": { + "o": { "k": 100 }, + "r": { "k": 97.9 }, + "p": { "k": [ 58.205, -39.394, 0 ] }, + "a": { "k": [ 0, 0, 0 ] }, + "s": { "k": [ 100, 100, 100 ] } + }, + "ao": 0, + "shapes": [ + { + "ty": "gr", + "it": [ + { + "ind": 0, + "ty": "sh", + "ks": { + "k": { + "i": [ + [ 0, 0 ], + [ 0, 0 ] + ], + "o": [ + [ 0, 0 ], + [ 0, 0 ] + ], + "v": [ + [ 149.624, 8.244 ], + [ 136.648, 10.156 ] + ], + "c": false + } + }, + "nm": "Path 1" + }, + { + "ty": "tm", + "s": { + "k": [ + { + "i": { + "x": [ 0.833 ], + "y": [ 0.833 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p833_0p833_0p167_0p167" ], + "t": 75, + "s": [ 87 ], + "e": [ 42.133 ] + }, + { + "i": { + "x": [ 0.833 ], + "y": [ 0.833 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p833_0p833_0p167_0p167" ], + "t": 78, + "s": [ 42.133 ], + "e": [ 0 ] + }, + { "t": 82 } + ], + "ix": 1 + }, + "e": { + "k": [ + { + "i": { + "x": [ 0.833 ], + "y": [ 0.833 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p833_0p833_0p167_0p167" ], + "t": 75, + "s": [ 100 ], + "e": [ 66.356 ] + }, + { + "i": { + "x": [ 0.833 ], + "y": [ 0.833 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p833_0p833_0p167_0p167" ], + "t": 78, + "s": [ 66.356 ], + "e": [ 0 ] + }, + { "t": 82 } + ], + "ix": 2 + }, + "o": { + "k": 0, + "ix": 3 + }, + "m": 1, + "ix": 2, + "nm": "Trim Paths 1" + }, + { + "ty": "st", + "fillEnabled": true, + "c": { "k": [ 1, 1, 1, 1 ] }, + "o": { "k": 100 }, + "w": { "k": 2 }, + "lc": 2, + "lj": 1, + "ml": 4, + "nm": "Stroke 1" + }, + { + "ty": "tr", + "p": { + "k": [ 0, 0 ], + "ix": 2 + }, + "a": { + "k": [ 0, 0 ], + "ix": 1 + }, + "s": { + "k": [ 100, 100 ], + "ix": 3 + }, + "r": { + "k": 0, + "ix": 6 + }, + "o": { + "k": 100, + "ix": 7 + }, + "sk": { + "k": 0, + "ix": 4 + }, + "sa": { + "k": 0, + "ix": 5 + }, + "nm": "Transform" + } + ], + "nm": "Shape 1" + } + ], + "ip": 75, + "op": 83, + "st": 39, + "bm": 0, + "sr": 1 + }, + { + "ddd": 0, + "ind": 7, + "ty": 4, + "nm": "S13", + "parent": 0, + "ks": { + "o": { "k": 100 }, + "r": { "k": 0 }, + "p": { "k": [ 25.043, 45.678, 0 ] }, + "a": { "k": [ 0, 0, 0 ] }, + "s": { "k": [ 100, 100, 100 ] } + }, + "ao": 0, + "shapes": [ + { + "ty": "gr", + "it": [ + { + "ind": 0, + "ty": "sh", + "ks": { + "k": { + "i": [ + [ 0, 0 ], + [ 0, 0 ] + ], + "o": [ + [ 0, 0 ], + [ 0, 0 ] + ], + "v": [ + [ 128, 3.65 ], + [ 78.25, 3.5 ] + ], + "c": false + } + }, + "nm": "Path 1" + }, + { + "ty": "tm", + "s": { + "k": [ + { + "i": { + "x": [ 0.833 ], + "y": [ 0.833 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p833_0p833_0p167_0p167" ], + "t": 85, + "s": [ 87 ], + "e": [ 21.233 ] + }, + { + "i": { + "x": [ 0.833 ], + "y": [ 0.833 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p833_0p833_0p167_0p167" ], + "t": 90, + "s": [ 21.233 ], + "e": [ 0 ] + }, + { "t": 94 } + ], + "ix": 1 + }, + "e": { + "k": [ + { + "i": { + "x": [ 0.833 ], + "y": [ 0.833 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p833_0p833_0p167_0p167" ], + "t": 85, + "s": [ 100 ], + "e": [ 66.356 ] + }, + { + "i": { + "x": [ 0.833 ], + "y": [ 0.833 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p833_0p833_0p167_0p167" ], + "t": 90, + "s": [ 66.356 ], + "e": [ 0 ] + }, + { "t": 94 } + ], + "ix": 2 + }, + "o": { + "k": 0, + "ix": 3 + }, + "m": 1, + "ix": 2, + "nm": "Trim Paths 1" + }, + { + "ty": "st", + "fillEnabled": true, + "c": { "k": [ 1, 1, 1, 1 ] }, + "o": { "k": 100 }, + "w": { "k": 1.5 }, + "lc": 2, + "lj": 1, + "ml": 4, + "nm": "Stroke 1" + }, + { + "ty": "tr", + "p": { + "k": [ 0, 0 ], + "ix": 2 + }, + "a": { + "k": [ 0, 0 ], + "ix": 1 + }, + "s": { + "k": [ 100, 100 ], + "ix": 3 + }, + "r": { + "k": 0, + "ix": 6 + }, + "o": { + "k": 100, + "ix": 7 + }, + "sk": { + "k": 0, + "ix": 4 + }, + "sa": { + "k": 0, + "ix": 5 + }, + "nm": "Transform" + } + ], + "nm": "Shape 1" + } + ], + "ip": 85, + "op": 95, + "st": 49, + "bm": 0, + "sr": 1 + }, + { + "ddd": 0, + "ind": 8, + "ty": 4, + "nm": "S12", + "parent": 0, + "ks": { + "o": { "k": 100 }, + "r": { "k": 0 }, + "p": { "k": [ 25.043, 45.678, 0 ] }, + "a": { "k": [ 0, 0, 0 ] }, + "s": { "k": [ 100, 100, 100 ] } + }, + "ao": 0, + "shapes": [ + { + "ty": "gr", + "it": [ + { + "ind": 0, + "ty": "sh", + "ks": { + "k": { + "i": [ + [ 0, 0 ], + [ 0, 0 ] + ], + "o": [ + [ 0, 0 ], + [ 0, 0 ] + ], + "v": [ + [ 119.25, -20.05 ], + [ 63.5, -20.5 ] + ], + "c": false + } + }, + "nm": "Path 1" + }, + { + "ty": "tm", + "s": { + "k": [ + { + "i": { + "x": [ 0.833 ], + "y": [ 0.833 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p833_0p833_0p167_0p167" ], + "t": 84, + "s": [ 87 ], + "e": [ 21.233 ] + }, + { + "i": { + "x": [ 0.833 ], + "y": [ 0.833 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p833_0p833_0p167_0p167" ], + "t": 87, + "s": [ 21.233 ], + "e": [ 0 ] + }, + { "t": 91 } + ], + "ix": 1 + }, + "e": { + "k": [ + { + "i": { + "x": [ 0.833 ], + "y": [ 0.833 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p833_0p833_0p167_0p167" ], + "t": 84, + "s": [ 100 ], + "e": [ 66.356 ] + }, + { + "i": { + "x": [ 0.833 ], + "y": [ 0.833 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p833_0p833_0p167_0p167" ], + "t": 87, + "s": [ 66.356 ], + "e": [ 0 ] + }, + { "t": 91 } + ], + "ix": 2 + }, + "o": { + "k": 0, + "ix": 3 + }, + "m": 1, + "ix": 2, + "nm": "Trim Paths 1" + }, + { + "ty": "st", + "fillEnabled": true, + "c": { "k": [ 1, 1, 1, 1 ] }, + "o": { "k": 100 }, + "w": { "k": 1.5 }, + "lc": 2, + "lj": 1, + "ml": 4, + "nm": "Stroke 1" + }, + { + "ty": "tr", + "p": { + "k": [ 0, 0 ], + "ix": 2 + }, + "a": { + "k": [ 0, 0 ], + "ix": 1 + }, + "s": { + "k": [ 100, 100 ], + "ix": 3 + }, + "r": { + "k": 0, + "ix": 6 + }, + "o": { + "k": 100, + "ix": 7 + }, + "sk": { + "k": 0, + "ix": 4 + }, + "sa": { + "k": 0, + "ix": 5 + }, + "nm": "Transform" + } + ], + "nm": "Shape 1" + } + ], + "ip": 84, + "op": 94, + "st": 48, + "bm": 0, + "sr": 1 + }, + { + "ddd": 0, + "ind": 9, + "ty": 4, + "nm": "S11", + "parent": 0, + "ks": { + "o": { "k": 100 }, + "r": { "k": 0 }, + "p": { "k": [ 25.043, 45.678, 0 ] }, + "a": { "k": [ 0, 0, 0 ] }, + "s": { "k": [ 100, 100, 100 ] } + }, + "ao": 0, + "shapes": [ + { + "ty": "gr", + "it": [ + { + "ind": 0, + "ty": "sh", + "ks": { + "k": { + "i": [ + [ 0, 0 ], + [ 0, 0 ] + ], + "o": [ + [ 0, 0 ], + [ 0, 0 ] + ], + "v": [ + [ 119.5, -45.05 ], + [ 82.75, -44.75 ] + ], + "c": false + } + }, + "nm": "Path 1" + }, + { + "ty": "tm", + "s": { + "k": [ + { + "i": { + "x": [ 0.833 ], + "y": [ 0.833 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p833_0p833_0p167_0p167" ], + "t": 80, + "s": [ 87 ], + "e": [ 21.233 ] + }, + { + "i": { + "x": [ 0.833 ], + "y": [ 0.833 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p833_0p833_0p167_0p167" ], + "t": 83, + "s": [ 21.233 ], + "e": [ 0 ] + }, + { "t": 87 } + ], + "ix": 1 + }, + "e": { + "k": [ + { + "i": { + "x": [ 0.833 ], + "y": [ 0.833 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p833_0p833_0p167_0p167" ], + "t": 80, + "s": [ 100 ], + "e": [ 66.356 ] + }, + { + "i": { + "x": [ 0.833 ], + "y": [ 0.833 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p833_0p833_0p167_0p167" ], + "t": 83, + "s": [ 66.356 ], + "e": [ 0 ] + }, + { "t": 87 } + ], + "ix": 2 + }, + "o": { + "k": 0, + "ix": 3 + }, + "m": 1, + "ix": 2, + "nm": "Trim Paths 1" + }, + { + "ty": "st", + "fillEnabled": true, + "c": { "k": [ 1, 1, 1, 1 ] }, + "o": { "k": 100 }, + "w": { "k": 1.5 }, + "lc": 2, + "lj": 1, + "ml": 4, + "nm": "Stroke 1" + }, + { + "ty": "tr", + "p": { + "k": [ 0, 0 ], + "ix": 2 + }, + "a": { + "k": [ 0, 0 ], + "ix": 1 + }, + "s": { + "k": [ 100, 100 ], + "ix": 3 + }, + "r": { + "k": 0, + "ix": 6 + }, + "o": { + "k": 100, + "ix": 7 + }, + "sk": { + "k": 0, + "ix": 4 + }, + "sa": { + "k": 0, + "ix": 5 + }, + "nm": "Transform" + } + ], + "nm": "Shape 1" + } + ], + "ip": 80, + "op": 90, + "st": 44, + "bm": 0, + "sr": 1 + }, + { + "ddd": 0, + "ind": 10, + "ty": 4, + "nm": "S5-Y 2", + "parent": 0, + "ks": { + "o": { "k": 100 }, + "r": { "k": 0 }, + "p": { "k": [ 25.043, 45.678, 0 ] }, + "a": { "k": [ 0, 0, 0 ] }, + "s": { "k": [ 100, 100, 100 ] } + }, + "ao": 0, + "shapes": [ + { + "ty": "gr", + "it": [ + { + "ind": 0, + "ty": "sh", + "ks": { + "k": { + "i": [ + [ 0, 0 ], + [ 0, 0 ] + ], + "o": [ + [ 0, 0 ], + [ 0, 0 ] + ], + "v": [ + [ 169.5, 18.073 ], + [ 137.481, 11.365 ] + ], + "c": false + } + }, + "nm": "Path 1" + }, + { + "ty": "tm", + "s": { + "k": [ + { + "i": { + "x": [ 0.833 ], + "y": [ 0.833 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p833_0p833_0p167_0p167" ], + "t": 97, + "s": [ 87 ], + "e": [ 50.633 ] + }, + { + "i": { + "x": [ 0.833 ], + "y": [ 0.833 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p833_0p833_0p167_0p167" ], + "t": 100, + "s": [ 50.633 ], + "e": [ 0 ] + }, + { "t": 107 } + ], + "ix": 1 + }, + "e": { + "k": [ + { + "i": { + "x": [ 0.833 ], + "y": [ 0.833 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p833_0p833_0p167_0p167" ], + "t": 97, + "s": [ 100 ], + "e": [ 75.856 ] + }, + { + "i": { + "x": [ 0.833 ], + "y": [ 0.833 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p833_0p833_0p167_0p167" ], + "t": 100, + "s": [ 75.856 ], + "e": [ 0 ] + }, + { "t": 107 } + ], + "ix": 2 + }, + "o": { + "k": 0, + "ix": 3 + }, + "m": 1, + "ix": 2, + "nm": "Trim Paths 1" + }, + { + "ty": "st", + "fillEnabled": true, + "c": { "k": [ 1, 1, 1, 1 ] }, + "o": { "k": 100 }, + "w": { "k": 2 }, + "lc": 2, + "lj": 1, + "ml": 4, + "nm": "Stroke 1" + }, + { + "ty": "tr", + "p": { + "k": [ 0, 0 ], + "ix": 2 + }, + "a": { + "k": [ 0, 0 ], + "ix": 1 + }, + "s": { + "k": [ 100, 100 ], + "ix": 3 + }, + "r": { + "k": 0, + "ix": 6 + }, + "o": { + "k": 100, + "ix": 7 + }, + "sk": { + "k": 0, + "ix": 4 + }, + "sa": { + "k": 0, + "ix": 5 + }, + "nm": "Transform" + } + ], + "nm": "Shape 1" + } + ], + "ip": 97, + "op": 107, + "st": 61, + "bm": 0, + "sr": 1 + }, + { + "ddd": 0, + "ind": 11, + "ty": 4, + "nm": "S4-Y 2", + "parent": 0, + "ks": { + "o": { "k": 100 }, + "r": { "k": 0 }, + "p": { "k": [ 25.043, 45.678, 0 ] }, + "a": { "k": [ 0, 0, 0 ] }, + "s": { "k": [ 100, 100, 100 ] } + }, + "ao": 0, + "shapes": [ + { + "ty": "gr", + "it": [ + { + "ind": 0, + "ty": "sh", + "ks": { + "k": { + "i": [ + [ 0, 0 ], + [ 0, 0 ] + ], + "o": [ + [ 0, 0 ], + [ 0, 0 ] + ], + "v": [ + [ 156.45, -23.05 ], + [ 132, 2.75 ] + ], + "c": false + } + }, + "nm": "Path 1" + }, + { + "ty": "tm", + "s": { + "k": [ + { + "i": { + "x": [ 0.833 ], + "y": [ 0.833 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p833_0p833_0p167_0p167" ], + "t": 97, + "s": [ 87 ], + "e": [ 43.833 ] + }, + { + "i": { + "x": [ 0.833 ], + "y": [ 0.833 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p833_0p833_0p167_0p167" ], + "t": 100, + "s": [ 43.833 ], + "e": [ 0 ] + }, + { "t": 107 } + ], + "ix": 1 + }, + "e": { + "k": [ + { + "i": { + "x": [ 0.833 ], + "y": [ 0.833 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p833_0p833_0p167_0p167" ], + "t": 97, + "s": [ 100 ], + "e": [ 66.356 ] + }, + { + "i": { + "x": [ 0.833 ], + "y": [ 0.833 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p833_0p833_0p167_0p167" ], + "t": 100, + "s": [ 66.356 ], + "e": [ 0 ] + }, + { "t": 107 } + ], + "ix": 2 + }, + "o": { + "k": 0, + "ix": 3 + }, + "m": 1, + "ix": 2, + "nm": "Trim Paths 1" + }, + { + "ty": "st", + "fillEnabled": true, + "c": { "k": [ 1, 1, 1, 1 ] }, + "o": { "k": 100 }, + "w": { "k": 2 }, + "lc": 2, + "lj": 1, + "ml": 4, + "nm": "Stroke 1" + }, + { + "ty": "tr", + "p": { + "k": [ 0, 0 ], + "ix": 2 + }, + "a": { + "k": [ 0, 0 ], + "ix": 1 + }, + "s": { + "k": [ 100, 100 ], + "ix": 3 + }, + "r": { + "k": 0, + "ix": 6 + }, + "o": { + "k": 100, + "ix": 7 + }, + "sk": { + "k": 0, + "ix": 4 + }, + "sa": { + "k": 0, + "ix": 5 + }, + "nm": "Transform" + } + ], + "nm": "Shape 1" + } + ], + "ip": 97, + "op": 107, + "st": 61, + "bm": 0, + "sr": 1 + }, + { + "ddd": 0, + "ind": 12, + "ty": 4, + "nm": "S3-Y 2", + "parent": 0, + "ks": { + "o": { "k": 100 }, + "r": { "k": 0 }, + "p": { "k": [ 25.043, 45.678, 0 ] }, + "a": { "k": [ 0, 0, 0 ] }, + "s": { "k": [ 100, 100, 100 ] } + }, + "ao": 0, + "shapes": [ + { + "ty": "gr", + "it": [ + { + "ind": 0, + "ty": "sh", + "ks": { + "k": { + "i": [ + [ 0, 0 ], + [ 0, 0 ] + ], + "o": [ + [ 0, 0 ], + [ 0, 0 ] + ], + "v": [ + [ 166.731, -7.927 ], + [ 136.731, 7.115 ] + ], + "c": false + } + }, + "nm": "Path 1" + }, + { + "ty": "tm", + "s": { + "k": [ + { + "i": { + "x": [ 0.833 ], + "y": [ 0.833 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p833_0p833_0p167_0p167" ], + "t": 97, + "s": [ 87 ], + "e": [ 42.133 ] + }, + { + "i": { + "x": [ 0.833 ], + "y": [ 0.833 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p833_0p833_0p167_0p167" ], + "t": 100, + "s": [ 42.133 ], + "e": [ 0 ] + }, + { "t": 107 } + ], + "ix": 1 + }, + "e": { + "k": [ + { + "i": { + "x": [ 0.833 ], + "y": [ 0.833 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p833_0p833_0p167_0p167" ], + "t": 97, + "s": [ 100 ], + "e": [ 66.356 ] + }, + { + "i": { + "x": [ 0.833 ], + "y": [ 0.833 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p833_0p833_0p167_0p167" ], + "t": 100, + "s": [ 66.356 ], + "e": [ 0 ] + }, + { "t": 107 } + ], + "ix": 2 + }, + "o": { + "k": 0, + "ix": 3 + }, + "m": 1, + "ix": 2, + "nm": "Trim Paths 1" + }, + { + "ty": "st", + "fillEnabled": true, + "c": { "k": [ 1, 1, 1, 1 ] }, + "o": { "k": 100 }, + "w": { "k": 2 }, + "lc": 2, + "lj": 1, + "ml": 4, + "nm": "Stroke 1" + }, + { + "ty": "tr", + "p": { + "k": [ 0, 0 ], + "ix": 2 + }, + "a": { + "k": [ 0, 0 ], + "ix": 1 + }, + "s": { + "k": [ 100, 100 ], + "ix": 3 + }, + "r": { + "k": 0, + "ix": 6 + }, + "o": { + "k": 100, + "ix": 7 + }, + "sk": { + "k": 0, + "ix": 4 + }, + "sa": { + "k": 0, + "ix": 5 + }, + "nm": "Transform" + } + ], + "nm": "Shape 1" + } + ], + "ip": 97, + "op": 107, + "st": 61, + "bm": 0, + "sr": 1 + }, + { + "ddd": 0, + "ind": 13, + "ty": 4, + "nm": "S6-Y", + "parent": 0, + "ks": { + "o": { "k": 100 }, + "r": { "k": 0 }, + "p": { "k": [ 25.043, 45.678, 0 ] }, + "a": { "k": [ 0, 0, 0 ] }, + "s": { "k": [ 100, 100, 100 ] } + }, + "ao": 0, + "shapes": [ + { + "ty": "gr", + "it": [ + { + "ind": 0, + "ty": "sh", + "ks": { + "k": { + "i": [ + [ 0, 0 ], + [ 0, 0 ] + ], + "o": [ + [ 0, 0 ], + [ 0, 0 ] + ], + "v": [ + [ -87.5, 20.95 ], + [ -48.75, 54.75 ] + ], + "c": false + } + }, + "nm": "Path 1" + }, + { + "ty": "tm", + "s": { + "k": [ + { + "i": { + "x": [ 0.833 ], + "y": [ 0.833 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p833_0p833_0p167_0p167" ], + "t": 54, + "s": [ 87 ], + "e": [ 43.933 ] + }, + { + "i": { + "x": [ 0.833 ], + "y": [ 0.833 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p833_0p833_0p167_0p167" ], + "t": 57, + "s": [ 43.933 ], + "e": [ 0 ] + }, + { "t": 64 } + ], + "ix": 1 + }, + "e": { + "k": [ + { + "i": { + "x": [ 0.833 ], + "y": [ 0.833 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p833_0p833_0p167_0p167" ], + "t": 54, + "s": [ 100 ], + "e": [ 70.456 ] + }, + { + "i": { + "x": [ 0.833 ], + "y": [ 0.833 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p833_0p833_0p167_0p167" ], + "t": 57, + "s": [ 70.456 ], + "e": [ 0 ] + }, + { "t": 64 } + ], + "ix": 2 + }, + "o": { + "k": 0, + "ix": 3 + }, + "m": 1, + "ix": 2, + "nm": "Trim Paths 1" + }, + { + "ty": "st", + "fillEnabled": true, + "c": { "k": [ 1, 1, 1, 1 ] }, + "o": { "k": 100 }, + "w": { "k": 2 }, + "lc": 2, + "lj": 1, + "ml": 4, + "nm": "Stroke 1" + }, + { + "ty": "tr", + "p": { + "k": [ 0, 0 ], + "ix": 2 + }, + "a": { + "k": [ 0, 0 ], + "ix": 1 + }, + "s": { + "k": [ 100, 100 ], + "ix": 3 + }, + "r": { + "k": 0, + "ix": 6 + }, + "o": { + "k": 100, + "ix": 7 + }, + "sk": { + "k": 0, + "ix": 4 + }, + "sa": { + "k": 0, + "ix": 5 + }, + "nm": "Transform" + } + ], + "nm": "Shape 1" + } + ], + "ip": 54, + "op": 64, + "st": 18, + "bm": 0, + "sr": 1 + }, + { + "ddd": 0, + "ind": 14, + "ty": 4, + "nm": "S5-Y", + "parent": 0, + "ks": { + "o": { "k": 100 }, + "r": { "k": 0 }, + "p": { "k": [ 25.043, 45.678, 0 ] }, + "a": { "k": [ 0, 0, 0 ] }, + "s": { "k": [ 100, 100, 100 ] } + }, + "ao": 0, + "shapes": [ + { + "ty": "gr", + "it": [ + { + "ind": 0, + "ty": "sh", + "ks": { + "k": { + "i": [ + [ 0, 0 ], + [ 0, 0 ] + ], + "o": [ + [ 0, 0 ], + [ 0, 0 ] + ], + "v": [ + [ -94.5, 37.073 ], + [ -48.769, 55.365 ] + ], + "c": false + } + }, + "nm": "Path 1" + }, + { + "ty": "tm", + "s": { + "k": [ + { + "i": { + "x": [ 0.833 ], + "y": [ 0.833 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p833_0p833_0p167_0p167" ], + "t": 54, + "s": [ 87 ], + "e": [ 50.633 ] + }, + { + "i": { + "x": [ 0.833 ], + "y": [ 0.833 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p833_0p833_0p167_0p167" ], + "t": 57, + "s": [ 50.633 ], + "e": [ 0 ] + }, + { "t": 64 } + ], + "ix": 1 + }, + "e": { + "k": [ + { + "i": { + "x": [ 0.833 ], + "y": [ 0.833 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p833_0p833_0p167_0p167" ], + "t": 54, + "s": [ 100 ], + "e": [ 75.856 ] + }, + { + "i": { + "x": [ 0.833 ], + "y": [ 0.833 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p833_0p833_0p167_0p167" ], + "t": 57, + "s": [ 75.856 ], + "e": [ 0 ] + }, + { "t": 64 } + ], + "ix": 2 + }, + "o": { + "k": 0, + "ix": 3 + }, + "m": 1, + "ix": 2, + "nm": "Trim Paths 1" + }, + { + "ty": "st", + "fillEnabled": true, + "c": { "k": [ 1, 1, 1, 1 ] }, + "o": { "k": 100 }, + "w": { "k": 2 }, + "lc": 2, + "lj": 1, + "ml": 4, + "nm": "Stroke 1" + }, + { + "ty": "tr", + "p": { + "k": [ 0, 0 ], + "ix": 2 + }, + "a": { + "k": [ 0, 0 ], + "ix": 1 + }, + "s": { + "k": [ 100, 100 ], + "ix": 3 + }, + "r": { + "k": 0, + "ix": 6 + }, + "o": { + "k": 100, + "ix": 7 + }, + "sk": { + "k": 0, + "ix": 4 + }, + "sa": { + "k": 0, + "ix": 5 + }, + "nm": "Transform" + } + ], + "nm": "Shape 1" + } + ], + "ip": 54, + "op": 64, + "st": 18, + "bm": 0, + "sr": 1 + }, + { + "ddd": 0, + "ind": 15, + "ty": 4, + "nm": "S4-Y", + "parent": 0, + "ks": { + "o": { "k": 100 }, + "r": { "k": 0 }, + "p": { "k": [ 25.043, 45.678, 0 ] }, + "a": { "k": [ 0, 0, 0 ] }, + "s": { "k": [ 100, 100, 100 ] } + }, + "ao": 0, + "shapes": [ + { + "ty": "gr", + "it": [ + { + "ind": 0, + "ty": "sh", + "ks": { + "k": { + "i": [ + [ 0, 0 ], + [ 0, 0 ] + ], + "o": [ + [ 0, 0 ], + [ 0, 0 ] + ], + "v": [ + [ 7.45, 21.95 ], + [ -32.75, 55.75 ] + ], + "c": false + } + }, + "nm": "Path 1" + }, + { + "ty": "tm", + "s": { + "k": [ + { + "i": { + "x": [ 0.833 ], + "y": [ 0.833 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p833_0p833_0p167_0p167" ], + "t": 54, + "s": [ 87 ], + "e": [ 43.833 ] + }, + { + "i": { + "x": [ 0.833 ], + "y": [ 0.833 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p833_0p833_0p167_0p167" ], + "t": 57, + "s": [ 43.833 ], + "e": [ 0 ] + }, + { "t": 64 } + ], + "ix": 1 + }, + "e": { + "k": [ + { + "i": { + "x": [ 0.833 ], + "y": [ 0.833 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p833_0p833_0p167_0p167" ], + "t": 54, + "s": [ 100 ], + "e": [ 66.356 ] + }, + { + "i": { + "x": [ 0.833 ], + "y": [ 0.833 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p833_0p833_0p167_0p167" ], + "t": 57, + "s": [ 66.356 ], + "e": [ 0 ] + }, + { "t": 64 } + ], + "ix": 2 + }, + "o": { + "k": 0, + "ix": 3 + }, + "m": 1, + "ix": 2, + "nm": "Trim Paths 1" + }, + { + "ty": "st", + "fillEnabled": true, + "c": { "k": [ 1, 1, 1, 1 ] }, + "o": { "k": 100 }, + "w": { "k": 2 }, + "lc": 2, + "lj": 1, + "ml": 4, + "nm": "Stroke 1" + }, + { + "ty": "tr", + "p": { + "k": [ 0, 0 ], + "ix": 2 + }, + "a": { + "k": [ 0, 0 ], + "ix": 1 + }, + "s": { + "k": [ 100, 100 ], + "ix": 3 + }, + "r": { + "k": 0, + "ix": 6 + }, + "o": { + "k": 100, + "ix": 7 + }, + "sk": { + "k": 0, + "ix": 4 + }, + "sa": { + "k": 0, + "ix": 5 + }, + "nm": "Transform" + } + ], + "nm": "Shape 1" + } + ], + "ip": 54, + "op": 64, + "st": 18, + "bm": 0, + "sr": 1 + }, + { + "ddd": 0, + "ind": 16, + "ty": 4, + "nm": "S3-Y", + "parent": 0, + "ks": { + "o": { "k": 100 }, + "r": { "k": 0 }, + "p": { "k": [ 25.043, 45.678, 0 ] }, + "a": { "k": [ 0, 0, 0 ] }, + "s": { "k": [ 100, 100, 100 ] } + }, + "ao": 0, + "shapes": [ + { + "ty": "gr", + "it": [ + { + "ind": 0, + "ty": "sh", + "ks": { + "k": { + "i": [ + [ 0, 0 ], + [ 0, 0 ] + ], + "o": [ + [ 0, 0 ], + [ 0, 0 ] + ], + "v": [ + [ 16.231, 39.073 ], + [ -32.769, 57.365 ] + ], + "c": false + } + }, + "nm": "Path 1" + }, + { + "ty": "tm", + "s": { + "k": [ + { + "i": { + "x": [ 0.833 ], + "y": [ 0.833 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p833_0p833_0p167_0p167" ], + "t": 54, + "s": [ 87 ], + "e": [ 42.133 ] + }, + { + "i": { + "x": [ 0.833 ], + "y": [ 0.833 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p833_0p833_0p167_0p167" ], + "t": 57, + "s": [ 42.133 ], + "e": [ 0 ] + }, + { "t": 64 } + ], + "ix": 1 + }, + "e": { + "k": [ + { + "i": { + "x": [ 0.833 ], + "y": [ 0.833 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p833_0p833_0p167_0p167" ], + "t": 54, + "s": [ 100 ], + "e": [ 66.356 ] + }, + { + "i": { + "x": [ 0.833 ], + "y": [ 0.833 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p833_0p833_0p167_0p167" ], + "t": 57, + "s": [ 66.356 ], + "e": [ 0 ] + }, + { "t": 64 } + ], + "ix": 2 + }, + "o": { + "k": 0, + "ix": 3 + }, + "m": 1, + "ix": 2, + "nm": "Trim Paths 1" + }, + { + "ty": "st", + "fillEnabled": true, + "c": { "k": [ 1, 1, 1, 1 ] }, + "o": { "k": 100 }, + "w": { "k": 2 }, + "lc": 2, + "lj": 1, + "ml": 4, + "nm": "Stroke 1" + }, + { + "ty": "tr", + "p": { + "k": [ 0, 0 ], + "ix": 2 + }, + "a": { + "k": [ 0, 0 ], + "ix": 1 + }, + "s": { + "k": [ 100, 100 ], + "ix": 3 + }, + "r": { + "k": 0, + "ix": 6 + }, + "o": { + "k": 100, + "ix": 7 + }, + "sk": { + "k": 0, + "ix": 4 + }, + "sa": { + "k": 0, + "ix": 5 + }, + "nm": "Transform" + } + ], + "nm": "Shape 1" + } + ], + "ip": 54, + "op": 64, + "st": 18, + "bm": 0, + "sr": 1 + }, + { + "ddd": 0, + "ind": 17, + "ty": 4, + "nm": "S8", + "parent": 0, + "ks": { + "o": { "k": 100 }, + "r": { "k": 0 }, + "p": { "k": [ 25.043, 45.678, 0 ] }, + "a": { "k": [ 0, 0, 0 ] }, + "s": { "k": [ 100, 100, 100 ] } + }, + "ao": 0, + "shapes": [ + { + "ty": "gr", + "it": [ + { + "ind": 0, + "ty": "sh", + "ks": { + "k": { + "i": [ + [ 0, 0 ], + [ -0.148, 14.256 ], + [ 10.476, 0 ], + [ 0, 0 ] + ], + "o": [ + [ 0, 0 ], + [ -8.551, -8.263 ], + [ -21.454, 0 ], + [ 0, 0 ] + ], + "v": [ + [ -3, 35.95 ], + [ -1.352, -6.756 ], + [ -32.046, -20.579 ], + [ -42.25, 4.25 ] + ], + "c": false + } + }, + "nm": "Path 1" + }, + { + "ty": "tm", + "s": { + "k": [ + { + "i": { + "x": [ 0.833 ], + "y": [ 0.833 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p833_0p833_0p167_0p167" ], + "t": 65, + "s": [ 87 ], + "e": [ 21.233 ] + }, + { + "i": { + "x": [ 0.833 ], + "y": [ 0.833 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p833_0p833_0p167_0p167" ], + "t": 70, + "s": [ 21.233 ], + "e": [ 0 ] + }, + { "t": 75 } + ], + "ix": 1 + }, + "e": { + "k": [ + { + "i": { + "x": [ 0.833 ], + "y": [ 0.833 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p833_0p833_0p167_0p167" ], + "t": 65, + "s": [ 100 ], + "e": [ 66.356 ] + }, + { + "i": { + "x": [ 0.833 ], + "y": [ 0.833 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p833_0p833_0p167_0p167" ], + "t": 70, + "s": [ 66.356 ], + "e": [ 0 ] + }, + { "t": 75 } + ], + "ix": 2 + }, + "o": { + "k": 0, + "ix": 3 + }, + "m": 1, + "ix": 2, + "nm": "Trim Paths 1" + }, + { + "ty": "st", + "fillEnabled": true, + "c": { "k": [ 1, 1, 1, 1 ] }, + "o": { "k": 100 }, + "w": { "k": 1.5 }, + "lc": 2, + "lj": 1, + "ml": 4, + "nm": "Stroke 1" + }, + { + "ty": "tr", + "p": { + "k": [ 0, 0 ], + "ix": 2 + }, + "a": { + "k": [ 0, 0 ], + "ix": 1 + }, + "s": { + "k": [ 100, 100 ], + "ix": 3 + }, + "r": { + "k": 0, + "ix": 6 + }, + "o": { + "k": 100, + "ix": 7 + }, + "sk": { + "k": 0, + "ix": 4 + }, + "sa": { + "k": 0, + "ix": 5 + }, + "nm": "Transform" + } + ], + "nm": "Shape 1" + } + ], + "ip": 65, + "op": 75, + "st": 29, + "bm": 0, + "sr": 1 + }, + { + "ddd": 0, + "ind": 18, + "ty": 4, + "nm": "S7", + "parent": 0, + "ks": { + "o": { "k": 100 }, + "r": { "k": 0 }, + "p": { "k": [ 25.043, 45.678, 0 ] }, + "a": { "k": [ 0, 0, 0 ] }, + "s": { "k": [ 100, 100, 100 ] } + }, + "ao": 0, + "shapes": [ + { + "ty": "gr", + "it": [ + { + "ind": 0, + "ty": "sh", + "ks": { + "k": { + "i": [ + [ 27, 1.45 ], + [ 31.046, -1.421 ], + [ 0, 0 ] + ], + "o": [ + [ -27, -1.45 ], + [ -26.426, 1.21 ], + [ 0, 0 ] + ], + "v": [ + [ 34.5, -13.05 ], + [ -35.046, -35.579 ], + [ -62.25, -5.75 ] + ], + "c": false + } + }, + "nm": "Path 1" + }, + { + "ty": "tm", + "s": { + "k": [ + { + "i": { + "x": [ 0.833 ], + "y": [ 0.833 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p833_0p833_0p167_0p167" ], + "t": 65, + "s": [ 87 ], + "e": [ 21.233 ] + }, + { + "i": { + "x": [ 0.833 ], + "y": [ 0.833 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p833_0p833_0p167_0p167" ], + "t": 70, + "s": [ 21.233 ], + "e": [ 0 ] + }, + { "t": 75 } + ], + "ix": 1 + }, + "e": { + "k": [ + { + "i": { + "x": [ 0.833 ], + "y": [ 0.833 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p833_0p833_0p167_0p167" ], + "t": 65, + "s": [ 100 ], + "e": [ 66.356 ] + }, + { + "i": { + "x": [ 0.833 ], + "y": [ 0.833 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p833_0p833_0p167_0p167" ], + "t": 70, + "s": [ 66.356 ], + "e": [ 0 ] + }, + { "t": 75 } + ], + "ix": 2 + }, + "o": { + "k": 0, + "ix": 3 + }, + "m": 1, + "ix": 2, + "nm": "Trim Paths 1" + }, + { + "ty": "st", + "fillEnabled": true, + "c": { "k": [ 1, 1, 1, 1 ] }, + "o": { "k": 100 }, + "w": { "k": 1.5 }, + "lc": 2, + "lj": 1, + "ml": 4, + "nm": "Stroke 1" + }, + { + "ty": "tr", + "p": { + "k": [ 0, 0 ], + "ix": 2 + }, + "a": { + "k": [ 0, 0 ], + "ix": 1 + }, + "s": { + "k": [ 100, 100 ], + "ix": 3 + }, + "r": { + "k": 0, + "ix": 6 + }, + "o": { + "k": 100, + "ix": 7 + }, + "sk": { + "k": 0, + "ix": 4 + }, + "sa": { + "k": 0, + "ix": 5 + }, + "nm": "Transform" + } + ], + "nm": "Shape 1" + } + ], + "ip": 65, + "op": 75, + "st": 29, + "bm": 0, + "sr": 1 + }, + { + "ddd": 0, + "ind": 19, + "ty": 4, + "nm": "S2-Y", + "parent": 0, + "ks": { + "o": { "k": 100 }, + "r": { "k": 0 }, + "p": { "k": [ 25.043, 45.678, 0 ] }, + "a": { "k": [ 0, 0, 0 ] }, + "s": { "k": [ 100, 100, 100 ] } + }, + "ao": 0, + "shapes": [ + { + "ty": "gr", + "it": [ + { + "ind": 0, + "ty": "sh", + "ks": { + "k": { + "i": [ + [ 0, 0 ], + [ 1.9, -10.768 ], + [ 1, -19 ] + ], + "o": [ + [ 0, 0 ], + [ -3.167, 17.951 ], + [ -1, 19 ] + ], + "v": [ + [ -67.25, -105.5 ], + [ -72.333, -84.201 ], + [ -76.5, -37.75 ] + ], + "c": false + } + }, + "nm": "Path 1" + }, + { + "ty": "tm", + "s": { + "k": [ + { + "i": { + "x": [ 0.833 ], + "y": [ 0.833 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p833_0p833_0p167_0p167" ], + "t": 29, + "s": [ 87 ], + "e": [ 25.333 ] + }, + { + "i": { + "x": [ 0.833 ], + "y": [ 0.833 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p833_0p833_0p167_0p167" ], + "t": 33, + "s": [ 25.333 ], + "e": [ 0 ] + }, + { "t": 36 } + ], + "ix": 1 + }, + "e": { + "k": [ + { + "i": { + "x": [ 0.833 ], + "y": [ 0.833 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p833_0p833_0p167_0p167" ], + "t": 29, + "s": [ 100 ], + "e": [ 69.056 ] + }, + { + "i": { + "x": [ 0.833 ], + "y": [ 0.833 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p833_0p833_0p167_0p167" ], + "t": 33, + "s": [ 69.056 ], + "e": [ 0 ] + }, + { "t": 36 } + ], + "ix": 2 + }, + "o": { + "k": 0, + "ix": 3 + }, + "m": 1, + "ix": 2, + "nm": "Trim Paths 1" + }, + { + "ty": "st", + "fillEnabled": true, + "c": { "k": [ 1, 1, 1, 1 ] }, + "o": { "k": 100 }, + "w": { "k": 1.5 }, + "lc": 2, + "lj": 1, + "ml": 4, + "nm": "Stroke 1" + }, + { + "ty": "tr", + "p": { + "k": [ 0, 0 ], + "ix": 2 + }, + "a": { + "k": [ 0, 0 ], + "ix": 1 + }, + "s": { + "k": [ 100, 100 ], + "ix": 3 + }, + "r": { + "k": 0, + "ix": 6 + }, + "o": { + "k": 100, + "ix": 7 + }, + "sk": { + "k": 0, + "ix": 4 + }, + "sa": { + "k": 0, + "ix": 5 + }, + "nm": "Transform" + } + ], + "nm": "Shape 1" + } + ], + "ip": 30, + "op": 37, + "st": -7, + "bm": 0, + "sr": 1 + }, + { + "ddd": 0, + "ind": 20, + "ty": 4, + "nm": "S1-Y", + "parent": 0, + "ks": { + "o": { "k": 100 }, + "r": { "k": 0 }, + "p": { "k": [ 25.043, 45.678, 0 ] }, + "a": { "k": [ 0, 0, 0 ] }, + "s": { "k": [ 100, 100, 100 ] } + }, + "ao": 0, + "shapes": [ + { + "ty": "gr", + "it": [ + { + "ind": 0, + "ty": "sh", + "ks": { + "k": { + "i": [ + [ 0, 0 ], + [ 1.9, -10.768 ], + [ 1, -19 ] + ], + "o": [ + [ 0, 0 ], + [ -3.167, 17.951 ], + [ -1, 19 ] + ], + "v": [ + [ -67.125, -112 ], + [ -75.458, -89.951 ], + [ -80.375, -39.25 ] + ], + "c": false + } + }, + "nm": "Path 1" + }, + { + "ty": "tm", + "s": { + "k": [ + { + "i": { + "x": [ 0.833 ], + "y": [ 0.833 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p833_0p833_0p167_0p167" ], + "t": 29, + "s": [ 87 ], + "e": [ 37.533 ] + }, + { + "i": { + "x": [ 0.833 ], + "y": [ 0.833 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p833_0p833_0p167_0p167" ], + "t": 33, + "s": [ 37.533 ], + "e": [ 0 ] + }, + { "t": 36 } + ], + "ix": 1 + }, + "e": { + "k": [ + { + "i": { + "x": [ 0.833 ], + "y": [ 0.833 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p833_0p833_0p167_0p167" ], + "t": 29, + "s": [ 100 ], + "e": [ 66.356 ] + }, + { + "i": { + "x": [ 0.833 ], + "y": [ 0.833 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p833_0p833_0p167_0p167" ], + "t": 33, + "s": [ 66.356 ], + "e": [ 0 ] + }, + { "t": 36 } + ], + "ix": 2 + }, + "o": { + "k": 0, + "ix": 3 + }, + "m": 1, + "ix": 2, + "nm": "Trim Paths 1" + }, + { + "ty": "st", + "fillEnabled": true, + "c": { "k": [ 1, 1, 1, 1 ] }, + "o": { "k": 100 }, + "w": { "k": 1.5 }, + "lc": 2, + "lj": 1, + "ml": 4, + "nm": "Stroke 1" + }, + { + "ty": "tr", + "p": { + "k": [ 0, 0 ], + "ix": 2 + }, + "a": { + "k": [ 0, 0 ], + "ix": 1 + }, + "s": { + "k": [ 100, 100 ], + "ix": 3 + }, + "r": { + "k": 0, + "ix": 6 + }, + "o": { + "k": 100, + "ix": 7 + }, + "sk": { + "k": 0, + "ix": 4 + }, + "sa": { + "k": 0, + "ix": 5 + }, + "nm": "Transform" + } + ], + "nm": "Shape 1" + } + ], + "ip": 30, + "op": 37, + "st": -7, + "bm": 0, + "sr": 1 + }, + { + "ddd": 0, + "ind": 21, + "ty": 4, + "nm": "Dot1", + "parent": 0, + "ks": { + "o": { "k": 100 }, + "r": { "k": 0 }, + "p": { + "k": [ + { + "i": { + "x": 0.833, + "y": 0.833 + }, + "o": { + "x": 0.823, + "y": 0 + }, + "n": "0p833_0p833_0p823_0", + "t": -3, + "s": [ 295.771, 108.994, 0 ], + "e": [ 35.771, 108.994, 0 ], + "to": [ 0, 0, 0 ], + "ti": [ 0, 0, 0 ] + }, + { "t": 16 } + ] + }, + "a": { "k": [ 196.791, 266.504, 0 ] }, + "s": { "k": [ 100, 100, 100 ] } + }, + "ao": 0, + "shapes": [ + { + "ty": "gr", + "it": [ + { + "d": 1, + "ty": "el", + "s": { "k": [ 9.4, 9.4 ] }, + "p": { "k": [ 0.8, -0.5 ] }, + "nm": "Ellipse Path 1" + }, + { + "ty": "fl", + "fillEnabled": true, + "c": { "k": [ 1, 1, 1, 1 ] }, + "o": { "k": 100 }, + "nm": "Fill 1" + }, + { + "ty": "tr", + "p": { + "k": [ 196, 267 ], + "ix": 2 + }, + "a": { + "k": [ 0, 0 ], + "ix": 1 + }, + "s": { + "k": [ 100, 100 ], + "ix": 3 + }, + "r": { + "k": 0, + "ix": 6 + }, + "o": { + "k": 100, + "ix": 7 + }, + "sk": { + "k": 0, + "ix": 4 + }, + "sa": { + "k": 0, + "ix": 5 + }, + "nm": "Transform" + } + ], + "nm": "Ellipse 1" + } + ], + "ip": -5, + "op": 17, + "st": -36, + "bm": 0, + "sr": 1 + }, + { + "ddd": 0, + "ind": 22, + "ty": 4, + "nm": "L-B", + "parent": 0, + "ks": { + "o": { "k": 100 }, + "r": { "k": 0 }, + "p": { "k": [ 39.043, 45.678, 0 ] }, + "a": { "k": [ 250, 250, 0 ] }, + "s": { "k": [ 100, 100, 100 ] } + }, + "ao": 0, + "shapes": [ + { + "ty": "gr", + "it": [ + { + "ind": 0, + "ty": "sh", + "ks": { + "k": { + "i": [ + [ 0, 0 ], + [ 25.671, -4.167 ], + [ 1.456, 6.902 ], + [ -8.481, 1.863 ], + [ -47.562, 13.01 ], + [ -0.501, 0.133 ], + [ -71.423, -2.315 ] + ], + "o": [ + [ 0, 0 ], + [ -8.224, 1.335 ], + [ -1.456, -6.903 ], + [ 23.817, -5.233 ], + [ 0.16, -0.044 ], + [ 0.501, -0.133 ], + [ 0, 0 ] + ], + "v": [ + [ -8.837, -58.229 ], + [ -35.834, 33.662 ], + [ -51.688, 23.148 ], + [ -41.174, 7.293 ], + [ 51.797, 44.178 ], + [ 53.188, 43.741 ], + [ 140.394, 43.672 ] + ], + "c": false + } + }, + "nm": "Path 1" + }, + { + "ty": "st", + "fillEnabled": true, + "c": { "k": [ 0, 0.48, 0.53, 1 ] }, + "o": { "k": 100 }, + "w": { "k": 9.194 }, + "lc": 2, + "lj": 1, + "ml": 10, + "nm": "Stroke 1" + }, + { + "ty": "tr", + "p": { + "k": [ 166.029, 270.643 ], + "ix": 2 + }, + "a": { + "k": [ 0, 0 ], + "ix": 1 + }, + "s": { + "k": [ 100, 100 ], + "ix": 3 + }, + "r": { + "k": 0, + "ix": 6 + }, + "o": { + "k": 100, + "ix": 7 + }, + "sk": { + "k": 0, + "ix": 4 + }, + "sa": { + "k": 0, + "ix": 5 + }, + "nm": "Transform" + } + ], + "nm": "Group 8" + }, + { + "ty": "tm", + "s": { + "k": [ + { + "i": { + "x": [ 0.703 ], + "y": [ 0.821 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p703_0p821_0p167_0p167" ], + "t": 18, + "s": [ 80 ], + "e": [ 50 ] + }, + { + "i": { + "x": [ 0.263 ], + "y": [ 1 ] + }, + "o": { + "x": [ 0.037 ], + "y": [ 0.168 ] + }, + "n": [ "0p263_1_0p037_0p168" ], + "t": 23, + "s": [ 50 ], + "e": [ 30 ] + }, + { "t": 55 } + ], + "ix": 1 + }, + "e": { + "k": [ + { + "i": { + "x": [ 0.337 ], + "y": [ 1 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p337_1_0p167_0p167" ], + "t": 18, + "s": [ 81 ], + "e": [ 73.4 ] + }, + { "t": 29 } + ], + "ix": 2 + }, + "o": { + "k": 0, + "ix": 3 + }, + "m": 1, + "ix": 2, + "nm": "Trim Paths 1" + } + ], + "ip": 18, + "op": 179, + "st": 8, + "bm": 0, + "sr": 1 + }, + { + "ddd": 0, + "ind": 23, + "ty": 4, + "nm": "L-Y", + "parent": 0, + "ks": { + "o": { "k": 100 }, + "r": { "k": 0 }, + "p": { "k": [ 39.043, 45.678, 0 ] }, + "a": { "k": [ 250, 250, 0 ] }, + "s": { "k": [ 100, 100, 100 ] } + }, + "ao": 0, + "shapes": [ + { + "ty": "gr", + "it": [ + { + "ind": 0, + "ty": "sh", + "ks": { + "k": { + "i": [ + [ 0, 0 ], + [ 25.671, -4.167 ], + [ 1.456, 6.902 ], + [ -8.481, 1.863 ], + [ -47.562, 13.01 ], + [ -0.501, 0.133 ], + [ -71.423, -2.315 ] + ], + "o": [ + [ 0, 0 ], + [ -8.224, 1.335 ], + [ -1.456, -6.903 ], + [ 23.817, -5.233 ], + [ 0.16, -0.044 ], + [ 0.501, -0.133 ], + [ 0, 0 ] + ], + "v": [ + [ -8.837, -58.229 ], + [ -35.834, 33.662 ], + [ -51.688, 23.148 ], + [ -41.174, 7.293 ], + [ 51.797, 44.178 ], + [ 53.188, 43.741 ], + [ 140.394, 43.672 ] + ], + "c": false + } + }, + "nm": "Path 1" + }, + { + "ty": "st", + "fillEnabled": true, + "c": { "k": [ 1, 1, 1, 1 ] }, + "o": { "k": 100 }, + "w": { "k": 8.4 }, + "lc": 2, + "lj": 1, + "ml": 10, + "nm": "Stroke 1" + }, + { + "ty": "tr", + "p": { + "k": [ 166.029, 270.643 ], + "ix": 2 + }, + "a": { + "k": [ 0, 0 ], + "ix": 1 + }, + "s": { + "k": [ 100, 100 ], + "ix": 3 + }, + "r": { + "k": 0, + "ix": 6 + }, + "o": { + "k": 100, + "ix": 7 + }, + "sk": { + "k": 0, + "ix": 4 + }, + "sa": { + "k": 0, + "ix": 5 + }, + "nm": "Transform" + } + ], + "nm": "Group 8" + }, + { + "ty": "tm", + "s": { + "k": [ + { + "i": { + "x": [ 0.703 ], + "y": [ 0.857 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p703_0p857_0p167_0p167" ], + "t": 16, + "s": [ 80 ], + "e": [ 50 ] + }, + { + "i": { + "x": [ 0.938 ], + "y": [ 1 ] + }, + "o": { + "x": [ 0.333 ], + "y": [ 0.202 ] + }, + "n": [ "0p938_1_0p333_0p202" ], + "t": 20, + "s": [ 50 ], + "e": [ 0 ] + }, + { "t": 28 } + ], + "ix": 1 + }, + "e": { + "k": [ + { + "i": { + "x": [ 0.337 ], + "y": [ 1 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p337_1_0p167_0p167" ], + "t": 16, + "s": [ 81 ], + "e": [ 73.4 ] + }, + { "t": 27 } + ], + "ix": 2 + }, + "o": { + "k": 0, + "ix": 3 + }, + "m": 1, + "ix": 2, + "nm": "Trim Paths 1" + } + ], + "ip": 16, + "op": 179, + "st": 8, + "bm": 0, + "sr": 1 + }, + { + "ddd": 0, + "ind": 24, + "ty": 1, + "nm": "N", + "parent": 0, + "ks": { + "o": { "k": 0 }, + "r": { "k": 0 }, + "p": { + "k": [ + { + "i": { + "x": 0.26, + "y": 1 + }, + "o": { + "x": 0.167, + "y": 0.167 + }, + "n": "0p26_1_0p167_0p167", + "t": 28, + "s": [ -33.667, 8.182, 0 ], + "e": [ -33.667, -72.818, 0 ], + "to": [ 0, 0, 0 ], + "ti": [ 0, 0, 0 ] + }, + { + "i": { + "x": 0.833, + "y": 0.833 + }, + "o": { + "x": 0.74, + "y": 0 + }, + "n": "0p833_0p833_0p74_0", + "t": 40, + "s": [ -33.667, -72.818, 0 ], + "e": [ -33.667, 102.057, 0 ], + "to": [ 0, 0, 0 ], + "ti": [ 0, 0, 0 ] + }, + { "t": 54 } + ] + }, + "a": { "k": [ 60, 60, 0 ] }, + "s": { "k": [ 100, 100, 100 ] } + }, + "ao": 0, + "sw": 120, + "sh": 120, + "sc": "#ffffff", + "ip": 28, + "op": 54, + "st": 0, + "bm": 0, + "sr": 1 + }, + { + "ddd": 0, + "ind": 25, + "ty": 4, + "nm": "Dot-Y", + "parent": 24, + "ks": { + "o": { "k": 100 }, + "r": { "k": 0 }, + "p": { + "k": [ + { + "i": { + "x": 0.833, + "y": 0.833 + }, + "o": { + "x": 0.167, + "y": 0.167 + }, + "n": "0p833_0p833_0p167_0p167", + "t": 28, + "s": [ 39.875, 60, 0 ], + "e": [ 79.375, 60, 0 ], + "to": [ 6.58333349227905, 0, 0 ], + "ti": [ -6.58333349227905, 0, 0 ] + }, + { "t": 54 } + ] + }, + "a": { "k": [ 196.791, 266.504, 0 ] }, + "s": { "k": [ 100, 100, 100 ] } + }, + "ao": 0, + "shapes": [ + { + "ty": "gr", + "it": [ + { + "d": 1, + "ty": "el", + "s": { "k": [ 9.4, 9.4 ] }, + "p": { "k": [ 0.8, -0.5 ] }, + "nm": "Ellipse Path 1" + }, + { + "ty": "fl", + "fillEnabled": true, + "c": { "k": [ 1, 1, 1, 1 ] }, + "o": { "k": 100 }, + "nm": "Fill 1" + }, + { + "ty": "tr", + "p": { + "k": [ 196, 267 ], + "ix": 2 + }, + "a": { + "k": [ 0, 0 ], + "ix": 1 + }, + "s": { + "k": [ 100, 100 ], + "ix": 3 + }, + "r": { + "k": 0, + "ix": 6 + }, + "o": { + "k": 100, + "ix": 7 + }, + "sk": { + "k": 0, + "ix": 4 + }, + "sa": { + "k": 0, + "ix": 5 + }, + "nm": "Transform" + } + ], + "nm": "Ellipse 1" + } + ], + "ip": 28, + "op": 54, + "st": 4, + "bm": 0, + "sr": 1 + }, + { + "ddd": 0, + "ind": 26, + "ty": 4, + "nm": "T1a-B", + "parent": 36, + "ks": { + "o": { "k": 100 }, + "r": { "k": 0 }, + "p": { "k": [ 250, 250, 0 ] }, + "a": { "k": [ 250, 250, 0 ] }, + "s": { "k": [ 100, 100, 100 ] } + }, + "ao": 0, + "shapes": [ + { + "ty": "gr", + "it": [ + { + "ind": 0, + "ty": "sh", + "ks": { + "k": { + "i": [ + [ -0.5, 9.501 ], + [ -0.048, 5.655 ], + [ 0.054, 0.06 ], + [ 0.946, 1.486 ], + [ -9.967, 8.05 ], + [ -40.546, 0 ] + ], + "o": [ + [ 0.031, -0.594 ], + [ 0.076, -8.978 ], + [ -1.161, -1.3 ], + [ -5.939, -9.327 ], + [ 24.677, -19.929 ], + [ 0, 0 ] + ], + "v": [ + [ -30.72, 63.761 ], + [ -30.741, 45.192 ], + [ -37.397, 27.014 ], + [ -40.698, 22.661 ], + [ -37.873, -7.117 ], + [ 49.506, 11.559 ] + ], + "c": false + } + }, + "nm": "Path 1" + }, + { + "ty": "tm", + "s": { + "k": 24.9, + "ix": 1 + }, + "e": { + "k": [ + { + "i": { + "x": [ 0.673 ], + "y": [ 1 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p673_1_0p167_0p167" ], + "t": 70, + "s": [ 24.9 ], + "e": [ 89.1 ] + }, + { "t": 84 } + ], + "ix": 2 + }, + "o": { + "k": 0, + "ix": 3 + }, + "m": 1, + "ix": 2, + "nm": "Trim Paths 1" + }, + { + "ty": "st", + "fillEnabled": true, + "c": { "k": [ 1, 1, 1, 1 ] }, + "o": { "k": 100 }, + "w": { "k": 9.194 }, + "lc": 2, + "lj": 1, + "ml": 10, + "nm": "Stroke 1" + }, + { + "ty": "tr", + "p": { + "k": [ 227.677, 234.375 ], + "ix": 2 + }, + "a": { + "k": [ 0, 0 ], + "ix": 1 + }, + "s": { + "k": [ 100, 100 ], + "ix": 3 + }, + "r": { + "k": 0, + "ix": 6 + }, + "o": { + "k": 100, + "ix": 7 + }, + "sk": { + "k": 0, + "ix": 4 + }, + "sa": { + "k": 0, + "ix": 5 + }, + "nm": "Transform" + } + ], + "nm": "Group 9" + } + ], + "ip": 70, + "op": 179, + "st": 17, + "bm": 0, + "sr": 1 + }, + { + "ddd": 0, + "ind": 27, + "ty": 4, + "nm": "T2a-B", + "parent": 0, + "ks": { + "o": { "k": 100 }, + "r": { "k": 0 }, + "p": { "k": [ 39.043, 45.678, 0 ] }, + "a": { "k": [ 250, 250, 0 ] }, + "s": { "k": [ 100, 100, 100 ] } + }, + "ao": 0, + "shapes": [ + { + "ty": "gr", + "it": [ + { + "ind": 0, + "ty": "sh", + "ks": { + "k": { + "i": [ + [ 0, 0 ], + [ 0, 0 ] + ], + "o": [ + [ 0, 0 ], + [ 0, 0 ] + ], + "v": [ + [ 1.681, -29.992 ], + [ -1.681, 29.992 ] + ], + "c": false + } + }, + "nm": "Path 1" + }, + { + "ty": "tm", + "s": { + "k": [ + { + "i": { + "x": [ 0.06 ], + "y": [ 1 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p06_1_0p167_0p167" ], + "t": 75, + "s": [ 50 ], + "e": [ 0 ] + }, + { "t": 85 } + ], + "ix": 1 + }, + "e": { + "k": [ + { + "i": { + "x": [ 0.06 ], + "y": [ 1 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p06_1_0p167_0p167" ], + "t": 75, + "s": [ 50 ], + "e": [ 100 ] + }, + { "t": 85 } + ], + "ix": 2 + }, + "o": { + "k": 0, + "ix": 3 + }, + "m": 1, + "ix": 2, + "nm": "Trim Paths 1" + }, + { + "ty": "st", + "fillEnabled": true, + "c": { "k": [ 0, 0.48, 0.53, 1 ] }, + "o": { "k": 100 }, + "w": { "k": 9.194 }, + "lc": 3, + "lj": 1, + "ml": 10, + "nm": "Stroke 1" + }, + { + "ty": "tr", + "p": { + "k": [ 277.698, 247.258 ], + "ix": 2 + }, + "a": { + "k": [ 0, 0 ], + "ix": 1 + }, + "s": { + "k": [ 100, 100 ], + "ix": 3 + }, + "r": { + "k": 0, + "ix": 6 + }, + "o": { + "k": 100, + "ix": 7 + }, + "sk": { + "k": 0, + "ix": 4 + }, + "sa": { + "k": 0, + "ix": 5 + }, + "nm": "Transform" + } + ], + "nm": "Group 7" + } + ], + "ip": 75, + "op": 179, + "st": 15, + "bm": 0, + "sr": 1 + }, + { + "ddd": 0, + "ind": 28, + "ty": 4, + "nm": "T1a-Y 2", + "parent": 0, + "ks": { + "o": { "k": 100 }, + "r": { "k": 0 }, + "p": { + "k": [ + { + "i": { + "x": 0.667, + "y": 1 + }, + "o": { + "x": 0.167, + "y": 0.167 + }, + "n": "0p667_1_0p167_0p167", + "t": 56, + "s": [ 39.043, 48.678, 0 ], + "e": [ 39.043, 45.678, 0 ], + "to": [ 0, 0, 0 ], + "ti": [ 0, 0, 0 ] + }, + { "t": 64 } + ] + }, + "a": { "k": [ 250, 250, 0 ] }, + "s": { "k": [ 100, 100, 100 ] } + }, + "ao": 0, + "shapes": [ + { + "ty": "gr", + "it": [ + { + "ind": 0, + "ty": "sh", + "ks": { + "k": { + "i": [ + [ -0.5, 9.501 ], + [ -0.048, 5.655 ], + [ 0.054, 0.06 ], + [ 0.946, 1.486 ], + [ -9.967, 8.05 ], + [ -40.546, 0 ] + ], + "o": [ + [ 0.031, -0.594 ], + [ 0.076, -8.978 ], + [ -1.161, -1.3 ], + [ -5.939, -9.327 ], + [ 24.677, -19.929 ], + [ 0, 0 ] + ], + "v": [ + [ -30.72, 63.761 ], + [ -30.741, 45.192 ], + [ -37.397, 27.014 ], + [ -40.698, 22.661 ], + [ -37.873, -7.117 ], + [ 49.506, 11.559 ] + ], + "c": false + } + }, + "nm": "Path 1" + }, + { + "ty": "tm", + "s": { + "k": [ + { + "i": { + "x": [ 0.833 ], + "y": [ 1 ] + }, + "o": { + "x": [ 0.301 ], + "y": [ 0 ] + }, + "n": [ "0p833_1_0p301_0" ], + "t": 54, + "s": [ 0 ], + "e": [ 24.9 ] + }, + { "t": 70 } + ], + "ix": 1 + }, + "e": { + "k": [ + { + "i": { + "x": [ 0.667 ], + "y": [ 1 ] + }, + "o": { + "x": [ 0.301 ], + "y": [ 0 ] + }, + "n": [ "0p667_1_0p301_0" ], + "t": 54, + "s": [ 0 ], + "e": [ 100 ] + }, + { "t": 78 } + ], + "ix": 2 + }, + "o": { + "k": 0, + "ix": 3 + }, + "m": 1, + "ix": 2, + "nm": "Trim Paths 1" + }, + { + "ty": "st", + "fillEnabled": true, + "c": { "k": [ 0, 0.48, 0.53, 1 ] }, + "o": { "k": 100 }, + "w": { "k": 8.4 }, + "lc": 2, + "lj": 1, + "ml": 10, + "nm": "Stroke 1" + }, + { + "ty": "tr", + "p": { + "k": [ 227.677, 234.375 ], + "ix": 2 + }, + "a": { + "k": [ 0, 0 ], + "ix": 1 + }, + "s": { + "k": [ 100, 100 ], + "ix": 3 + }, + "r": { + "k": 0, + "ix": 6 + }, + "o": { + "k": 100, + "ix": 7 + }, + "sk": { + "k": 0, + "ix": 4 + }, + "sa": { + "k": 0, + "ix": 5 + }, + "nm": "Transform" + } + ], + "nm": "Group 9" + } + ], + "ip": 59, + "op": 179, + "st": 12, + "bm": 0, + "sr": 1 + }, + { + "ddd": 0, + "ind": 29, + "ty": 4, + "nm": "O-B", + "parent": 0, + "ks": { + "o": { "k": 100 }, + "r": { "k": 0 }, + "p": { + "k": [ + { + "i": { + "x": 0.833, + "y": 0.833 + }, + "o": { + "x": 0.167, + "y": 0.167 + }, + "n": "0p833_0p833_0p167_0p167", + "t": 31, + "s": [ -62.792, 73.057, 0 ], + "e": [ -53.792, 7.557, 0 ], + "to": [ 0, 0, 0 ], + "ti": [ 0, 0, 0 ] + }, + { + "i": { + "x": 0.638, + "y": 1 + }, + "o": { + "x": 0.167, + "y": 0.198 + }, + "n": "0p638_1_0p167_0p198", + "t": 35.257, + "s": [ -53.792, 7.557, 0 ], + "e": [ -33.667, -72.818, 0 ], + "to": [ 0, 0, 0 ], + "ti": [ -19.1562919616699, 1.73831975460052, 0 ] + }, + { + "i": { + "x": 0.795, + "y": 1 + }, + "o": { + "x": 0.523, + "y": 0 + }, + "n": "0p795_1_0p523_0", + "t": 44, + "s": [ -33.667, -72.818, 0 ], + "e": [ -14.167, 102.182, 0 ], + "to": [ 16.2075271606445, -1.47073686122894, 0 ], + "ti": [ 0, 0, 0 ] + }, + { + "i": { + "x": 0.348, + "y": 1 + }, + "o": { + "x": 0.18, + "y": 0 + }, + "n": "0p348_1_0p18_0", + "t": 54, + "s": [ -14.167, 102.182, 0 ], + "e": [ -14.167, 59.182, 0 ], + "to": [ 0, 0, 0 ], + "ti": [ 0, 0, 0 ] + }, + { + "i": { + "x": 0.27, + "y": 1 + }, + "o": { + "x": 0.693, + "y": 0 + }, + "n": "0p27_1_0p693_0", + "t": 63, + "s": [ -14.167, 59.182, 0 ], + "e": [ -14.167, 62.182, 0 ], + "to": [ 0, 0, 0 ], + "ti": [ 0, 0, 0 ] + }, + { "t": 73 } + ] + }, + "a": { "k": [ 196.791, 266.504, 0 ] }, + "s": { "k": [ 100, 100, 100 ] } + }, + "ao": 0, + "shapes": [ + { + "ty": "gr", + "it": [ + { + "d": 1, + "ty": "el", + "s": { + "k": [ + { + "i": { + "x": [ 0.667, 0.667 ], + "y": [ 1, 1 ] + }, + "o": { + "x": [ 0.333, 0.333 ], + "y": [ 0, 0 ] + }, + "n": [ "0p667_1_0p333_0", "0p667_1_0p333_0" ], + "t": 54, + "s": [ 3, 3 ], + "e": [ 44.6, 44.6 ] + }, + { "t": 61 } + ] + }, + "p": { "k": [ 0.8, -0.5 ] }, + "nm": "Ellipse Path 1" + }, + { + "ty": "st", + "fillEnabled": true, + "c": { "k": [ 0, 0.48, 0.53, 1 ] }, + "o": { "k": 100 }, + "w": { "k": 9.194 }, + "lc": 2, + "lj": 1, + "ml": 4, + "nm": "Stroke 1" + }, + { + "ty": "tr", + "p": { + "k": [ 196, 267 ], + "ix": 2 + }, + "a": { + "k": [ 0, 0 ], + "ix": 1 + }, + "s": { + "k": [ 100, 100 ], + "ix": 3 + }, + "r": { + "k": 0, + "ix": 6 + }, + "o": { + "k": 100, + "ix": 7 + }, + "sk": { + "k": 0, + "ix": 4 + }, + "sa": { + "k": 0, + "ix": 5 + }, + "nm": "Transform" + } + ], + "nm": "Ellipse 1" + }, + { + "ty": "tm", + "s": { + "k": [ + { + "i": { + "x": [ 0.833 ], + "y": [ 0.833 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p833_0p833_0p167_0p167" ], + "t": 54, + "s": [ 0 ], + "e": [ 30 ] + }, + { + "i": { + "x": [ 0.432 ], + "y": [ 1 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 1.124 ] + }, + "n": [ "0p432_1_0p167_1p124" ], + "t": 63, + "s": [ 30 ], + "e": [ 39.9 ] + }, + { "t": 91 } + ], + "ix": 1 + }, + "e": { + "k": [ + { + "i": { + "x": [ 0.833 ], + "y": [ 0.833 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p833_0p833_0p167_0p167" ], + "t": 54, + "s": [ 100 ], + "e": [ 88 ] + }, + { + "i": { + "x": [ 0.833 ], + "y": [ 0.833 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p833_0p833_0p167_0p167" ], + "t": 63, + "s": [ 88 ], + "e": [ 88 ] + }, + { "t": 91 } + ], + "ix": 2 + }, + "o": { + "k": 0, + "ix": 3 + }, + "m": 1, + "ix": 2, + "nm": "Trim Paths 1" + } + ], + "ip": 54, + "op": 179, + "st": 4, + "bm": 0, + "sr": 1 + }, + { + "ddd": 0, + "ind": 30, + "ty": 4, + "nm": "O-Y", + "parent": 0, + "ks": { + "o": { "k": 100 }, + "r": { "k": 0 }, + "p": { + "k": [ + { + "i": { + "x": 0.833, + "y": 0.833 + }, + "o": { + "x": 0.167, + "y": 0.167 + }, + "n": "0p833_0p833_0p167_0p167", + "t": 31, + "s": [ -62.792, 73.057, 0 ], + "e": [ -53.792, 7.557, 0 ], + "to": [ 0, 0, 0 ], + "ti": [ 0, 0, 0 ] + }, + { + "i": { + "x": 0.638, + "y": 1 + }, + "o": { + "x": 0.167, + "y": 0.198 + }, + "n": "0p638_1_0p167_0p198", + "t": 35.257, + "s": [ -53.792, 7.557, 0 ], + "e": [ -33.667, -72.818, 0 ], + "to": [ 0, 0, 0 ], + "ti": [ -19.1562919616699, 1.73831975460052, 0 ] + }, + { + "i": { + "x": 0.795, + "y": 1 + }, + "o": { + "x": 0.523, + "y": 0 + }, + "n": "0p795_1_0p523_0", + "t": 44, + "s": [ -33.667, -72.818, 0 ], + "e": [ -14.167, 102.182, 0 ], + "to": [ 16.2075271606445, -1.47073686122894, 0 ], + "ti": [ 0, 0, 0 ] + }, + { + "i": { + "x": 0.348, + "y": 1 + }, + "o": { + "x": 0.18, + "y": 0 + }, + "n": "0p348_1_0p18_0", + "t": 54, + "s": [ -14.167, 102.182, 0 ], + "e": [ -14.167, 59.182, 0 ], + "to": [ 0, 0, 0 ], + "ti": [ 0, 0, 0 ] + }, + { + "i": { + "x": 0.27, + "y": 1 + }, + "o": { + "x": 0.693, + "y": 0 + }, + "n": "0p27_1_0p693_0", + "t": 63, + "s": [ -14.167, 59.182, 0 ], + "e": [ -14.167, 62.182, 0 ], + "to": [ 0, 0, 0 ], + "ti": [ 0, 0, 0 ] + }, + { "t": 73 } + ] + }, + "a": { "k": [ 196.791, 266.504, 0 ] }, + "s": { "k": [ 100, 100, 100 ] } + }, + "ao": 0, + "shapes": [ + { + "ty": "gr", + "it": [ + { + "d": 1, + "ty": "el", + "s": { + "k": [ + { + "i": { + "x": [ 0.667, 0.667 ], + "y": [ 1, 1 ] + }, + "o": { + "x": [ 0.333, 0.333 ], + "y": [ 0, 0 ] + }, + "n": [ "0p667_1_0p333_0", "0p667_1_0p333_0" ], + "t": 54, + "s": [ 3, 3 ], + "e": [ 44.6, 44.6 ] + }, + { "t": 61 } + ] + }, + "p": { "k": [ 0.8, -0.5 ] }, + "nm": "Ellipse Path 1" + }, + { + "ty": "st", + "fillEnabled": true, + "c": { "k": [ 1, 1, 1, 1 ] }, + "o": { "k": 100 }, + "w": { "k": 8.8 }, + "lc": 1, + "lj": 1, + "ml": 4, + "nm": "Stroke 1" + }, + { + "ty": "tr", + "p": { + "k": [ 196, 267 ], + "ix": 2 + }, + "a": { + "k": [ 0, 0 ], + "ix": 1 + }, + "s": { + "k": [ 100, 100 ], + "ix": 3 + }, + "r": { + "k": 0, + "ix": 6 + }, + "o": { + "k": 100, + "ix": 7 + }, + "sk": { + "k": 0, + "ix": 4 + }, + "sa": { + "k": 0, + "ix": 5 + }, + "nm": "Transform" + } + ], + "nm": "Ellipse 1" + } + ], + "ip": 54, + "op": 179, + "st": 4, + "bm": 0, + "sr": 1 + }, + { + "ddd": 0, + "ind": 31, + "ty": 4, + "nm": "T1b-B", + "parent": 0, + "ks": { + "o": { "k": 100 }, + "r": { "k": 0 }, + "p": { "k": [ 39.043, 45.678, 0 ] }, + "a": { "k": [ 250, 250, 0 ] }, + "s": { "k": [ 100, 100, 100 ] } + }, + "ao": 0, + "shapes": [ + { + "ty": "gr", + "it": [ + { + "ind": 0, + "ty": "sh", + "ks": { + "k": { + "i": [ + [ 0, 0 ], + [ 0, 0 ] + ], + "o": [ + [ 0, 0 ], + [ 0, 0 ] + ], + "v": [ + [ 1.768, -25.966 ], + [ -1.768, 25.966 ] + ], + "c": false + } + }, + "nm": "Path 1" + }, + { + "ty": "tm", + "s": { + "k": 0, + "ix": 1 + }, + "e": { + "k": [ + { + "i": { + "x": [ 0.21 ], + "y": [ 1 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p21_1_0p167_0p167" ], + "t": 81, + "s": [ 11.7 ], + "e": [ 100 ] + }, + { "t": 88 } + ], + "ix": 2 + }, + "o": { + "k": 0, + "ix": 3 + }, + "m": 1, + "ix": 2, + "nm": "Trim Paths 1" + }, + { + "ty": "st", + "fillEnabled": true, + "c": { "k": [ 1, 1, 1, 1 ] }, + "o": { "k": 100 }, + "w": { "k": 9.194 }, + "lc": 2, + "lj": 2, + "nm": "Stroke 1" + }, + { + "ty": "tr", + "p": { + "k": [ 242.756, 265.581 ], + "ix": 2 + }, + "a": { + "k": [ 0, 0 ], + "ix": 1 + }, + "s": { + "k": [ 100, 100 ], + "ix": 3 + }, + "r": { + "k": 0, + "ix": 6 + }, + "o": { + "k": 100, + "ix": 7 + }, + "sk": { + "k": 0, + "ix": 4 + }, + "sa": { + "k": 0, + "ix": 5 + }, + "nm": "Transform" + } + ], + "nm": "Group 10" + } + ], + "ip": 81, + "op": 179, + "st": 26, + "bm": 0, + "sr": 1 + }, + { + "ddd": 0, + "ind": 32, + "ty": 4, + "nm": "T1b-Y", + "parent": 0, + "ks": { + "o": { "k": 100 }, + "r": { "k": 0 }, + "p": { "k": [ 39.043, 45.678, 0 ] }, + "a": { "k": [ 250, 250, 0 ] }, + "s": { "k": [ 100, 100, 100 ] } + }, + "ao": 0, + "shapes": [ + { + "ty": "gr", + "it": [ + { + "ind": 0, + "ty": "sh", + "ks": { + "k": { + "i": [ + [ 0, 0 ], + [ 0, 0 ] + ], + "o": [ + [ 0, 0 ], + [ 0, 0 ] + ], + "v": [ + [ 1.768, -25.966 ], + [ -1.768, 25.966 ] + ], + "c": false + } + }, + "nm": "Path 1" + }, + { + "ty": "tm", + "s": { + "k": [ + { + "i": { + "x": [ 0.833 ], + "y": [ 0.833 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p833_0p833_0p167_0p167" ], + "t": 70, + "s": [ 0 ], + "e": [ 0 ] + }, + { "t": 75 } + ], + "ix": 1 + }, + "e": { + "k": [ + { + "i": { + "x": [ 0.833 ], + "y": [ 0.833 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p833_0p833_0p167_0p167" ], + "t": 70, + "s": [ 11.7 ], + "e": [ 100 ] + }, + { "t": 75 } + ], + "ix": 2 + }, + "o": { + "k": 0, + "ix": 3 + }, + "m": 1, + "ix": 2, + "nm": "Trim Paths 1" + }, + { + "ty": "st", + "fillEnabled": true, + "c": { "k": [ 0, 0.48, 0.53, 1 ] }, + "o": { "k": 100 }, + "w": { "k": 8.4 }, + "lc": 2, + "lj": 2, + "nm": "Stroke 1" + }, + { + "ty": "tr", + "p": { + "k": [ 242.756, 265.581 ], + "ix": 2 + }, + "a": { + "k": [ 0, 0 ], + "ix": 1 + }, + "s": { + "k": [ 100, 100 ], + "ix": 3 + }, + "r": { + "k": 0, + "ix": 6 + }, + "o": { + "k": 100, + "ix": 7 + }, + "sk": { + "k": 0, + "ix": 4 + }, + "sa": { + "k": 0, + "ix": 5 + }, + "nm": "Transform" + } + ], + "nm": "Group 10" + } + ], + "ip": 70, + "op": 161, + "st": 15, + "bm": 0, + "sr": 1 + }, + { + "ddd": 0, + "ind": 33, + "ty": 4, + "nm": "T2b-B", + "parent": 0, + "ks": { + "o": { "k": 100 }, + "r": { "k": 0 }, + "p": { "k": [ 39.043, 45.678, 0 ] }, + "a": { "k": [ 250, 250, 0 ] }, + "s": { "k": [ 100, 100, 100 ] } + }, + "ao": 0, + "shapes": [ + { + "ty": "gr", + "it": [ + { + "ind": 0, + "ty": "sh", + "ks": { + "k": { + "i": [ + [ 0, 0 ], + [ 0, 0 ] + ], + "o": [ + [ 0, 0 ], + [ 0, 0 ] + ], + "v": [ + [ 246.65, 213.814 ], + [ 340.956, 213.628 ] + ], + "c": false + } + }, + "nm": "Path 1" + }, + { + "ty": "tm", + "s": { + "k": [ + { + "i": { + "x": [ 0.12 ], + "y": [ 1 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p12_1_0p167_0p167" ], + "t": 82, + "s": [ 29 ], + "e": [ 0 ] + }, + { "t": 91 } + ], + "ix": 1 + }, + "e": { + "k": [ + { + "i": { + "x": [ 0.12 ], + "y": [ 1 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p12_1_0p167_0p167" ], + "t": 82, + "s": [ 41.1 ], + "e": [ 66.5 ] + }, + { "t": 91 } + ], + "ix": 2 + }, + "o": { + "k": 0, + "ix": 3 + }, + "m": 1, + "ix": 2, + "nm": "Trim Paths 1" + }, + { + "ty": "st", + "fillEnabled": true, + "c": { "k": [ 0, 0.48, 0.53, 1 ] }, + "o": { "k": 100 }, + "w": { "k": 9.194 }, + "lc": 2, + "lj": 1, + "ml": 10, + "nm": "Stroke 1" + }, + { + "ty": "tr", + "p": { + "k": [ 0, 0 ], + "ix": 2 + }, + "a": { + "k": [ 0, 0 ], + "ix": 1 + }, + "s": { + "k": [ 100, 100 ], + "ix": 3 + }, + "r": { + "k": 0, + "ix": 6 + }, + "o": { + "k": 100, + "ix": 7 + }, + "sk": { + "k": 0, + "ix": 4 + }, + "sa": { + "k": 0, + "ix": 5 + }, + "nm": "Transform" + } + ], + "nm": "Group 5" + } + ], + "ip": 82, + "op": 179, + "st": -17, + "bm": 0, + "sr": 1 + }, + { + "ddd": 0, + "ind": 34, + "ty": 4, + "nm": "T2a-Y", + "parent": 0, + "ks": { + "o": { "k": 100 }, + "r": { "k": 0 }, + "p": { "k": [ 39.043, 45.678, 0 ] }, + "a": { "k": [ 250, 250, 0 ] }, + "s": { "k": [ 100, 100, 100 ] } + }, + "ao": 0, + "shapes": [ + { + "ty": "gr", + "it": [ + { + "ind": 0, + "ty": "sh", + "ks": { + "k": { + "i": [ + [ 0, 0 ], + [ 0, 0 ] + ], + "o": [ + [ 0, 0 ], + [ 0, 0 ] + ], + "v": [ + [ 1.681, -29.992 ], + [ -1.681, 29.992 ] + ], + "c": false + } + }, + "nm": "Path 1" + }, + { + "ty": "tm", + "s": { + "k": [ + { + "i": { + "x": [ 0.06 ], + "y": [ 1 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p06_1_0p167_0p167" ], + "t": 72, + "s": [ 50 ], + "e": [ 0 ] + }, + { "t": 82 } + ], + "ix": 1 + }, + "e": { + "k": [ + { + "i": { + "x": [ 0.06 ], + "y": [ 1 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p06_1_0p167_0p167" ], + "t": 72, + "s": [ 50 ], + "e": [ 100 ] + }, + { "t": 82 } + ], + "ix": 2 + }, + "o": { + "k": 0, + "ix": 3 + }, + "m": 1, + "ix": 2, + "nm": "Trim Paths 1" + }, + { + "ty": "st", + "fillEnabled": true, + "c": { "k": [ 1, 1, 1, 1 ] }, + "o": { "k": 100 }, + "w": { "k": 9.194 }, + "lc": 3, + "lj": 1, + "ml": 10, + "nm": "Stroke 1" + }, + { + "ty": "tr", + "p": { + "k": [ 277.698, 247.258 ], + "ix": 2 + }, + "a": { + "k": [ 0, 0 ], + "ix": 1 + }, + "s": { + "k": [ 100, 100 ], + "ix": 3 + }, + "r": { + "k": 0, + "ix": 6 + }, + "o": { + "k": 100, + "ix": 7 + }, + "sk": { + "k": 0, + "ix": 4 + }, + "sa": { + "k": 0, + "ix": 5 + }, + "nm": "Transform" + } + ], + "nm": "Group 7" + } + ], + "ip": 72, + "op": 89, + "st": 12, + "bm": 0, + "sr": 1 + }, + { + "ddd": 0, + "ind": 35, + "ty": 4, + "nm": "T2b-Y", + "parent": 0, + "ks": { + "o": { "k": 100 }, + "r": { "k": 0 }, + "p": { "k": [ 39.043, 45.678, 0 ] }, + "a": { "k": [ 250, 250, 0 ] }, + "s": { "k": [ 100, 100, 100 ] } + }, + "ao": 0, + "shapes": [ + { + "ty": "gr", + "it": [ + { + "ind": 0, + "ty": "sh", + "ks": { + "k": { + "i": [ + [ 0, 0 ], + [ 0, 0 ] + ], + "o": [ + [ 0, 0 ], + [ 0, 0 ] + ], + "v": [ + [ 246.65, 213.814 ], + [ 340.956, 213.628 ] + ], + "c": false + } + }, + "nm": "Path 1" + }, + { + "ty": "tm", + "s": { + "k": [ + { + "i": { + "x": [ 0.12 ], + "y": [ 1 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p12_1_0p167_0p167" ], + "t": 76, + "s": [ 29 ], + "e": [ 0 ] + }, + { "t": 85 } + ], + "ix": 1 + }, + "e": { + "k": [ + { + "i": { + "x": [ 0.12 ], + "y": [ 1 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p12_1_0p167_0p167" ], + "t": 76, + "s": [ 41.1 ], + "e": [ 66.5 ] + }, + { "t": 85 } + ], + "ix": 2 + }, + "o": { + "k": 0, + "ix": 3 + }, + "m": 1, + "ix": 2, + "nm": "Trim Paths 1" + }, + { + "ty": "st", + "fillEnabled": true, + "c": { "k": [ 1, 1, 1, 1 ] }, + "o": { "k": 100 }, + "w": { "k": 9.194 }, + "lc": 2, + "lj": 1, + "ml": 10, + "nm": "Stroke 1" + }, + { + "ty": "tr", + "p": { + "k": [ 0, 0 ], + "ix": 2 + }, + "a": { + "k": [ 0, 0 ], + "ix": 1 + }, + "s": { + "k": [ 100, 100 ], + "ix": 3 + }, + "r": { + "k": 0, + "ix": 6 + }, + "o": { + "k": 100, + "ix": 7 + }, + "sk": { + "k": 0, + "ix": 4 + }, + "sa": { + "k": 0, + "ix": 5 + }, + "nm": "Transform" + } + ], + "nm": "Group 5" + } + ], + "ip": 76, + "op": 92, + "st": -23, + "bm": 0, + "sr": 1 + }, + { + "ddd": 0, + "ind": 36, + "ty": 4, + "nm": "T1a-Y", + "parent": 0, + "ks": { + "o": { "k": 100 }, + "r": { "k": 0 }, + "p": { + "k": [ + { + "i": { + "x": 0.667, + "y": 1 + }, + "o": { + "x": 0.167, + "y": 0.167 + }, + "n": "0p667_1_0p167_0p167", + "t": 56, + "s": [ 39.043, 48.678, 0 ], + "e": [ 39.043, 45.678, 0 ], + "to": [ 0, 0, 0 ], + "ti": [ 0, 0, 0 ] + }, + { "t": 64 } + ] + }, + "a": { "k": [ 250, 250, 0 ] }, + "s": { "k": [ 100, 100, 100 ] } + }, + "ao": 0, + "shapes": [ + { + "ty": "gr", + "it": [ + { + "ind": 0, + "ty": "sh", + "ks": { + "k": { + "i": [ + [ -0.5, 9.501 ], + [ -0.048, 5.655 ], + [ 0.054, 0.06 ], + [ 0.946, 1.486 ], + [ -9.967, 8.05 ], + [ -40.546, 0 ] + ], + "o": [ + [ 0.031, -0.594 ], + [ 0.076, -8.978 ], + [ -1.161, -1.3 ], + [ -5.939, -9.327 ], + [ 24.677, -19.929 ], + [ 0, 0 ] + ], + "v": [ + [ -30.72, 63.761 ], + [ -30.741, 45.192 ], + [ -37.397, 27.014 ], + [ -40.698, 22.661 ], + [ -37.873, -7.117 ], + [ 49.506, 11.559 ] + ], + "c": false + } + }, + "nm": "Path 1" + }, + { + "ty": "tm", + "s": { + "k": [ + { + "i": { + "x": [ 0.833 ], + "y": [ 1 ] + }, + "o": { + "x": [ 0.301 ], + "y": [ 0 ] + }, + "n": [ "0p833_1_0p301_0" ], + "t": 54, + "s": [ 0 ], + "e": [ 24.9 ] + }, + { "t": 70 } + ], + "ix": 1 + }, + "e": { + "k": [ + { + "i": { + "x": [ 0.667 ], + "y": [ 1 ] + }, + "o": { + "x": [ 0.301 ], + "y": [ 0 ] + }, + "n": [ "0p667_1_0p301_0" ], + "t": 54, + "s": [ 0 ], + "e": [ 100 ] + }, + { "t": 74 } + ], + "ix": 2 + }, + "o": { + "k": 0, + "ix": 3 + }, + "m": 1, + "ix": 2, + "nm": "Trim Paths 1" + }, + { + "ty": "st", + "fillEnabled": true, + "c": { "k": [ 1, 1, 1, 1 ] }, + "o": { "k": 100 }, + "w": { "k": 8.4 }, + "lc": 2, + "lj": 1, + "ml": 10, + "nm": "Stroke 1" + }, + { + "ty": "tr", + "p": { + "k": [ 227.677, 234.375 ], + "ix": 2 + }, + "a": { + "k": [ 0, 0 ], + "ix": 1 + }, + "s": { + "k": [ 100, 100 ], + "ix": 3 + }, + "r": { + "k": 0, + "ix": 6 + }, + "o": { + "k": 100, + "ix": 7 + }, + "sk": { + "k": 0, + "ix": 4 + }, + "sa": { + "k": 0, + "ix": 5 + }, + "nm": "Transform" + } + ], + "nm": "Group 9" + } + ], + "ip": 59, + "op": 156, + "st": 12, + "bm": 0, + "sr": 1 + }, + { + "ddd": 0, + "ind": 37, + "ty": 4, + "nm": "E1-B", + "parent": 38, + "ks": { + "o": { "k": 100 }, + "r": { "k": 0 }, + "p": { "k": [ 344.672, 214.842, 0 ] }, + "a": { "k": [ 344.672, 214.842, 0 ] }, + "s": { "k": [ 100, 100, 100 ] } + }, + "ao": 0, + "shapes": [ + { + "ty": "gr", + "it": [ + { + "ind": 0, + "ty": "sh", + "ks": { + "k": { + "i": [ + [ 0, 0 ], + [ 0, 0 ] + ], + "o": [ + [ 0, 0 ], + [ 0, 0 ] + ], + "v": [ + [ -13.664, -0.145 ], + [ 62.163, 0.29 ] + ], + "c": false + } + }, + "nm": "Path 1" + }, + { + "ty": "st", + "fillEnabled": true, + "c": { "k": [ 1, 1, 1, 1 ] }, + "o": { "k": 100 }, + "w": { "k": 9.562 }, + "lc": 2, + "lj": 1, + "ml": 10, + "nm": "Stroke 1" + }, + { + "ty": "tr", + "p": { + "k": [ 344.672, 214.842 ], + "ix": 2 + }, + "a": { + "k": [ 0, 0 ], + "ix": 1 + }, + "s": { + "k": [ 100, 100 ], + "ix": 3 + }, + "r": { + "k": 0, + "ix": 6 + }, + "o": { + "k": 100, + "ix": 7 + }, + "sk": { + "k": 0, + "ix": 4 + }, + "sa": { + "k": 0, + "ix": 5 + }, + "nm": "Transform" + } + ], + "nm": "Group 2" + }, + { + "ty": "tm", + "s": { + "k": [ + { + "i": { + "x": [ 0.12 ], + "y": [ 0.12 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p12_0p12_0p167_0p167" ], + "t": 84, + "s": [ 0 ], + "e": [ 0 ] + }, + { "t": 93 } + ], + "ix": 1 + }, + "e": { + "k": [ + { + "i": { + "x": [ 0.12 ], + "y": [ 1 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p12_1_0p167_0p167" ], + "t": 84, + "s": [ 0 ], + "e": [ 37.5 ] + }, + { "t": 93 } + ], + "ix": 2 + }, + "o": { + "k": 0, + "ix": 3 + }, + "m": 1, + "ix": 2, + "nm": "Trim Paths 1" + } + ], + "ip": 84, + "op": 179, + "st": 84, + "bm": 0, + "sr": 1 + }, + { + "ddd": 0, + "ind": 38, + "ty": 4, + "nm": "E1-Y", + "parent": 0, + "ks": { + "o": { "k": 100 }, + "r": { "k": 0 }, + "p": { + "k": [ + { + "i": { + "x": 0.12, + "y": 1 + }, + "o": { + "x": 0.167, + "y": 0.167 + }, + "n": "0p12_1_0p167_0p167", + "t": 79, + "s": [ 113.715, 9.146, 0 ], + "e": [ 137.715, 9.146, 0 ], + "to": [ 0, 0, 0 ], + "ti": [ 0, 0, 0 ] + }, + { + "i": { + "x": 0.12, + "y": 1 + }, + "o": { + "x": 0.167, + "y": 0 + }, + "n": "0p12_1_0p167_0", + "t": 88, + "s": [ 137.715, 9.146, 0 ], + "e": [ 133.715, 9.146, 0 ], + "to": [ 0, 0, 0 ], + "ti": [ 0, 0, 0 ] + }, + { "t": 92 } + ] + }, + "a": { "k": [ 344.672, 214.842, 0 ] }, + "s": { "k": [ 100, 100, 100 ] } + }, + "ao": 0, + "shapes": [ + { + "ty": "gr", + "it": [ + { + "ind": 0, + "ty": "sh", + "ks": { + "k": { + "i": [ + [ 0, 0 ], + [ 0, 0 ] + ], + "o": [ + [ 0, 0 ], + [ 0, 0 ] + ], + "v": [ + [ -13.664, -0.145 ], + [ 62.163, 0.29 ] + ], + "c": false + } + }, + "nm": "Path 1" + }, + { + "ty": "st", + "fillEnabled": true, + "c": { "k": [ 0, 0.48, 0.53, 1 ] }, + "o": { "k": 100 }, + "w": { "k": 8.4 }, + "lc": 2, + "lj": 1, + "ml": 10, + "nm": "Stroke 1" + }, + { + "ty": "tr", + "p": { + "k": [ 344.672, 214.842 ], + "ix": 2 + }, + "a": { + "k": [ 0, 0 ], + "ix": 1 + }, + "s": { + "k": [ 100, 100 ], + "ix": 3 + }, + "r": { + "k": 0, + "ix": 6 + }, + "o": { + "k": 100, + "ix": 7 + }, + "sk": { + "k": 0, + "ix": 4 + }, + "sa": { + "k": 0, + "ix": 5 + }, + "nm": "Transform" + } + ], + "nm": "Group 2" + }, + { + "ty": "tm", + "s": { + "k": [ + { + "i": { + "x": [ 0.12 ], + "y": [ 0.12 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p12_0p12_0p167_0p167" ], + "t": 79, + "s": [ 0 ], + "e": [ 0 ] + }, + { "t": 88 } + ], + "ix": 1 + }, + "e": { + "k": [ + { + "i": { + "x": [ 0.12 ], + "y": [ 1 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p12_1_0p167_0p167" ], + "t": 79, + "s": [ 0 ], + "e": [ 37.5 ] + }, + { "t": 88 } + ], + "ix": 2 + }, + "o": { + "k": 0, + "ix": 3 + }, + "m": 1, + "ix": 2, + "nm": "Trim Paths 1" + } + ], + "ip": 79, + "op": 94, + "st": 79, + "bm": 0, + "sr": 1 + }, + { + "ddd": 0, + "ind": 39, + "ty": 4, + "nm": "E2-B", + "parent": 40, + "ks": { + "o": { "k": 100 }, + "r": { "k": 0 }, + "p": { "k": [ 332.05, 237.932, 0 ] }, + "a": { "k": [ 332.05, 237.932, 0 ] }, + "s": { "k": [ 100, 100, 100 ] } + }, + "ao": 0, + "shapes": [ + { + "ty": "gr", + "it": [ + { + "ind": 0, + "ty": "sh", + "ks": { + "k": { + "i": [ + [ 0, 0 ], + [ 0, 0 ] + ], + "o": [ + [ 0, 0 ], + [ 0, 0 ] + ], + "v": [ + [ -26.67, -0.283 ], + [ 99.171, 0.066 ] + ], + "c": false + } + }, + "nm": "Path 1" + }, + { + "ty": "tm", + "s": { + "k": [ + { + "i": { + "x": [ 0.12 ], + "y": [ 0.12 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p12_0p12_0p167_0p167" ], + "t": 86, + "s": [ 0 ], + "e": [ 0 ] + }, + { "t": 95 } + ], + "ix": 1 + }, + "e": { + "k": [ + { + "i": { + "x": [ 0.12 ], + "y": [ 1 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p12_1_0p167_0p167" ], + "t": 86, + "s": [ 0 ], + "e": [ 43 ] + }, + { "t": 95 } + ], + "ix": 2 + }, + "o": { + "k": 0, + "ix": 3 + }, + "m": 1, + "ix": 2, + "nm": "Trim Paths 1" + }, + { + "ty": "st", + "fillEnabled": true, + "c": { "k": [ 1, 1, 1, 1 ] }, + "o": { "k": 100 }, + "w": { "k": 9.562 }, + "lc": 2, + "lj": 1, + "ml": 10, + "nm": "Stroke 1" + }, + { + "ty": "tr", + "p": { + "k": [ 331.664, 238.14 ], + "ix": 2 + }, + "a": { + "k": [ 0, 0 ], + "ix": 1 + }, + "s": { + "k": [ 100, 100 ], + "ix": 3 + }, + "r": { + "k": 0, + "ix": 6 + }, + "o": { + "k": 100, + "ix": 7 + }, + "sk": { + "k": 0, + "ix": 4 + }, + "sa": { + "k": 0, + "ix": 5 + }, + "nm": "Transform" + } + ], + "nm": "Group 3" + } + ], + "ip": 86, + "op": 179, + "st": 86, + "bm": 0, + "sr": 1 + }, + { + "ddd": 0, + "ind": 40, + "ty": 4, + "nm": "E2-Y", + "parent": 0, + "ks": { + "o": { "k": 100 }, + "r": { "k": 0 }, + "p": { + "k": [ + { + "i": { + "x": 0.12, + "y": 1 + }, + "o": { + "x": 0.167, + "y": 0.167 + }, + "n": "0p12_1_0p167_0p167", + "t": 83, + "s": [ 109.092, 33.61, 0 ], + "e": [ 121.092, 33.61, 0 ], + "to": [ 0, 0, 0 ], + "ti": [ 0, 0, 0 ] + }, + { + "i": { + "x": 0.12, + "y": 0.12 + }, + "o": { + "x": 0.167, + "y": 0.167 + }, + "n": "0p12_0p12_0p167_0p167", + "t": 92, + "s": [ 121.092, 33.61, 0 ], + "e": [ 121.092, 33.61, 0 ], + "to": [ 0, 0, 0 ], + "ti": [ 0, 0, 0 ] + }, + { "t": 96 } + ] + }, + "a": { "k": [ 332.05, 237.932, 0 ] }, + "s": { "k": [ 100, 100, 100 ] } + }, + "ao": 0, + "shapes": [ + { + "ty": "gr", + "it": [ + { + "ind": 0, + "ty": "sh", + "ks": { + "k": { + "i": [ + [ 0, 0 ], + [ 0, 0 ] + ], + "o": [ + [ 0, 0 ], + [ 0, 0 ] + ], + "v": [ + [ -26.67, -0.283 ], + [ 99.171, 0.066 ] + ], + "c": false + } + }, + "nm": "Path 1" + }, + { + "ty": "tm", + "s": { + "k": [ + { + "i": { + "x": [ 0.12 ], + "y": [ 0.12 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p12_0p12_0p167_0p167" ], + "t": 83, + "s": [ 0 ], + "e": [ 0 ] + }, + { "t": 92 } + ], + "ix": 1 + }, + "e": { + "k": [ + { + "i": { + "x": [ 0.12 ], + "y": [ 1 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p12_1_0p167_0p167" ], + "t": 83, + "s": [ 0 ], + "e": [ 43 ] + }, + { "t": 92 } + ], + "ix": 2 + }, + "o": { + "k": 0, + "ix": 3 + }, + "m": 1, + "ix": 2, + "nm": "Trim Paths 1" + }, + { + "ty": "st", + "fillEnabled": true, + "c": { "k": [ 0, 0.48, 0.53, 1 ] }, + "o": { "k": 100 }, + "w": { "k": 8.4 }, + "lc": 2, + "lj": 1, + "ml": 10, + "nm": "Stroke 1" + }, + { + "ty": "tr", + "p": { + "k": [ 331.664, 238.14 ], + "ix": 2 + }, + "a": { + "k": [ 0, 0 ], + "ix": 1 + }, + "s": { + "k": [ 100, 100 ], + "ix": 3 + }, + "r": { + "k": 0, + "ix": 6 + }, + "o": { + "k": 100, + "ix": 7 + }, + "sk": { + "k": 0, + "ix": 4 + }, + "sa": { + "k": 0, + "ix": 5 + }, + "nm": "Transform" + } + ], + "nm": "Group 3" + } + ], + "ip": 83, + "op": 96, + "st": 83, + "bm": 0, + "sr": 1 + }, + { + "ddd": 0, + "ind": 41, + "ty": 4, + "nm": "I-B", + "parent": 42, + "ks": { + "o": { "k": 100 }, + "r": { "k": 0 }, + "p": { "k": [ 303.802, 282.182, 0 ] }, + "a": { "k": [ 303.802, 282.182, 0 ] }, + "s": { "k": [ 100, 100, 100 ] } + }, + "ao": 0, + "shapes": [ + { + "ty": "gr", + "it": [ + { + "ind": 0, + "ty": "sh", + "ks": { + "k": { + "i": [ + [ 0, 0 ], + [ 0, 0 ] + ], + "o": [ + [ 0, 0 ], + [ 0, 0 ] + ], + "v": [ + [ 0.859, -21.143 ], + [ -4.359, 70.392 ] + ], + "c": false + } + }, + "nm": "Path 1" + }, + { + "ty": "tm", + "s": { + "k": [ + { + "i": { + "x": [ 0.12 ], + "y": [ 0.12 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p12_0p12_0p167_0p167" ], + "t": 81, + "s": [ 0 ], + "e": [ 0 ] + }, + { "t": 91 } + ], + "ix": 1 + }, + "e": { + "k": [ + { + "i": { + "x": [ 0.12 ], + "y": [ 1 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p12_1_0p167_0p167" ], + "t": 81, + "s": [ 0 ], + "e": [ 45.7 ] + }, + { "t": 91 } + ], + "ix": 2 + }, + "o": { + "k": 0, + "ix": 3 + }, + "m": 1, + "ix": 2, + "nm": "Trim Paths 1" + }, + { + "ty": "st", + "fillEnabled": true, + "c": { "k": [ 1, 1, 1, 1 ] }, + "o": { "k": 100 }, + "w": { "k": 9.194 }, + "lc": 3, + "lj": 1, + "ml": 10, + "nm": "Stroke 1" + }, + { + "ty": "tr", + "p": { + "k": [ 304.135, 282.409 ], + "ix": 2 + }, + "a": { + "k": [ 0, 0 ], + "ix": 1 + }, + "s": { + "k": [ 100, 100 ], + "ix": 3 + }, + "r": { + "k": 0, + "ix": 6 + }, + "o": { + "k": 100, + "ix": 7 + }, + "sk": { + "k": 0, + "ix": 4 + }, + "sa": { + "k": 0, + "ix": 5 + }, + "nm": "Transform" + } + ], + "nm": "Group 6" + } + ], + "ip": 81, + "op": 179, + "st": 18, + "bm": 0, + "sr": 1 + }, + { + "ddd": 0, + "ind": 42, + "ty": 4, + "nm": "I-Y", + "parent": 0, + "ks": { + "o": { "k": 100 }, + "r": { "k": 0 }, + "p": { + "k": [ + { + "i": { + "x": 0.12, + "y": 1 + }, + "o": { + "x": 0.167, + "y": 0.167 + }, + "n": "0p12_1_0p167_0p167", + "t": 78, + "s": [ 93.594, 62.861, 0 ], + "e": [ 92.626, 82.829, 0 ], + "to": [ 0, 0, 0 ], + "ti": [ 0, 0, 0 ] + }, + { + "i": { + "x": 0.12, + "y": 1 + }, + "o": { + "x": 0.167, + "y": 0 + }, + "n": "0p12_1_0p167_0", + "t": 88, + "s": [ 92.626, 82.829, 0 ], + "e": [ 92.844, 77.861, 0 ], + "to": [ 0, 0, 0 ], + "ti": [ 0, 0, 0 ] + }, + { "t": 92 } + ] + }, + "a": { "k": [ 303.802, 282.182, 0 ] }, + "s": { "k": [ 100, 100, 100 ] } + }, + "ao": 0, + "shapes": [ + { + "ty": "gr", + "it": [ + { + "ind": 0, + "ty": "sh", + "ks": { + "k": { + "i": [ + [ 0, 0 ], + [ 0, 0 ] + ], + "o": [ + [ 0, 0 ], + [ 0, 0 ] + ], + "v": [ + [ 0.859, -21.143 ], + [ -4.359, 70.392 ] + ], + "c": false + } + }, + "nm": "Path 1" + }, + { + "ty": "tm", + "s": { + "k": [ + { + "i": { + "x": [ 0.12 ], + "y": [ 0.12 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p12_0p12_0p167_0p167" ], + "t": 78, + "s": [ 0 ], + "e": [ 0 ] + }, + { "t": 88 } + ], + "ix": 1 + }, + "e": { + "k": [ + { + "i": { + "x": [ 0.12 ], + "y": [ 1 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p12_1_0p167_0p167" ], + "t": 78, + "s": [ 0 ], + "e": [ 45.7 ] + }, + { "t": 88 } + ], + "ix": 2 + }, + "o": { + "k": 0, + "ix": 3 + }, + "m": 1, + "ix": 2, + "nm": "Trim Paths 1" + }, + { + "ty": "st", + "fillEnabled": true, + "c": { "k": [ 0, 0.48, 0.53, 1 ] }, + "o": { "k": 100 }, + "w": { "k": 8.4 }, + "lc": 3, + "lj": 1, + "ml": 10, + "nm": "Stroke 1" + }, + { + "ty": "tr", + "p": { + "k": [ 304.135, 282.409 ], + "ix": 2 + }, + "a": { + "k": [ 0, 0 ], + "ix": 1 + }, + "s": { + "k": [ 100, 100 ], + "ix": 3 + }, + "r": { + "k": 0, + "ix": 6 + }, + "o": { + "k": 100, + "ix": 7 + }, + "sk": { + "k": 0, + "ix": 4 + }, + "sa": { + "k": 0, + "ix": 5 + }, + "nm": "Transform" + } + ], + "nm": "Group 6" + } + ], + "ip": 78, + "op": 93, + "st": 15, + "bm": 0, + "sr": 1 + }, + { + "ddd": 0, + "ind": 43, + "ty": 4, + "nm": "E3-B", + "parent": 44, + "ks": { + "o": { "k": 100 }, + "r": { "k": 0 }, + "p": { "k": [ 345.189, 261.801, 0 ] }, + "a": { "k": [ 345.124, 261.801, 0 ] }, + "s": { "k": [ 100, 100, 100 ] } + }, + "ao": 0, + "shapes": [ + { + "ty": "gr", + "it": [ + { + "ind": 0, + "ty": "sh", + "ks": { + "k": { + "i": [ + [ 0, 0 ], + [ 0, 0 ] + ], + "o": [ + [ 0, 0 ], + [ 0, 0 ] + ], + "v": [ + [ -13.664, -0.145 ], + [ 75.663, 0.29 ] + ], + "c": false + } + }, + "nm": "Path 1" + }, + { + "ty": "tm", + "s": { + "k": [ + { + "i": { + "x": [ 0.833 ], + "y": [ 0.833 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p833_0p833_0p167_0p167" ], + "t": 92, + "s": [ 0 ], + "e": [ 0 ] + }, + { "t": 97 } + ], + "ix": 1 + }, + "e": { + "k": [ + { + "i": { + "x": [ 0.833 ], + "y": [ 0.833 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p833_0p833_0p167_0p167" ], + "t": 92, + "s": [ 0 ], + "e": [ 31.6 ] + }, + { "t": 97 } + ], + "ix": 2 + }, + "o": { + "k": 0, + "ix": 3 + }, + "m": 1, + "ix": 2, + "nm": "Trim Paths 2" + }, + { + "ty": "st", + "fillEnabled": true, + "c": { "k": [ 1, 1, 1, 1 ] }, + "o": { "k": 100 }, + "w": { "k": 9.562 }, + "lc": 2, + "lj": 1, + "ml": 10, + "nm": "Stroke 1" + }, + { + "ty": "tr", + "p": { + "k": [ 344.674, 261.877 ], + "ix": 2 + }, + "a": { + "k": [ 0, 0 ], + "ix": 1 + }, + "s": { + "k": [ 100, 100 ], + "ix": 3 + }, + "r": { + "k": 0, + "ix": 6 + }, + "o": { + "k": 100, + "ix": 7 + }, + "sk": { + "k": 0, + "ix": 4 + }, + "sa": { + "k": 0, + "ix": 5 + }, + "nm": "Transform" + } + ], + "nm": "Group 1" + } + ], + "ip": 92, + "op": 179, + "st": 29, + "bm": 0, + "sr": 1 + }, + { + "ddd": 0, + "ind": 44, + "ty": 4, + "nm": "E3-Y", + "parent": 0, + "ks": { + "o": { "k": 100 }, + "r": { "k": 0 }, + "p": { + "k": [ + { + "i": { + "x": 0.667, + "y": 1 + }, + "o": { + "x": 0.167, + "y": 0.167 + }, + "n": "0p667_1_0p167_0p167", + "t": 84, + "s": [ 119.167, 57.479, 0 ], + "e": [ 137.167, 57.479, 0 ], + "to": [ 0, 0, 0 ], + "ti": [ 0, 0, 0 ] + }, + { + "i": { + "x": 0.667, + "y": 1 + }, + "o": { + "x": 0.167, + "y": 0 + }, + "n": "0p667_1_0p167_0", + "t": 92, + "s": [ 137.167, 57.479, 0 ], + "e": [ 134.167, 57.479, 0 ], + "to": [ 0, 0, 0 ], + "ti": [ 0, 0, 0 ] + }, + { "t": 96 } + ] + }, + "a": { "k": [ 345.124, 261.801, 0 ] }, + "s": { "k": [ 100, 100, 100 ] } + }, + "ao": 0, + "shapes": [ + { + "ty": "gr", + "it": [ + { + "ind": 0, + "ty": "sh", + "ks": { + "k": { + "i": [ + [ 0, 0 ], + [ 0, 0 ] + ], + "o": [ + [ 0, 0 ], + [ 0, 0 ] + ], + "v": [ + [ -13.664, -0.145 ], + [ 75.663, 0.29 ] + ], + "c": false + } + }, + "nm": "Path 1" + }, + { + "ty": "tm", + "s": { + "k": [ + { + "i": { + "x": [ 0.833 ], + "y": [ 0.833 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p833_0p833_0p167_0p167" ], + "t": 84, + "s": [ 0 ], + "e": [ 0 ] + }, + { "t": 92 } + ], + "ix": 1 + }, + "e": { + "k": [ + { + "i": { + "x": [ 0.833 ], + "y": [ 0.833 ] + }, + "o": { + "x": [ 0.167 ], + "y": [ 0.167 ] + }, + "n": [ "0p833_0p833_0p167_0p167" ], + "t": 84, + "s": [ 0 ], + "e": [ 31.6 ] + }, + { "t": 92 } + ], + "ix": 2 + }, + "o": { + "k": 0, + "ix": 3 + }, + "m": 1, + "ix": 2, + "nm": "Trim Paths 2" + }, + { + "ty": "st", + "fillEnabled": true, + "c": { "k": [ 0, 0.48, 0.53, 1 ] }, + "o": { "k": 100 }, + "w": { "k": 9.562 }, + "lc": 2, + "lj": 1, + "ml": 10, + "nm": "Stroke 1" + }, + { + "ty": "tr", + "p": { + "k": [ 344.674, 261.877 ], + "ix": 2 + }, + "a": { + "k": [ 0, 0 ], + "ix": 1 + }, + "s": { + "k": [ 100, 100 ], + "ix": 3 + }, + "r": { + "k": 0, + "ix": 6 + }, + "o": { + "k": 100, + "ix": 7 + }, + "sk": { + "k": 0, + "ix": 4 + }, + "sa": { + "k": 0, + "ix": 5 + }, + "nm": "Transform" + } + ], + "nm": "Group 1" + } + ], + "ip": 84, + "op": 102, + "st": 21, + "bm": 0, + "sr": 1 + }, + { + "ddd": 0, + "ind": 45, + "ty": 4, + "nm": "Dot-Y", + "parent": 46, + "ks": { + "o": { "k": 100 }, + "r": { "k": 0 }, + "p": { + "k": [ + { + "i": { + "x": 0, + "y": 0.812 + }, + "o": { + "x": 0, + "y": 0 + }, + "n": "0_0p812_0_0", + "t": 96, + "s": [ 43.263, 59.75, 0 ], + "e": [ 62.513, 59.75, 0 ], + "to": [ 0, 0, 0 ], + "ti": [ 0, 0, 0 ] + }, + { + "i": { + "x": 0.708, + "y": 1 + }, + "o": { + "x": 0.39, + "y": 0.707 + }, + "n": "0p708_1_0p39_0p707", + "t": 108, + "s": [ 62.513, 59.75, 0 ], + "e": [ 63.763, 59.75, 0 ], + "to": [ 0, 0, 0 ], + "ti": [ 0, 0, 0 ] + }, + { "t": 115 } + ] + }, + "a": { "k": [ 196.791, 266.504, 0 ] }, + "s": { "k": [ 100, 100, 100 ] } + }, + "ao": 0, + "shapes": [ + { + "ty": "gr", + "it": [ + { + "d": 1, + "ty": "el", + "s": { "k": [ 9.2, 9.2 ] }, + "p": { "k": [ 0.8, -0.5 ] }, + "nm": "Ellipse Path 1" + }, + { + "ty": "fl", + "fillEnabled": true, + "c": { "k": [ 1, 1, 1, 1 ] }, + "o": { "k": 100 }, + "nm": "Fill 1" + }, + { + "ty": "tr", + "p": { + "k": [ 196, 267 ], + "ix": 2 + }, + "a": { + "k": [ 0, 0 ], + "ix": 1 + }, + "s": { + "k": [ 100, 100 ], + "ix": 3 + }, + "r": { + "k": 0, + "ix": 6 + }, + "o": { + "k": 100, + "ix": 7 + }, + "sk": { + "k": 0, + "ix": 4 + }, + "sa": { + "k": 0, + "ix": 5 + }, + "nm": "Transform" + } + ], + "nm": "Ellipse 1" + } + ], + "ip": 96, + "op": 182, + "st": 65, + "bm": 0, + "sr": 1 + }, + { + "ddd": 0, + "ind": 46, + "ty": 1, + "nm": "Bncr", + "parent": 0, + "ks": { + "o": { "k": 0 }, + "r": { "k": 0 }, + "p": { + "k": [ + { + "i": { + "x": 0.18, + "y": 1 + }, + "o": { + "x": 0.167, + "y": 0.167 + }, + "n": "0p18_1_0p167_0p167", + "t": 96, + "s": [ 164.782, 57.473, 0 ], + "e": [ 164.782, 55.473, 0 ], + "to": [ 0, 0, 0 ], + "ti": [ 0, 0, 0 ] + }, + { + "i": { + "x": 0.833, + "y": 0.833 + }, + "o": { + "x": 0.82, + "y": 0 + }, + "n": "0p833_0p833_0p82_0", + "t": 99, + "s": [ 164.782, 55.473, 0 ], + "e": [ 164.782, 57.473, 0 ], + "to": [ 0, 0, 0 ], + "ti": [ 0, 0, 0 ] + }, + { + "i": { + "x": 0.18, + "y": 1 + }, + "o": { + "x": 0.167, + "y": 0.167 + }, + "n": "0p18_1_0p167_0p167", + "t": 102, + "s": [ 164.782, 57.473, 0 ], + "e": [ 164.782, 56.909, 0 ], + "to": [ 0, 0, 0 ], + "ti": [ 0, 0, 0 ] + }, + { + "i": { + "x": 0.833, + "y": 0.833 + }, + "o": { + "x": 0.82, + "y": 0 + }, + "n": "0p833_0p833_0p82_0", + "t": 105, + "s": [ 164.782, 56.909, 0 ], + "e": [ 164.782, 57.473, 0 ], + "to": [ 0, 0, 0 ], + "ti": [ 0, 0, 0 ] + }, + { "t": 108 } + ] + }, + "a": { "k": [ 60, 60, 0 ] }, + "s": { "k": [ 100, 100, 100 ] } + }, + "ao": 0, + "sw": 120, + "sh": 120, + "sc": "#ffffff", + "ip": 96, + "op": 182, + "st": 15, + "bm": 0, + "sr": 1 + }, + { + "ddd": 0, + "ind": 47, + "ty": 4, + "nm": "BG", + "ks": { + "o": { "k": 100 }, + "r": { "k": 0 }, + "p": { "k": [ 187.5, 333.5, 0 ] }, + "a": { "k": [ 0, 0, 0 ] }, + "s": { "k": [ 100, 100, 100 ] } + }, + "ao": 0, + "shapes": [ + { + "ty": "gr", + "it": [ + { + "ty": "rc", + "d": 1, + "s": { "k": [ 375, 667 ] }, + "p": { "k": [ 0, 0 ] }, + "r": { "k": 0 }, + "nm": "Rectangle Path 1" + }, + { + "ty": "fl", + "fillEnabled": true, + "c": { "k": [ 0, 0.82, 0.76, 1 ] }, + "o": { "k": 100 }, + "nm": "Fill 1" + }, + { + "ty": "tr", + "p": { + "k": [ 0, 0 ], + "ix": 2 + }, + "a": { + "k": [ 0, 0 ], + "ix": 1 + }, + "s": { + "k": [ 100, 100 ], + "ix": 3 + }, + "r": { + "k": 0, + "ix": 6 + }, + "o": { + "k": 100, + "ix": 7 + }, + "sk": { + "k": 0, + "ix": 4 + }, + "sa": { + "k": 0, + "ix": 5 + }, + "nm": "Transform" + } + ], + "nm": "Rectangle 1" + } + ], + "ip": 0, + "op": 179, + "st": 0, + "bm": 0, + "sr": 1 + } + ], + "v": "4.4.26", + "ddd": 0, + "ip": 0, + "op": 179, + "fr": 30, + "w": 375, + "h": 667 +} \ No newline at end of file diff --git a/tests/Tests/Skottie/AnimationTest.cs b/tests/Tests/Skottie/AnimationTest.cs new file mode 100644 index 00000000000..f7bbd24ae5a --- /dev/null +++ b/tests/Tests/Skottie/AnimationTest.cs @@ -0,0 +1,20 @@ +using System; +using System.Collections.Generic; +using Xunit; +using System.IO; + +namespace SkiaSharp.Tests +{ + public class AnimationTest : SKTest + { + [Trait(CategoryKey, GpuCategory)] + [SkippableFact] + public void When_Default_Make() + { + var path = Path.Combine(PathToImages, "LottieLogo1.json"); + + var animation = SkiaSharp.Skottie.Animation.Make(File.ReadAllText(path)); + Assert.NotEqual(IntPtr.Zero, animation?.Handle); + } + } +} From 3d595ef333cf400c7741975a5a54247322edbc24 Mon Sep 17 00:00:00 2001 From: Jerome Laban Date: Thu, 31 Mar 2022 15:26:12 -0400 Subject: [PATCH 02/11] chore: Adjust skottie SKStream support --- samples/Gallery/Shared/Samples/SkottieSample.cs | 4 ++-- tests/Tests/Skottie/AnimationTest.cs | 12 ++++++++++++ 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/samples/Gallery/Shared/Samples/SkottieSample.cs b/samples/Gallery/Shared/Samples/SkottieSample.cs index 844204f9bfd..df1d7b01686 100644 --- a/samples/Gallery/Shared/Samples/SkottieSample.cs +++ b/samples/Gallery/Shared/Samples/SkottieSample.cs @@ -18,9 +18,9 @@ public class SkottieSample : AnimatedSampleBase [Preserve] public SkottieSample() { - using var reader = new StreamReader(SampleMedia.Images.LottieLogo); + using var fileStream = new SKManagedStream(SampleMedia.Images.LottieLogo); - _animation = SkiaSharp.Skottie.Animation.Make(reader.ReadToEnd()); + _animation = SkiaSharp.Skottie.Animation.Make(fileStream); _animation.Seek(0, null); Console.WriteLine($"SkottieSample(): Version:{_animation.Version} Duration:{_animation.Duration} Fps:{_animation.Fps} InPoint:{_animation.InPoint} OutPoint:{_animation.OutPoint}"); diff --git a/tests/Tests/Skottie/AnimationTest.cs b/tests/Tests/Skottie/AnimationTest.cs index f7bbd24ae5a..3c1681dbba5 100644 --- a/tests/Tests/Skottie/AnimationTest.cs +++ b/tests/Tests/Skottie/AnimationTest.cs @@ -16,5 +16,17 @@ public void When_Default_Make() var animation = SkiaSharp.Skottie.Animation.Make(File.ReadAllText(path)); Assert.NotEqual(IntPtr.Zero, animation?.Handle); } + + [Trait(CategoryKey, GpuCategory)] + [SkippableFact] + public void When_Default_Make_From_Stream() + { + var path = Path.Combine(PathToImages, "LottieLogo1.json"); + + using var fileStream = File.OpenRead(path); + using var managedStream = new SKManagedStream(fileStream); + var animation = SkiaSharp.Skottie.Animation.Make(managedStream); + Assert.NotEqual(IntPtr.Zero, animation?.Handle); + } } } From ce7c8be50dc571c546cd7f67a76bcec751e72e66 Mon Sep 17 00:00:00 2001 From: Jerome Laban Date: Thu, 31 Mar 2022 22:22:57 -0400 Subject: [PATCH 03/11] ci: Adjust apple targets --- native/ios/build.cake | 2 +- native/macos/build.cake | 2 +- native/tizen/build.cake | 2 +- native/tvos/build.cake | 2 +- native/watchos/build.cake | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/native/ios/build.cake b/native/ios/build.cake index 14e155d790e..8a3f3e51bfc 100644 --- a/native/ios/build.cake +++ b/native/ios/build.cake @@ -29,7 +29,7 @@ Task("libSkiaSharp") { if (Skip(arch)) return; - GnNinja($"{VARIANT}/{arch}", "skia", + GnNinja($"{VARIANT}/{arch}", "skia modules/skottie", $"target_cpu='{skiaArch}' " + $"target_os='{VARIANT}' " + $"skia_use_icu=false " + diff --git a/native/macos/build.cake b/native/macos/build.cake index a76e31238d3..d52bb74cac6 100644 --- a/native/macos/build.cake +++ b/native/macos/build.cake @@ -22,7 +22,7 @@ Task("libSkiaSharp") ? "11.0" : "10.8"; - GnNinja($"macos/{arch}", "skia", + GnNinja($"macos/{arch}", "skia modules/skottie", $"target_os='mac' " + $"target_cpu='{skiaArch}' " + $"min_macos_version='{minVersion}' " + diff --git a/native/tizen/build.cake b/native/tizen/build.cake index a35df68a208..2b0078e337d 100644 --- a/native/tizen/build.cake +++ b/native/tizen/build.cake @@ -21,7 +21,7 @@ Task("libSkiaSharp") { if (Skip(arch)) return; - GnNinja($"tizen/{arch}", "skia", + GnNinja($"tizen/{arch}", "skia modules/skottie", $"target_os='tizen' " + $"target_cpu='{skiaArch}' " + $"skia_enable_gpu=true " + diff --git a/native/tvos/build.cake b/native/tvos/build.cake index e04d62cee15..92beaae768e 100644 --- a/native/tvos/build.cake +++ b/native/tvos/build.cake @@ -18,7 +18,7 @@ Task("libSkiaSharp") { if (Skip(arch)) return; - GnNinja($"tvos/{arch}", "skia", + GnNinja($"tvos/{arch}", "skia modules/skottie", $"target_os='tvos' " + $"target_cpu='{skiaArch}' " + $"skia_use_icu=false " + diff --git a/native/watchos/build.cake b/native/watchos/build.cake index 3c8e7791fc6..645bd5f2724 100644 --- a/native/watchos/build.cake +++ b/native/watchos/build.cake @@ -19,7 +19,7 @@ Task("libSkiaSharp") { if (Skip(arch)) return; - GnNinja($"watchos/{arch}", "skia", + GnNinja($"watchos/{arch}", "skia modules/skottie", $"target_os='watchos' " + $"target_cpu='{skiaArch}' " + $"skia_enable_gpu=false " + From 6165156334c965df34fa84c678255eabed8853b3 Mon Sep 17 00:00:00 2001 From: Jerome Laban Date: Mon, 4 Apr 2022 08:03:15 -0400 Subject: [PATCH 04/11] chore: Adjust apple targets --- .../libSkiaSharp.xcodeproj/project.pbxproj | 8 ++++++++ .../libSkiaSharp.xcodeproj/project.pbxproj | 16 ++++++++++++++-- .../libSkiaSharp.xcodeproj/project.pbxproj | 8 ++++++++ .../libSkiaSharp.xcodeproj/project.pbxproj | 8 ++++++++ 4 files changed, 38 insertions(+), 2 deletions(-) diff --git a/native/ios/libSkiaSharp/libSkiaSharp.xcodeproj/project.pbxproj b/native/ios/libSkiaSharp/libSkiaSharp.xcodeproj/project.pbxproj index a4a78ec6dae..77da8637822 100644 --- a/native/ios/libSkiaSharp/libSkiaSharp.xcodeproj/project.pbxproj +++ b/native/ios/libSkiaSharp/libSkiaSharp.xcodeproj/project.pbxproj @@ -418,6 +418,10 @@ OTHER_LDFLAGS = ( "-all_load", "-lskia", + "-lskottie", + "-lsksg", + "-lskshaper", + "-lskresources", ); PRODUCT_BUNDLE_IDENTIFIER = "com.microsoft.libSkiaSharp"; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -444,6 +448,10 @@ OTHER_LDFLAGS = ( "-all_load", "-lskia", + "-lskottie", + "-lsksg", + "-lskshaper", + "-lskresources", ); PRODUCT_BUNDLE_IDENTIFIER = "com.microsoft.libSkiaSharp"; PRODUCT_NAME = "$(TARGET_NAME)"; diff --git a/native/macos/libSkiaSharp/libSkiaSharp.xcodeproj/project.pbxproj b/native/macos/libSkiaSharp/libSkiaSharp.xcodeproj/project.pbxproj index 03aa89d9032..6214ce994b4 100644 --- a/native/macos/libSkiaSharp/libSkiaSharp.xcodeproj/project.pbxproj +++ b/native/macos/libSkiaSharp/libSkiaSharp.xcodeproj/project.pbxproj @@ -379,7 +379,13 @@ INSTALL_PATH = "@rpath"; LIBRARY_SEARCH_PATHS = "../../../externals/skia/out/macos/$(ARCHS)"; MACOSX_DEPLOYMENT_TARGET = 10.8; - OTHER_LDFLAGS = "-lskia"; + OTHER_LDFLAGS = ( + "-lskia", + "-lskottie", + "-lsksg", + "-lskshaper", + "-lskresources", + ); PRODUCT_NAME = "$(TARGET_NAME)"; }; name = Debug; @@ -396,7 +402,13 @@ INSTALL_PATH = "@rpath"; LIBRARY_SEARCH_PATHS = "../../../externals/skia/out/macos/$(ARCHS)"; MACOSX_DEPLOYMENT_TARGET = 10.8; - OTHER_LDFLAGS = "-lskia"; + OTHER_LDFLAGS = ( + "-lskia", + "-lskottie", + "-lsksg", + "-lskshaper", + "-lskresources", + ); PRODUCT_NAME = "$(TARGET_NAME)"; }; name = Release; diff --git a/native/tvos/libSkiaSharp/libSkiaSharp.xcodeproj/project.pbxproj b/native/tvos/libSkiaSharp/libSkiaSharp.xcodeproj/project.pbxproj index fa392c3105a..e88f4013523 100644 --- a/native/tvos/libSkiaSharp/libSkiaSharp.xcodeproj/project.pbxproj +++ b/native/tvos/libSkiaSharp/libSkiaSharp.xcodeproj/project.pbxproj @@ -408,6 +408,10 @@ OTHER_LDFLAGS = ( "-all_load", "-lskia", + "-lskottie", + "-lsksg", + "-lskshaper", + "-lskresources", ); PRODUCT_BUNDLE_IDENTIFIER = "com.microsoft.libSkiaSharp"; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -432,6 +436,10 @@ OTHER_LDFLAGS = ( "-all_load", "-lskia", + "-lskottie", + "-lsksg", + "-lskshaper", + "-lskresources", ); PRODUCT_BUNDLE_IDENTIFIER = "com.microsoft.libSkiaSharp"; PRODUCT_NAME = "$(TARGET_NAME)"; diff --git a/native/watchos/libSkiaSharp/libSkiaSharp.xcodeproj/project.pbxproj b/native/watchos/libSkiaSharp/libSkiaSharp.xcodeproj/project.pbxproj index 84d276660aa..1663699721d 100644 --- a/native/watchos/libSkiaSharp/libSkiaSharp.xcodeproj/project.pbxproj +++ b/native/watchos/libSkiaSharp/libSkiaSharp.xcodeproj/project.pbxproj @@ -409,6 +409,10 @@ OTHER_LDFLAGS = ( "-all_load", "-lskia", + "-lskottie", + "-lsksg", + "-lskshaper", + "-lskresources", ); PRODUCT_BUNDLE_IDENTIFIER = "xamarin.libskia-watchos"; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -434,6 +438,10 @@ OTHER_LDFLAGS = ( "-all_load", "-lskia", + "-lskottie", + "-lsksg", + "-lskshaper", + "-lskresources", ); PRODUCT_BUNDLE_IDENTIFIER = "xamarin.libskia-watchos"; PRODUCT_NAME = "$(TARGET_NAME)"; From 749011d596262800ab9e64ee6dac0eec2a4acd3b Mon Sep 17 00:00:00 2001 From: Jerome Laban Date: Mon, 4 Apr 2022 08:03:26 -0400 Subject: [PATCH 05/11] chore: Adjust tizen targets --- native/tizen/libSkiaSharp/project_def.prop | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/native/tizen/libSkiaSharp/project_def.prop b/native/tizen/libSkiaSharp/project_def.prop index 997c63a9be6..8b625338912 100644 --- a/native/tizen/libSkiaSharp/project_def.prop +++ b/native/tizen/libSkiaSharp/project_def.prop @@ -5,7 +5,7 @@ skia_root = $(abspath ../../../externals/skia) USER_LIB_DIRS = $(skia_root)/out/tizen/$(BUILD_ARCH) -USER_LIBS = skia +USER_LIBS = skia skresources skottie sksg skshaper USER_LINK_OPTS = -Wl,--gc-sections From 6d27da9755395abdd570bca6e739c4ad087fe637 Mon Sep 17 00:00:00 2001 From: Jerome Laban Date: Sat, 28 May 2022 21:34:12 -0400 Subject: [PATCH 06/11] chore: Adjust APIs, add tests, align with new memory management functions --- .../SceneGraph/InvalidationController.cs | 54 +++ binding/Binding/SkiaApi.generated.cs | 358 ++++++++++++++++++ binding/Binding/Skottie/Animation.cs | 71 ++-- .../Binding/Skottie/InvalidationController.cs | 55 --- binding/Binding/Skottie/SkiaApi.cs | 110 ------ binding/libSkiaSharp.json | 16 +- tests/Tests/Skottie/AnimationTest.cs | 162 +++++++- 7 files changed, 622 insertions(+), 204 deletions(-) create mode 100644 binding/Binding/SceneGraph/InvalidationController.cs delete mode 100644 binding/Binding/Skottie/InvalidationController.cs delete mode 100644 binding/Binding/Skottie/SkiaApi.cs diff --git a/binding/Binding/SceneGraph/InvalidationController.cs b/binding/Binding/SceneGraph/InvalidationController.cs new file mode 100644 index 00000000000..b399aafe709 --- /dev/null +++ b/binding/Binding/SceneGraph/InvalidationController.cs @@ -0,0 +1,54 @@ +using System; +using System.ComponentModel; +using System.IO; +using System.Runtime.InteropServices; + +namespace SkiaSharp.SceneGraph +{ + public unsafe class InvalidationController : SKObject, ISKSkipObjectRegistration + { + public InvalidationController () + : this (SkiaApi.sksg_invalidation_controller_new (), true) + { + } + + internal InvalidationController (IntPtr handle, bool owns) + : base (handle, owns) + { + } + + protected override void DisposeNative () + { + SkiaApi.sksg_invalidation_controller_delete (Handle); + } + + public unsafe void Invalidate(SKRect rect, SKMatrix matrix) + { + SkiaApi.sksg_invalidation_controller_inval (Handle, &rect, &matrix); + } + + public unsafe SKRect Bounds + { + get { + SKRect rect; + SkiaApi.sksg_invalidation_controller_get_bounds (Handle, &rect); + return rect; + } + } + + public unsafe void Begin () + { + SkiaApi.sksg_invalidation_controller_begin (Handle); + } + + public unsafe void End () + { + SkiaApi.sksg_invalidation_controller_end (Handle); + } + + public unsafe void Reset () + { + SkiaApi.sksg_invalidation_controller_reset (Handle); + } + } +} diff --git a/binding/Binding/SkiaApi.generated.cs b/binding/Binding/SkiaApi.generated.cs index 184bbb120bd..6c5f965f4b6 100644 --- a/binding/Binding/SkiaApi.generated.cs +++ b/binding/Binding/SkiaApi.generated.cs @@ -13003,6 +13003,364 @@ internal static sk_xmlstreamwriter_t sk_xmlstreamwriter_new (sk_wstream_t stream #endregion + #region skottie_animation.h + + // void skottie_animation_delete(skottie_animation_t* instance) + #if !USE_DELEGATES + [DllImport (SKIA, CallingConvention = CallingConvention.Cdecl)] + internal static extern void skottie_animation_delete (skottie_animation_t instance); + #else + private partial class Delegates { + [UnmanagedFunctionPointer (CallingConvention.Cdecl)] + internal delegate void skottie_animation_delete (skottie_animation_t instance); + } + private static Delegates.skottie_animation_delete skottie_animation_delete_delegate; + internal static void skottie_animation_delete (skottie_animation_t instance) => + (skottie_animation_delete_delegate ??= GetSymbol ("skottie_animation_delete")).Invoke (instance); + #endif + + // double skottie_animation_get_duration(skottie_animation_t* instance) + #if !USE_DELEGATES + [DllImport (SKIA, CallingConvention = CallingConvention.Cdecl)] + internal static extern Double skottie_animation_get_duration (skottie_animation_t instance); + #else + private partial class Delegates { + [UnmanagedFunctionPointer (CallingConvention.Cdecl)] + internal delegate Double skottie_animation_get_duration (skottie_animation_t instance); + } + private static Delegates.skottie_animation_get_duration skottie_animation_get_duration_delegate; + internal static Double skottie_animation_get_duration (skottie_animation_t instance) => + (skottie_animation_get_duration_delegate ??= GetSymbol ("skottie_animation_get_duration")).Invoke (instance); + #endif + + // double skottie_animation_get_fps(skottie_animation_t* instance) + #if !USE_DELEGATES + [DllImport (SKIA, CallingConvention = CallingConvention.Cdecl)] + internal static extern Double skottie_animation_get_fps (skottie_animation_t instance); + #else + private partial class Delegates { + [UnmanagedFunctionPointer (CallingConvention.Cdecl)] + internal delegate Double skottie_animation_get_fps (skottie_animation_t instance); + } + private static Delegates.skottie_animation_get_fps skottie_animation_get_fps_delegate; + internal static Double skottie_animation_get_fps (skottie_animation_t instance) => + (skottie_animation_get_fps_delegate ??= GetSymbol ("skottie_animation_get_fps")).Invoke (instance); + #endif + + // double skottie_animation_get_in_point(skottie_animation_t* instance) + #if !USE_DELEGATES + [DllImport (SKIA, CallingConvention = CallingConvention.Cdecl)] + internal static extern Double skottie_animation_get_in_point (skottie_animation_t instance); + #else + private partial class Delegates { + [UnmanagedFunctionPointer (CallingConvention.Cdecl)] + internal delegate Double skottie_animation_get_in_point (skottie_animation_t instance); + } + private static Delegates.skottie_animation_get_in_point skottie_animation_get_in_point_delegate; + internal static Double skottie_animation_get_in_point (skottie_animation_t instance) => + (skottie_animation_get_in_point_delegate ??= GetSymbol ("skottie_animation_get_in_point")).Invoke (instance); + #endif + + // double skottie_animation_get_out_point(skottie_animation_t* instance) + #if !USE_DELEGATES + [DllImport (SKIA, CallingConvention = CallingConvention.Cdecl)] + internal static extern Double skottie_animation_get_out_point (skottie_animation_t instance); + #else + private partial class Delegates { + [UnmanagedFunctionPointer (CallingConvention.Cdecl)] + internal delegate Double skottie_animation_get_out_point (skottie_animation_t instance); + } + private static Delegates.skottie_animation_get_out_point skottie_animation_get_out_point_delegate; + internal static Double skottie_animation_get_out_point (skottie_animation_t instance) => + (skottie_animation_get_out_point_delegate ??= GetSymbol ("skottie_animation_get_out_point")).Invoke (instance); + #endif + + // void skottie_animation_get_size(skottie_animation_t* instance, sk_size_t* size) + #if !USE_DELEGATES + [DllImport (SKIA, CallingConvention = CallingConvention.Cdecl)] + internal static extern void skottie_animation_get_size (skottie_animation_t instance, SKSize* size); + #else + private partial class Delegates { + [UnmanagedFunctionPointer (CallingConvention.Cdecl)] + internal delegate void skottie_animation_get_size (skottie_animation_t instance, SKSize* size); + } + private static Delegates.skottie_animation_get_size skottie_animation_get_size_delegate; + internal static void skottie_animation_get_size (skottie_animation_t instance, SKSize* size) => + (skottie_animation_get_size_delegate ??= GetSymbol ("skottie_animation_get_size")).Invoke (instance, size); + #endif + + // void skottie_animation_get_version(skottie_animation_t* instance, sk_string_t* version) + #if !USE_DELEGATES + [DllImport (SKIA, CallingConvention = CallingConvention.Cdecl)] + internal static extern void skottie_animation_get_version (skottie_animation_t instance, sk_string_t version); + #else + private partial class Delegates { + [UnmanagedFunctionPointer (CallingConvention.Cdecl)] + internal delegate void skottie_animation_get_version (skottie_animation_t instance, sk_string_t version); + } + private static Delegates.skottie_animation_get_version skottie_animation_get_version_delegate; + internal static void skottie_animation_get_version (skottie_animation_t instance, sk_string_t version) => + (skottie_animation_get_version_delegate ??= GetSymbol ("skottie_animation_get_version")).Invoke (instance, version); + #endif + + // void skottie_animation_keepalive() + #if !USE_DELEGATES + [DllImport (SKIA, CallingConvention = CallingConvention.Cdecl)] + internal static extern void skottie_animation_keepalive (); + #else + private partial class Delegates { + [UnmanagedFunctionPointer (CallingConvention.Cdecl)] + internal delegate void skottie_animation_keepalive (); + } + private static Delegates.skottie_animation_keepalive skottie_animation_keepalive_delegate; + internal static void skottie_animation_keepalive () => + (skottie_animation_keepalive_delegate ??= GetSymbol ("skottie_animation_keepalive")).Invoke (); + #endif + + // skottie_animation_t* skottie_animation_make_from_file(const char* path) + #if !USE_DELEGATES + [DllImport (SKIA, CallingConvention = CallingConvention.Cdecl)] + internal static extern skottie_animation_t skottie_animation_make_from_file ([MarshalAs (UnmanagedType.LPStr)] String path); + #else + private partial class Delegates { + [UnmanagedFunctionPointer (CallingConvention.Cdecl)] + internal delegate skottie_animation_t skottie_animation_make_from_file ([MarshalAs (UnmanagedType.LPStr)] String path); + } + private static Delegates.skottie_animation_make_from_file skottie_animation_make_from_file_delegate; + internal static skottie_animation_t skottie_animation_make_from_file ([MarshalAs (UnmanagedType.LPStr)] String path) => + (skottie_animation_make_from_file_delegate ??= GetSymbol ("skottie_animation_make_from_file")).Invoke (path); + #endif + + // skottie_animation_t* skottie_animation_make_from_stream(sk_stream_t* stream) + #if !USE_DELEGATES + [DllImport (SKIA, CallingConvention = CallingConvention.Cdecl)] + internal static extern skottie_animation_t skottie_animation_make_from_stream (sk_stream_t stream); + #else + private partial class Delegates { + [UnmanagedFunctionPointer (CallingConvention.Cdecl)] + internal delegate skottie_animation_t skottie_animation_make_from_stream (sk_stream_t stream); + } + private static Delegates.skottie_animation_make_from_stream skottie_animation_make_from_stream_delegate; + internal static skottie_animation_t skottie_animation_make_from_stream (sk_stream_t stream) => + (skottie_animation_make_from_stream_delegate ??= GetSymbol ("skottie_animation_make_from_stream")).Invoke (stream); + #endif + + // skottie_animation_t* skottie_animation_make_from_string(const char* data, size_t length) + #if !USE_DELEGATES + [DllImport (SKIA, CallingConvention = CallingConvention.Cdecl)] + internal static extern skottie_animation_t skottie_animation_make_from_string ([MarshalAs (UnmanagedType.LPStr)] String data, int length); + #else + private partial class Delegates { + [UnmanagedFunctionPointer (CallingConvention.Cdecl)] + internal delegate skottie_animation_t skottie_animation_make_from_string ([MarshalAs (UnmanagedType.LPStr)] String data, int length); + } + private static Delegates.skottie_animation_make_from_string skottie_animation_make_from_string_delegate; + internal static skottie_animation_t skottie_animation_make_from_string ([MarshalAs (UnmanagedType.LPStr)] String data, int length) => + (skottie_animation_make_from_string_delegate ??= GetSymbol ("skottie_animation_make_from_string")).Invoke (data, length); + #endif + + // void skottie_animation_ref(skottie_animation_t* instance) + #if !USE_DELEGATES + [DllImport (SKIA, CallingConvention = CallingConvention.Cdecl)] + internal static extern void skottie_animation_ref (skottie_animation_t instance); + #else + private partial class Delegates { + [UnmanagedFunctionPointer (CallingConvention.Cdecl)] + internal delegate void skottie_animation_ref (skottie_animation_t instance); + } + private static Delegates.skottie_animation_ref skottie_animation_ref_delegate; + internal static void skottie_animation_ref (skottie_animation_t instance) => + (skottie_animation_ref_delegate ??= GetSymbol ("skottie_animation_ref")).Invoke (instance); + #endif + + // void skottie_animation_render(skottie_animation_t* instance, sk_canvas_t* canvas, sk_rect_t* dst) + #if !USE_DELEGATES + [DllImport (SKIA, CallingConvention = CallingConvention.Cdecl)] + internal static extern void skottie_animation_render (skottie_animation_t instance, sk_canvas_t canvas, SKRect* dst); + #else + private partial class Delegates { + [UnmanagedFunctionPointer (CallingConvention.Cdecl)] + internal delegate void skottie_animation_render (skottie_animation_t instance, sk_canvas_t canvas, SKRect* dst); + } + private static Delegates.skottie_animation_render skottie_animation_render_delegate; + internal static void skottie_animation_render (skottie_animation_t instance, sk_canvas_t canvas, SKRect* dst) => + (skottie_animation_render_delegate ??= GetSymbol ("skottie_animation_render")).Invoke (instance, canvas, dst); + #endif + + // void skottie_animation_render_with_flags(skottie_animation_t* instance, sk_canvas_t* canvas, sk_rect_t* dst, skottie_animation_renderflags_t flags) + #if !USE_DELEGATES + [DllImport (SKIA, CallingConvention = CallingConvention.Cdecl)] + internal static extern void skottie_animation_render_with_flags (skottie_animation_t instance, sk_canvas_t canvas, SKRect* dst, SkottieAnimationRenderflags flags); + #else + private partial class Delegates { + [UnmanagedFunctionPointer (CallingConvention.Cdecl)] + internal delegate void skottie_animation_render_with_flags (skottie_animation_t instance, sk_canvas_t canvas, SKRect* dst, SkottieAnimationRenderflags flags); + } + private static Delegates.skottie_animation_render_with_flags skottie_animation_render_with_flags_delegate; + internal static void skottie_animation_render_with_flags (skottie_animation_t instance, sk_canvas_t canvas, SKRect* dst, SkottieAnimationRenderflags flags) => + (skottie_animation_render_with_flags_delegate ??= GetSymbol ("skottie_animation_render_with_flags")).Invoke (instance, canvas, dst, flags); + #endif + + // void skottie_animation_seek(skottie_animation_t* instance, float t, sksg_invalidation_controller_t* ic) + #if !USE_DELEGATES + [DllImport (SKIA, CallingConvention = CallingConvention.Cdecl)] + internal static extern void skottie_animation_seek (skottie_animation_t instance, Single t, sksg_invalidation_controller_t ic); + #else + private partial class Delegates { + [UnmanagedFunctionPointer (CallingConvention.Cdecl)] + internal delegate void skottie_animation_seek (skottie_animation_t instance, Single t, sksg_invalidation_controller_t ic); + } + private static Delegates.skottie_animation_seek skottie_animation_seek_delegate; + internal static void skottie_animation_seek (skottie_animation_t instance, Single t, sksg_invalidation_controller_t ic) => + (skottie_animation_seek_delegate ??= GetSymbol ("skottie_animation_seek")).Invoke (instance, t, ic); + #endif + + // void skottie_animation_seek_frame(skottie_animation_t* instance, float t, sksg_invalidation_controller_t* ic) + #if !USE_DELEGATES + [DllImport (SKIA, CallingConvention = CallingConvention.Cdecl)] + internal static extern void skottie_animation_seek_frame (skottie_animation_t instance, Single t, sksg_invalidation_controller_t ic); + #else + private partial class Delegates { + [UnmanagedFunctionPointer (CallingConvention.Cdecl)] + internal delegate void skottie_animation_seek_frame (skottie_animation_t instance, Single t, sksg_invalidation_controller_t ic); + } + private static Delegates.skottie_animation_seek_frame skottie_animation_seek_frame_delegate; + internal static void skottie_animation_seek_frame (skottie_animation_t instance, Single t, sksg_invalidation_controller_t ic) => + (skottie_animation_seek_frame_delegate ??= GetSymbol ("skottie_animation_seek_frame")).Invoke (instance, t, ic); + #endif + + // void skottie_animation_seek_frame_time(skottie_animation_t* instance, float t, sksg_invalidation_controller_t* ic) + #if !USE_DELEGATES + [DllImport (SKIA, CallingConvention = CallingConvention.Cdecl)] + internal static extern void skottie_animation_seek_frame_time (skottie_animation_t instance, Single t, sksg_invalidation_controller_t ic); + #else + private partial class Delegates { + [UnmanagedFunctionPointer (CallingConvention.Cdecl)] + internal delegate void skottie_animation_seek_frame_time (skottie_animation_t instance, Single t, sksg_invalidation_controller_t ic); + } + private static Delegates.skottie_animation_seek_frame_time skottie_animation_seek_frame_time_delegate; + internal static void skottie_animation_seek_frame_time (skottie_animation_t instance, Single t, sksg_invalidation_controller_t ic) => + (skottie_animation_seek_frame_time_delegate ??= GetSymbol ("skottie_animation_seek_frame_time")).Invoke (instance, t, ic); + #endif + + // void skottie_animation_unref(skottie_animation_t* instance) + #if !USE_DELEGATES + [DllImport (SKIA, CallingConvention = CallingConvention.Cdecl)] + internal static extern void skottie_animation_unref (skottie_animation_t instance); + #else + private partial class Delegates { + [UnmanagedFunctionPointer (CallingConvention.Cdecl)] + internal delegate void skottie_animation_unref (skottie_animation_t instance); + } + private static Delegates.skottie_animation_unref skottie_animation_unref_delegate; + internal static void skottie_animation_unref (skottie_animation_t instance) => + (skottie_animation_unref_delegate ??= GetSymbol ("skottie_animation_unref")).Invoke (instance); + #endif + + #endregion + + #region sksg_invalidation_controller.h + + // void sksg_invalidation_controller_begin(sksg_invalidation_controller_t* instance) + #if !USE_DELEGATES + [DllImport (SKIA, CallingConvention = CallingConvention.Cdecl)] + internal static extern void sksg_invalidation_controller_begin (sksg_invalidation_controller_t instance); + #else + private partial class Delegates { + [UnmanagedFunctionPointer (CallingConvention.Cdecl)] + internal delegate void sksg_invalidation_controller_begin (sksg_invalidation_controller_t instance); + } + private static Delegates.sksg_invalidation_controller_begin sksg_invalidation_controller_begin_delegate; + internal static void sksg_invalidation_controller_begin (sksg_invalidation_controller_t instance) => + (sksg_invalidation_controller_begin_delegate ??= GetSymbol ("sksg_invalidation_controller_begin")).Invoke (instance); + #endif + + // void sksg_invalidation_controller_delete(sksg_invalidation_controller_t* instance) + #if !USE_DELEGATES + [DllImport (SKIA, CallingConvention = CallingConvention.Cdecl)] + internal static extern void sksg_invalidation_controller_delete (sksg_invalidation_controller_t instance); + #else + private partial class Delegates { + [UnmanagedFunctionPointer (CallingConvention.Cdecl)] + internal delegate void sksg_invalidation_controller_delete (sksg_invalidation_controller_t instance); + } + private static Delegates.sksg_invalidation_controller_delete sksg_invalidation_controller_delete_delegate; + internal static void sksg_invalidation_controller_delete (sksg_invalidation_controller_t instance) => + (sksg_invalidation_controller_delete_delegate ??= GetSymbol ("sksg_invalidation_controller_delete")).Invoke (instance); + #endif + + // void sksg_invalidation_controller_end(sksg_invalidation_controller_t* instance) + #if !USE_DELEGATES + [DllImport (SKIA, CallingConvention = CallingConvention.Cdecl)] + internal static extern void sksg_invalidation_controller_end (sksg_invalidation_controller_t instance); + #else + private partial class Delegates { + [UnmanagedFunctionPointer (CallingConvention.Cdecl)] + internal delegate void sksg_invalidation_controller_end (sksg_invalidation_controller_t instance); + } + private static Delegates.sksg_invalidation_controller_end sksg_invalidation_controller_end_delegate; + internal static void sksg_invalidation_controller_end (sksg_invalidation_controller_t instance) => + (sksg_invalidation_controller_end_delegate ??= GetSymbol ("sksg_invalidation_controller_end")).Invoke (instance); + #endif + + // void sksg_invalidation_controller_get_bounds(sksg_invalidation_controller_t* instance, sk_rect_t* bounds) + #if !USE_DELEGATES + [DllImport (SKIA, CallingConvention = CallingConvention.Cdecl)] + internal static extern void sksg_invalidation_controller_get_bounds (sksg_invalidation_controller_t instance, SKRect* bounds); + #else + private partial class Delegates { + [UnmanagedFunctionPointer (CallingConvention.Cdecl)] + internal delegate void sksg_invalidation_controller_get_bounds (sksg_invalidation_controller_t instance, SKRect* bounds); + } + private static Delegates.sksg_invalidation_controller_get_bounds sksg_invalidation_controller_get_bounds_delegate; + internal static void sksg_invalidation_controller_get_bounds (sksg_invalidation_controller_t instance, SKRect* bounds) => + (sksg_invalidation_controller_get_bounds_delegate ??= GetSymbol ("sksg_invalidation_controller_get_bounds")).Invoke (instance, bounds); + #endif + + // void sksg_invalidation_controller_inval(sksg_invalidation_controller_t* instance, sk_rect_t* rect, sk_matrix_t* matrix) + #if !USE_DELEGATES + [DllImport (SKIA, CallingConvention = CallingConvention.Cdecl)] + internal static extern void sksg_invalidation_controller_inval (sksg_invalidation_controller_t instance, SKRect* rect, SKMatrix* matrix); + #else + private partial class Delegates { + [UnmanagedFunctionPointer (CallingConvention.Cdecl)] + internal delegate void sksg_invalidation_controller_inval (sksg_invalidation_controller_t instance, SKRect* rect, SKMatrix* matrix); + } + private static Delegates.sksg_invalidation_controller_inval sksg_invalidation_controller_inval_delegate; + internal static void sksg_invalidation_controller_inval (sksg_invalidation_controller_t instance, SKRect* rect, SKMatrix* matrix) => + (sksg_invalidation_controller_inval_delegate ??= GetSymbol ("sksg_invalidation_controller_inval")).Invoke (instance, rect, matrix); + #endif + + // sksg_invalidation_controller_t* sksg_invalidation_controller_new() + #if !USE_DELEGATES + [DllImport (SKIA, CallingConvention = CallingConvention.Cdecl)] + internal static extern sksg_invalidation_controller_t sksg_invalidation_controller_new (); + #else + private partial class Delegates { + [UnmanagedFunctionPointer (CallingConvention.Cdecl)] + internal delegate sksg_invalidation_controller_t sksg_invalidation_controller_new (); + } + private static Delegates.sksg_invalidation_controller_new sksg_invalidation_controller_new_delegate; + internal static sksg_invalidation_controller_t sksg_invalidation_controller_new () => + (sksg_invalidation_controller_new_delegate ??= GetSymbol ("sksg_invalidation_controller_new")).Invoke (); + #endif + + // void sksg_invalidation_controller_reset(sksg_invalidation_controller_t* instance) + #if !USE_DELEGATES + [DllImport (SKIA, CallingConvention = CallingConvention.Cdecl)] + internal static extern void sksg_invalidation_controller_reset (sksg_invalidation_controller_t instance); + #else + private partial class Delegates { + [UnmanagedFunctionPointer (CallingConvention.Cdecl)] + internal delegate void sksg_invalidation_controller_reset (sksg_invalidation_controller_t instance); + } + private static Delegates.sksg_invalidation_controller_reset sksg_invalidation_controller_reset_delegate; + internal static void sksg_invalidation_controller_reset (sksg_invalidation_controller_t instance) => + (sksg_invalidation_controller_reset_delegate ??= GetSymbol ("sksg_invalidation_controller_reset")).Invoke (instance); + #endif + + #endregion + #region sk_compatpaint.h // sk_compatpaint_t* sk_compatpaint_clone(const sk_compatpaint_t* paint) diff --git a/binding/Binding/Skottie/Animation.cs b/binding/Binding/Skottie/Animation.cs index ed6de597899..937c53eb4a3 100644 --- a/binding/Binding/Skottie/Animation.cs +++ b/binding/Binding/Skottie/Animation.cs @@ -2,70 +2,78 @@ using System.ComponentModel; using System.IO; using System.Runtime.InteropServices; +using SkiaSharp.SceneGraph; namespace SkiaSharp.Skottie { - public unsafe class Animation : SKObject + public unsafe class Animation : SKObject, ISKNonVirtualReferenceCounted, ISKSkipObjectRegistration { - public enum RenderFlags + internal Animation (IntPtr handle, bool owns) + : base (handle, owns) { - SkipTopLevelIsolation = 0x01, - DisableTopLevelClipping = 0x02, } - internal Animation (IntPtr handle, bool owns) - : base (handle, owns) + void ISKNonVirtualReferenceCounted.ReferenceNative () + => SkiaApi.skottie_animation_ref (Handle); + + void ISKNonVirtualReferenceCounted.UnreferenceNative () + => SkiaApi.skottie_animation_unref (Handle); + + protected override void DisposeNative () + => SkiaApi.skottie_animation_delete (Handle); + + public static bool TryParse (string data, out Animation animation) { + animation = GetObject (SkiaApi.skottie_animation_make_from_string (data, data.Length)); + return animation != null; } - // SK_C_API skottie_animation_t* skottie_animation_make_from_string(const char* data, size_t length); - public static Animation Make (string data) - => GetObject (SkiaApi.skottie_animation_make_from_string (data, data.Length)); + public static bool TryCreate (Stream stream, out Animation animation) + { + using (var managed = new SKManagedStream (stream)) { + return TryCreate (managed, out animation); + } + } - // SK_C_API skottie_animation_t* skottie_animation_make_from_stream(sk_stream_filestream_t* stream); - public static Animation Make (SKStream stream) - => GetObject (SkiaApi.skottie_animation_make_from_stream (stream.Handle)); + public static bool TryCreate (SKStream stream, out Animation animation) + { + animation = GetObject (SkiaApi.skottie_animation_make_from_stream (stream.Handle)); + return animation != null; + } - // SK_C_API skottie_animation_t* skottie_animation_make_from_file(const char* path); - public static Animation MakeFromFile(string path) - => GetObject (SkiaApi.skottie_animation_make_from_file (path)); + public static bool TryCreate (string path, out Animation animation) + { + animation = GetObject (SkiaApi.skottie_animation_make_from_file (path)); + return animation != null; + } - //SK_C_API void skottie_animation_render(skottie_animation_t *instance, sk_canvas_t *canvas, sk_rect_t *dst); public unsafe void Render(SKCanvas canvas, SKRect dst) => SkiaApi.skottie_animation_render (Handle, canvas.Handle, &dst); - //SK_C_API void skottie_animation_render_with_flags(skottie_animation_t *instance, sk_canvas_t *canvas, sk_rect_t *dst, skottie_animation_renderflags_t flags); - public void Render (SKCanvas canvas, SKRect dst, RenderFlags flags) + public void Render (SKCanvas canvas, SKRect dst, SkottieAnimationRenderflags flags) => SkiaApi.skottie_animation_render_with_flags (Handle, canvas.Handle, &dst, flags); - //SK_C_API void skottie_animation_seek(skottie_animation_t *instance, SkScalar t, sksg_invalidation_controller_t *ic); - public void Seek (float t, InvalidationController ic) => SkiaApi.skottie_animation_seek (Handle, t, ic?.Handle ?? IntPtr.Zero); + public void Seek (double t, InvalidationController ic = null) + => SkiaApi.skottie_animation_seek (Handle, (float)t, ic?.Handle ?? IntPtr.Zero); - //SK_C_API void skottie_animation_seek_frame(skottie_animation_t *instance, double t, sksg_invalidation_controller_t *ic); - public void SeekFrame(float t, InvalidationController ic) - => SkiaApi.skottie_animation_seek_frame (Handle, t, ic.Handle); + public void SeekFrame(double t, InvalidationController ic = null) + => SkiaApi.skottie_animation_seek_frame (Handle, (float)t, ic?.Handle ?? IntPtr.Zero); - //SK_C_API void skottie_animation_seek_frame_time(skottie_animation_t *instance, double t, sksg_invalidation_controller_t *ic); - public void SeekFrameTime(float t, InvalidationController ic) - => SkiaApi.skottie_animation_seek_frame_time (Handle, t, ic?.Handle ?? IntPtr.Zero); + public void SeekFrameTime(double t, InvalidationController ic = null) + => SkiaApi.skottie_animation_seek_frame_time (Handle, (float)t, ic?.Handle ?? IntPtr.Zero); - //SK_C_API double skottie_animation_get_duration(skottie_animation_t *instance); public double Duration => SkiaApi.skottie_animation_get_duration (Handle); - //SK_C_API double skottie_animation_get_fps(skottie_animation_t *instance); public double Fps => SkiaApi.skottie_animation_get_fps (Handle); - //SK_C_API double skottie_animation_get_in_point(skottie_animation_t *instance); public double InPoint => SkiaApi.skottie_animation_get_in_point (Handle); - //SK_C_API double skottie_animation_get_out_point(skottie_animation_t *instance); public double OutPoint => SkiaApi.skottie_animation_get_out_point (Handle); - //SK_C_API void skottie_animation_get_version(skottie_animation_t *instance, sk_string_t *); public string Version { get { using var str = new SKString (); @@ -76,7 +84,6 @@ public string Version { } } - //SK_C_API skottie_animation_get_size(skottie_animation_t *instance, sk_size_t* size); public unsafe SKSize Size { get { SKSize size; diff --git a/binding/Binding/Skottie/InvalidationController.cs b/binding/Binding/Skottie/InvalidationController.cs deleted file mode 100644 index a8faed301a6..00000000000 --- a/binding/Binding/Skottie/InvalidationController.cs +++ /dev/null @@ -1,55 +0,0 @@ -using System; -using System.ComponentModel; -using System.IO; -using System.Runtime.InteropServices; - -namespace SkiaSharp.Skottie -{ - public unsafe class InvalidationController : SKObject - { - public InvalidationController () - : this (IntPtr.Zero, true) - { - Handle = SkiaApi.sksg_invalidation_controller_new (); - } - - internal InvalidationController (IntPtr handle, bool owns) - : base (handle, owns) - { - } - - // SK_C_API void sksg_invalidation_controller_inval (sksg_invalidation_controller_t* instance, sk_rect_t* rect, sk_matrix_t* matrix); - public unsafe void Inval(SKRect rect, SKMatrix matrix) - { - SkiaApi.sksg_invalidation_controller_inval (Handle, &rect, &matrix); - } - - // SK_C_API void sksg_invalidation_controller_get_bounds (sksg_invalidation_controller_t* instance, sk_rect_t* bounds); - public unsafe SKRect Bounds - { - get { - SKRect rect; - SkiaApi.sksg_invalidation_controller_get_bounds (Handle, &rect); - return rect; - } - } - - // SK_C_API void sksg_invalidation_controller_begin (sksg_invalidation_controller_t* instance); - public unsafe void Begin () - { - SkiaApi.sksg_invalidation_controller_begin (Handle); - } - - // SK_C_API void sksg_invalidation_controller_end (sksg_invalidation_controller_t* instance); - public unsafe void End () - { - SkiaApi.sksg_invalidation_controller_end (Handle); - } - - // SK_C_API void sksg_invalidation_controller_reset (sksg_invalidation_controller_t* instance); - public unsafe void Reset () - { - SkiaApi.sksg_invalidation_controller_reset (Handle); - } - } -} diff --git a/binding/Binding/Skottie/SkiaApi.cs b/binding/Binding/Skottie/SkiaApi.cs deleted file mode 100644 index ae44ebac5c1..00000000000 --- a/binding/Binding/Skottie/SkiaApi.cs +++ /dev/null @@ -1,110 +0,0 @@ -using System; -using System.ComponentModel; -using System.IO; -using System.Runtime.InteropServices; - -namespace SkiaSharp -{ - #region Class declarations - - using sk_canvas_t = IntPtr; - using sk_stream_filestream_t = IntPtr; - using sk_string_t = IntPtr; - - #endregion - - using skottie_animation_t = IntPtr; - using sksg_invalidation_controller_t = IntPtr; - - internal partial class SkiaApi - { - // - // Animation - // - - // SK_C_API skottie_animation_t* skottie_animation_make_from_string(const char* data, size_t length); - [DllImport (SKIA, CallingConvention = CallingConvention.Cdecl)] - internal static extern skottie_animation_t skottie_animation_make_from_string (string data, int length); - - // SK_C_API skottie_animation_t* skottie_animation_make_from_stream(sk_stream_filestream_t* stream); - [DllImport (SKIA, CallingConvention = CallingConvention.Cdecl)] - internal static extern skottie_animation_t skottie_animation_make_from_stream (sk_stream_filestream_t fileStream); - - // SK_C_API skottie_animation_t* skottie_animation_make_from_file(const char* path); - [DllImport (SKIA, CallingConvention = CallingConvention.Cdecl)] - internal static extern skottie_animation_t skottie_animation_make_from_file (string path); - - // SK_C_API void skottie_animation_render(skottie_animation_t *instance, sk_canvas_t *canvas, sk_rect_t *dst); - [DllImport (SKIA, CallingConvention = CallingConvention.Cdecl)] - internal unsafe static extern void skottie_animation_render (skottie_animation_t instance, sk_canvas_t canvas, SKRect* dst); - - // SK_C_API void skottie_animation_render_with_flags(skottie_animation_t *instance, sk_canvas_t *canvas, sk_rect_t *dst, skottie_animation_renderflags_t flags); - [DllImport (SKIA, CallingConvention = CallingConvention.Cdecl)] - internal unsafe static extern void skottie_animation_render_with_flags (skottie_animation_t instance, sk_canvas_t canvas, SKRect* dst, Skottie.Animation.RenderFlags flags); - - // SK_C_API void skottie_animation_seek(skottie_animation_t *instance, SkScalar t, sksg_invalidation_controller_t *ic); - [DllImport (SKIA, CallingConvention = CallingConvention.Cdecl)] - internal unsafe static extern void skottie_animation_seek (skottie_animation_t instance, float t, sksg_invalidation_controller_t ic); - - // SK_C_API void skottie_animation_seek_frame(skottie_animation_t *instance, double t, sksg_invalidation_controller_t *ic); - [DllImport (SKIA, CallingConvention = CallingConvention.Cdecl)] - internal unsafe static extern void skottie_animation_seek_frame (skottie_animation_t instance, float t, sksg_invalidation_controller_t ic); - - // SK_C_API void skottie_animation_seek_frame_time(skottie_animation_t *instance, double t, sksg_invalidation_controller_t *ic); - [DllImport (SKIA, CallingConvention = CallingConvention.Cdecl)] - internal unsafe static extern void skottie_animation_seek_frame_time (skottie_animation_t instance, float t, sksg_invalidation_controller_t ic); - - // SK_C_API double skottie_animation_get_duration(skottie_animation_t *instance); - [DllImport (SKIA, CallingConvention = CallingConvention.Cdecl)] - internal unsafe static extern double skottie_animation_get_duration (skottie_animation_t instance); - - // SK_C_API double skottie_animation_get_fps(skottie_animation_t *instance); - [DllImport (SKIA, CallingConvention = CallingConvention.Cdecl)] - internal unsafe static extern double skottie_animation_get_fps (skottie_animation_t instance); - - // SK_C_API double skottie_animation_get_in_point(skottie_animation_t *instance); - [DllImport (SKIA, CallingConvention = CallingConvention.Cdecl)] - internal unsafe static extern double skottie_animation_get_in_point (skottie_animation_t instance); - - // SK_C_API double skottie_animation_get_out_point(skottie_animation_t *instance); - [DllImport (SKIA, CallingConvention = CallingConvention.Cdecl)] - internal unsafe static extern double skottie_animation_get_out_point (skottie_animation_t instance); - - // SK_C_API sk_string_t* skottie_animation_get_version(skottie_animation_t *instance); - [DllImport (SKIA, CallingConvention = CallingConvention.Cdecl)] - internal unsafe static extern void skottie_animation_get_version (skottie_animation_t instance, sk_string_t version); - - // SK_C_API sk_size_t skottie_animation_get_size(skottie_animation_t *instance); - [DllImport (SKIA, CallingConvention = CallingConvention.Cdecl)] - internal unsafe static extern void skottie_animation_get_size (skottie_animation_t instance, SKSize* size); - - // - // InvalidationController - // - - // SK_C_API sksg_invalidation_controller_t* sksg_invalidation_controller_new (); - [DllImport (SKIA, CallingConvention = CallingConvention.Cdecl)] - internal unsafe static extern sksg_invalidation_controller_t sksg_invalidation_controller_new (); - - // SK_C_API void sksg_invalidation_controller_inval (sksg_invalidation_controller_t* instance, sk_rect_t* rect, sk_matrix_t* matrix); - [DllImport (SKIA, CallingConvention = CallingConvention.Cdecl)] - internal unsafe static extern void sksg_invalidation_controller_inval (sksg_invalidation_controller_t instance, SKRect* rect, SKMatrix* matrix); - - // SK_C_API void sksg_invalidation_controller_bounds (sksg_invalidation_controller_t* instance, sk_rect_t* bounds); - [DllImport (SKIA, CallingConvention = CallingConvention.Cdecl)] - internal unsafe static extern void sksg_invalidation_controller_get_bounds (sksg_invalidation_controller_t instance, SKRect* bounds); - - // SK_C_API void sksg_invalidation_controller_begin (sksg_invalidation_controller_t* instance); - [DllImport (SKIA, CallingConvention = CallingConvention.Cdecl)] - internal unsafe static extern void sksg_invalidation_controller_begin (sksg_invalidation_controller_t instance); - - // SK_C_API void sksg_invalidation_controller_end (sksg_invalidation_controller_t* instance); - [DllImport (SKIA, CallingConvention = CallingConvention.Cdecl)] - internal unsafe static extern void sksg_invalidation_controller_end (sksg_invalidation_controller_t instance); - - // SK_C_API void sksg_invalidation_controller_reset (sksg_invalidation_controller_t* instance); - [DllImport (SKIA, CallingConvention = CallingConvention.Cdecl)] - internal unsafe static extern void sksg_invalidation_controller_reset (sksg_invalidation_controller_t instance); - - } -} diff --git a/binding/libSkiaSharp.json b/binding/libSkiaSharp.json index d4f3d0f375d..0a7266d9342 100644 --- a/binding/libSkiaSharp.json +++ b/binding/libSkiaSharp.json @@ -18,11 +18,11 @@ "." ], "headers": { - "include/c": [ "sk_*", "gr_*" ], + "include/c": [ "sk_*", "gr_*", "skottie*", "sksg_*" ], "include/xamarin": [ "sk_*" ] }, "source": { - "src/c": [ "sk_*", "gr_*" ], + "src/c": [ "sk_*", "gr_*", "skottie*", "sksg_*" ], "src/xamarin": [ "sk_*" ] }, "mappings": { @@ -444,6 +444,18 @@ "parameters": { "1": "[MarshalAs (UnmanagedType.LPStr)] String" } + }, + "skottie_animation_make_from_string": { + "parameters": { + "0": "[MarshalAs (UnmanagedType.LPStr)] String", + "1": "int" + + } + }, + "skottie_animation_make_from_file": { + "parameters": { + "0": "[MarshalAs (UnmanagedType.LPStr)] String" + } } } } diff --git a/tests/Tests/Skottie/AnimationTest.cs b/tests/Tests/Skottie/AnimationTest.cs index 3c1681dbba5..6ae5b3209fb 100644 --- a/tests/Tests/Skottie/AnimationTest.cs +++ b/tests/Tests/Skottie/AnimationTest.cs @@ -2,31 +2,183 @@ using System.Collections.Generic; using Xunit; using System.IO; +using SkiaSharp.SceneGraph; +using SkiaSharp.Skottie; namespace SkiaSharp.Tests { public class AnimationTest : SKTest { - [Trait(CategoryKey, GpuCategory)] + [Trait(CategoryKey, ApiCategory)] [SkippableFact] public void When_Default_Make() { var path = Path.Combine(PathToImages, "LottieLogo1.json"); - var animation = SkiaSharp.Skottie.Animation.Make(File.ReadAllText(path)); + var result = SkiaSharp.Skottie.Animation.TryParse(File.ReadAllText(path), out var animation); + Assert.True(result); Assert.NotEqual(IntPtr.Zero, animation?.Handle); } - [Trait(CategoryKey, GpuCategory)] + [Trait(CategoryKey, ApiCategory)] [SkippableFact] - public void When_Default_Make_From_Stream() + public void When_Default_Make_From_SKStream() { var path = Path.Combine(PathToImages, "LottieLogo1.json"); using var fileStream = File.OpenRead(path); using var managedStream = new SKManagedStream(fileStream); - var animation = SkiaSharp.Skottie.Animation.Make(managedStream); + var result = SkiaSharp.Skottie.Animation.TryCreate(managedStream, out var animation); + Assert.True(result); + Assert.NotEqual(IntPtr.Zero, animation?.Handle); + } + + [Trait(CategoryKey, ApiCategory)] + [SkippableFact] + public void When_Default_Make_From_Stream() + { + var path = Path.Combine(PathToImages, "LottieLogo1.json"); + + using var fileStream = File.OpenRead(path); + var result = SkiaSharp.Skottie.Animation.TryCreate(fileStream, out var animation); + Assert.True(result); Assert.NotEqual(IntPtr.Zero, animation?.Handle); } + + [Trait(CategoryKey, ApiCategory)] + [SkippableFact] + public void When_Seek_Without_Controller() + { + var path = Path.Combine(PathToImages, "LottieLogo1.json"); + + using var fileStream = File.OpenRead(path); + var result = SkiaSharp.Skottie.Animation.TryCreate(fileStream, out var animation); + Assert.True(result); + Assert.NotEqual(IntPtr.Zero, animation?.Handle); + + animation.Seek(.1); + } + + [Trait(CategoryKey, ApiCategory)] + [SkippableFact] + public void When_Seek_With_Controller() + { + var path = Path.Combine(PathToImages, "LottieLogo1.json"); + + using var fileStream = File.OpenRead(path); + var result = SkiaSharp.Skottie.Animation.TryCreate(fileStream, out var animation); + Assert.True(result); + Assert.NotEqual(IntPtr.Zero, animation?.Handle); + + var controller = new InvalidationController(); + + animation.Seek(.1, controller); + } + + private Animation BuildDefaultAnimation() + { + var path = Path.Combine(PathToImages, "LottieLogo1.json"); + + using var fileStream = File.OpenRead(path); + var result = SkiaSharp.Skottie.Animation.TryCreate(fileStream, out var animation); + Assert.True(result); + Assert.NotEqual(IntPtr.Zero, animation?.Handle); + + return animation; + } + + [Trait(CategoryKey, ApiCategory)] + [SkippableFact] + public void When_SeekFrame_Without_Controller() + { + var animation = BuildDefaultAnimation(); + + animation.SeekFrame(.1); + } + + [Trait(CategoryKey, ApiCategory)] + [SkippableFact] + public void When_SeekFrame_With_Controller() + { + var animation = BuildDefaultAnimation(); + + var controller = new InvalidationController(); + + animation.SeekFrame(.1, controller); + } + + [Trait(CategoryKey, ApiCategory)] + [SkippableFact] + public void When_SeekFrameTime_Without_Controller() + { + var animation = BuildDefaultAnimation(); + + animation.SeekFrameTime(.1); + } + + [Trait(CategoryKey, ApiCategory)] + [SkippableFact] + public void When_SeekFrameTime_With_Controller() + { + var animation = BuildDefaultAnimation(); + + var controller = new InvalidationController(); + + animation.SeekFrameTime(.1, controller); + } + + [Trait(CategoryKey, ApiCategory)] + [SkippableFact] + public void When_Duration() + { + var animation = BuildDefaultAnimation(); + + Assert.True(animation.Duration > 0); + } + + [Trait(CategoryKey, ApiCategory)] + [SkippableFact] + public void When_Fps() + { + var animation = BuildDefaultAnimation(); + + Assert.True(animation.Fps > 0); + } + + [Trait(CategoryKey, ApiCategory)] + [SkippableFact] + public void When_InPoint() + { + var animation = BuildDefaultAnimation(); + + Assert.True(animation.InPoint > 0); + } + + [Trait(CategoryKey, ApiCategory)] + [SkippableFact] + public void When_OutPoint() + { + var animation = BuildDefaultAnimation(); + + Assert.True(animation.OutPoint > 0); + } + + [Trait(CategoryKey, ApiCategory)] + [SkippableFact] + public void When_Version() + { + var animation = BuildDefaultAnimation(); + + Assert.True(animation.Version.Length > 0); + } + + [Trait(CategoryKey, ApiCategory)] + [SkippableFact] + public void When_Size() + { + var animation = BuildDefaultAnimation(); + + Assert.True(animation.Size.Height > 0); + } } } From 5ad516a8f1eaa1ec59fdecae81bef3bddf538c86 Mon Sep 17 00:00:00 2001 From: Jerome Laban Date: Sat, 28 May 2022 21:56:59 -0400 Subject: [PATCH 07/11] chore: Adjust for updated API name in sample --- samples/Gallery/Shared/Samples/SkottieSample.cs | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/samples/Gallery/Shared/Samples/SkottieSample.cs b/samples/Gallery/Shared/Samples/SkottieSample.cs index df1d7b01686..6085f066285 100644 --- a/samples/Gallery/Shared/Samples/SkottieSample.cs +++ b/samples/Gallery/Shared/Samples/SkottieSample.cs @@ -20,10 +20,16 @@ public SkottieSample() { using var fileStream = new SKManagedStream(SampleMedia.Images.LottieLogo); - _animation = SkiaSharp.Skottie.Animation.Make(fileStream); - _animation.Seek(0, null); + if (SkiaSharp.Skottie.Animation.TryCreate(fileStream, out _animation)) + { + _animation.Seek(0, null); - Console.WriteLine($"SkottieSample(): Version:{_animation.Version} Duration:{_animation.Duration} Fps:{_animation.Fps} InPoint:{_animation.InPoint} OutPoint:{_animation.OutPoint}"); + Console.WriteLine($"SkottieSample(): Version:{_animation.Version} Duration:{_animation.Duration} Fps:{_animation.Fps} InPoint:{_animation.InPoint} OutPoint:{_animation.OutPoint}"); + } + else + { + Console.WriteLine($"SkottieSample(): failed to load animation"); + } } public override string Title => "Skottie"; From 7abb71c42320aa2147cdbd2a29fd3399d9b6ab6d Mon Sep 17 00:00:00 2001 From: Jerome Laban Date: Mon, 30 May 2022 16:00:38 -0400 Subject: [PATCH 08/11] chore: Adjust test values --- tests/Tests/Skottie/AnimationTest.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/Tests/Skottie/AnimationTest.cs b/tests/Tests/Skottie/AnimationTest.cs index 6ae5b3209fb..7478c51de56 100644 --- a/tests/Tests/Skottie/AnimationTest.cs +++ b/tests/Tests/Skottie/AnimationTest.cs @@ -142,7 +142,7 @@ public void When_Fps() { var animation = BuildDefaultAnimation(); - Assert.True(animation.Fps > 0); + Assert.True(animation.Fps == 30); } [Trait(CategoryKey, ApiCategory)] @@ -151,7 +151,7 @@ public void When_InPoint() { var animation = BuildDefaultAnimation(); - Assert.True(animation.InPoint > 0); + Assert.True(animation.InPoint == 0); } [Trait(CategoryKey, ApiCategory)] From c85adecd3eb41d6085fb2e93216da587c85e9773 Mon Sep 17 00:00:00 2001 From: Jerome Laban Date: Mon, 30 May 2022 16:35:44 -0400 Subject: [PATCH 09/11] chore: Adjust AnimationRenderFlags generation --- binding/Binding/SkiaApi.generated.cs | 27 ++++++++++++++++++++++++--- binding/Binding/Skottie/Animation.cs | 2 +- binding/libSkiaSharp.json | 12 ++++++++++++ 3 files changed, 37 insertions(+), 4 deletions(-) diff --git a/binding/Binding/SkiaApi.generated.cs b/binding/Binding/SkiaApi.generated.cs index 6c5f965f4b6..ea8f053613d 100644 --- a/binding/Binding/SkiaApi.generated.cs +++ b/binding/Binding/SkiaApi.generated.cs @@ -3,6 +3,8 @@ #region Namespaces +using SkiaSharp.SceneGraph; +using SkiaSharp.Skottie; #endregion @@ -84,6 +86,13 @@ using sk_wstream_t = System.IntPtr; using sk_xmlstreamwriter_t = System.IntPtr; using sk_xmlwriter_t = System.IntPtr; +using skottie_animation_builder_t = System.IntPtr; +using skottie_animation_t = System.IntPtr; +using skottie_logger_t = System.IntPtr; +using skottie_marker_observer_t = System.IntPtr; +using skottie_property_observer_t = System.IntPtr; +using skottie_resource_provider_t = System.IntPtr; +using sksg_invalidation_controller_t = System.IntPtr; using vk_device_t = System.IntPtr; using vk_instance_t = System.IntPtr; using vk_physical_device_features_2_t = System.IntPtr; @@ -13190,14 +13199,14 @@ internal static void skottie_animation_render (skottie_animation_t instance, sk_ // void skottie_animation_render_with_flags(skottie_animation_t* instance, sk_canvas_t* canvas, sk_rect_t* dst, skottie_animation_renderflags_t flags) #if !USE_DELEGATES [DllImport (SKIA, CallingConvention = CallingConvention.Cdecl)] - internal static extern void skottie_animation_render_with_flags (skottie_animation_t instance, sk_canvas_t canvas, SKRect* dst, SkottieAnimationRenderflags flags); + internal static extern void skottie_animation_render_with_flags (skottie_animation_t instance, sk_canvas_t canvas, SKRect* dst, AnimationRenderFlags flags); #else private partial class Delegates { [UnmanagedFunctionPointer (CallingConvention.Cdecl)] - internal delegate void skottie_animation_render_with_flags (skottie_animation_t instance, sk_canvas_t canvas, SKRect* dst, SkottieAnimationRenderflags flags); + internal delegate void skottie_animation_render_with_flags (skottie_animation_t instance, sk_canvas_t canvas, SKRect* dst, AnimationRenderFlags flags); } private static Delegates.skottie_animation_render_with_flags skottie_animation_render_with_flags_delegate; - internal static void skottie_animation_render_with_flags (skottie_animation_t instance, sk_canvas_t canvas, SKRect* dst, SkottieAnimationRenderflags flags) => + internal static void skottie_animation_render_with_flags (skottie_animation_t instance, sk_canvas_t canvas, SKRect* dst, AnimationRenderFlags flags) => (skottie_animation_render_with_flags_delegate ??= GetSymbol ("skottie_animation_render_with_flags")).Invoke (instance, canvas, dst, flags); #endif @@ -16673,4 +16682,16 @@ public enum SKWebpEncoderCompression { } } +namespace SkiaSharp.Skottie { + + // skottie_animation_renderflags_t + [Flags] + public enum AnimationRenderFlags { + // SKIP_TOP_LEVEL_ISOLATION = 0x01 + SkipTopLevelIsolation = 1, + // DISABLE_TOP_LEVEL_CLIPPING = 0x02 + DisableTopLevelClipping = 2, + } +} + #endregion diff --git a/binding/Binding/Skottie/Animation.cs b/binding/Binding/Skottie/Animation.cs index 937c53eb4a3..9805e715621 100644 --- a/binding/Binding/Skottie/Animation.cs +++ b/binding/Binding/Skottie/Animation.cs @@ -50,7 +50,7 @@ public static bool TryCreate (string path, out Animation animation) public unsafe void Render(SKCanvas canvas, SKRect dst) => SkiaApi.skottie_animation_render (Handle, canvas.Handle, &dst); - public void Render (SKCanvas canvas, SKRect dst, SkottieAnimationRenderflags flags) + public void Render (SKCanvas canvas, SKRect dst, AnimationRenderFlags flags) => SkiaApi.skottie_animation_render_with_flags (Handle, canvas.Handle, &dst, flags); public void Seek (double t, InvalidationController ic = null) diff --git a/binding/libSkiaSharp.json b/binding/libSkiaSharp.json index 0a7266d9342..35bb6f4302c 100644 --- a/binding/libSkiaSharp.json +++ b/binding/libSkiaSharp.json @@ -11,6 +11,14 @@ }, "gr_": { "prefix": "GR" + }, + "sksg_": { + "cs": "SceneGraph", + "prefix": "" + }, + "skottie_": { + "cs": "Skottie", + "prefix": "" } }, "className": "SkiaApi", @@ -366,6 +374,10 @@ "sk_lattice_t": { "cs": "SKLatticeInternal", "internal": true + }, + "skottie_animation_renderflags_t": { + "cs": "AnimationRenderFlags", + "flags": true } }, "functions": { From caf00c12193d7c4a0ec82c4f73ef4c34d5b25272 Mon Sep 17 00:00:00 2001 From: Jerome Laban Date: Tue, 31 May 2022 07:22:29 -0400 Subject: [PATCH 10/11] chore: Fix linux skottie export map --- native/linux/libSkiaSharp/libSkiaSharp.map | 2 ++ 1 file changed, 2 insertions(+) diff --git a/native/linux/libSkiaSharp/libSkiaSharp.map b/native/linux/libSkiaSharp/libSkiaSharp.map index 23928a4370c..efb3ef0c455 100644 --- a/native/linux/libSkiaSharp/libSkiaSharp.map +++ b/native/linux/libSkiaSharp/libSkiaSharp.map @@ -2,6 +2,8 @@ libSkiaSharp { global: sk_*; gr_*; + skottie_*; + sksg_*; local: *; }; From 9f5773c86733ade2b73c19060be867ff4e012bf5 Mon Sep 17 00:00:00 2001 From: Jerome Laban Date: Tue, 31 May 2022 16:38:54 -0400 Subject: [PATCH 11/11] ci: Update skia submodule --- externals/skia | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/externals/skia b/externals/skia index 0932353360e..8e7a3aa31b7 160000 --- a/externals/skia +++ b/externals/skia @@ -1 +1 @@ -Subproject commit 0932353360e5fcb46a7be47a00e398ce60b7486a +Subproject commit 8e7a3aa31b76f3e16e561eead4c938a8fbbd520f