@dyrected/admin 2.6.1 → 2.6.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (46) hide show
  1. package/dist/admin.css +120 -28
  2. package/dist/components/forms/field-renderer.d.ts +3 -9
  3. package/dist/components/forms/fields/date-picker.d.ts +4 -1
  4. package/dist/components/forms/fields/format-aware-inputs.test.d.ts +1 -0
  5. package/dist/components/forms/fields/text-field.d.ts +1 -1
  6. package/dist/components/forms/fields/url-field.d.ts +1 -1
  7. package/dist/components/media/__tests__/media-library-dialog.test.d.ts +1 -0
  8. package/dist/components/media/storage-notice.d.ts +7 -0
  9. package/dist/controllers/__tests__/field.test.d.ts +1 -0
  10. package/dist/controllers/__tests__/form.test.d.ts +1 -0
  11. package/dist/controllers/__tests__/media.test.d.ts +1 -0
  12. package/dist/controllers/__tests__/theme.test.d.ts +1 -0
  13. package/dist/controllers/field.d.ts +13 -0
  14. package/dist/controllers/form.d.ts +102 -0
  15. package/dist/controllers/media.d.ts +119 -0
  16. package/dist/controllers/theme.d.ts +28 -0
  17. package/dist/favicon.ico +0 -0
  18. package/dist/favicon.svg +85 -1
  19. package/dist/hooks/__tests__/use-add-media-from-url.test.d.ts +1 -0
  20. package/dist/hooks/__tests__/use-field.test.d.ts +1 -0
  21. package/dist/hooks/admin-theme-context.d.ts +2 -8
  22. package/dist/hooks/admin-theme-provider.d.ts +3 -1
  23. package/dist/hooks/admin-theme.d.ts +1 -0
  24. package/dist/hooks/use-add-media-from-url.d.ts +8 -17
  25. package/dist/hooks/use-admin-theme.d.ts +2 -1
  26. package/dist/hooks/use-dyrected-form.d.ts +2 -0
  27. package/dist/hooks/use-field.d.ts +2 -0
  28. package/dist/hooks/use-media-library.d.ts +26 -0
  29. package/dist/hooks/use-media-upload.d.ts +20 -0
  30. package/dist/hooks/use-media-url.d.ts +20 -0
  31. package/dist/index.d.ts +30 -3
  32. package/dist/index.mjs +1438 -1556
  33. package/dist/lib/__tests__/external-media.test.d.ts +1 -0
  34. package/dist/lib/__tests__/media-utils.test.d.ts +1 -0
  35. package/dist/lib/compress-image.d.ts +9 -0
  36. package/dist/lib/external-media.d.ts +9 -4
  37. package/dist/lib/media-utils.d.ts +26 -0
  38. package/dist/lib/workflow-ui.d.ts +1 -0
  39. package/dist/providers/dyrected-form-context.d.ts +14 -0
  40. package/dist/public/contracts.d.ts +230 -0
  41. package/dist/public/index.d.ts +26 -0
  42. package/dist/public/index.js +2 -0
  43. package/dist/public.d.ts +2 -0
  44. package/dist/types/admin-components.d.ts +17 -2
  45. package/dist/use-add-media-from-url-DHGAAVLY.js +1604 -0
  46. package/package.json +9 -3
package/dist/index.mjs CHANGED
@@ -1,3 +1,4 @@
1
+ import { B as isStorageNotConfiguredError, C as useMediaUpload, D as createMediaURLController, E as createMediaLibraryController, G as resolveAdminTheme, H as useAdminTheme, I as usePreferences, J as getMediaUrl, K as cn, M as getMediaPreviewUrl, N as getVideoEmbedUrl, O as createMediaUploadController, R as getMediaSourceInfo, S as resolveContainerPath, T as useMediaLibrary, U as adminThemeClassName, V as resolveActiveMediaCollection, W as getSystemAdminTheme, X as DyrectedContext, Y as getSiteUrl, Z as useDyrected, _ as buildDefaultValues, a as useField, b as getFlatErrors, c as DyrectedFieldPathProvider, d as getFieldPathSegments, f as getParentFieldPath, g as setValueAtPath, h as normalizeFieldPath, i as createAdminThemeController, k as compressImage, l as DyrectedFormProvider, m as joinFieldPath, n as AdminThemeProvider, o as createDyrectedFieldController, p as getValueAtPath, q as getDisplayFilename, r as AdminThemedRoot, s as useDyrectedForm, t as useAddMediaFromUrl, u as createDyrectedFormController, v as buildSchemaShape, w as useMediaURL, x as normalizeOptions, y as formatPath, z as isExternalMedia } from "./use-add-media-from-url-DHGAAVLY.js";
1
2
  import * as React$1 from "react";
2
3
  import React, { Component, StrictMode, createContext, createElement, useCallback, useContext, useEffect, useMemo, useRef, useState } from "react";
3
4
  import { createRoot } from "react-dom/client";
@@ -5,9 +6,7 @@ import { HashRouter, Link, MemoryRouter, Route, Routes, useLocation, useNavigate
5
6
  import { QueryClient, QueryClientProvider, keepPreviousData, useInfiniteQuery, useMutation, useQueries, useQuery, useQueryClient } from "@tanstack/react-query";
6
7
  import { DyrectedError, PREVIEW_TOKEN_PARAM, createClient } from "@dyrected/sdk";
7
8
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
8
- import { AlertCircle, AlertTriangle, AlignCenter, AlignLeft, AlignRight, Archive, ArrowDown, ArrowLeft, ArrowRight, ArrowUp, ArrowUpDown, ArrowUpRight, Bold, Braces, Calendar, Check, CheckCircle, CheckCircle2, ChevronDown, ChevronLeft, ChevronLeftIcon, ChevronRight, ChevronRightIcon, ChevronUp, ChevronsUpDown, Circle, Clock, Clock3, Code, Copy, Database, Download, ExternalLink, Eye, EyeOff, FileDown, FileIcon, FileText, FileUp, Filter, Globe, GripVertical, Heading1, Heading2, Heading3, Heading4, Heading5, Heading6, History, Home, Image as Image$1, Info, Italic, KeyRound, Layers, LayoutDashboard, LayoutGrid, Library, Link as Link$1, List, ListOrdered, Loader2, Lock, LogOut, Mail, Menu, MessageSquarePlus, Monitor, Moon, MoreHorizontal, MousePointer2, PanelLeftClose, PanelLeftOpen, Pencil, Play, Plus, Quote, RotateCcw, Save, Scissors, Search, Settings, Settings2, Share2, Shield, Smartphone, Sparkles, Star, Strikethrough, Sun, Table, Trash2, Underline, Undo2, Upload, UploadCloud, Users, Video, Volume2, Workflow, X, XCircle, icons } from "lucide-react";
9
- import { clsx } from "clsx";
10
- import { extendTailwindMerge } from "tailwind-merge";
9
+ import { AlertCircle, AlertTriangle, AlignCenter, AlignLeft, AlignRight, Archive, ArrowDown, ArrowLeft, ArrowRight, ArrowUp, ArrowUpDown, ArrowUpRight, Bold, Braces, Calendar, Check, CheckCircle, CheckCircle2, ChevronDown, ChevronLeft, ChevronLeftIcon, ChevronRight, ChevronRightIcon, ChevronUp, ChevronsUpDown, Circle, Clock, Clock3, Code, Copy, Database, Download, ExternalLink, Eye, EyeOff, FileDown, FileIcon, FileText, FileUp, Filter, Globe, GripVertical, HardDrive, Heading1, Heading2, Heading3, Heading4, Heading5, Heading6, History, Home, Image, Info, Italic, KeyRound, Layers, LayoutDashboard, LayoutGrid, Library, Link as Link$1, List, ListOrdered, Loader2, Lock, LogOut, Mail, Menu, MessageSquarePlus, Minus, Monitor, Moon, MoreHorizontal, MousePointer2, PanelLeftClose, PanelLeftOpen, Pencil, Play, Plus, Quote, RotateCcw, RotateCw, Save, Scissors, Search, Settings, Settings2, Share2, Shield, Smartphone, Sparkles, Star, Strikethrough, Sun, Table, Trash2, Underline, Undo2, Upload, UploadCloud, Users, Video, Volume2, Workflow, Wrench, X, XCircle, icons } from "lucide-react";
11
10
  import * as DropdownMenuPrimitive from "@radix-ui/react-dropdown-menu";
12
11
  import { Slot } from "@radix-ui/react-slot";
13
12
  import { cva } from "class-variance-authority";
@@ -29,13 +28,13 @@ import "react-datasheet-grid/dist/style.css";
29
28
  import { EditorContent, useEditor } from "@tiptap/react";
30
29
  import StarterKit from "@tiptap/starter-kit";
31
30
  import TextAlign from "@tiptap/extension-text-align";
32
- import Image$2 from "@tiptap/extension-image";
31
+ import Image$1 from "@tiptap/extension-image";
33
32
  import { TableKit } from "@tiptap/extension-table";
34
33
  import * as TogglePrimitive from "@radix-ui/react-toggle";
35
34
  import * as TabsPrimitive from "@radix-ui/react-tabs";
35
+ import { useDropzone } from "react-dropzone";
36
36
  import ReactCrop, { centerCrop, makeAspectCrop } from "react-image-crop";
37
37
  import "react-image-crop/dist/ReactCrop.css";
38
- import { useDropzone } from "react-dropzone";
39
38
  import * as SwitchPrimitives from "@radix-ui/react-switch";
40
39
  import * as LabelPrimitive from "@radix-ui/react-label";
41
40
  import { Command } from "cmdk";
@@ -58,14 +57,6 @@ function findCollection(collections, predicate) {
58
57
  return collections.find(predicate);
59
58
  }
60
59
  //#endregion
61
- //#region src/providers/dyrected-context.ts
62
- var DyrectedContext = createContext(void 0);
63
- function useDyrected() {
64
- const context = useContext(DyrectedContext);
65
- if (!context) throw new Error("useDyrected must be used within a DyrectedProvider");
66
- return context;
67
- }
68
- //#endregion
69
60
  //#region src/providers/dyrected-provider.tsx
70
61
  function resolveBlock(block, registry) {
71
62
  return {
@@ -282,82 +273,6 @@ function QueryProvider({ children }) {
282
273
  });
283
274
  }
284
275
  //#endregion
285
- //#region src/lib/utils.ts
286
- var customTwMerge = extendTailwindMerge({ prefix: "dy-" });
287
- /**
288
- * Merges Tailwind class names, resolving conflicts with the `dy-` prefix.
289
- * Drop-in replacement for `clsx` that handles Dyrected's scoped Tailwind build.
290
- */
291
- function cn(...inputs) {
292
- return customTwMerge(clsx(inputs));
293
- }
294
- /**
295
- * Resolves a media field value to an absolute URL.
296
- *
297
- * Handles three input shapes:
298
- * - A fully-qualified URL (`https://...`) — returned as-is.
299
- * - A root-relative path (`/uploads/...`) — origin prepended from `baseUrl`.
300
- * - A bare filename or storage path (`default/photo.jpg`) — prefixed with `/api/media/`.
301
- *
302
- * Bare strings that look like document IDs (no extension, no slash) are returned
303
- * as an empty string so they are not treated as media assets.
304
- *
305
- * @param val - A media field value: a URL string, storage path, or a document object with a `url` or `filename` property.
306
- * @param baseUrl - The Dyrected backend base URL, used to build the origin for relative paths.
307
- * @returns A fully-qualified URL string, or `""` if the value cannot be resolved.
308
- */
309
- function getMediaUrl(val, baseUrl) {
310
- if (!val) return "";
311
- let baseOrigin = "";
312
- if (baseUrl) if (baseUrl.startsWith("http://") || baseUrl.startsWith("https://")) try {
313
- baseOrigin = new URL(baseUrl).origin;
314
- } catch {
315
- const match = baseUrl.match(/^(https?:\/\/[^\/]+)/);
316
- baseOrigin = match ? match[1] : baseUrl;
317
- }
318
- else baseOrigin = baseUrl;
319
- const prependBase = (urlPath) => {
320
- if (urlPath.startsWith("http://") || urlPath.startsWith("https://")) return urlPath;
321
- const cleanPath = urlPath.startsWith("/") ? urlPath : "/" + urlPath;
322
- if (cleanPath.startsWith("/uploads/")) return `${baseOrigin.endsWith("/") ? baseOrigin.slice(0, -1) : baseOrigin}${cleanPath}`;
323
- const basePrefix = baseUrl.endsWith("/") ? baseUrl.slice(0, -1) : baseUrl;
324
- try {
325
- const baseObj = new URL(basePrefix);
326
- const basePathname = baseObj.pathname === "/" ? "" : baseObj.pathname;
327
- if (basePathname && cleanPath.startsWith(basePathname)) return `${baseObj.origin}${cleanPath}`;
328
- } catch {
329
- if (basePrefix && cleanPath.startsWith(basePrefix)) return cleanPath;
330
- }
331
- return `${basePrefix}${cleanPath}`;
332
- };
333
- let targetUrl = "";
334
- if (typeof val === "object" && val !== null) targetUrl = val.url || val.filename || "";
335
- else targetUrl = String(val);
336
- if (!targetUrl) return "";
337
- if (targetUrl.startsWith("http://") || targetUrl.startsWith("https://") || targetUrl.startsWith("/")) return targetUrl;
338
- if (!targetUrl.includes("/") && !/\.[a-z0-9]+($|\?)/i.test(targetUrl)) return "";
339
- return prependBase(`/api/media/${targetUrl}`);
340
- }
341
- /**
342
- * Strips the directory prefix from a filename / storage path, returning only the last component (the actual filename).
343
- * E.g., "dyrected_cloud/j95sv/bcuul/WhatsApp Image 2026-06-20 at 12" -> "WhatsApp Image 2026-06-20 at 12"
344
- */
345
- function getDisplayFilename(filename) {
346
- if (!filename) return "";
347
- const parts = filename.split("/");
348
- return parts[parts.length - 1];
349
- }
350
- /**
351
- * Resolves the site URL, overriding it with the current origin during local development on localhost/127.0.0.1.
352
- */
353
- function getSiteUrl(configuredSiteUrl) {
354
- if (typeof window !== "undefined") {
355
- if (window.location.pathname.startsWith("/sites/")) return configuredSiteUrl || "";
356
- if (window.location.hostname === "localhost" || window.location.hostname === "127.0.0.1") return window.location.origin;
357
- }
358
- return configuredSiteUrl || (typeof window !== "undefined" ? window.location.origin : "");
359
- }
360
- //#endregion
361
276
  //#region src/lib/admin-icons.ts
362
277
  /**
363
278
  * Type guard — returns `true` if `value` is a string that matches a known
@@ -495,36 +410,6 @@ function useSidebarControl() {
495
410
  return useContext(SidebarControlContext);
496
411
  }
497
412
  //#endregion
498
- //#region src/hooks/admin-theme.ts
499
- function resolveAdminTheme(preference, systemTheme) {
500
- return preference === "system" ? systemTheme : preference;
501
- }
502
- function adminThemeClassName(resolvedTheme) {
503
- return resolvedTheme === "dark" ? "dy-admin-ui dark" : "dy-admin-ui";
504
- }
505
- //#endregion
506
- //#region src/hooks/admin-theme-context.ts
507
- var AdminThemeContext = React$1.createContext(null);
508
- //#endregion
509
- //#region src/hooks/use-admin-theme.ts
510
- function getSystemTheme$1() {
511
- if (typeof window === "undefined" || !window.matchMedia) return "light";
512
- return window.matchMedia("(prefers-color-scheme: dark)").matches ? "dark" : "light";
513
- }
514
- function useAdminTheme() {
515
- const context = React$1.useContext(AdminThemeContext);
516
- if (!context) {
517
- const resolvedTheme = getSystemTheme$1();
518
- return {
519
- theme: "system",
520
- resolvedTheme,
521
- setTheme: () => void 0,
522
- themeClassName: adminThemeClassName(resolvedTheme)
523
- };
524
- }
525
- return context;
526
- }
527
- //#endregion
528
413
  //#region src/components/ui/dropdown-menu.tsx
529
414
  var DropdownMenu = DropdownMenuPrimitive.Root;
530
415
  var DropdownMenuTrigger = DropdownMenuPrimitive.Trigger;
@@ -701,7 +586,7 @@ var SheetDescription = React$1.forwardRef(({ className, ...props }, ref) => /* @
701
586
  SheetDescription.displayName = SheetPrimitive.Description.displayName;
702
587
  //#endregion
703
588
  //#region src/assets/dyrected.svg
704
- var dyrected_default = "data:image/svg+xml,%3c?xml%20version='1.0'%20encoding='UTF-8'?%3e%3csvg%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20viewBox='75%20408%20880%20200'%20width='1024'%20height='320'%3e%3cpath%20d='M0%200%20C80.77777778%200%2080.77777778%200%20104.25%2016.25%20C110.41149028%2022.41149028%20115.8130796%2029.84774381%20119%2038%20C119.37125%2038.93457031%20119.7425%2039.86914062%20120.125%2040.83203125%20C125.97853191%2057.96580693%20124.38837118%2076.7725057%20116.9375%2093.0625%20C109.56325726%20107.53398146%2097.58992255%20116.7156145%2082.375%20121.875%20C71.26222779%20125.44607062%2060.56671647%20126.28755488%2048.92578125%20126.1953125%20C47.67873413%20126.19329834%2046.43168701%20126.19128418%2045.14685059%20126.18920898%20C40.53536241%20126.17882812%2035.9239271%20126.15090625%2031.3125%20126.125%20C20.979375%20126.08375%2010.64625%20126.0425%200%20126%20C0%2084.42%200%2042.84%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(94,437)'/%3e%3cpath%20d='M0%200%20C2.71975521%200.35943901%203.84341638%200.83999752%205.7890625%202.828125%20C6.39492188%203.62734375%207.00078125%204.4265625%207.625%205.25%20C8.3159375%206.14847656%209.006875%207.04695313%209.71875%207.97265625%20C10.4715625%208.97167969%2011.224375%209.97070312%2012%2011%20C13.27334297%2012.66801941%2014.55020731%2014.33328608%2015.828125%2015.99780273%20C16.68920631%2017.1197048%2017.54859726%2018.24290639%2018.40625%2019.36743164%20C20.72359821%2022.39401514%2023.10162467%2025.33084868%2025.625%2028.1875%20C28%2031%2028%2031%2028%2033%20C24.04%2033%2020.08%2033%2016%2033%20C16%2036.96%2016%2040.92%2016%2045%20C23.92%2045%2031.84%2045%2040%2045%20C40%2052.26%2040%2059.52%2040%2067%20C32.08%2067%2024.16%2067%2016%2067%20C16.05110565%2073.01513491%2016.11411805%2079.02770699%2016.20751953%2085.04199219%20C16.23569066%2087.08650395%2016.25692435%2089.13112384%2016.27099609%2091.17578125%20C16.29247887%2094.12035322%2016.3391569%2097.06363041%2016.390625%20100.0078125%20C16.39185364%20100.9174173%2016.39308228%20101.82702209%2016.39434814%20102.76419067%20C16.52453003%20108.44478815%2017.27045802%20111.64305028%2021%20116%20C25.45146778%20118.22573389%2031.49130269%20117.61284521%2036.22265625%20116.45703125%20C43.02192732%20113.57781706%2047.39900966%20107.25297069%2051.15625%20101.109375%20C56.12293503%2093.05732503%2066.02505874%2086.96170223%2075%2084.4375%20C75.99%2084.2209375%2075.99%2084.2209375%2077%2084%20C77.76934372%2083.82831802%2078.53868744%2083.65663605%2079.3313446%2083.47975159%20C81.85956507%2083.02524638%2084.13490112%2082.87925324%2086.69848633%2082.88647461%20C88.0493206%2082.88658791%2088.0493206%2082.88658791%2089.42744446%2082.88670349%20C90.3859581%2082.89186478%2091.34447174%2082.89702606%2092.33203125%2082.90234375%20C93.32377853%2082.9037587%2094.31552582%2082.90517365%2095.33732605%2082.90663147%20C98.49574843%2082.91221582%20101.65409915%2082.92476548%20104.8125%2082.9375%20C106.95768127%2082.94251702%20109.10286365%2082.94707958%20111.24804688%2082.95117188%20C116.49872224%2082.96218012%20121.749356%2082.9789027%20127%2083%20C126.41627107%2081.40206803%20125.81844039%2079.8092836%20125.21484375%2078.21875%20C124.88347412%2077.33123047%20124.55210449%2076.44371094%20124.21069336%2075.52929688%20C121.96215073%2070.83179705%20118.27353717%2068.10625131%20113.671875%2065.8671875%20C107.40145998%2063.8320528%2099.62475654%2063.83565488%2093.5625%2066.5625%20C90.74762291%2068.18758368%2089.23412527%2069.92734346%2087.375%2072.5625%20C83.79694231%2077.15174791%2079.16997757%2077.25826651%2073.6875%2078.1875%20C67.93513917%2079.45496934%2063.11247292%2082.15885793%2058%2085%20C56.67024353%2085.67377293%2055.33832199%2086.34340541%2054%2087%20C54.53283313%2074.23864658%2059.85622582%2063.62873005%2069.125%2054.8125%20C79.48783101%2046.05739319%2090.98874912%2042.60318009%20104.3125%2042.6875%20C105.24167236%2042.69313965%20106.17084473%2042.6987793%20107.12817383%2042.70458984%20C120.80891332%2042.94676927%20132.08138441%2047.30179809%20142%2057%20C150.69408674%2067.01964256%20154.41434505%2078.42703622%20154.12890625%2091.5%20C154.11960083%2092.32242188%20154.11029541%2093.14484375%20154.10070801%2093.9921875%20C154.07669258%2095.99492902%20154.03971288%2097.99750824%20154%20100%20C153.20788116%20100.00142502%20152.41576233%20100.00285004%20151.59963989%20100.00431824%20C144.09719277%20100.0222236%20136.5954255%20100.06405798%20129.09327888%20100.13209057%20C125.23723861%20100.16623308%20121.38158914%20100.19145048%20117.52539062%20100.19555664%20C113.79674299%20100.1998673%20110.06897502%20100.22855506%20106.34060287%20100.27343178%20C104.9254661%20100.2863193%20103.51022356%20100.29074578%20102.09503555%20100.28615379%20C90.97909255%20100.25851196%2082.24496399%20102.13674731%2074%20110%20C72.693186%20111.68664002%2071.44412084%20113.4192826%2070.25%20115.1875%20C60.98713546%20128.13484969%2049.31550166%20137.60492408%2033.359375%20140.6015625%20C22.09111259%20141.93803083%2011.94495066%20141.67673859%201.8125%20136.3125%20C-6.21093351%20129.71545467%20-11.15550672%20122.32419258%20-13%20112%20C-13.25198192%20108.45441218%20-13.23420464%20104.92803422%20-13.1953125%20101.375%20C-13.1924826%20100.38749756%20-13.18965271%2099.39999512%20-13.18673706%2098.38256836%20C-13.1756182%2095.25491785%20-13.15052916%2092.12756272%20-13.125%2089%20C-13.11495948%2086.86849374%20-13.10583551%2084.73698296%20-13.09765625%2082.60546875%20C-13.07570607%2077.4035335%20-13.04123391%2072.20181669%20-13%2067%20C-17.95%2067%20-22.9%2067%20-28%2067%20C-28%2059.74%20-28%2052.48%20-28%2045%20C-25.11584117%2043.55792059%20-22.58278472%2043.90605113%20-19.375%2043.9375%20C-18.18648437%2043.94652344%20-16.99796875%2043.95554687%20-15.7734375%2043.96484375%20C-14.85820313%2043.97644531%20-13.94296875%2043.98804688%20-13%2044%20C-13%2040.37%20-13%2036.74%20-13%2033%20C-16.63%2033%20-20.26%2033%20-24%2033%20C-22.47026072%2029.1756518%20-21.7364866%2027.36138218%20-19.27734375%2024.43359375%20C-18.74262451%2023.78841797%20-18.20790527%2023.14324219%20-17.65698242%2022.47851562%20C-16.80583862%2021.46821289%20-16.80583862%2021.46821289%20-15.9375%2020.4375%20C-10.41141017%2013.76832013%20-5.12012996%206.98560367%200%200%20Z%20'%20fill='%23B6FF2E'%20transform='translate(660,423)'/%3e%3cpath%20d='M0%200%20C9.57%200%2019.14%200%2029%200%20C29.59839035%2022.9781895%2028.74526871%2040.62390375%2012.65625%2058.3359375%20C11%2060%2011%2060%208.4375%2062%20C5.46025693%2064.44286611%203.51309236%2067.23700629%201.33203125%2070.390625%20C0.89246094%2070.92171875%200.45289063%2071.4528125%200%2072%20C-0.66%2072%20-1.32%2072%20-2%2072%20C-2.93987733%2070.55661697%20-3.87796552%2069.11202069%20-4.8046875%2067.66015625%20C-8.25891165%2062.86262271%20-12.44079328%2060.54083019%20-18%2059%20C-25.38567118%2058.11965024%20-31.79640485%2058.30895235%20-38.12890625%2062.45703125%20C-43.93075089%2067.24143341%20-46.08004443%2072.64035542%20-47%2080%20C-47.62384022%2087.86038675%20-46.29060096%2095.4983732%20-41.375%20101.875%20C-36.78559554%20106.66837799%20-31.1204383%20109.16020416%20-24.5%20109.4375%20C-17.63097442%20109.06652475%20-10.76252345%20107.03884639%20-5.6171875%20102.3203125%20C-2.88904376%2098.40601931%20-1.66280214%2093.9535236%20-0.1809082%2089.45141602%20C3.35486261%2078.72166264%208.74872668%2071.79757179%2016.88671875%2064.08325195%20C20.82961215%2060.32870988%2023.90074122%2056.47544342%2027%2052%20C27.33%2052%2027.66%2052%2028%2052%20C28%2078.4%2028%20104.8%2028%20132%20C19.42%20132%2010.84%20132%202%20132%20C2%20128.37%202%20124.74%202%20121%20C1.34%20121%200.68%20121%200%20121%20C-0.495%20122.485%20-0.495%20122.485%20-1%20124%20C-12.73711711%20132.94256542%20-25.06338231%20134.43156199%20-39.3125%20132.56640625%20C-51.92494538%20129.92239101%20-62.18469132%20122.09849232%20-69.1875%20111.4375%20C-76.64035884%2098.17021241%20-78.4709381%2082.69085036%20-74.375%2068.0625%20C-69.54605076%2054.5211808%20-61.09321667%2044.22524607%20-48%2038%20C-41.32156484%2035.17823273%20-35.2722462%2034.50746377%20-28.0625%2034.5625%20C-27.13759766%2034.54251953%20-26.21269531%2034.52253906%20-25.25976562%2034.50195312%20C-15.04309922%2034.50911267%20-8.83524108%2037.47063244%20-1%2044%20C-0.67%2029.48%20-0.34%2014.96%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(902,431)'/%3e%3cpath%20d='M0%200%20C1.98755052%201.41100915%203.72130576%202.89802373%205.484375%204.578125%20C6.38349609%205.34576172%206.38349609%205.34576172%207.30078125%206.12890625%20C15.92373572%2013.93240069%2020.74453573%2025.07362429%2021.484375%2036.578125%20C21.60509121%2040.91384903%2021.70071786%2045.24490485%2021.484375%2049.578125%20C20.484375%2050.578125%2020.484375%2050.578125%2017.63072205%2050.69837952%20C16.35387039%2050.69615891%2015.07701874%2050.69393829%2013.76147461%2050.69165039%20C13.0590715%2050.69179642%2012.3566684%2050.69194244%2011.63298035%2050.6920929%20C9.30086222%2050.69139372%206.968823%2050.68360117%204.63671875%2050.67578125%20C3.02389062%2050.67391708%201.41106193%2050.67249318%20-0.20176697%2050.67149353%20C-4.45477857%2050.66766823%20-8.70775624%2050.65783785%20-12.96075439%2050.64678955%20C-17.2973993%2050.63657569%20-21.63404967%2050.63199596%20-25.97070312%2050.62695312%20C-34.48569269%2050.61621559%20-43.00065463%2050.59913903%20-51.515625%2050.578125%20C-50.76310085%2052.01068418%20-50.00072966%2053.43807287%20-49.234375%2054.86328125%20C-48.81091797%2055.65871338%20-48.38746094%2056.45414551%20-47.95117188%2057.27368164%20C-44.77728619%2062.36863181%20-40.24267716%2065.83885608%20-34.515625%2067.578125%20C-24.44648111%2068.75306138%20-13.88210791%2068.97920567%20-5.515625%2062.578125%20C-4.49191978%2061.60240597%20-3.48336669%2060.60937474%20-2.515625%2059.578125%20C0.41667693%2060.89933328%202.47102399%2062.32450697%204.71875%2064.6171875%20C5.29238281%2065.19726562%205.86601562%2065.77734375%206.45703125%2066.375%20C7.04355469%2066.97828125%207.63007813%2067.5815625%208.234375%2068.203125%20C8.83636719%2068.81414062%209.43835938%2069.42515625%2010.05859375%2070.0546875%20C11.53842805%2071.55801124%2013.01202176%2073.06747356%2014.484375%2074.578125%20C6.88082899%2084.58279081%20-3.31152864%2089.39611981%20-15.515625%2091.578125%20C-19.0759833%2091.8143607%20-22.63564692%2091.80900924%20-26.203125%2091.828125%20C-27.61754883%2091.8590625%20-27.61754883%2091.8590625%20-29.06054688%2091.890625%20C-43.17549414%2091.96823296%20-55.10728015%2086.56442315%20-65.26171875%2076.88671875%20C-75.61516851%2066.28205877%20-79.89439154%2053.46530582%20-79.73046875%2038.73046875%20C-78.80311822%2025.12370731%20-72.27652509%2013.81184063%20-62.515625%204.578125%20C-45.29287927%20-9.47756591%20-19.26149726%20-10.88693323%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(493.515625,472.421875)'/%3e%3cpath%20d='M0%200%20C9.57%200%2019.14%200%2029%200%20C31.88545714%206.3480057%2034.74623297%2012.64267461%2037.375%2019.08984375%20C37.66681152%2019.80048477%2037.95862305%2020.51112579%2038.25927734%2021.24330139%20C39.17479456%2023.47391024%2040.08751229%2025.70565039%2041%2027.9375%20C41.60917627%2029.42390959%2042.2185503%2030.91023814%2042.828125%2032.39648438%20C43.27551025%2033.48759018%2043.27551025%2033.48759018%2043.73193359%2034.60073853%20C44.32289018%2036.04103366%2044.91435386%2037.48112086%2045.50634766%2038.92098999%20C46.83058613%2042.14243669%2048.14705044%2045.36608605%2049.4453125%2048.59814453%20C49.87585938%2049.6601709%2050.30640625%2050.72219727%2050.75%2051.81640625%20C51.11609375%2052.7297876%2051.4821875%2053.64316895%2051.859375%2054.58422852%20C52.99948383%2056.99890679%2054.32194326%2058.93105971%2056%2061%20C63.85224401%2042.59935141%2063.85224401%2042.59935141%2071.375%2024.0625%20C74.61034321%2015.88404588%2078.06515289%207.86969422%2082%200%20C90.91%200%2099.82%200%20109%200%20C105.62156917%2011.2614361%20105.62156917%2011.2614361%20103.94921875%2015.33203125%20C103.57990234%2016.23373047%20103.21058594%2017.13542969%20102.83007812%2018.06445312%20C102.45302734%2018.97130859%20102.07597656%2019.87816406%20101.6875%2020.8125%20C101.13932617%2022.15538086%20101.13932617%2022.15538086%20100.58007812%2023.52539062%20C98.52888864%2028.50280206%2096.36531611%2033.41002468%2094.08984375%2038.2890625%20C91.12034683%2044.67044212%2088.37355778%2051.13053761%2085.67678833%2057.63122559%20C84.27693812%2061.00305678%2082.86621358%2064.37034217%2081.45703125%2067.73828125%20C81.17043137%2068.42368988%2080.88383148%2069.10909851%2080.58854675%2069.8152771%20C77.59723903%2076.96761949%2074.59243132%2084.11392962%2071.5625%2091.25%20C71.09118652%2092.37220947%2070.61987305%2093.49441895%2070.13427734%2094.65063477%20C64.14372759%20108.71158026%2057.88097216%20122.54500294%2043.26171875%20129.16015625%20C32.99566383%20132.97224918%2018.99532524%20132.39132855%209%20128%20C6.27254605%20126.74842163%203.64641133%20125.4212209%201%20124%20C1.6411928%20121.09325931%202.56662682%20118.57468666%203.84765625%20115.890625%20C4.38422852%20114.75947266%204.38422852%20114.75947266%204.93164062%20113.60546875%20C5.30482422%20112.82816406%205.67800781%20112.05085937%206.0625%20111.25%20C6.62807617%20110.06083984%206.62807617%20110.06083984%207.20507812%20108.84765625%20C8.13345839%20106.89688254%209.06629544%20104.94823094%2010%20103%20C12.57030771%20104.02467879%2015.13501673%20105.05651863%2017.6875%20106.125%20C23.13926051%20107.56508768%2028.53393046%20107.91137353%2033.875%20105.9375%20C36.67992585%20103.3800676%2038.90092755%20100.67546954%2040%2097%20C39.51255272%2092.02739581%2037.81323979%2087.84336435%2035.75390625%2083.34765625%20C35.42739075%2082.61970352%2035.10087524%2081.89175079%2034.76446533%2081.14173889%20C34.06574374%2079.58604999%2033.36386031%2078.03177798%2032.65908813%2076.4788208%20C31.54929238%2074.03339714%2030.44768068%2071.58443912%2029.34838867%2069.13427734%20C28.24699442%2066.67954634%2027.14520032%2064.22500817%2026.04084778%2061.77160645%20C22.05427867%2052.9145598%2018.19057599%2044.00588863%2014.33935547%2035.08935547%20C13.03927819%2032.09059902%2011.73151205%2029.09532776%2010.42124939%2026.10101318%20C9.20378396%2023.3178069%207.98924352%2020.53332878%206.7749939%2017.74871826%20C6.17859872%2016.3828194%205.58097738%2015.01745522%204.98208618%2013.65264893%20C4.14875742%2011.75295298%203.31997874%209.85133284%202.4921875%207.94921875%20C2.01120605%206.84924561%201.53022461%205.74927246%201.03466797%204.6159668%20C0%202%200%202%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(224,467)'/%3e%3cpath%20d='M0%200%20C4.6456294%203.80490916%208.23887006%207.95463812%2010.84375%2013.40234375%20C10.84375%2014.06234375%2010.84375%2014.72234375%2010.84375%2015.40234375%20C0.44875%2020.84734375%200.44875%2020.84734375%20-10.15625%2026.40234375%20C-15.15625%2022.40234375%20-15.15625%2022.40234375%20-17.59375%2019.83984375%20C-23.69448695%2014.03670372%20-29.49135908%2013.8685058%20-37.5859375%2014.05859375%20C-44.66458696%2014.74012674%20-48.35592604%2018.17840756%20-52.89453125%2023.42578125%20C-57.35750661%2030.4173154%20-57.05559365%2039.03898526%20-55.7265625%2046.96484375%20C-53.69407611%2054.19146201%20-49.25238278%2059.49703127%20-42.90625%2063.40234375%20C-35.21481566%2065.45339291%20-27.19943303%2065.45458604%20-20.15625%2061.40234375%20C-17.38502725%2059.04807876%20-17.38502725%2059.04807876%20-15.15625%2056.40234375%20C-13.82291667%2055.06901042%20-12.48958333%2053.73567708%20-11.15625%2052.40234375%20C-3.48829498%2054.74171986%203.61512274%2057.95003181%2010.84375%2061.40234375%20C9.71301894%2068.83286216%205.25630274%2073.41753074%20-0.15625%2078.40234375%20C-14.27515309%2088.65893292%20-29.58374274%2090.22229359%20-46.59375%2087.94140625%20C-59.50522416%2084.75107107%20-71.47879005%2076.68814229%20-78.59375%2065.40234375%20C-85.12640699%2053.53652894%20-87.70329542%2038.76522142%20-84.28515625%2025.4921875%20C-81.80476638%2018.01848819%20-78.48663047%2012.17115378%20-73.15625%206.40234375%20C-72.35574219%205.46648437%20-72.35574219%205.46648437%20-71.5390625%204.51171875%20C-54.14361329%20-14.63159857%20-19.9950983%20-14.8152087%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(612.15625,475.59765625)'/%3e%3cpath%20d='M0%200%20C0.92917236%200.00563965%201.85834473%200.0112793%202.81567383%200.01708984%20C16.49641332%200.25926927%2027.76888441%204.61429809%2037.6875%2014.3125%20C46.38158674%2024.33214256%2050.10184505%2035.73953622%2049.81640625%2048.8125%20C49.80710083%2049.63492188%2049.79779541%2050.45734375%2049.78820801%2051.3046875%20C49.76419258%2053.30742902%2049.72721288%2055.31000824%2049.6875%2057.3125%20C48.89538116%2057.31392502%2048.10326233%2057.31535004%2047.28713989%2057.31681824%20C39.78469277%2057.3347236%2032.2829255%2057.37655798%2024.78077888%2057.44459057%20C20.92473861%2057.47873308%2017.06908914%2057.50395048%2013.21289062%2057.50805664%20C9.48424299%2057.5123673%205.75647502%2057.54105506%202.02810287%2057.58593178%20C0.6129661%2057.5988193%20-0.80227644%2057.60324578%20-2.21746445%2057.59865379%20C-13.33340745%2057.57101196%20-22.06753601%2059.44924731%20-30.3125%2067.3125%20C-31.619314%2068.99914002%20-32.86837916%2070.7317826%20-34.0625%2072.5%20C-39.27138551%2079.83175205%20-44.31888353%2086.93254032%20-53.3125%2089.3125%20C-59.27605196%2089.97511688%20-63.4418563%2088.64128375%20-68.3125%2085.3125%20C-71.47815211%2082.38915707%20-73.44158139%2079.56624985%20-74.3125%2075.3125%20C-73.64863281%2075.07015625%20-72.98476563%2074.8278125%20-72.30078125%2074.578125%20C-70.97626953%2074.07539062%20-70.97626953%2074.07539062%20-69.625%2073.5625%20C-68.31982422%2073.07523438%20-68.31982422%2073.07523438%20-66.98828125%2072.578125%20C-61.914668%2070.17834297%20-58.99832299%2067.14164616%20-55.97827148%2062.4387207%20C-49.17329509%2051.85146005%20-39.91704612%2044.06974446%20-27.3125%2041.3125%20C-26.54315628%2041.14081802%20-25.77381256%2040.96913605%20-24.9811554%2040.79225159%20C-22.45293493%2040.33774638%20-20.17759888%2040.19175324%20-17.61401367%2040.19897461%20C-16.2631794%2040.19908791%20-16.2631794%2040.19908791%20-14.88505554%2040.19920349%20C-13.44728508%2040.20694542%20-13.44728508%2040.20694542%20-11.98046875%2040.21484375%20C-10.49284782%2040.21696617%20-10.49284782%2040.21696617%20-8.97517395%2040.21913147%20C-5.81675157%2040.22471582%20-2.65840085%2040.23726548%200.5%2040.25%20C2.64518127%2040.25501702%204.79036365%2040.25957958%206.93554688%2040.26367188%20C12.18622224%2040.27468012%2017.436856%2040.2914027%2022.6875%2040.3125%20C22.10377107%2038.71456803%2021.50594039%2037.1217836%2020.90234375%2035.53125%20C20.57097412%2034.64373047%2020.23960449%2033.75621094%2019.89819336%2032.84179688%20C17.64965073%2028.14429705%2013.96103717%2025.41875131%209.359375%2023.1796875%20C3.08895998%2021.1445528%20-4.68774346%2021.14815488%20-10.75%2023.875%20C-13.56487709%2025.50008368%20-15.07837473%2027.23984346%20-16.9375%2029.875%20C-20.51555769%2034.46424791%20-25.14252243%2034.57076651%20-30.625%2035.5%20C-36.37736083%2036.76746934%20-41.20002708%2039.47135793%20-46.3125%2042.3125%20C-47.64225647%2042.98627293%20-48.97417801%2043.65590541%20-50.3125%2044.3125%20C-49.77966687%2031.55114658%20-44.45627418%2020.94123005%20-35.1875%2012.125%20C-24.82466899%203.36989319%20-13.32375088%20-0.08431991%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(764.3125,465.6875)'/%3e%3cpath%20d='M0%200%20C44.84375%200%2044.84375%200%2055%2010%20C63.50692661%2020.10567615%2066.02395277%2031.00367642%2065%2044%20C63.92164324%2052.75980221%2059.27536689%2061.86408571%2053%2068%20C36.90761972%2079.76525518%2020.54677762%2076%200%2076%20C0%2050.92%200%2025.84%200%200%20Z%20'%20fill='%23FFFFFF'%20transform='translate(123,462)'/%3e%3cpath%20d='M0%200%20C0%208.58%200%2017.16%200%2026%20C-2.475%2026.0825%20-4.95%2026.165%20-7.5%2026.25%20C-15.58592043%2026.68028387%20-20.78770187%2028.00185508%20-26.8125%2033.625%20C-32.18698591%2040.84882192%20-32.45755497%2050.04763218%20-32.51171875%2058.6953125%20C-32.52966995%2059.76876923%20-32.54762115%2060.84222595%20-32.56611633%2061.94821167%20C-32.61983039%2065.34043577%20-32.65398988%2068.73252235%20-32.6875%2072.125%20C-32.72070741%2074.44012315%20-32.75520018%2076.75522823%20-32.79101562%2079.0703125%20C-32.87792806%2084.71355721%20-32.93833073%2090.35619859%20-33%2096%20C-42.24%2096%20-51.48%2096%20-61%2096%20C-61.11629021%2091.57321943%20-61.21532635%2087.15195899%20-61.2746582%2082.72485352%20C-61.29944483%2081.22662179%20-61.33328586%2079.72850609%20-61.37719727%2078.23071289%20C-61.84659218%2061.77980184%20-58.18723461%2049.29745852%20-47.64160156%2036.32958984%20C-46.11388537%2034.44998397%20-44.58793536%2032.56895731%20-43.0625%2030.6875%20C-42.54276611%2030.05078369%20-42.02303223%2029.41406738%20-41.48754883%2028.75805664%20C-38.17466035%2024.64362091%20-35.32555694%2020.47816771%20-32.625%2015.9375%20C-27.24219449%206.99173768%20-23.75743907%203.76906718%20-13.609375%200.6640625%20C-10%200%20-10%200%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(406,466)'/%3e%3cpath%20d='M0%200%20C5.66129431%204.69766975%2010.85228904%209.74723372%2016%2015%20C11.92304775%2022.70385133%204.05433775%2027.16606635%20-4%2030%20C-19.29250715%2034.53548448%20-36.16315756%2033.34402642%20-50.4140625%2026.31640625%20C-58.66486514%2021.8238732%20-58.66486514%2021.8238732%20-59.77929688%2019.08422852%20C-60%2017%20-60%2017%20-57.796875%2013.87109375%20C-56.79405635%2012.71532531%20-55.77778517%2011.57112409%20-54.75%2010.4375%20C-54.24597656%209.86064453%20-53.74195313%209.28378906%20-53.22265625%208.68945312%20C-50.89341628%206.03925489%20-48.51068548%203.47978615%20-46%201%20C-42.31120701%202.80247839%20-38.77349917%204.8276212%20-35.21875%206.87890625%20C-27.51820571%2010.76985028%20-18.90673806%209.19207078%20-10.88671875%207.06640625%20C-6.60864698%205.48600897%20-3.35300014%203.04728542%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(791,532)'/%3e%3cpath%20d='M0%200%20C4.56326885%202.95860288%208.00828055%206.6679148%209.9375%2011.8125%20C9.9375%2013.4625%209.9375%2015.1125%209.9375%2016.8125%20C-4.9125%2016.8125%20-19.7625%2016.8125%20-35.0625%2016.8125%20C-33.85907282%209.59193695%20-31.77484523%205.59340843%20-25.8984375%201.19140625%20C-17.83251928%20-3.44583989%20-8.3946856%20-4.34922034%200%200%20Z%20'%20fill='%23FFFFFF'%20transform='translate(477.0625,489.1875)'/%3e%3cpath%20d='M0%200%20C2.71975521%200.35943901%203.84341638%200.83999752%205.7890625%202.828125%20C6.39492188%203.62734375%207.00078125%204.4265625%207.625%205.25%20C8.3159375%206.14847656%209.006875%207.04695313%209.71875%207.97265625%20C10.4715625%208.97167969%2011.224375%209.97070312%2012%2011%20C13.27334297%2012.66801941%2014.55020731%2014.33328608%2015.828125%2015.99780273%20C16.68920631%2017.1197048%2017.54859726%2018.24290639%2018.40625%2019.36743164%20C20.72359821%2022.39401514%2023.10162467%2025.33084868%2025.625%2028.1875%20C28%2031%2028%2031%2028%2033%20C24.04%2033%2020.08%2033%2016%2033%20C16%2036.96%2016%2040.92%2016%2045%20C15.01%2044.505%2015.01%2044.505%2014%2044%20C13.5859375%2041.27734375%2013.5859375%2041.27734375%2013.375%2037.9375%20C13.30023437%2036.83277344%2013.22546875%2035.72804688%2013.1484375%2034.58984375%20C13.09945312%2033.73519531%2013.05046875%2032.88054687%2013%2032%20C14.134375%2031.54625%2015.26875%2031.0925%2016.4375%2030.625%20C20.04721692%2029.42904194%2020.04721692%2029.42904194%2021%2027%20C20.34%2027%2019.68%2027%2019%2027%20C18.608125%2025.9275%2018.21625%2024.855%2017.8125%2023.75%20C16.27259896%2020.08533167%2014.21849461%2018.3486312%2011%2016%20C11%2015.34%2011%2014.68%2011%2014%20C10.34%2014%209.68%2014%209%2014%20C7.4921875%2012.25%207.4921875%2012.25%205.875%2010%20C5.33617187%209.2575%204.79734375%208.515%204.2421875%207.75%20C3.83226562%207.1725%203.42234375%206.595%203%206%20C-3.93710167%209.15322803%20-9.63269943%2014.06474733%20-12.375%2021.25%20C-12.63023437%2022.05953125%20-12.88546875%2022.8690625%20-13.1484375%2023.703125%20C-14.07536523%2026.20327869%20-15.31553255%2027.94852568%20-17%2030%20C-15.02%2030.33%20-13.04%2030.66%20-11%2031%20C-9.51119807%2035.4664058%20-9.31090749%2039.30056546%20-11.09765625%2043.70703125%20C-13%2046%20-13%2046%20-16.13671875%2046.48828125%20C-19.42447917%2046.32552083%20-22.71223958%2046.16276042%20-26%2046%20C-26%2052.27%20-26%2058.54%20-26%2065%20C-24.1025%2064.95875%20-22.205%2064.9175%20-20.25%2064.875%20C-16.10895658%2064.78497732%20-13.61590012%2065.02831107%20-10%2067%20C-9.98786972%2067.91628929%20-9.98786972%2067.91628929%20-9.97549438%2068.85108948%20C-9.88922875%2075.22686062%20-9.78971604%2081.60232871%20-9.68261719%2087.9777832%20C-9.644408%2090.35500995%20-9.60954125%2092.73229292%20-9.578125%2095.10961914%20C-9.53229961%2098.53291881%20-9.47433332%20101.95583411%20-9.4140625%20105.37890625%20C-9.40251129%20106.43646622%20-9.39096008%20107.49402618%20-9.37905884%20108.58363342%20C-9.26966133%20114.09218328%20-8.82932532%20118.79123684%20-7%20124%20C-6.34%20124%20-5.68%20124%20-5%20124%20C-4.9071875%20124.928125%20-4.9071875%20124.928125%20-4.8125%20125.875%20C-4.19124685%20128.2501999%20-4.19124685%20128.2501999%20-1.625%20129.0625%20C-0.75875%20129.371875%200.1075%20129.68125%201%20130%20C2.6875%20131.5625%202.6875%20131.5625%204%20133%20C4.66%20133.33%205.32%20133.66%206%20134%20C6.625%20136.0625%206.625%20136.0625%207%20138%20C0.64042919%20136.72808584%20-3.00409013%20132.83266023%20-7%20128%20C-12.40978943%20119.7580267%20-13.30059906%20110.99356957%20-13.1953125%20101.375%20C-13.1924826%20100.38749756%20-13.18965271%2099.39999512%20-13.18673706%2098.38256836%20C-13.1756182%2095.25491785%20-13.15052916%2092.12756272%20-13.125%2089%20C-13.11495948%2086.86849374%20-13.10583551%2084.73698296%20-13.09765625%2082.60546875%20C-13.07570607%2077.4035335%20-13.04123391%2072.20181669%20-13%2067%20C-17.95%2067%20-22.9%2067%20-28%2067%20C-28%2059.74%20-28%2052.48%20-28%2045%20C-25.11584117%2043.55792059%20-22.58278472%2043.90605113%20-19.375%2043.9375%20C-18.18648437%2043.94652344%20-16.99796875%2043.95554687%20-15.7734375%2043.96484375%20C-14.85820313%2043.97644531%20-13.94296875%2043.98804688%20-13%2044%20C-13%2040.37%20-13%2036.74%20-13%2033%20C-16.63%2033%20-20.26%2033%20-24%2033%20C-22.47026072%2029.1756518%20-21.7364866%2027.36138218%20-19.27734375%2024.43359375%20C-18.74262451%2023.78841797%20-18.20790527%2023.14324219%20-17.65698242%2022.47851562%20C-16.80583862%2021.46821289%20-16.80583862%2021.46821289%20-15.9375%2020.4375%20C-10.41141017%2013.76832013%20-5.12012996%206.98560367%200%200%20Z%20'%20fill='%23C7FF57'%20transform='translate(660,423)'/%3e%3cpath%20d='M0%200%20C0.68078561%2010.15126993%20-6.26162995%2018.50517827%20-12.625%2025.8125%20C-13.10155029%2026.35165039%20-13.57810059%2026.89080078%20-14.0690918%2027.44628906%20C-17.57519453%2031.41656971%20-20.32199043%2035.44738374%20-23%2040%20C-23.33%2040%20-23.66%2040%20-24%2040%20C-24%2027.13%20-24%2014.26%20-24%201%20C-20.225625%200.835%20-16.45125%200.67%20-12.5625%200.5%20C-11.37084229%200.44779297%20-10.17918457%200.39558594%20-8.95141602%200.34179688%20C-7.55427368%200.28088867%20-7.55427368%200.28088867%20-6.12890625%200.21875%20C-5.17056885%200.17685547%20-4.21223145%200.13496094%20-3.22485352%200.09179688%20C-1%200%20-1%200%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(369,467)'/%3e%3cpath%20d='M0%200%20C2.00720923%200.28674418%204.0085944%200.61866701%206%201%20C6.495%202.485%206.495%202.485%207%204%20C7.66%204%208.32%204%209%204%20C9.495%205.98%209.495%205.98%2010%208%20C10.66%208%2011.32%208%2012%208%20C12.474375%208.639375%2012.94875%209.27875%2013.4375%209.9375%20C14.9091365%2012.28372963%2014.9091365%2012.28372963%2018%2013%20C18.495%2015.97%2018.495%2015.97%2019%2019%20C19.66%2019%2020.32%2019%2021%2019%20C22.0625%2020.8125%2022.0625%2020.8125%2023%2023%20C22.505%2024.485%2022.505%2024.485%2022%2026%20C21.3709375%2025.17757813%2020.741875%2024.35515625%2020.09375%2023.5078125%20C17.8531051%2020.58200082%2015.60149285%2017.6647905%2013.34716797%2014.74951172%20C12.10990021%2013.14272289%2010.88443769%2011.52686179%209.66015625%209.91015625%20C8.96792969%209.01167969%208.27570312%208.11320312%207.5625%207.1875%20C6.63630859%205.97126953%206.63630859%205.97126953%205.69140625%204.73046875%20C5.13324219%204.15941406%204.57507813%203.58835937%204%203%20C3.01%203%202.02%203%201%203%20C-1.1667738%205.33134682%20-1.1667738%205.33134682%20-3.375%208.4375%20C-4.25611385%209.62008724%20-5.13764692%2010.80236221%20-6.01953125%2011.984375%20C-6.49342285%2012.62568359%20-6.96731445%2013.26699219%20-7.45556641%2013.92773438%20C-9.12007314%2016.16110984%20-10.81214938%2018.37132519%20-12.51171875%2020.578125%20C-13.10098145%2021.34326416%20-13.69024414%2022.10840332%20-14.29736328%2022.89672852%20C-15.46363033%2024.41029473%20-16.62997013%2025.92380488%20-17.79638672%2027.43725586%20C-18.32893066%2028.13214111%20-18.86147461%2028.82702637%20-19.41015625%2029.54296875%20C-19.88590088%2030.16196045%20-20.36164551%2030.78095215%20-20.85180664%2031.41870117%20C-22.07331217%2033.0102519%20-22.07331217%2033.0102519%20-23%2035%20C-19.37%2035%20-15.74%2035%20-12%2035%20C-12%2038.63%20-12%2042.26%20-12%2046%20C-16.95%2046.33%20-21.9%2046.66%20-27%2047%20C-27%2054.26%20-27%2061.52%20-27%2069%20C-22.05%2069%20-17.1%2069%20-12%2069%20C-11.98541748%2070.31081543%20-11.97083496%2071.62163086%20-11.95581055%2072.97216797%20C-11.89747545%2077.87396394%20-11.82024648%2082.77531735%20-11.73754883%2087.67675781%20C-11.70446426%2089.7909421%20-11.67638204%2091.90521123%20-11.65356445%2094.01953125%20C-11.61971392%2097.07328159%20-11.56738455%20100.12626594%20-11.51171875%20103.1796875%20C-11.50532883%20104.11239471%20-11.4989389%20105.04510193%20-11.49235535%20106.006073%20C-11.26437364%20116.37399184%20-8.63724873%20126.05256773%20-1.3671875%20133.72265625%20C6.92807918%20141.29255208%2016.09690889%20142.40300166%2027.015625%20142.2109375%20C37.64372477%20141.64827339%2045.9753421%20138.49041118%2055%20133%20C55.66%20132.67%2056.32%20132.34%2057%20132%20C56.17631135%20135.60363786%2054.73164913%20137.5598772%2051.8125%20139.6875%20C43.36448472%20144.51927852%2032.57412865%20144.15231016%2023.0625%20144.25%20C22.03491577%20144.2641394%2022.03491577%20144.2641394%2020.98657227%20144.27856445%20C16.010662%20144.24659412%2011.7517971%20143.33793617%207%20142%20C6.67%20142.66%206.34%20143.32%206%20144%20C6%20143.34%206%20142.68%206%20142%20C5.2575%20141.731875%204.515%20141.46375%203.75%20141.1875%20C1.10938051%20140.04723249%20-0.85552844%20138.90619694%20-3%20137%20C-3%20136.34%20-3%20135.68%20-3%20135%20C-4.32%20134.67%20-5.64%20134.34%20-7%20134%20C-7.495%20132.02%20-7.495%20132.02%20-8%20130%20C-8.66%20130%20-9.32%20130%20-10%20130%20C-13.3917714%20117.17092103%20-13.35377076%20104.75435973%20-13.1875%2091.5625%20C-13.17241597%2089.4629003%20-13.15873419%2087.36329003%20-13.14648438%2085.26367188%20C-13.1137965%2080.17551518%20-13.0622224%2075.0878777%20-13%2070%20C-17.95%2070%20-22.9%2070%20-28%2070%20C-29.81226714%2066.37546571%20-29.18470181%2062.11521368%20-29.1875%2058.125%20C-29.19974609%2057.21363281%20-29.21199219%2056.30226563%20-29.22460938%2055.36328125%20C-29.22654297%2054.48285156%20-29.22847656%2053.60242188%20-29.23046875%2052.6953125%20C-29.23457764%2051.89109863%20-29.23868652%2051.08688477%20-29.24291992%2050.25830078%20C-28.96966064%2047.71795063%20-28.41516433%2046.12497675%20-27%2044%20C-24.1796875%2043.390625%20-24.1796875%2043.390625%20-20.875%2043.25%20C-19.77929688%2043.19328125%20-18.68359375%2043.1365625%20-17.5546875%2043.078125%20C-16.71164062%2043.05234375%20-15.86859375%2043.0265625%20-15%2043%20C-14.505%2040.03%20-14.505%2040.03%20-14%2037%20C-14.721875%2037.20625%20-15.44375%2037.4125%20-16.1875%2037.625%20C-19.54297056%2038.07239607%20-21.11604375%2037.76241771%20-24%2036%20C-24.875%2033.7421875%20-24.875%2033.7421875%20-25%2031%20C-23.453125%2028.359375%20-23.453125%2028.359375%20-21.25%2025.75%20C-20.53328125%2024.87859375%20-19.8165625%2024.0071875%20-19.078125%2023.109375%20C-17%2021%20-17%2021%20-14%2020%20C-14%2019.34%20-14%2018.68%20-14%2018%20C-13.34%2018%20-12.68%2018%20-12%2018%20C-12%2017.01%20-12%2016.02%20-12%2015%20C-11.34%2015%20-10.68%2015%20-10%2015%20C-9.938125%2014.46375%20-9.87625%2013.9275%20-9.8125%2013.375%20C-8.59964736%209.82973843%20-6.55389074%207.7407608%20-4%205%20C-3.34%205%20-2.68%205%20-2%205%20C-1.855625%204.360625%20-1.71125%203.72125%20-1.5625%203.0625%20C-1%201%20-1%201%200%200%20Z%20'%20fill='%23F2FFD9'%20transform='translate(659,421)'/%3e%3cpath%20d='M0%200%20C7.92%200%2015.84%200%2024%200%20C24%207.26%2024%2014.52%2024%2022%20C16.08%2022%208.16%2022%200%2022%20C0.05110565%2028.01513491%200.11411805%2034.02770699%200.20751953%2040.04199219%20C0.23569066%2042.08650395%200.25692435%2044.13112384%200.27099609%2046.17578125%20C0.29247887%2049.12035322%200.3391569%2052.06363041%200.390625%2055.0078125%20C0.39185364%2055.9174173%200.39308228%2056.82702209%200.39434814%2057.76419067%20C0.52424586%2063.4323883%201.24752639%2066.66904733%205%2071%20C7.15616421%2071.84067552%207.15616421%2071.84067552%209.4375%2071.875%20C13.59953049%2072.52786753%2013.59953049%2072.52786753%2015.484375%2074.75%20C16.28446347%2076.16314328%2017.06211601%2077.58923329%2017.81640625%2079.02734375%20C20.15058208%2082.91763679%2023.83300287%2084.61100096%2028%2086%20C29.72795352%2086.06802967%2031.45835365%2086.08495645%2033.1875%2086.0625%20C34.08855469%2086.05347656%2034.98960937%2086.04445313%2035.91796875%2086.03515625%20C36.60503906%2086.02355469%2037.29210937%2086.01195312%2038%2086%20C28.4198669%2094.94145756%2015.04998512%2096.35397366%202.5546875%2096.203125%20C-1.58388881%2095.96663493%20-5.07173198%2095.28269976%20-9%2094%20C-6.13129876%2093.17066175%20-3.67877335%2092.90857069%20-0.69921875%2093.0078125%20C0.51991211%2093.03294922%200.51991211%2093.03294922%201.76367188%2093.05859375%20C3.45140273%2093.10256528%205.13894568%2093.15453885%206.82617188%2093.21484375%20C12.36551383%2093.31102806%2016.06333211%2092.5449489%2021%2090%20C21%2089.01%2021%2088.02%2021%2087%20C19.5459375%2086.0409375%2019.5459375%2086.0409375%2018.0625%2085.0625%20C15%2083%2015%2083%2014.125%2080.75%20C14.08375%2080.1725%2014.0425%2079.595%2014%2079%20C13.34%2079%2012.68%2079%2012%2079%20C12%2078.34%2012%2077.68%2012%2077%20C11.278125%2076.896875%2010.55625%2076.79375%209.8125%2076.6875%20C5.46614904%2075.62505865%202.79905402%2074.21337832%200.3125%2070.4375%20C-0.120625%2069.633125%20-0.55375%2068.82875%20-1%2068%20C-1.66%2067.34%20-2.32%2066.68%20-3%2066%20C-4.56682324%2055.65896659%20-4.02187183%2044.9749078%20-3.6875%2034.5625%20C-3.65293701%2033.35924072%20-3.61837402%2032.15598145%20-3.58276367%2030.91625977%20C-3.53869385%2029.79018311%20-3.49462402%2028.66410645%20-3.44921875%2027.50390625%20C-3.41143311%2026.49142822%20-3.37364746%2025.4789502%20-3.3347168%2024.43579102%20C-3%2022%20-3%2022%20-1%2020%20C1.15478516%2019.68115234%201.15478516%2019.68115234%203.7890625%2019.5859375%20C5.20058594%2019.52792969%205.20058594%2019.52792969%206.640625%2019.46875%20C7.62546875%2019.4378125%208.6103125%2019.406875%209.625%2019.375%20C11.11386719%2019.31699219%2011.11386719%2019.31699219%2012.6328125%2019.2578125%20C15.08835385%2019.1633686%2017.5438841%2019.07780125%2020%2019%20C19.98839844%2018.18015625%2019.97679687%2017.3603125%2019.96484375%2016.515625%20C19.95582031%2015.43796875%2019.94679688%2014.3603125%2019.9375%2013.25%20C19.92589844%2012.18265625%2019.91429687%2011.1153125%2019.90234375%2010.015625%20C19.98489913%207.46631499%2020.25382442%205.42066409%2021%203%20C20.01966797%203.29197266%2020.01966797%203.29197266%2019.01953125%203.58984375%20C15.00486508%204.13517357%2011.62136988%203.38864783%207.6875%202.5625%20C6.94693359%202.41490234%206.20636719%202.26730469%205.44335938%202.11523438%20C3.62718357%201.75199921%201.81333589%201.37715682%200%201%20C0%200.67%200%200.34%200%200%20Z%20'%20fill='%239BE600'%20transform='translate(676,468)'/%3e%3cpath%20d='M0%200%20C3%203%203%203%203.2578125%205.3046875%20C3.21398437%206.15289062%203.17015625%207.00109375%203.125%207.875%20C3.00502835%2011.46371724%203.2754511%2014.48076247%204%2018%20C3.60976365%2021.31700894%202.61164065%2022.93522445%200%2025%20C-2.36010742%2025.34057617%20-2.36010742%2025.34057617%20-5.10546875%2025.29296875%20C-6.08837891%2025.28330078%20-7.07128906%2025.27363281%20-8.08398438%2025.26367188%20C-9.10814453%2025.23853516%20-10.13230469%2025.21339844%20-11.1875%2025.1875%20C-12.22326172%2025.17396484%20-13.25902344%2025.16042969%20-14.32617188%2025.14648438%20C-16.88463699%2025.11111389%20-19.4420578%2025.06175544%20-22%2025%20C-21.93433838%2025.60046143%20-21.86867676%2026.20092285%20-21.80102539%2026.81958008%20C-20.93290834%2035.43139683%20-20.67409758%2044.04154841%20-20.4375%2052.6875%20C-20.39418922%2054.17904546%20-20.35057152%2055.67058205%20-20.30664062%2057.16210938%20C-20.20089527%2060.77464429%20-20.09928034%2064.38728094%20-20%2068%20C-19.05898438%2068.29648437%20-18.11796875%2068.59296875%20-17.1484375%2068.8984375%20C-14.2055568%2069.92808062%20-12.3554191%2071.00695307%20-10%2073%20C-14.03645882%2073.31658501%20-16.32333195%2073.4210379%20-19.8125%2071.25%20C-23.0830854%2067.88596931%20-24.25459399%2065.28097814%20-24.22705078%2060.59863281%20C-24.22689972%2059.7380426%20-24.22674866%2058.87745239%20-24.22659302%2057.99078369%20C-24.21627045%2057.07085632%20-24.20594788%2056.15092896%20-24.1953125%2055.203125%20C-24.1924826%2054.25435486%20-24.18965271%2053.30558472%20-24.18673706%2052.32806396%20C-24.17555448%2049.30191361%20-24.1504533%2046.2760607%20-24.125%2043.25%20C-24.11496772%2041.19661886%20-24.1058423%2039.14323308%20-24.09765625%2037.08984375%20C-24.07732418%2032.05968942%20-24.03817166%2027.03017714%20-24%2022%20C-16.08%2022%20-8.16%2022%200%2022%20C0%2014.74%200%207.48%200%200%20Z%20'%20fill='%23E8FFC2'%20transform='translate(700,468)'/%3e%3cpath%20d='M0%200%20C4.62%200%209.24%200%2014%200%20C14.01458252%201.31081543%2014.02916504%202.62163086%2014.04418945%203.97216797%20C14.10252455%208.87396394%2014.17975352%2013.77531735%2014.26245117%2018.67675781%20C14.29553574%2020.7909421%2014.32361796%2022.90521123%2014.34643555%2025.01953125%20C14.38028608%2028.07328159%2014.43261545%2031.12626594%2014.48828125%2034.1796875%20C14.49467117%2035.11239471%2014.5010611%2036.04510193%2014.50764465%2037.006073%20C14.73562636%2047.37399184%2017.36275127%2057.05256773%2024.6328125%2064.72265625%20C32.92807918%2072.29255208%2042.09690889%2073.40300166%2053.015625%2073.2109375%20C63.64372477%2072.64827339%2071.9753421%2069.49041118%2081%2064%20C81.66%2063.67%2082.32%2063.34%2083%2063%20C82.17631135%2066.60363786%2080.73164913%2068.5598772%2077.8125%2070.6875%20C69.36448472%2075.51927852%2058.57412865%2075.15231016%2049.0625%2075.25%20C48.03491577%2075.2641394%2048.03491577%2075.2641394%2046.98657227%2075.27856445%20C42.010662%2075.24659412%2037.7517971%2074.33793617%2033%2073%20C32.67%2073.66%2032.34%2074.32%2032%2075%20C32%2074.34%2032%2073.68%2032%2073%20C31.2575%2072.731875%2030.515%2072.46375%2029.75%2072.1875%20C27.10938051%2071.04723249%2025.14447156%2069.90619694%2023%2068%20C23%2067.34%2023%2066.68%2023%2066%20C21.68%2065.67%2020.36%2065.34%2019%2065%20C18.67%2063.68%2018.34%2062.36%2018%2061%20C17.34%2061%2016.68%2061%2016%2061%20C12.6082286%2048.17092103%2012.64622924%2035.75435973%2012.8125%2022.5625%20C12.82758403%2020.4629003%2012.84126581%2018.36329003%2012.85351562%2016.26367188%20C12.8862035%2011.17551518%2012.9377776%206.0878777%2013%201%20C8.71%201%204.42%201%200%201%20C0%200.67%200%200.34%200%200%20Z%20'%20fill='%23E8FFC2'%20transform='translate(633,490)'/%3e%3cpath%20d='M0%200%20C0.81434143%202.85160391%201.11881242%205.36626131%201.09765625%208.328125%20C1.09443359%209.12734375%201.09121094%209.9265625%201.08789062%2010.75%20C1.07951172%2011.575%201.07113281%2012.4%201.0625%2013.25%20C1.05798828%2014.09046875%201.05347656%2014.9309375%201.04882812%2015.796875%20C1.03707961%2017.86461401%201.01914522%2019.93231624%201%2022%20C1.99%2022%202.98%2022%204%2022%20C4%2028.27%204%2034.54%204%2041%20C-5.24%2041%20-14.48%2041%20-24%2041%20C-24%2040.67%20-24%2040.34%20-24%2040%20C-22.35%2040%20-20.7%2040%20-19%2040%20C-19%2028.12%20-19%2016.24%20-19%204%20C-18.34%203.67%20-17.68%203.34%20-17%203%20C-17%2015.21%20-17%2027.42%20-17%2040%20C-11.72%2040%20-6.44%2040%20-1%2040%20C-1.00523682%2038.82381104%20-1.01047363%2037.64762207%20-1.01586914%2036.43579102%20C-1.03391663%2032.08797969%20-1.04543108%2027.7401717%20-1.05493164%2023.39233398%20C-1.05997244%2021.5075627%20-1.06680498%2019.62279535%20-1.07543945%2017.73803711%20C-1.08751617%2015.03498364%20-1.09323068%2012.33198169%20-1.09765625%209.62890625%20C-1.10281754%208.78099014%20-1.10797882%207.93307404%20-1.11329651%207.0594635%20C-1.11349195%205.03928932%20-1.06206211%203.01922066%20-1%201%20C-0.67%200.67%20-0.34%200.34%200%200%20Z%20'%20fill='%230D0026'%20transform='translate(369,521)'/%3e%3cpath%20d='M0%200%20C7.92%200%2015.84%200%2024%200%20C24%207.26%2024%2014.52%2024%2022%20C11.625%2022.495%2011.625%2022.495%20-1%2023%20C-1.33%2036.2%20-1.66%2049.4%20-2%2063%20C-2.33%2063%20-2.66%2063%20-3%2063%20C-4.13448821%2053.55756734%20-4.00188302%2044.23836711%20-3.6875%2034.75%20C-3.65277588%2033.53530029%20-3.61805176%2032.32060059%20-3.58227539%2031.0690918%20C-3.5383667%2029.92738525%20-3.49445801%2028.78567871%20-3.44921875%2027.609375%20C-3.41143311%2026.57780273%20-3.37364746%2025.54623047%20-3.3347168%2024.48339844%20C-3%2022%20-3%2022%20-1%2020%20C1.15478516%2019.68115234%201.15478516%2019.68115234%203.7890625%2019.5859375%20C5.20058594%2019.52792969%205.20058594%2019.52792969%206.640625%2019.46875%20C7.62546875%2019.4378125%208.6103125%2019.406875%209.625%2019.375%20C11.11386719%2019.31699219%2011.11386719%2019.31699219%2012.6328125%2019.2578125%20C15.08835385%2019.1633686%2017.5438841%2019.07780125%2020%2019%20C19.98839844%2018.18015625%2019.97679687%2017.3603125%2019.96484375%2016.515625%20C19.95582031%2015.43796875%2019.94679688%2014.3603125%2019.9375%2013.25%20C19.92589844%2012.18265625%2019.91429687%2011.1153125%2019.90234375%2010.015625%20C19.98489913%207.46631499%2020.25382442%205.42066409%2021%203%20C20.01966797%203.29197266%2020.01966797%203.29197266%2019.01953125%203.58984375%20C15.00486508%204.13517357%2011.62136988%203.38864783%207.6875%202.5625%20C6.94693359%202.41490234%206.20636719%202.26730469%205.44335938%202.11523438%20C3.62718357%201.75199921%201.81333589%201.37715682%200%201%20C0%200.67%200%200.34%200%200%20Z%20'%20fill='%23A7EA18'%20transform='translate(676,468)'/%3e%3cpath%20d='M0%200%20C1.98%200%203.96%200%206%200%20C6.96345149%205.39532832%206.9764649%2010.29708307%206.5625%2015.75%20C6.15134315%2021.36947121%206.15134315%2021.36947121%206%2027%20C4.94140625%2029.04296875%204.94140625%2029.04296875%203.5625%2031.1875%20C2.88380859%2032.26064453%202.88380859%2032.26064453%202.19140625%2033.35546875%20C1.79824219%2033.89816406%201.40507812%2034.44085938%201%2035%20C0.67%2035%200.34%2035%200%2035%20C0%2023.45%200%2011.9%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(345,472)'/%3e%3cpath%20d='M0%200%20C0.33%200%200.66%200%201%200%20C1%2025.74%201%2051.48%201%2078%20C0.01%2077.67%20-0.98%2077.34%20-2%2077%20C-1.83734146%2076.29841263%20-1.67468292%2075.59682526%20-1.50709534%2074.87397766%20C-0.97453003%2071.8556482%20-0.87991379%2069.08025882%20-0.88647461%2066.01635742%20C-0.88655014%2064.83551071%20-0.88662567%2063.654664%20-0.88670349%2062.43803406%20C-0.89186478%2061.17328751%20-0.89702606%2059.90854095%20-0.90234375%2058.60546875%20C-0.9037587%2057.30297684%20-0.90517365%2056.00048492%20-0.90663147%2054.65852356%20C-0.91043645%2051.20783546%20-0.92024936%2047.75718992%20-0.93133545%2044.30651855%20C-0.94159311%2040.78052343%20-0.9461384%2037.25452139%20-0.95117188%2033.72851562%20C-0.96187356%2026.81899301%20-0.97892557%2019.90949855%20-1%2013%20C-1.99%2012.67%20-2.98%2012.34%20-4%2012%20C-3.649375%2011.236875%20-3.29875%2010.47375%20-2.9375%209.6875%20C-1.67639116%206.95240621%20-1.67639116%206.95240621%20-3%204%20C-1.625%201.8125%20-1.625%201.8125%200%200%20Z%20'%20fill='%230D0026'%20transform='translate(929,483)'/%3e%3cpath%20d='M0%200%20C0.66%200.33%201.32%200.66%202%201%20C3.78043103%208.12172411%203%2015.65909482%203%2023%20C-16.47%2023%20-35.94%2023%20-56%2023%20C-56%2022.67%20-56%2022.34%20-56%2022%20C-28.775%2021.505%20-28.775%2021.505%20-1%2021%20C-1.66%2018.03%20-2.32%2015.06%20-3%2012%20C-2.70676058%207.60140869%20-1.82135506%204.00698114%200%200%20Z%20'%20fill='%2312003B'%20transform='translate(811,500)'/%3e%3cpath%20d='M0%200%20C10.89%200%2021.78%200%2033%200%20C32%202%2032%202%2028.9375%203.125%20C27.968125%203.41375%2026.99875%203.7025%2026%204%20C26%204.33%2026%204.66%2026%205%20C22.9166866%205.02911321%2019.83340875%205.04683682%2016.75%205.0625%20C15.87730469%205.07087891%2015.00460938%205.07925781%2014.10546875%205.08789062%20C13.26113281%205.09111328%2012.41679687%205.09433594%2011.546875%205.09765625%20C10.38430176%205.10551147%2010.38430176%205.10551147%209.19824219%205.11352539%20C6.99642569%204.99981541%205.11528675%204.60281778%203%204%20C2.2575%203.814375%201.515%203.62875%200.75%203.4375%20C0.1725%203.293125%20-0.405%203.14875%20-1%203%20C-0.67%202.01%20-0.34%201.02%200%200%20Z%20'%20fill='%230D0026'%20transform='translate(127,456)'/%3e%3cpath%20d='M0%200%20C0.33%200%200.66%200%201%200%20C1.00808685%200.61085953%201.01617371%201.22171906%201.02450562%201.85108948%20C1.11077125%208.22686062%201.21028396%2014.60232871%201.31738281%2020.9777832%20C1.355592%2023.35500995%201.39045875%2025.73229292%201.421875%2028.10961914%20C1.46770039%2031.53291881%201.52566668%2034.95583411%201.5859375%2038.37890625%20C1.60326431%2039.9652462%201.60326431%2039.9652462%201.62094116%2041.58363342%20C1.73033867%2047.09218328%202.17067468%2051.79123684%204%2057%20C4.66%2057%205.32%2057%206%2057%20C6.061875%2057.61875%206.12375%2058.2375%206.1875%2058.875%20C6.80875315%2061.2501999%206.80875315%2061.2501999%209.375%2062.0625%20C10.24125%2062.371875%2011.1075%2062.68125%2012%2063%20C13.6875%2064.5625%2013.6875%2064.5625%2015%2066%20C15.66%2066.33%2016.32%2066.66%2017%2067%20C17.625%2069.0625%2017.625%2069.0625%2018%2071%20C11.64674292%2069.72934858%207.98595005%2065.83583279%204%2061%20C-0.20320088%2054.43626224%20-1.13694835%2048.50999461%20-1.09375%2040.75%20C-1.09016479%2040.05398682%20-1.08657959%2039.35797363%20-1.08288574%2038.64086914%20C-1.02339219%2030.75687156%20-0.77025329%2022.87906229%20-0.5%2015%20C-0.4515835%2013.53125787%20-0.40340556%2012.06250786%20-0.35546875%2010.59375%20C-0.23971031%207.06240545%20-0.12078988%203.53117647%200%200%20Z%20'%20fill='%23A7EA18'%20transform='translate(649,490)'/%3e%3cpath%20d='M0%200%20C6.93%200%2013.86%200%2021%200%20C21%200.66%2021%201.32%2021%202%20C23.475%202.99%2023.475%202.99%2026%204%20C26%204.33%2026%204.66%2026%205%20C14.78%205%203.56%205%20-8%205%20C-4%203%20-4%203%20-1%202%20C-0.67%201.34%20-0.34%200.68%200%200%20Z%20'%20fill='%230D0026'%20transform='translate(132,539)'/%3e%3cpath%20d='M0%200%20C0.33%200%200.66%200%201%200%20C1.0093457%201.27117676%201.01869141%202.54235352%201.02832031%203.85205078%20C1.0682865%208.58238362%201.13406414%2013.31207062%201.20751953%2018.04199219%20C1.23569066%2020.08650395%201.25692435%2022.13112384%201.27099609%2024.17578125%20C1.29247887%2027.12035322%201.3391569%2030.06363041%201.390625%2033.0078125%20C1.39246796%2034.3722197%201.39246796%2034.3722197%201.39434814%2035.76419067%20C1.52438447%2041.4384366%202.24925859%2044.66233702%206%2049%20C8.30476633%2050.12133721%208.30476633%2050.12133721%2010.75%2050.375%20C11.54921875%2050.50648438%2012.3484375%2050.63796875%2013.171875%2050.7734375%20C13.77515625%2050.84820313%2014.3784375%2050.92296875%2015%2051%20C15%2051.33%2015%2051.66%2015%2052%20C13.22992286%2052.08114106%2011.45877902%2052.13925505%209.6875%2052.1875%20C8.70136719%2052.22230469%207.71523438%2052.25710938%206.69921875%2052.29296875%20C4%2052%204%2052%202.20703125%2050.67578125%20C1%2049%201%2049%200%2046%20C-0.66%2045.34%20-1.32%2044.68%20-2%2044%20C-2.20927429%2042.1337738%20-2.20927429%2042.1337738%20-2.15112305%2039.84155273%20C-2.13417892%2038.98403915%20-2.1172348%2038.12652557%20-2.09977722%2037.24302673%20C-2.07071793%2036.31591385%20-2.04165863%2035.38880096%20-2.01171875%2034.43359375%20C-1.98906448%2033.48436539%20-1.96641022%2032.53513702%20-1.94306946%2031.55714417%20C-1.8930653%2029.54879358%20-1.83809315%2027.54056154%20-1.77856445%2025.5324707%20C-1.68777846%2022.4469639%20-1.61311485%2019.36138491%20-1.54101562%2016.27539062%20C-1.49053325%2014.32810014%20-1.43913222%2012.38083321%20-1.38671875%2010.43359375%20C-1.36373215%209.50445663%20-1.34074554%208.57531952%20-1.31706238%207.61802673%20C-1.29066177%206.76366531%20-1.26426117%205.90930389%20-1.23706055%205.02905273%20C-1.21548386%204.27341537%20-1.19390717%203.51777802%20-1.17167664%202.73924255%20C-1%201%20-1%201%200%200%20Z%20'%20fill='%23C7FF57'%20transform='translate(675,490)'/%3e%3cpath%20d='M0%200%20C0.33%200%200.66%200%201%200%20C1%2014.85%201%2029.7%201%2045%20C-1%2043%20-1%2043%20-1.125%2040.72265625%20C-1.04178877%2038.95181718%20-0.95845579%2037.18098382%20-0.875%2035.41015625%20C-0.80800597%2032.73455911%20-0.80800597%2032.73455911%20-3%2030%20C-2.505%2028.515%20-2.505%2028.515%20-2%2027%20C-2.31050297%2025.32892945%20-2.64717051%2023.66264856%20-3%2022%20C-3.09035285%2020.00160753%20-3.13010313%2018.00042747%20-3.125%2016%20C-3.12757813%2014.989375%20-3.13015625%2013.97875%20-3.1328125%2012.9375%20C-3.00826727%2010.18285256%20-2.62110865%207.68161197%20-2%205%20C-1.34%205%20-0.68%205%200%205%20C0%203.35%200%201.7%200%200%20Z%20'%20fill='%23FFFFFF'%20transform='translate(901,431)'/%3e%3cpath%20d='M0%200%20C2.57069617%203.85604425%202.35065056%207.12746343%202.4140625%2011.60546875%20C2.43342865%2012.44467361%202.4527948%2013.28387848%202.4727478%2014.14851379%20C2.53251213%2016.82807258%202.57891612%2019.5076744%202.625%2022.1875%20C2.6631827%2024.00457599%202.70223461%2025.82163394%202.7421875%2027.63867188%20C2.83821103%2032.09230132%202.92225359%2036.54601551%203%2041%20C3.94101562%2041.29648437%204.88203125%2041.59296875%205.8515625%2041.8984375%20C8.7944432%2042.92808062%2010.6445809%2044.00695307%2013%2046%20C8.86001651%2046.32470459%206.66000999%2046.4304413%203.125%2044.125%20C0.12481839%2041.12481839%200.01401021%2040.48116775%20-0.11352539%2036.10107422%20C-0.11336671%2034.418937%20-0.10769737%2032.73679475%20-0.09765625%2031.0546875%20C-0.0962413%2030.1696756%20-0.09482635%2029.2846637%20-0.09336853%2028.37283325%20C-0.0877614%2025.54018809%20-0.07520771%2022.70762136%20-0.0625%2019.875%20C-0.05748592%2017.95703239%20-0.05292285%2016.03906354%20-0.04882812%2014.12109375%20C-0.03778966%209.41403218%20-0.02052025%204.7070294%200%200%20Z%20'%20fill='%23F2FFD9'%20transform='translate(677,495)'/%3e%3cpath%20d='M0%200%20C0.82200425%206.24723226%20-2.07448606%2010.71317837%20-5%2016%20C-6.95100616%2014.37586398%20-7.92782782%2013.56206818%20-8.2578125%2010.9921875%20C-8.21398437%2010.29351562%20-8.17015625%209.59484375%20-8.125%208.875%20C-8.08375%207.59625%20-8.0425%206.3175%20-8%205%20C-8.98267859%203.79438816%20-8.98267859%203.79438816%20-10.84765625%203.90234375%20C-12.8984375%203.93489583%20-14.94921875%203.96744792%20-17%204%20C-17%203.01%20-17%202.02%20-17%201%20C-14.3541898%200.832959%20-11.70835369%200.66634934%20-9.0625%200.5%20C-8.30775391%200.45230469%20-7.55300781%200.40460938%20-6.77539062%200.35546875%20C-1.11328125%200%20-1.11328125%200%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(369,467)'/%3e%3cpath%20d='M0%200%20C4.29%200%208.58%200%2013%200%20C13.02505615%201.34747314%2013.0501123%202.69494629%2013.07592773%204.08325195%20C13.17000223%209.07602678%2013.27022294%2014.06866249%2013.37231445%2019.0612793%20C13.41566313%2021.2233556%2013.45733825%2023.38546613%2013.49731445%2025.54760742%20C13.55501844%2028.65293702%2013.61871272%2031.75809436%2013.68359375%2034.86328125%20C13.70030624%2035.83211746%2013.71701874%2036.80095367%2013.73423767%2037.79914856%20C13.75418289%2038.6998558%2013.77412811%2039.60056305%2013.79467773%2040.52856445%20C13.81022202%2041.32132278%2013.8257663%2042.11408112%2013.84178162%2042.93086243%20C13.93081226%2045.19739774%2013.93081226%2045.19739774%2015%2048%20C15.12781786%2050.67394964%2015.04391871%2053.32095857%2015%2056%20C14.67%2056%2014.34%2056%2014%2056%20C13.29066112%2053.54623548%2012.60781467%2051.08945724%2011.9375%2048.625%20C11.73833984%2047.94566406%2011.53917969%2047.26632812%2011.33398438%2046.56640625%20C10.04560625%2041.72933752%2010.02964032%2037.78697173%2010.67358398%2032.84228516%20C11.33901124%2027.04804123%2011.37950304%2021.20090331%2011.5625%2015.375%20C11.60568359%2014.08464844%2011.64886719%2012.79429687%2011.69335938%2011.46484375%20C11.79852148%208.30998067%2011.90066604%205.15505105%2012%202%20C11.25363281%202.17402344%2010.50726562%202.34804688%209.73828125%202.52734375%20C6.30488867%203.11998355%203.41085419%202.60191545%200%202%20C0%201.34%200%200.68%200%200%20Z%20'%20fill='%23F2FFD9'%20transform='translate(633,491)'/%3e%3cpath%20d='M0%200%20C7.26%200%2014.52%200%2022%200%20C21.34%200.66%2020.68%201.32%2020%202%20C20.33%202.66%2020.66%203.32%2021%204%20C14.73%204%208.46%204%202%204%20C2%206.64%202%209.28%202%2012%20C1.34%2012.66%200.68%2013.32%200%2014%20C0.01160156%2013.30132812%200.02320313%2012.60265625%200.03515625%2011.8828125%20C0.04417969%2010.97273438%200.05320313%2010.06265625%200.0625%209.125%20C0.07410156%208.22007812%200.08570313%207.31515625%200.09765625%206.3828125%20C0.16249257%203.9831415%200.16249257%203.9831415%20-1%202%20C-0.67%201.34%20-0.34%200.68%200%200%20Z%20'%20fill='%230D0026'%20transform='translate(230,468)'/%3e%3cpath%20d='M0%200%20C3.26587942%200.14550948%206.38789358%200.49324673%209.5625%201.3125%20C9.2325%202.3025%208.9025%203.2925%208.5625%204.3125%20C9.2225%204.6425%209.8825%204.9725%2010.5625%205.3125%20C9.5625%206.3125%209.5625%206.3125%206.87866211%206.42602539%20C5.71085205%206.42078857%204.54304199%206.41555176%203.33984375%206.41015625%20C2.07978516%206.40693359%200.81972656%206.40371094%20-0.47851562%206.40039062%20C-1.81901109%206.39203403%20-3.15950588%206.38356907%20-4.5%206.375%20C-5.84439942%206.3699866%20-7.1888006%206.36542342%20-8.53320312%206.36132812%20C-11.83467941%206.34949488%20-15.13606803%206.33300971%20-18.4375%206.3125%20C-15.4375%204.3125%20-15.4375%204.3125%20-12%204.4375%20C-8.38721028%204.72990718%20-8.38721028%204.72990718%20-6.5625%202.3125%20C-4.04895307%20-0.05319123%20-3.34014743%200.01650814%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(584.4375,465.6875)'/%3e%3cpath%20d='M0%200%20C1.32%200%202.64%200%204%200%20C4%200.66%204%201.32%204%202%20C4.73605469%201.855625%205.47210937%201.71125%206.23046875%201.5625%20C7.20628906%201.376875%208.18210937%201.19125%209.1875%201%20C10.15042969%200.814375%2011.11335937%200.62875%2012.10546875%200.4375%20C18.83937824%20-0.58031088%2018.83937824%20-0.58031088%2022%201%20C22.99%200.67%2023.98%200.34%2025%200%20C25.33%200.33%2025.66%200.66%2026%201%20C27.99964982%201.08758003%2030.0023611%201.10696576%2032.00390625%201.09765625%20C33.82631836%201.09282227%2033.82631836%201.09282227%2035.68554688%201.08789062%20C36.96494141%201.07951172%2038.24433594%201.07113281%2039.5625%201.0625%20C41.48739258%201.05573242%2041.48739258%201.05573242%2043.45117188%201.04882812%20C46.63416022%201.03699545%2049.81705762%201.02051068%2053%201%20C53.495%201.99%2053.495%201.99%2054%203%20C36.18%203%2018.36%203%200%203%20C0%202.01%200%201.02%200%200%20Z%20'%20fill='%230D0026'%20transform='translate(731,509)'/%3e%3cpath%20d='M0%200%20C3.3%200%206.6%200%2010%200%20C10%200.33%2010%200.66%2010%201%20C7.69%201.33%205.38%201.66%203%202%20C3%204.64%203%207.28%203%2010%20C3.66%209.67%204.32%209.34%205%209%20C6.44848582%208.91657841%207.90070869%208.89267139%209.3515625%208.90234375%20C10.20234375%208.90556641%2011.053125%208.90878906%2011.9296875%208.91210938%20C12.81914063%208.92048828%2013.70859375%208.92886719%2014.625%208.9375%20C15.5221875%208.94201172%2016.419375%208.94652344%2017.34375%208.95117188%20C19.56256648%208.96297409%2021.78125018%208.97943845%2024%209%20C24%209.99%2024%2010.98%2024%2012%20C16.08%2012%208.16%2012%200%2012%20C0%208.04%200%204.08%200%200%20Z%20'%20fill='%23E8FFC2'%20transform='translate(676,456)'/%3e%3cpath%20d='M0%200%20C0.33%200%200.66%200%201%200%20C1.02893932%203.62498334%201.04677792%207.24993713%201.0625%2010.875%20C1.07087891%2011.90753906%201.07925781%2012.94007813%201.08789062%2014.00390625%20C1.09111328%2014.99003906%201.09433594%2015.97617187%201.09765625%2016.9921875%20C1.10289307%2017.90339355%201.10812988%2018.81459961%201.11352539%2019.75341797%20C1%2022%201%2022%200%2024%20C-0.99%2023.67%20-1.98%2023.34%20-3%2023%20C-5.01862148%2017.75866703%20-4.98056566%2010.73616357%20-3.10546875%205.50390625%20C-2.15670432%203.62314001%20-1.08879621%201.80331872%200%200%20Z%20'%20fill='%230D0026'%20transform='translate(831,508)'/%3e%3cpath%20d='M0%200%20C1.98%200%203.96%200%206%200%20C5.67%200.99%205.34%201.98%205%203%20C5.99%203.33%206.98%203.66%208%204%20C7.34%204%206.68%204%206%204%20C6.66%205.65%207.32%207.3%208%209%20C9.65%208.67%2011.3%208.34%2013%208%20C13.33%209.32%2013.66%2010.64%2014%2012%20C16.31%2012%2018.62%2012%2021%2012%20C21%2011.34%2021%2010.68%2021%2010%20C21.66%2010%2022.32%2010%2023%2010%20C23.33%2010.99%2023.66%2011.98%2024%2013%20C18.94576102%2014.68474633%2014.71544468%2014.58019314%209.875%2012.375%20C5.29909504%209.86935884%201.9168134%206.67991608%200.1875%201.625%20C0.125625%201.08875%200.06375%200.5525%200%200%20Z%20'%20fill='%236F9300'%20transform='translate(690,541)'/%3e%3cpath%20d='M0%200%20C6.93%200.33%2013.86%200.66%2021%201%20C20.34%201.66%2019.68%202.32%2019%203%20C19.33%203.66%2019.66%204.32%2020%205%20C17.10410348%205.02706445%2014.20846205%205.04687029%2011.3125%205.0625%20C10.08756836%205.07506836%2010.08756836%205.07506836%208.83789062%205.08789062%20C4.75500916%205.10442051%200.98348293%205.03035098%20-3%204%20C-2.34%203.67%20-1.68%203.34%20-1%203%20C-0.67%202.01%20-0.34%201.02%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(241,593)'/%3e%3cpath%20d='M0%200%20C0.33%200%200.66%200%201%200%20C1%208.25%201%2016.5%201%2025%20C0.34%2025%20-0.32%2025%20-1%2025%20C-3.52775351%2021.20836973%20-3.22443035%2018.19125969%20-3.125%2013.8125%20C-3.11597656%2013.06291016%20-3.10695312%2012.31332031%20-3.09765625%2011.54101562%20C-3.07412578%209.69387346%20-3.03825561%207.84689588%20-3%206%20C-2.67%206%20-2.34%206%20-2%206%20C-1.34%204.02%20-0.68%202.04%200%200%20Z%20'%20fill='%230D0026'%20transform='translate(191,487)'/%3e%3cpath%20d='M0%200%20C0.66%200.66%201.32%201.32%202%202%20C1.525625%202.845625%201.05125%203.69125%200.5625%204.5625%20C-1.69167803%209.67126796%20-1.51097377%2015.18235336%20-1.69140625%2020.671875%20C-2%2024%20-2%2024%20-4%2027%20C-4.39387788%2029.32387947%20-4.73486085%2031.65793749%20-5%2034%20C-5.33%2034%20-5.66%2034%20-6%2034%20C-6.52846015%2021.74266038%20-5.86678537%2011.12575063%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(832,489)'/%3e%3cpath%20d='M0%200%20C0.98742187%200.16242187%201.97484375%200.32484375%202.9921875%200.4921875%20C7.03537925%201.06688527%2011.04640663%201.15126811%2015.125%201.125%20C15.858396%201.12306641%2016.59179199%201.12113281%2017.34741211%201.11914062%20C23.93030125%201.06771738%2030.4468302%200.63822175%2037%200%20C33.42278921%202.9386979%2031.63341748%203.18911908%2027%203%20C22.9008693%203.63063549%2018.97489026%204.83091463%2015%206%20C15%205.34%2015%204.68%2015%204%20C13.02%204.66%2011.04%205.32%209%206%20C8.67%205.34%208.34%204.68%208%204%20C6.8553125%204.12375%206.8553125%204.12375%205.6875%204.25%20C3%204%203%204%201.1875%202%20C0.5996875%201.01%200.5996875%201.01%200%200%20Z%20'%20fill='%23F2FFD9'%20transform='translate(667,563)'/%3e%3cpath%20d='M0%200%20C-1.70577342%200.65256456%20-3.41476089%201.29673041%20-5.125%201.9375%20C-6.07632813%202.29714844%20-7.02765625%202.65679688%20-8.0078125%203.02734375%20C-18.08362171%206.30263943%20-29.94180625%206.28430816%20-40%203%20C-37.09031691%202.16087482%20-34.5469594%201.89148572%20-31.5234375%201.9375%20C-30.27046875%201.94910156%20-30.27046875%201.94910156%20-28.9921875%201.9609375%20C-28.12851562%201.97382812%20-27.26484375%201.98671875%20-26.375%202%20C-24.65370809%202.0254629%20-22.93234349%202.04651171%20-21.2109375%202.0625%20C-20.45087402%202.07410156%20-19.69081055%202.08570313%20-18.90771484%202.09765625%20C-16.91256704%202.12332635%20-16.91256704%202.12332635%20-15%201%20C-12.70190464%200.69130062%20-10.40279871%200.49116352%20-8.09375%200.28125%20C-1.8556701%20-0.55670103%20-1.8556701%20-0.55670103%200%200%20Z%20'%20fill='%23C7FF57'%20transform='translate(707,559)'/%3e%3cpath%20d='M0%200%20C9.57%200%2019.14%200%2029%200%20C29%200.33%2029%200.66%2029%201%20C21.41%201%2013.82%201%206%201%20C6.33%202.32%206.66%203.64%207%205%20C6.87890625%207.359375%206.87890625%207.359375%206.5625%209.75%20C6.46066406%2010.54921875%206.35882813%2011.3484375%206.25390625%2012.171875%20C6.12822266%2013.07679688%206.12822266%2013.07679688%206%2014%20C4.31821339%2011.47732009%203.09893258%209.18908177%201.875%206.4375%20C1.52179688%205.65246094%201.16859375%204.86742187%200.8046875%204.05859375%20C0%202%200%202%200%200%20Z%20'%20fill='%2312003B'%20transform='translate(224,467)'/%3e%3cpath%20d='M0%200%20C0.33%200%200.66%200%201%200%20C1%207.59%201%2015.18%201%2023%20C0.01%2023%20-0.98%2023%20-2%2023%20C-3.53887884%208.19349005%20-3.53887884%208.19349005%20-1%201%20C-0.67%200.67%20-0.34%200.34%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(372,520)'/%3e%3cpath%20d='M0%200%20C6.93%200%2013.86%200%2021%200%20C19.02%200.99%2019.02%200.99%2017%202%20C16.37609375%202.53238281%2015.7521875%203.06476563%2015.109375%203.61328125%20C12.34672115%205.42947035%2010.52244363%205.30437299%207.25%205.1875%20C5.77273438%205.14689453%205.77273438%205.14689453%204.265625%205.10546875%20C3.14414062%205.05326172%203.14414062%205.05326172%202%205%20C2.33%204.01%202.66%203.02%203%202%20C2.01%201.34%201.02%200.68%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(454,466)'/%3e%3cpath%20d='M0%200%20C0.33%200%200.66%200%201%200%20C1%202.97%201%205.94%201%209%20C2.32451172%208.87431641%202.32451172%208.87431641%203.67578125%208.74609375%20C11.27709596%208.10108423%2018.43413122%207.99636435%2026%209%20C26%209.66%2026%2010.32%2026%2011%20C17.42%2011%208.84%2011%200%2011%20C0%207.37%200%203.74%200%200%20Z%20'%20fill='%2312003B'%20transform='translate(904,552)'/%3e%3cpath%20d='M0%200%20C1.28132812%200.00902344%202.56265625%200.01804687%203.8828125%200.02734375%20C4.87023437%200.03894531%205.85765625%200.05054688%206.875%200.0625%20C6.875%200.7225%206.875%201.3825%206.875%202.0625%20C7.535%202.3925%208.195%202.7225%208.875%203.0625%20C7.875%204.0625%207.875%204.0625%204.27734375%204.16015625%20C2.78903133%204.1534822%201.30073568%204.14152183%20-0.1875%204.125%20C-0.94611328%204.12048828%20-1.70472656%204.11597656%20-2.48632812%204.11132812%20C-4.36591871%204.0995068%20-6.24546899%204.08157078%20-8.125%204.0625%20C-8.455%203.0725%20-8.785%202.0825%20-9.125%201.0625%20C-6.12186252%20-0.43906874%20-3.33432478%20-0.03031204%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(874.125,559.9375)'/%3e%3cpath%20d='M0%200%20C0.33%200%200.66%200%201%200%20C1%202.97%201%205.94%201%209%20C3.31%209%205.62%209%208%209%20C6.47291037%2012.43595166%204.40072955%2015.11912454%202%2018%20C1.01%2017.67%200.02%2017.34%20-1%2017%20C-0.67%2011.39%20-0.34%205.78%200%200%20Z%20'%20fill='%230D0026'%20transform='translate(351,479)'/%3e%3cpath%20d='M0%200%20C6.6%200%2013.2%200%2020%200%20C20%200.99%2020%201.98%2020%203%20C15.38%203.33%2010.76%203.66%206%204%20C6%203.67%206%203.34%206%203%20C3.03%202.505%203.03%202.505%200%202%20C0%201.34%200%200.68%200%200%20Z%20'%20fill='%230D0026'%20transform='translate(384,488)'/%3e%3cpath%20d='M0%200%20C14.7664042%20-0.22834646%2014.7664042%20-0.22834646%2022%201%20C23%202%2023%202%2023.09765625%204.50390625%20C23.08605469%205.51324219%2023.07445312%206.52257812%2023.0625%207.5625%20C23.05347656%208.57441406%2023.04445313%209.58632813%2023.03515625%2010.62890625%20C23.02355469%2011.41136719%2023.01195312%2012.19382812%2023%2013%20C22.67%2013%2022.34%2013%2022%2013%20C21.505%208.05%2021.505%208.05%2021%203%20C20.01966797%203.29197266%2020.01966797%203.29197266%2019.01953125%203.58984375%20C15.00486508%204.13517357%2011.62136988%203.38864783%207.6875%202.5625%20C6.94693359%202.41490234%206.20636719%202.26730469%205.44335938%202.11523438%20C3.62718357%201.75199921%201.81333589%201.37715682%200%201%20C0%200.67%200%200.34%200%200%20Z%20'%20fill='%23B6FF2E'%20transform='translate(676,468)'/%3e%3cpath%20d='M0%200%20C5.61%200.33%2011.22%200.66%2017%201%20C14%204%2014%204%2010.64453125%204.29296875%20C9.37996094%204.25816406%208.11539063%204.22335937%206.8125%204.1875%20C5.54019531%204.16042969%204.26789062%204.13335938%202.95703125%204.10546875%20C1.98121094%204.07066406%201.00539063%204.03585937%200%204%20C0%202.68%200%201.36%200%200%20Z%20'%20fill='%230D0026'%20transform='translate(569,540)'/%3e%3cpath%20d='M0%200%20C6.27%200%2012.54%200%2019%200%20C18.01%200.495%2018.01%200.495%2017%201%20C17%201.66%2017%202.32%2017%203%20C11.39%203%205.78%203%200%203%20C0%202.01%200%201.02%200%200%20Z%20'%20fill='%23F0E9FF'%20transform='translate(761,523)'/%3e%3cpath%20d='M0%200%20C0.33%200%200.66%200%201%200%20C1.33%209.24%201.66%2018.48%202%2028%20C2.99%2028.33%203.98%2028.66%205%2029%20C3.69593116%2031.01920337%202.36176581%2033.01924973%201%2035%20C0.67%2035%200.34%2035%200%2035%20C0%2023.45%200%2011.9%200%200%20Z%20'%20fill='%2312003B'%20transform='translate(345,472)'/%3e%3cpath%20d='M0%200%20C0%201.65%200%203.3%200%205%20C-1.134375%205.28875%20-2.26875%205.5775%20-3.4375%205.875%20C-4.613125%206.24625%20-5.78875%206.6175%20-7%207%20C-8.2981424%209.2236068%20-8.2981424%209.2236068%20-8%2013%20C-8.66%2013%20-9.32%2013%20-10%2013%20C-11%2010.4375%20-11%2010.4375%20-11%207%20C-7.98890645%203.33845177%20-4.8796426%200%200%200%20Z%20'%20fill='%230D0026'%20transform='translate(736,475)'/%3e%3cpath%20d='M0%200%20C0.66%200%201.32%200%202%200%20C2%200.66%202%201.32%202%202%20C3.36125%202.37125%203.36125%202.37125%204.75%202.75%20C8.13493865%204.05189948%209.60793414%205.35164137%2012%208%20C12.66%208.33%2013.32%208.66%2014%209%20C14.625%2011.0625%2014.625%2011.0625%2015%2013%20C8.7298413%2011.74596826%204.95911962%207.77173128%201%203%20C0.67%202.01%200.34%201.02%200%200%20Z%20'%20fill='%23C7FF57'%20transform='translate(652,548)'/%3e%3cpath%20d='M0%200%20C0.33%200%200.66%200%201%200%20C1%204.62%201%209.24%201%2014%20C0.01%2014.495%200.01%2014.495%20-1%2015%20C-1%2014.01%20-1%2013.02%20-1%2012%20C-1.99%2012%20-2.98%2012%20-4%2012%20C-3.53439347%207.25081338%20-2.83067342%203.89217595%200%200%20Z%20'%20fill='%230D0026'%20transform='translate(287,513)'/%3e%3cpath%20d='M0%200%20C2.4375%200.8125%202.4375%200.8125%205%202%20C5.33%202.99%205.66%203.98%206%205%20C7.49985609%206.66710346%207.49985609%206.66710346%209%208%20C5.68585212%2012.10954337%203.12159208%2012.43093421%20-2%2013%20C-2.66%2013.66%20-3.32%2014.32%20-4%2015%20C-3.67%2013.35%20-3.34%2011.7%20-3%2010%20C1.455%209.505%201.455%209.505%206%209%20C5.566875%208.43410156%205.13375%207.86820312%204.6875%207.28515625%20C3.8521875%206.18494141%203.8521875%206.18494141%203%205.0625%20C2.1646875%203.96615234%202.1646875%203.96615234%201.3125%202.84765625%20C0%201%200%201%200%200%20Z%20'%20fill='%23F2FFD9'%20transform='translate(682,447)'/%3e%3cpath%20d='M0%200%20C2.31%200%204.62%200%207%200%20C6.67%201.32%206.34%202.64%206%204%20C-1.26%204%20-8.52%204%20-16%204%20C-16%203.67%20-16%203.34%20-16%203%20C-11.05%203%20-6.1%203%20-1%203%20C-0.67%202.01%20-0.34%201.02%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(472,560)'/%3e%3cpath%20d='M0%200%20C3.63%200%207.26%200%2011%200%20C9%204%209%204%207.25%204.8125%20C4.36824559%205.0526462%201.82252185%204.57733402%20-1%204%20C-0.67%202.68%20-0.34%201.36%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(449,506)'/%3e%3cpath%20d='M0%200%20C3.3%200.33%206.6%200.66%2010%201%20C10.33%202.32%2010.66%203.64%2011%205%20C9.58376784%205.05447047%208.16691809%205.09300508%206.75%205.125%20C5.96109375%205.14820313%205.1721875%205.17140625%204.359375%205.1953125%20C1.79268059%204.9828378%200.2083933%204.28654105%20-2%203%20C-1.34%202.01%20-0.68%201.02%200%200%20Z%20'%20fill='%23F0E9FF'%20transform='translate(760,537)'/%3e%3cpath%20d='M0%200%20C0.66%200.33%201.32%200.66%202%201%20C1.67%201.99%201.34%202.98%201%204%20C1.74765625%203.97679687%202.4953125%203.95359375%203.265625%203.9296875%20C4.25046875%203.91164063%205.2353125%203.89359375%206.25%203.875%20C7.22453125%203.85179687%208.1990625%203.82859375%209.203125%203.8046875%20C12%204%2012%204%2016%206%20C9.73%206%203.46%206%20-3%206%20C-3%204.68%20-3%203.36%20-3%202%20C-2.01%202%20-1.02%202%200%202%20C0%201.34%200%200.68%200%200%20Z%20'%20fill='%230D0026'%20transform='translate(447,506)'/%3e%3cpath%20d='M0%200%20C0.33%200%200.66%200%201%200%20C1.22212255%202.74951693%201.42815588%205.49865612%201.625%208.25%20C1.68945312%209.02730469%201.75390625%209.80460937%201.8203125%2010.60546875%20C2.30707097%2017.72431144%202.30707097%2017.72431144%200%2021%20C-0.86860031%2016.51223172%20-1.13464852%2012.25607233%20-1.125%207.6875%20C-1.12757813%206.45386719%20-1.13015625%205.22023438%20-1.1328125%203.94921875%20C-1%201%20-1%201%200%200%20Z%20'%20fill='%230D0026'%20transform='translate(553,496)'/%3e%3cpath%20d='M0%200%20C0%201.65%200%203.3%200%205%20C-3.63%205%20-7.26%205%20-11%205%20C-11.33%204.34%20-11.66%203.68%20-12%203%20C-10.75336669%202.49166409%20-9.50250613%201.99368855%20-8.25%201.5%20C-7.55390625%201.2215625%20-6.8578125%200.943125%20-6.140625%200.65625%20C-4%200%20-4%200%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(454,467)'/%3e%3cpath%20d='M0%200%20C0.98613281%200.03480469%201.97226562%200.06960938%202.98828125%200.10546875%20C3.98214844%200.13253906%204.97601563%200.15960937%206%200.1875%20C7.13888672%200.23970703%207.13888672%200.23970703%208.30078125%200.29296875%20C8.63078125%201.28296875%208.96078125%202.27296875%209.30078125%203.29296875%20C4.35078125%203.29296875%20-0.59921875%203.29296875%20-5.69921875%203.29296875%20C-2.69921875%200.29296875%20-2.69921875%200.29296875%200%200%20Z%20'%20fill='%230D0026'%20transform='translate(461.69921875,559.70703125)'/%3e%3cpath%20d='M0%200%20C0.56203125%200.30679688%201.1240625%200.61359375%201.703125%200.9296875%20C4.06346934%202.02957585%206.20465562%202.60095851%208.75%203.125%20C9.54921875%203.29257812%2010.3484375%203.46015625%2011.171875%203.6328125%20C11.77515625%203.75398437%2012.3784375%203.87515625%2013%204%20C13%204.66%2013%205.32%2013%206%20C8.126739%207.5912689%204.19209404%208.21192221%20-1%208%20C0.32%207.34%201.64%206.68%203%206%20C2.690625%205.38125%202.38125%204.7625%202.0625%204.125%20C1.375%202.75%200.6875%201.375%200%200%20Z%20'%20fill='%23A7EA18'%20transform='translate(695,552)'/%3e%3cpath%20d='M0%200%20C-0.99%201.485%20-0.99%201.485%20-2%203%20C-4.8984375%203.36328125%20-4.8984375%203.36328125%20-8.375%203.3125%20C-9.51710938%203.30863281%20-10.65921875%203.30476562%20-11.8359375%203.30078125%20C-14.80057739%203.01895746%20-16.49947121%202.54589341%20-19%201%20C-12.65758005%20-0.15316726%20-6.43311296%20-0.09507063%200%200%20Z%20'%20fill='%230D0026'%20transform='translate(884,541)'/%3e%3cpath%20d='M0%200%20C1.58323688%20-0.027193%203.16661062%20-0.04648306%204.75%20-0.0625%20C6.07257812%20-0.07990234%206.07257812%20-0.07990234%207.421875%20-0.09765625%20C9.7818838%20-0.00826198%2011.74498524%200.33087179%2014%201%20C14%201.66%2014%202.32%2014%203%20C9.05%203%204.1%203%20-1%203%20C-0.67%202.01%20-0.34%201.02%200%200%20Z%20'%20fill='%230D0026'%20transform='translate(581,560)'/%3e%3cpath%20d='M0%200%20C0%200.99%200%201.98%200%203%20C-5.28%203%20-10.56%203%20-16%203%20C-16%202.34%20-16%201.68%20-16%201%20C-10.62915894%200.31798844%20-5.41499441%20-0.11521265%200%200%20Z%20'%20fill='%230D0026'%20transform='translate(479,541)'/%3e%3cpath%20d='M0%200%20C0.33%200%200.66%200%201%200%20C1%205.28%201%2010.56%201%2016%20C-2.37152003%2012.62847997%20-2.82142723%2011.64289204%20-3%207%20C-2.21181089%204.49988422%20-1.17946058%202.35892116%200%200%20Z%20'%20fill='%230D0026'%20transform='translate(247,504)'/%3e%3cpath%20d='M0%200%20C0.66%200.33%201.32%200.66%202%201%20C2.08082094%202.95766281%202.13910778%204.91626728%202.1875%206.875%20C2.23970703%208.51082031%202.23970703%208.51082031%202.29296875%2010.1796875%20C2.19628906%2011.11039062%202.09960938%2012.04109375%202%2013%20C1.01%2013.66%200.02%2014.32%20-1%2015%20C-1.02685412%2012.68756208%20-1.04632841%2010.3750373%20-1.0625%208.0625%20C-1.07410156%206.77472656%20-1.08570312%205.48695313%20-1.09765625%204.16015625%20C-1%201%20-1%201%200%200%20Z%20'%20fill='%230D0026'%20transform='translate(121,466)'/%3e%3cpath%20d='M0%200%20C0%202.97%200%205.94%200%209%20C-0.99%209.495%20-0.99%209.495%20-2%2010%20C-3.32%206.7%20-4.64%203.4%20-6%200%20C-2%20-1%20-2%20-1%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(254,523)'/%3e%3cpath%20d='M0%200%20C2.64%200.33%205.28%200.66%208%201%20C7.34%202.32%206.68%203.64%206%205%20C3.69%205%201.38%205%20-1%205%20C-0.67%203.35%20-0.34%201.7%200%200%20Z%20'%20fill='%23F0E9FF'%20transform='translate(880,489)'/%3e%3cpath%20d='M0%200%20C1.953125%200.390625%203.90625%200.78125%205.859375%201.171875%20C5.859375%202.161875%205.859375%203.151875%205.859375%204.171875%20C1.899375%204.171875%20-2.060625%204.171875%20-6.140625%204.171875%20C-2.140625%200.171875%20-2.140625%200.171875%200%200%20Z%20'%20fill='%230D0026'%20transform='translate(780.140625,467.828125)'/%3e%3cpath%20d='M0%200%20C0.598125%200.20625%201.19625%200.4125%201.8125%200.625%20C0.8225%200.955%20-0.1675%201.285%20-1.1875%201.625%20C-1.5175%205.915%20-1.8475%2010.205%20-2.1875%2014.625%20C-2.8475%2014.295%20-3.5075%2013.965%20-4.1875%2013.625%20C-4.6015625%2010.90234375%20-4.6015625%2010.90234375%20-4.8125%207.5625%20C-4.88726563%206.45777344%20-4.96203125%205.35304688%20-5.0390625%204.21484375%20C-5.08804688%203.36019531%20-5.13703125%202.50554687%20-5.1875%201.625%20C-2.1875%20-0.375%20-2.1875%20-0.375%200%200%20Z%20'%20fill='%23C7FF57'%20transform='translate(678.1875,453.375)'/%3e%3cpath%20d='M0%200%20C3%203.75%203%203.75%203%206%20C0.03%206%20-2.94%206%20-6%206%20C-5.67%204.68%20-5.34%203.36%20-5%202%20C-2.4375%200.75%20-2.4375%200.75%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(743,538)'/%3e%3cpath%20d='M0%200%20C3.63%200%207.26%200%2011%200%20C9.515%201.98%209.515%201.98%208%204%20C4.8125%204.25%204.8125%204.25%202%204%20C1.34%202.68%200.68%201.36%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(473,506)'/%3e%3cpath%20d='M0%200%20C0.33%200%200.66%200%201%200%20C2.62227918%205.43940666%203.3864587%209.33862697%202%2015%20C1.01%2015.495%201.01%2015.495%200%2016%20C0%2013.36%200%2010.72%200%208%20C-0.66%207.67%20-1.32%207.34%20-2%207%20C-1.125%202.25%20-1.125%202.25%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(294,496)'/%3e%3cpath%20d='M0%200%20C1.134375%200.020625%202.26875%200.04125%203.4375%200.0625%20C4.0975%202.0425%204.7575%204.0225%205.4375%206.0625%20C4.4475%206.7225%203.4575%207.3825%202.4375%208.0625%20C0.10416667%205.72916667%20-2.22916667%203.39583333%20-4.5625%201.0625%20C-3.5625%200.0625%20-3.5625%200.0625%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(594.5625,489.9375)'/%3e%3cpath%20d='M0%200%20C0%200.33%200%200.66%200%201%20C-2.31%201%20-4.62%201%20-7%201%20C-7%201.66%20-7%202.32%20-7%203%20C-7.99%203%20-8.98%203%20-10%203%20C-10%203.66%20-10%204.32%20-10%205%20C-11.65%205%20-13.3%205%20-15%205%20C-15%204.34%20-15%203.68%20-15%203%20C-15.66%202.67%20-16.32%202.34%20-17%202%20C-11.19233704%200.4943096%20-6.0018137%20-0.21824777%200%200%20Z%20'%20fill='%2312003B'%20transform='translate(750,506)'/%3e%3cpath%20d='M0%200%20C0.33%200%200.66%200%201%200%20C1%203.63%201%207.26%201%2011%20C0.34%209.68%20-0.32%208.36%20-1%207%20C-2.32%207.33%20-3.64%207.66%20-5%208%20C-4.67%206.35%20-4.34%204.7%20-4%203%20C-3.01%203%20-2.02%203%20-1%203%20C-0.67%202.01%20-0.34%201.02%200%200%20Z%20'%20fill='%230D0026'%20transform='translate(303,481)'/%3e%3cpath%20d='M0%200%20C4.62%200%209.24%200%2014%200%20C14%200.66%2014%201.32%2014%202%20C11%203%2011%203%208.625%202.4375%20C5.45352412%201.90892069%203.84890119%202.61624799%201%204%20C0.67%202.68%200.34%201.36%200%200%20Z%20'%20fill='%2394D600'%20transform='translate(634,469)'/%3e%3cpath%20d='M0%200%20C0.33%200%200.66%200%201%200%20C1%202.64%201%205.28%201%208%20C-5.27%207.67%20-11.54%207.34%20-18%207%20C-18%206.67%20-18%206.34%20-18%206%20C-9.585%205.505%20-9.585%205.505%20-1%205%20C-0.67%203.35%20-0.34%201.7%200%200%20Z%20'%20fill='%23F0E9FF'%20transform='translate(931,557)'/%3e%3cpath%20d='M0%200%20C0.66%200.33%201.32%200.66%202%201%20C1.34%203.31%200.68%205.62%200%208%20C-0.99%208%20-1.98%208%20-3%208%20C-3%205.69%20-3%203.38%20-3%201%20C-2.01%200.67%20-1.02%200.34%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(621,536)'/%3e%3cpath%20d='M0%200%20C0.33%200%200.66%200%201%200%20C1.66%202.97%202.32%205.94%203%209%20C-0.96%209%20-4.92%209%20-9%209%20C-8.67%208.34%20-8.34%207.68%20-8%207%20C-5.69%207%20-3.38%207%20-1%207%20C-0.67%204.69%20-0.34%202.38%200%200%20Z%20'%20fill='%230D0026'%20transform='translate(808,513)'/%3e%3cpath%20d='M0%200%20C0%203.73675706%20-1.26051811%205.72174568%20-3%209%20C-3.391875%209.78375%20-3.78375%2010.5675%20-4.1875%2011.375%20C-4.455625%2011.91125%20-4.72375%2012.4475%20-5%2013%20C-5.99%2013%20-6.98%2013%20-8%2013%20C-7.51294002%208.6164602%20-6.21626567%206.93247752%20-3%204%20C-1.97676564%202.68441297%20-0.96873032%201.35622245%200%200%20Z%20'%20fill='%23A7EA18'%20transform='translate(648,441)'/%3e%3cpath%20d='M0%200%20C0.66%200.33%201.32%200.66%202%201%20C2.36923077%206.53846154%202.36923077%206.53846154%200.5%208.875%20C-0.2425%209.431875%20-0.2425%209.431875%20-1%2010%20C-1.66%209.67%20-2.32%209.34%20-3%209%20C-2.30058404%205.85262818%20-1.23921302%202.97411124%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(228,582)'/%3e%3cpath%20d='M0%200%20C0.66%200%201.32%200%202%200%20C2.125%205.75%202.125%205.75%201%208%20C0.34%208%20-0.32%208%20-1%208%20C-1.33%208.99%20-1.66%209.98%20-2%2011%20C-3.13643966%207.59068103%20-2.86747764%206.99664544%20-1.5625%203.8125%20C-1.13130859%202.73935547%20-1.13130859%202.73935547%20-0.69140625%201.64453125%20C-0.46324219%201.10183594%20-0.23507812%200.55914063%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(350,514)'/%3e%3cpath%20d='M0%200%20C3.3%200%206.6%200%2010%200%20C10.33%201.32%2010.66%202.64%2011%204%20C9.35%204%207.7%204%206%204%20C6%203.67%206%203.34%206%203%20C3.03%202.505%203.03%202.505%200%202%20C0%201.34%200%200.68%200%200%20Z%20'%20fill='%230D0026'%20transform='translate(384,488)'/%3e%3cpath%20d='M0%200%20C0.845625%200.804375%201.69125%201.60875%202.5625%202.4375%20C5.8515158%205.21628662%208.68629604%205.74117776%2013%206%20C13%206.33%2013%206.66%2013%207%20C11.20866022%207.05391993%209.41686101%207.09275571%207.625%207.125%20C6.62726562%207.14820313%205.62953125%207.17140625%204.6015625%207.1953125%20C2%207%202%207%200%205%20C-0.125%202.375%20-0.125%202.375%200%200%20Z%20'%20fill='%23DFFF99'%20transform='translate(677,535)'/%3e%3cpath%20d='M0%200%20C0.33%201.65%200.66%203.3%201%205%20C-1.97%205%20-4.94%205%20-8%205%20C-3%200%20-3%200%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(175,531)'/%3e%3cpath%20d='M0%200%20C2.97%200%205.94%200%209%200%20C9.33%200.66%209.66%201.32%2010%202%20C3.71428571%204.42857143%203.71428571%204.42857143%200%203%20C0%202.01%200%201.02%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(739,522)'/%3e%3cpath%20d='M0%200%20C0.66%200%201.32%200%202%200%20C2.33%203.63%202.66%207.26%203%2011%20C2.01%2011%201.02%2011%200%2011%20C0%207.37%200%203.74%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(304,520)'/%3e%3cpath%20d='M0%200%20C0%200.66%200%201.32%200%202%20C-4.95%202%20-9.9%202%20-15%202%20C-11.5998228%200.2999114%20-9.96676075%20-0.32111638%20-6.375%20-0.6875%20C-5.21097656%20-0.81705078%20-5.21097656%20-0.81705078%20-4.0234375%20-0.94921875%20C-2%20-1%20-2%20-1%200%200%20Z%20'%20fill='%230D0026'%20transform='translate(507,520)'/%3e%3cpath%20d='M0%200%20C0.33%200%200.66%200%201%200%20C1.33%202.97%201.66%205.94%202%209%20C1.01%209.33%200.02%209.66%20-1%2010%20C-2.1875%207.8125%20-2.1875%207.8125%20-3%205%20C-1.6875%202.1875%20-1.6875%202.1875%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(421,489)'/%3e%3cpath%20d='M0%200%20C0.66%200%201.32%200%202%200%20C2%203.96%202%207.92%202%2012%20C1.01%2011.67%200.02%2011.34%20-1%2011%20C-0.67%207.37%20-0.34%203.74%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(238,488)'/%3e%3cpath%20d='M0%200%20C1.32%200%202.64%200%204%200%20C4%200.99%204%201.98%204%203%20C4.66%203%205.32%203%206%203%20C7.0625%204.8125%207.0625%204.8125%208%207%20C7.67%207.99%207.34%208.98%207%2010%20C5.83043409%208.52312468%204.66441854%207.04343707%203.5%205.5625%20C2.8503125%204.73878906%202.200625%203.91507812%201.53125%203.06640625%20C0%201%200%201%200%200%20Z%20'%20fill='%23E8FFC2'%20transform='translate(674,437)'/%3e%3cpath%20d='M0%200%20C3.23739279%201.6186964%204.42244771%204.84489543%206%208%20C2.31245243%207.50168276%200.39509338%206.89932357%20-2%204%20C-1.34%202.68%20-0.68%201.36%200%200%20Z%20'%20fill='%230D0026'%20transform='translate(230,587)'/%3e%3cpath%20d='M0%200%20C0.33%200%200.66%200%201%200%20C1%203.3%201%206.6%201%2010%20C0.01%2010.495%200.01%2010.495%20-1%2011%20C-2.1875%208.3125%20-2.1875%208.3125%20-3%205%20C-1.6875%202.125%20-1.6875%202.125%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(533,527)'/%3e%3cpath%20d='M0%200%20C0.33%200%200.66%200%201%200%20C1.22151549%201.79008467%201.42682213%203.58218162%201.625%205.375%20C1.74101563%206.37273438%201.85703125%207.37046875%201.9765625%208.3984375%20C1.98429688%209.25695312%201.99203125%2010.11546875%202%2011%20C1.34%2011.66%200.68%2012.32%200%2013%20C-0.66%2010.03%20-1.32%207.06%20-2%204%20C-1.34%204%20-0.68%204%200%204%20C0%202.68%200%201.36%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(554,513)'/%3e%3cpath%20d='M0%200%20C0.33%200.66%200.66%201.32%201%202%20C-3.51718381%203.36884358%20-6.58774263%202.47075246%20-11%201%20C-6.78915963%20-1.80722691%20-4.88445782%20-0.94537893%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(399,468)'/%3e%3cpath%20d='M0%200%20C-0.66%200.66%20-1.32%201.32%20-2%202%20C-1.34%202.66%20-0.68%203.32%200%204%20C-3.96%203.67%20-7.92%203.34%20-12%203%20C-7.27030266%20-0.54727301%20-5.56673301%20-1.35407019%200%200%20Z%20'%20fill='%23F0E9FF'%20transform='translate(167,435)'/%3e%3cpath%20d='M0%200%20C0.33%200.66%200.66%201.32%201%202%20C0.0625%204.625%200.0625%204.625%20-1%207%20C-1.33%206.34%20-1.66%205.68%20-2%205%20C-4.32156597%204.59270772%20-6.6568787%204.25561323%20-9%204%20C-9%203.67%20-9%203.34%20-9%203%20C-6.03%202.01%20-3.06%201.02%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(891,537)'/%3e%3cpath%20d='M0%200%20C0.66%200%201.32%200%202%200%20C2%202.31%202%204.62%202%207%20C2.66%207%203.32%207%204%207%20C4%207.99%204%208.98%204%2010%20C2.68%2010%201.36%2010%200%2010%20C0%206.7%200%203.4%200%200%20Z%20'%20fill='%230D0026'%20transform='translate(296,537)'/%3e%3cpath%20d='M0%200%20C1.7074998%201.28062485%203.37373596%202.61767557%205%204%20C5%204.66%205%205.32%205%206%20C1.04%206%20-2.92%206%20-7%206%20C-7%205.67%20-7%205.34%20-7%205%20C-3.535%204.505%20-3.535%204.505%200%204%20C0%202.68%200%201.36%200%200%20Z%20'%20fill='%23DFFF99'%20transform='translate(683,450)'/%3e%3cpath%20d='M0%200%20C5.94%200.99%205.94%200.99%2012%202%20C12%202.66%2012%203.32%2012%204%20C10.56416999%204.10836453%209.1259798%204.18576167%207.6875%204.25%20C6.48673828%204.31960938%206.48673828%204.31960938%205.26171875%204.390625%20C3%204%203%204%200%200%20Z%20'%20fill='%23F2FFD9'%20transform='translate(667,563)'/%3e%3cpath%20d='M0%200%20C1.65%200%203.3%200%205%200%20C5.33%201.98%205.66%203.96%206%206%20C3.69%205.01%201.38%204.02%20-1%203%20C-0.67%202.01%20-0.34%201.02%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(848,554)'/%3e%3cpath%20d='M0%200%20C3%204%203%204%204%207%20C0.25%2010%200.25%2010%20-2%2010%20C-1.34%206.7%20-0.68%203.4%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(187,506)'/%3e%3cpath%20d='M0%200%20C1.9451%202.91765%202.45276317%204.62537285%203%208%20C1.02%208.99%201.02%208.99%20-1%2010%20C-0.67%206.7%20-0.34%203.4%200%200%20Z%20'%20fill='%2312003B'%20transform='translate(715,500)'/%3e%3cpath%20d='M0%200%20C2.9375%201.1875%202.9375%201.1875%203.9375%203.1875%20C1.02267222%203.99717438%20-0.52363217%204.40595993%20-3.375%203.25%20C-3.931875%202.899375%20-4.48875%202.54875%20-5.0625%202.1875%20C-5.0625%201.5275%20-5.0625%200.8675%20-5.0625%200.1875%20C-3.0625%20-0.8125%20-3.0625%20-0.8125%200%200%20Z%20'%20fill='%23F0E9FF'%20transform='translate(606.0625,467.8125)'/%3e%3cpath%20d='M0%200%20C0.5625%201.9375%200.5625%201.9375%201%204%20C0%205%200%205%20-3.0625%205.0625%20C-4.031875%205.041875%20-5.00125%205.02125%20-6%205%20C-6.33%204.34%20-6.66%203.68%20-7%203%20C-4.69%202.01%20-2.38%201.02%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(485,537)'/%3e%3cpath%20d='M0%200%20C0.99%200.33%201.98%200.66%203%201%20C2.01%203.97%201.02%206.94%200%2010%20C-0.33%2010%20-0.66%2010%20-1%2010%20C-1.125%202.25%20-1.125%202.25%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(322,486)'/%3e%3cpath%20d='M0%200%20C1.65%200%203.3%200%205%200%20C5%200.99%205%201.98%205%203%20C3.35%203.66%201.7%204.32%200%205%20C0%203.35%200%201.7%200%200%20Z%20'%20fill='%230D0026'%20transform='translate(738,552)'/%3e%3cpath%20d='M0%200%20C0.91007813%200.00902344%201.82015625%200.01804687%202.7578125%200.02734375%20C3.45648438%200.03894531%204.15515625%200.05054688%204.875%200.0625%20C5.205%200.7225%205.535%201.3825%205.875%202.0625%20C4.82699219%202.15337891%204.82699219%202.15337891%203.7578125%202.24609375%20C2.84773437%202.32988281%201.93765625%202.41367187%201%202.5%20C0.09507812%202.58121094%20-0.80984375%202.66242188%20-1.7421875%202.74609375%20C-4.13610861%202.93239285%20-4.13610861%202.93239285%20-6.125%204.0625%20C-6.455%203.0725%20-6.785%202.0825%20-7.125%201.0625%20C-4.60024538%20-0.19987731%20-2.81299534%20-0.03606404%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(128.125,458.9375)'/%3e%3cpath%20d='M0%200%20C0.66%200.33%201.32%200.66%202%201%20C0.515%204.465%200.515%204.465%20-1%208%20C-1.66%208%20-2.32%208%20-3%208%20C-3%206.02%20-3%204.04%20-3%202%20C-2.01%202%20-1.02%202%200%202%20C0%201.34%200%200.68%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(294,556)'/%3e%3cpath%20d='M0%200%20C1.51400391%200.01740234%201.51400391%200.01740234%203.05859375%200.03515625%20C4.07050781%200.04417969%205.08242188%200.05320312%206.125%200.0625%20C7.29869141%200.07990234%207.29869141%200.07990234%208.49609375%200.09765625%20C8.49609375%200.42765625%208.49609375%200.75765625%208.49609375%201.09765625%20C5.52609375%201.09765625%202.55609375%201.09765625%20-0.50390625%201.09765625%20C-0.50390625%201.75765625%20-0.50390625%202.41765625%20-0.50390625%203.09765625%20C-2.81390625%203.09765625%20-5.12390625%203.09765625%20-7.50390625%203.09765625%20C-6.86453125%202.78828125%20-6.22515625%202.47890625%20-5.56640625%202.16015625%20C-1.48563778%200.05794219%20-1.48563778%200.05794219%200%200%20Z%20'%20fill='%2312003B'%20transform='translate(463.50390625,540.90234375)'/%3e%3cpath%20d='M0%200%20C0.33%200.66%200.66%201.32%201%202%20C2.32%201.67%203.64%201.34%205%201%20C3.9024777%203.99324263%203.32317108%204.84610901%200.375%206.25%20C-0.40875%206.4975%20-1.1925%206.745%20-2%207%20C-1.34%204.69%20-0.68%202.38%200%200%20Z%20'%20fill='%23F0E9FF'%20transform='translate(306,531)'/%3e%3cpath%20d='M0%200%20C0.33%200.99%200.66%201.98%201%203%20C-0.98%204.98%20-2.96%206.96%20-5%209%20C-5.99%208.67%20-6.98%208.34%20-8%208%20C-5.33333333%205.33333333%20-2.66666667%202.66666667%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(601,528)'/%3e%3cpath%20d='M0%200%20C0.99%200%201.98%200%203%200%20C3.125%202.875%203.125%202.875%203%206%20C2.34%206.66%201.68%207.32%201%208%20C0%207%200%207%20-0.0625%203.4375%20C-0.041875%202.303125%20-0.02125%201.16875%200%200%20Z%20'%20fill='%230D0026'%20transform='translate(272,520)'/%3e%3cpath%20d='M0%200%20C0.66%200.33%201.32%200.66%202%201%20C1.67%201.66%201.34%202.32%201%203%20C0.95977609%205.3329866%200.95679753%207.66706666%201%2010%20C0.34%2010%20-0.32%2010%20-1%2010%20C-1.9765625%203.9453125%20-1.9765625%203.9453125%20-2%202%20C-1.34%201.34%20-0.68%200.68%200%200%20Z%20'%20fill='%230D0026'%20transform='translate(359,502)'/%3e%3cpath%20d='M0%200%20C3.63%200.66%207.26%201.32%2011%202%20C11%202.33%2011%202.66%2011%203%20C7.37%203%203.74%203%200%203%20C0%202.01%200%201.02%200%200%20Z%20'%20fill='%230D0026'%20transform='translate(387,469)'/%3e%3cpath%20d='M0%200%20C2.31%200.33%204.62%200.66%207%201%20C6.67%201.66%206.34%202.32%206%203%20C4.35%203%202.7%203%201%203%20C1%203.99%201%204.98%201%206%20C0.01%206%20-0.98%206%20-2%206%20C-1.34%204.02%20-0.68%202.04%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(305,468)'/%3e%3cpath%20d='M0%200%20C1.65%200.33%203.3%200.66%205%201%20C5%201.99%205%202.98%205%204%20C3.35%204%201.7%204%200%204%20C0%202.68%200%201.36%200%200%20Z%20'%20fill='%230D0026'%20transform='translate(549,552)'/%3e%3cpath%20d='M0%200%20C0.94875%200.04125%201.8975%200.0825%202.875%200.125%20C2.875%200.785%202.875%201.445%202.875%202.125%20C0.895%202.785%20-1.085%203.445%20-3.125%204.125%20C-3.785%203.465%20-4.445%202.805%20-5.125%202.125%20C-3.125%200.125%20-3.125%200.125%200%200%20Z%20'%20fill='%2312003B'%20transform='translate(181.125,553.875)'/%3e%3cpath%20d='M0%200%20C1.9375%200.3125%201.9375%200.3125%204%201%20C4.33%201.99%204.66%202.98%205%204%20C2.69%204%200.38%204%20-2%204%20C-1.34%202.68%20-0.68%201.36%200%200%20Z%20'%20fill='%230D0026'%20transform='translate(587,540)'/%3e%3cpath%20d='M0%200%20C0%202.31%200%204.62%200%207%20C-0.99%207.495%20-0.99%207.495%20-2%208%20C-2%207.01%20-2%206.02%20-2%205%20C-2.66%205%20-3.32%205%20-4%205%20C-3.625%203.0625%20-3.625%203.0625%20-3%201%20C-1%200%20-1%200%200%200%20Z%20'%20fill='%230D0026'%20transform='translate(185,520)'/%3e%3cpath%20d='M0%200%20C0.66%200%201.32%200%202%200%20C1.67%202.64%201.34%205.28%201%208%20C0.01%207.67%20-0.98%207.34%20-2%207%20C-1.34%207%20-0.68%207%200%207%20C0%206.01%200%205.02%200%204%20C-1.32%203.67%20-2.64%203.34%20-4%203%20C-2.68%202.67%20-1.36%202.34%200%202%20C0%201.34%200%200.68%200%200%20Z%20'%20fill='%230D0026'%20transform='translate(616,486)'/%3e%3cpath%20d='M0%200%20C3.125%20-0.1875%203.125%20-0.1875%206%200%20C6%200.99%206%201.98%206%203%20C3.36%203%200.72%203%20-2%203%20C-1.34%202.01%20-0.68%201.02%200%200%20Z%20'%20fill='%230D0026'%20transform='translate(842,477)'/%3e%3cpath%20d='M0%200%20C2.475%200.495%202.475%200.495%205%201%20C4.67%202.32%204.34%203.64%204%205%20C2.68%205.33%201.36%205.66%200%206%20C0%204.02%200%202.04%200%200%20Z%20'%20fill='%230D0026'%20transform='translate(920,472)'/%3e%3cpath%20d='M0%200%20C1.65%200%203.3%200%205%200%20C5.33%200.99%205.66%201.98%206%203%20C3.69%203%201.38%203%20-1%203%20C-0.67%202.01%20-0.34%201.02%200%200%20Z%20'%20fill='%230D0026'%20transform='translate(568,560)'/%3e%3cpath%20d='M0%200%20C3.39609044%201.19322096%205.62433927%202.28495916%208%205%20C8.66%205.66%209.32%206.32%2010%207%20C7.29068581%206.84518205%205.53415961%206.51827919%203.5546875%204.59765625%20C2.32320358%203.10228292%201.1570163%201.5537076%200%200%20Z%20'%20fill='%23A7EA18'%20transform='translate(656,551)'/%3e%3cpath%20d='M0%200%20C-3.6441774%202.4294516%20-5.71241272%202.16179575%20-10%202%20C-10%201.34%20-10%200.68%20-10%200%20C-6.33694766%20-0.74926071%20-3.57644848%20-1.2380014%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(762,542)'/%3e%3cpath%20d='M0%200%20C1.32%200%202.64%200%204%200%20C4%201.65%204%203.3%204%205%20C3.01%205%202.02%205%201%205%20C0.34%203.68%20-0.32%202.36%20-1%201%20C-0.67%200.67%20-0.34%200.34%200%200%20Z%20'%20fill='%230D0026'%20transform='translate(780,539)'/%3e%3cpath%20d='M0%200%20C0%201.98%200%203.96%200%206%20C-0.99%206%20-1.98%206%20-3%206%20C-3.66%204.68%20-4.32%203.36%20-5%202%20C-1.125%200%20-1.125%200%200%200%20Z%20'%20fill='%23F0E9FF'%20transform='translate(611,497)'/%3e%3cpath%20d='M0%200%20C2%203%202%203%201.625%205.1875%20C1.41875%205.785625%201.2125%206.38375%201%207%20C0.01%207%20-0.98%207%20-2%207%20C-2%205.35%20-2%203.7%20-2%202%20C-1.34%202%20-0.68%202%200%202%20C0%201.34%200%200.68%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(260,485)'/%3e%3cpath%20d='M0%200%20C0.99%200.33%201.98%200.66%203%201%20C3.33%202.98%203.66%204.96%204%207%20C2.35%206.01%200.7%205.02%20-1%204%20C-0.67%202.68%20-0.34%201.36%200%200%20Z%20'%20fill='%23F0E9FF'%20transform='translate(896,467)'/%3e%3cpath%20d='M0%200%20C2.97%200%205.94%200%209%200%20C9%201.32%209%202.64%209%204%20C8.01%204%207.02%204%206%204%20C5.67%203.34%205.34%202.68%205%202%20C2.47266765%201.34444881%202.47266765%201.34444881%200%201%20C0%200.67%200%200.34%200%200%20Z%20'%20fill='%2312003B'%20transform='translate(396,466)'/%3e%3cpath%20d='M0%200%20C1.32%200.33%202.64%200.66%204%201%20C4%201.99%204%202.98%204%204%20C1.69%204.33%20-0.62%204.66%20-3%205%20C-2.01%203.35%20-1.02%201.7%200%200%20Z%20'%20fill='%23DFFF99'%20transform='translate(660,423)'/%3e%3cpath%20d='M0%200%20C1.32%200.33%202.64%200.66%204%201%20C4.33%202.65%204.66%204.3%205%206%20C4.01%206%203.02%206%202%206%20C1.34%204.02%200.68%202.04%200%200%20Z%20'%20fill='%236F9300'%20transform='translate(690,541)'/%3e%3cpath%20d='M0%200%20C1.32%200.99%202.64%201.98%204%203%20C3.67%203.66%203.34%204.32%203%205%20C1.35%205%20-0.3%205%20-2%205%20C-1.34%203.35%20-0.68%201.7%200%200%20Z%20'%20fill='%230D0026'%20transform='translate(858,531)'/%3e%3cpath%20d='M0%200%20C0.66%200.99%201.32%201.98%202%203%20C1.67%203.99%201.34%204.98%201%206%20C-1.5625%207.1875%20-1.5625%207.1875%20-4%208%20C-2.68%205.36%20-1.36%202.72%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(373,482)'/%3e%3cpath%20d='M0%200%20C1.74959319%202.62438979%202.62068453%203.96547627%203%207%20C2.01%208.485%202.01%208.485%201%2010%20C0.34%209.67%20-0.32%209.34%20-1%209%20C-0.67%208.34%20-0.34%207.68%200%207%20C0.04022391%204.6670134%200.04320247%202.33293334%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(360,477)'/%3e%3cpath%20d='M0%200%20C0%200.66%200%201.32%200%202%20C-0.66%202%20-1.32%202%20-2%202%20C-2%202.99%20-2%203.98%20-2%205%20C-3.32%205%20-4.64%205%20-6%205%20C-5.6875%203.0625%20-5.6875%203.0625%20-5%201%20C-2%200%20-2%200%200%200%20Z%20'%20fill='%23F0E9FF'%20transform='translate(891,561)'/%3e%3cpath%20d='M0%200%20C0.33%200.66%200.66%201.32%201%202%20C0.01%203.32%20-0.98%204.64%20-2%206%20C-3.32%205.34%20-4.64%204.68%20-6%204%20C-4.02%202.68%20-2.04%201.36%200%200%20Z%20'%20fill='%23F0E9FF'%20transform='translate(715,553)'/%3e%3cpath%20d='M0%200%20C1.98%200%203.96%200%206%200%20C6.33%201.65%206.66%203.3%207%205%20C3.535%203.02%203.535%203.02%200%201%20C0%200.67%200%200.34%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(432,552)'/%3e%3cpath%20d='M0%200%20C0.66%200.33%201.32%200.66%202%201%20C1.60196439%203.88575819%201.20990931%204.82189513%20-1.0625%206.75%20C-1.701875%207.1625%20-2.34125%207.575%20-3%208%20C-1.125%201.125%20-1.125%201.125%200%200%20Z%20'%20fill='%23F0E9FF'%20transform='translate(299,549)'/%3e%3cpath%20d='M0%200%20C0.66%200.33%201.32%200.66%202%201%20C2%201.99%202%202.98%202%204%20C-1.13349732%205.04449911%20-1.98968256%204.93423645%20-5%204%20C-3.35%202.68%20-1.7%201.36%200%200%20Z%20'%20fill='%23F0E9FF'%20transform='translate(198,546)'/%3e%3cpath%20d='M0%200%20C1.32%200.33%202.64%200.66%204%201%20C4%204%204%204%202.5%205.6875%20C2.005%206.120625%201.51%206.55375%201%207%20C0.67%204.69%200.34%202.38%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(802,545)'/%3e%3cpath%20d='M0%200%20C2%201.3125%202%201.3125%204%203%20C4%203.99%204%204.98%204%206%20C2.02%205.34%200.04%204.68%20-2%204%20C-1.34%202.68%20-0.68%201.36%200%200%20Z%20'%20fill='%23F0E9FF'%20transform='translate(617,530)'/%3e%3cpath%20d='M0%200%20C2%201.8125%202%201.8125%204%204%20C4%204.99%204%205.98%204%207%20C2.68%207.33%201.36%207.66%200%208%20C0%205.36%200%202.72%200%200%20Z%20'%20fill='%230D0026'%20transform='translate(552,520)'/%3e%3cpath%20d='M0%200%20C0.66%200.33%201.32%200.66%202%201%20C0.1875%204%200.1875%204%20-2%207%20C-2.99%207%20-3.98%207%20-5%207%20C-3.35%204.69%20-1.7%202.38%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(715,519)'/%3e%3cpath%20d='M0%200%20C2.50037734%202.17424117%203.43628586%203.73045798%204%207%20C2.68%206.67%201.36%206.34%200%206%20C0%204.02%200%202.04%200%200%20Z%20'%20fill='%23F0E9FF'%20transform='translate(483,496)'/%3e%3cpath%20d='M0%200%20C0.66%200.33%201.32%200.66%202%201%20C1.67%202.98%201.34%204.96%201%207%20C0.34%206.67%20-0.32%206.34%20-1%206%20C-1.625%203.4375%20-1.625%203.4375%20-2%201%20C-1.34%200.67%20-0.68%200.34%200%200%20Z%20'%20fill='%230D0026'%20transform='translate(182,471)'/%3e%3cpath%20d='M0%200%20C0.33%201.32%200.66%202.64%201%204%20C3.31%204%205.62%204%208%204%20C8%204.33%208%204.66%208%205%20C4.7%205%201.4%205%20-2%205%20C-1.34%203.35%20-0.68%201.7%200%200%20Z%20'%20fill='%23DFFF99'%20transform='translate(638,451)'/%3e%3c/svg%3e";
589
+ var dyrected_default = "data:image/svg+xml,%3c?xml%20version='1.0'%20encoding='UTF-8'?%3e%3c!DOCTYPE%20svg%20PUBLIC%20'-//W3C//DTD%20SVG%201.1//EN'%20'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'%3e%3c!--%20Creator:%20CorelDRAW%202020%20(64-Bit)%20--%3e%3csvg%20xmlns='http://www.w3.org/2000/svg'%20xml:space='preserve'%20width='1024'%20height='262'%20version='1.1'%20style='shape-rendering:geometricPrecision;%20text-rendering:geometricPrecision;%20image-rendering:optimizeQuality;%20fill-rule:evenodd;%20clip-rule:evenodd'%20viewBox='1661.62%203068.43%208348.08%202136.02'%20xmlns:xlink='http://www.w3.org/1999/xlink'%20xmlns:xodm='http://www.corel.com/coreldraw/odm/2003'%3e%3cdefs%3e%3cstyle%20type='text/css'%3e%3c![CDATA[%20.fil0%20{fill:none}%20.fil1%20{fill:%2331106F}%20.fil2%20{fill:%23BCFF2E}%20]]%3e%3c/style%3e%3cclipPath%20id='id0'%3e%3cpath%20d='M7019.56%203547.95l116.29%200.94%201.21%20175.49%20-147.35%205.59%20-0.7%20227.87%20144.92%204.05c30,184.02%20-43.07,483.22%2057.01,656.94%20113.85,197.63%20495.67,218.13%20705.04,-85.78%2051.2,-74.32%2093.13,-147.48%20172.3,-185.8%20126.71,-61.33%20518.73,-11.78%20691.7,-30.73%202.83,-175.73%20-7.55,-289.05%20-92.81,-408.89%20-60.7,-85.3%20-171.47,-170.69%20-319.21,-186.77%20-304.19,-33.12%20-534.26,180.2%20-553.67,454.78%2044.78,-22.98%2079.06,-69.98%20181.52,-96.45%2032.79,-8.47%2090.5,-3.12%20111.48,-28.82%2018.01,-22.05%2020.78,-43.97%2072.17,-75.17%20159.31,-96.73%20347.73,29.03%20339.28,164.03%20-142.7,7.31%20-361.67,-17.5%20-489.37,16.06%20-140.56,36.93%20-208.92,111.53%20-280.65,224.44%20-111.52,175.55%20-264.77,152.81%20-303.63,68.34%20-26.86,-58.38%20-21.58,-401.09%20-14.11,-484.61l229.61%20-2.23%200.94%20-233.44%20-231.52%200.41%20-0.62%20-179.31%20124.86%20-1.69c-3.83,-10.39%20-228.64,-368.72%20-253.2,-388.59%20-22.07,22.13%20-253.24,363.34%20-261.49,389.33z'/%3e%3c/clipPath%3e%3cclipPath%20id='id1'%3e%3cpath%20d='M2078.94%203670.24c159.83,-7.32%20357.13,-19.32%20472.45,57.5%20173.65,115.67%20212.68,385.1%20119.44,563.46%20-38.21,73.09%20-63.26,94.83%20-123.9,135.69%20-111.57,75.18%20-317.6,59.13%20-467.61,53.98l-0.38%20-810.63zm-276.86%201064.91c125,14.11%20329.17,2.43%20460.78,2.23%20156.32,-0.24%20272.8,-5.93%20398.39,-69.64%20191.13,-96.97%20338.35,-298.16%20337.02,-595.21%20-1.31,-294.43%20-142.82,-497.09%20-336.68,-595.19%20-125.99,-63.75%20-232.04,-74.34%20-391.72,-74.46%20-143.24,-0.11%20-326.74,-9.83%20-465.06,1.09l-2.74%201331.18z'/%3e%3c/clipPath%3e%3cclipPath%20id='id2'%3e%3cpath%20d='M9614.74%203834.29l-46.72%20-41.47c-138.25,-99.07%20-334.21,-85.36%20-468.73,-0.69%20-414.78,261.07%20-226.81,1041.5%20301.45,954.31%20154.89,-25.56%20186.57,-103.74%20222.13,-118.19l0.24%20108.18%20263.97%200.02%20-0.39%20-838.39c-18.43,13.93%20-48.93,69.07%20-65.94,89.32%20-25.72,30.6%20-48.01,57.5%20-78.11,83.26%20-167.24,143.1%20-94.11,310.72%20-227.73,403.94%20-68.29,47.65%20-171.03,51.28%20-246.4,10.84%20-209.85,-112.59%20-156.35,-582.78%20163.37,-520.33%20112.36,21.94%20129,90.83%20172.28,148.57%2015.91,-15.81%2037.83,-53.2%2053.12,-72.16%2064.66,-80.19%20114.17,-89.27%20177.07,-222.77%2061.72,-130.98%2060.11,-303.47%2052.06,-463.53l-270.72%20-3.54%20-0.95%20482.63z'/%3e%3c/clipPath%3e%3cclipPath%20id='id3'%3e%3cpath%20d='M3161.22%204831.35l-92.77%20203.85c78.25,38.44%2098.32,70.5%20225.99,78.52%20302.98,19.03%20381.34,-240.89%20467.04,-461.49l257.64%20-668.9c29.08,-74.94%2063.09,-152.79%2086.33,-229.54l-263.44%200.51c-37.04,55.73%20-219.42,586.81%20-240.97,624.5%20-13.08,22.88%20-2.8,7.62%20-14.3,18.5l-255.18%20-643.03%20-276.71%20-0.1c16.19,57.21%20103.58,256.17%20132.23,327.94%2034.05,85.27%20265.63,616.64%20263.35,656.78%20-3.46,60.89%20-50.47,117.08%20-103.77,129.47%20-88.87,20.66%20-123.22,-18.17%20-185.44,-37.02z'/%3e%3c/clipPath%3e%3cclipPath%20id='id4'%3e%3cpath%20d='M5143.22%204139.09c-6.73,-101.89%20111.69,-194.23%20221.68,-196.5%20117.41,-2.43%20224.06,87.5%20220.17,197.41l-441.84%20-0.91zm633.27%20438.8c-17.69,-24.65%20-122.26,-138.6%20-151.8,-155.07%20-152.04,151.57%20-441.06,128.69%20-483.11,-102.48l705.8%20-1.63c4.33,-164.63%20-12.93,-333.13%20-120.41,-446.83%20-10.68,-11.3%20-19.05,-15.55%20-29.4,-26.63%20-192.76,-206.34%20-635.23,-182.56%20-785.73,181.19%20-47.98,116%20-53.07,265.87%20-9.89,390.06%2041.91,120.53%20115.6,205.98%20201.53,261.63%20235.37,152.43%20548.23,71.01%20673.01,-100.25z'/%3e%3c/clipPath%3e%3cclipPath%20id='id5'%3e%3cpath%20d='M6900.13%204479.24l-216.65%20-106.13c-94.39,220.74%20-451.35,190.63%20-456.28,-131.88%20-3.8,-248.59%20201.16,-328.92%20347.79,-255.91%2061.39,30.57%2074.15,63.4%20108.73,113.58l213.52%20-124.59c-24.88,-82.21%20-136.62,-175.09%20-218.2,-212.33%20-313.13,-142.93%20-727.02,56.62%20-718.49,486.1%2012.33,620.41%20813,640.07%20939.58,231.17z'/%3e%3c/clipPath%3e%3cclipPath%20id='id6'%3e%3cpath%20d='M4202.91%204736.74l266.53%200.01c-0.89,-89.19%20-4.33,-461.84%204.33,-524.3%2027.5,-198.37%20150.28,-221.17%20310.03,-210.49l1.61%20-262.4c-135.89,1.56%20-220.93,26.99%20-277.8,114.22%20-95.37,146.26%20-23.58,63.06%20-159.07,234.02%20-172.05,217.09%20-140.76,329.63%20-145.63,648.94z'/%3e%3c/clipPath%3e%3cclipPath%20id='id7'%3e%3cpath%20d='M7940.92%204615.03c193.33,193.93%20581.52,193.25%20747.86,-37.14%20-43.44,-57.2%20-123.12,-128.48%20-144.41,-154.51%20-28.63,14.07%20-168.76,159.23%20-357.78,70.32%20-83.06,-39.07%20-56.28,-54.26%20-100.76,-70.63%20-23.56,26.5%20-131.15,156.27%20-144.91,191.96z'/%3e%3c/clipPath%3e%3cclipPath%20id='id8'%3e%3cpath%20d='M4202.98%204158.67c51.11,-119.58%20208.03,-206.44%20235.35,-403.87%20-49.13,-1.92%20-195.43,-7.67%20-234.96,4.19l-0.39%20399.68z'/%3e%3c/clipPath%3e%3c/defs%3e%3cg%20id='Layer_x0020_1'%3e%3cmetadata%20id='CorelCorpID_0Corel-Layer'/%3e%3crect%20class='fil0'%20x='-0.21'%20y='2.81'%20width='11692.91'%20height='8267.72'/%3e%3crect%20class='fil0'%20x='-0.21'%20y='2.81'%20width='11692.91'%20height='8267.72'/%3e%3cg%20id='_2489101208096'%3e%3cpath%20class='fil1'%20d='M7019.56%203547.95l116.29%200.94%201.21%20175.49%20-147.35%205.59%20-0.7%20227.87%20144.92%204.05c30,184.02%20-43.07,483.22%2057.01,656.94%20113.85,197.63%20495.67,218.13%20705.04,-85.78%2051.2,-74.32%2093.13,-147.48%20172.3,-185.8%20126.71,-61.33%20518.73,-11.78%20691.7,-30.73%202.83,-175.73%20-7.55,-289.05%20-92.81,-408.89%20-60.7,-85.3%20-171.47,-170.69%20-319.21,-186.77%20-304.19,-33.12%20-534.26,180.2%20-553.67,454.78%2044.78,-22.98%2079.06,-69.98%20181.52,-96.45%2032.79,-8.47%2090.5,-3.12%20111.48,-28.82%2018.01,-22.05%2020.78,-43.97%2072.17,-75.17%20159.31,-96.73%20347.73,29.03%20339.28,164.03%20-142.7,7.31%20-361.67,-17.5%20-489.37,16.06%20-140.56,36.93%20-208.92,111.53%20-280.65,224.44%20-111.52,175.55%20-264.77,152.81%20-303.63,68.34%20-26.86,-58.38%20-21.58,-401.09%20-14.11,-484.61l229.61%20-2.23%200.94%20-233.44%20-231.52%200.41%20-0.62%20-179.31%20124.86%20-1.69c-3.83,-10.39%20-228.64,-368.72%20-253.2,-388.59%20-22.07,22.13%20-253.24,363.34%20-261.49,389.33z'/%3e%3cg%20style='clip-path:url(%23id0)'%3e%3cg%3e%3crect%20class='fil2'%20x='6906.6'%20y='3029.49'%20width='770.45'%20height='1803.81'/%3e%3c/g%3e%3c/g%3e%3cpath%20class='fil0'%20d='M7019.56%203547.95l116.29%200.94%201.21%20175.49%20-147.35%205.59%20-0.7%20227.87%20144.92%204.05c30,184.02%20-43.07,483.22%2057.01,656.94%20113.85,197.63%20495.67,218.13%20705.04,-85.78%2051.2,-74.32%2093.13,-147.48%20172.3,-185.8%20126.71,-61.33%20518.73,-11.78%20691.7,-30.73%202.83,-175.73%20-7.55,-289.05%20-92.81,-408.89%20-60.7,-85.3%20-171.47,-170.69%20-319.21,-186.77%20-304.19,-33.12%20-534.26,180.2%20-553.67,454.78%2044.78,-22.98%2079.06,-69.98%20181.52,-96.45%2032.79,-8.47%2090.5,-3.12%20111.48,-28.82%2018.01,-22.05%2020.78,-43.97%2072.17,-75.17%20159.31,-96.73%20347.73,29.03%20339.28,164.03%20-142.7,7.31%20-361.67,-17.5%20-489.37,16.06%20-140.56,36.93%20-208.92,111.53%20-280.65,224.44%20-111.52,175.55%20-264.77,152.81%20-303.63,68.34%20-26.86,-58.38%20-21.58,-401.09%20-14.11,-484.61l229.61%20-2.23%200.94%20-233.44%20-231.52%200.41%20-0.62%20-179.31%20124.86%20-1.69c-3.83,-10.39%20-228.64,-368.72%20-253.2,-388.59%20-22.07,22.13%20-253.24,363.34%20-261.49,389.33z'/%3e%3cpath%20class='fil1'%20d='M2078.94%203670.24c159.83,-7.32%20357.13,-19.32%20472.45,57.5%20173.65,115.67%20212.68,385.1%20119.44,563.46%20-38.21,73.09%20-63.26,94.83%20-123.9,135.69%20-111.57,75.18%20-317.6,59.13%20-467.61,53.98l-0.38%20-810.63zm-276.86%201064.91c125,14.11%20329.17,2.43%20460.78,2.23%20156.32,-0.24%20272.8,-5.93%20398.39,-69.64%20191.13,-96.97%20338.35,-298.16%20337.02,-595.21%20-1.31,-294.43%20-142.82,-497.09%20-336.68,-595.19%20-125.99,-63.75%20-232.04,-74.34%20-391.72,-74.46%20-143.24,-0.11%20-326.74,-9.83%20-465.06,1.09l-2.74%201331.18z'/%3e%3cg%20style='clip-path:url(%23id1)'%3e%3cg%3e%3crect%20class='fil2'%20x='6906.6'%20y='3029.49'%20width='770.45'%20height='1803.81'/%3e%3c/g%3e%3c/g%3e%3cpath%20class='fil0'%20d='M2078.94%203670.24c159.83,-7.32%20357.13,-19.32%20472.45,57.5%20173.65,115.67%20212.68,385.1%20119.44,563.46%20-38.21,73.09%20-63.26,94.83%20-123.9,135.69%20-111.57,75.18%20-317.6,59.13%20-467.61,53.98l-0.38%20-810.63zm-276.86%201064.91c125,14.11%20329.17,2.43%20460.78,2.23%20156.32,-0.24%20272.8,-5.93%20398.39,-69.64%20191.13,-96.97%20338.35,-298.16%20337.02,-595.21%20-1.31,-294.43%20-142.82,-497.09%20-336.68,-595.19%20-125.99,-63.75%20-232.04,-74.34%20-391.72,-74.46%20-143.24,-0.11%20-326.74,-9.83%20-465.06,1.09l-2.74%201331.18z'/%3e%3cpath%20class='fil1'%20d='M9614.74%203834.29l-46.72%20-41.47c-138.25,-99.07%20-334.21,-85.36%20-468.73,-0.69%20-414.78,261.07%20-226.81,1041.5%20301.45,954.31%20154.89,-25.56%20186.57,-103.74%20222.13,-118.19l0.24%20108.18%20263.97%200.02%20-0.39%20-838.39c-18.43,13.93%20-48.93,69.07%20-65.94,89.32%20-25.72,30.6%20-48.01,57.5%20-78.11,83.26%20-167.24,143.1%20-94.11,310.72%20-227.73,403.94%20-68.29,47.65%20-171.03,51.28%20-246.4,10.84%20-209.85,-112.59%20-156.35,-582.78%20163.37,-520.33%20112.36,21.94%20129,90.83%20172.28,148.57%2015.91,-15.81%2037.83,-53.2%2053.12,-72.16%2064.66,-80.19%20114.17,-89.27%20177.07,-222.77%2061.72,-130.98%2060.11,-303.47%2052.06,-463.53l-270.72%20-3.54%20-0.95%20482.63z'/%3e%3cg%20style='clip-path:url(%23id2)'%3e%3cg%3e%3crect%20class='fil2'%20x='6906.6'%20y='3029.49'%20width='770.45'%20height='1803.81'/%3e%3c/g%3e%3c/g%3e%3cpath%20class='fil0'%20d='M9614.74%203834.29l-46.72%20-41.47c-138.25,-99.07%20-334.21,-85.36%20-468.73,-0.69%20-414.78,261.07%20-226.81,1041.5%20301.45,954.31%20154.89,-25.56%20186.57,-103.74%20222.13,-118.19l0.24%20108.18%20263.97%200.02%20-0.39%20-838.39c-18.43,13.93%20-48.93,69.07%20-65.94,89.32%20-25.72,30.6%20-48.01,57.5%20-78.11,83.26%20-167.24,143.1%20-94.11,310.72%20-227.73,403.94%20-68.29,47.65%20-171.03,51.28%20-246.4,10.84%20-209.85,-112.59%20-156.35,-582.78%20163.37,-520.33%20112.36,21.94%20129,90.83%20172.28,148.57%2015.91,-15.81%2037.83,-53.2%2053.12,-72.16%2064.66,-80.19%20114.17,-89.27%20177.07,-222.77%2061.72,-130.98%2060.11,-303.47%2052.06,-463.53l-270.72%20-3.54%20-0.95%20482.63z'/%3e%3cpath%20class='fil1'%20d='M3161.22%204831.35l-92.77%20203.85c78.25,38.44%2098.32,70.5%20225.99,78.52%20302.98,19.03%20381.34,-240.89%20467.04,-461.49l257.64%20-668.9c29.08,-74.94%2063.09,-152.79%2086.33,-229.54l-263.44%200.51c-37.04,55.73%20-219.42,586.81%20-240.97,624.5%20-13.08,22.88%20-2.8,7.62%20-14.3,18.5l-255.18%20-643.03%20-276.71%20-0.1c16.19,57.21%20103.58,256.17%20132.23,327.94%2034.05,85.27%20265.63,616.64%20263.35,656.78%20-3.46,60.89%20-50.47,117.08%20-103.77,129.47%20-88.87,20.66%20-123.22,-18.17%20-185.44,-37.02z'/%3e%3cg%20style='clip-path:url(%23id3)'%3e%3cg%3e%3crect%20class='fil2'%20x='6906.6'%20y='3029.49'%20width='770.45'%20height='1803.81'/%3e%3c/g%3e%3c/g%3e%3cpath%20class='fil0'%20d='M3161.22%204831.35l-92.77%20203.85c78.25,38.44%2098.32,70.5%20225.99,78.52%20302.98,19.03%20381.34,-240.89%20467.04,-461.49l257.64%20-668.9c29.08,-74.94%2063.09,-152.79%2086.33,-229.54l-263.44%200.51c-37.04,55.73%20-219.42,586.81%20-240.97,624.5%20-13.08,22.88%20-2.8,7.62%20-14.3,18.5l-255.18%20-643.03%20-276.71%20-0.1c16.19,57.21%20103.58,256.17%20132.23,327.94%2034.05,85.27%20265.63,616.64%20263.35,656.78%20-3.46,60.89%20-50.47,117.08%20-103.77,129.47%20-88.87,20.66%20-123.22,-18.17%20-185.44,-37.02z'/%3e%3cpath%20class='fil1'%20d='M5143.22%204139.09c-6.73,-101.89%20111.69,-194.23%20221.68,-196.5%20117.41,-2.43%20224.06,87.5%20220.17,197.41l-441.84%20-0.91zm633.27%20438.8c-17.69,-24.65%20-122.26,-138.6%20-151.8,-155.07%20-152.04,151.57%20-441.06,128.69%20-483.11,-102.48l705.8%20-1.63c4.33,-164.63%20-12.93,-333.13%20-120.41,-446.83%20-10.68,-11.3%20-19.05,-15.55%20-29.4,-26.63%20-192.76,-206.34%20-635.23,-182.56%20-785.73,181.19%20-47.98,116%20-53.07,265.87%20-9.89,390.06%2041.91,120.53%20115.6,205.98%20201.53,261.63%20235.37,152.43%20548.23,71.01%20673.01,-100.25z'/%3e%3cg%20style='clip-path:url(%23id4)'%3e%3cg%3e%3crect%20class='fil2'%20x='6906.6'%20y='3029.49'%20width='770.45'%20height='1803.81'/%3e%3c/g%3e%3c/g%3e%3cpath%20class='fil0'%20d='M5143.22%204139.09c-6.73,-101.89%20111.69,-194.23%20221.68,-196.5%20117.41,-2.43%20224.06,87.5%20220.17,197.41l-441.84%20-0.91zm633.27%20438.8c-17.69,-24.65%20-122.26,-138.6%20-151.8,-155.07%20-152.04,151.57%20-441.06,128.69%20-483.11,-102.48l705.8%20-1.63c4.33,-164.63%20-12.93,-333.13%20-120.41,-446.83%20-10.68,-11.3%20-19.05,-15.55%20-29.4,-26.63%20-192.76,-206.34%20-635.23,-182.56%20-785.73,181.19%20-47.98,116%20-53.07,265.87%20-9.89,390.06%2041.91,120.53%20115.6,205.98%20201.53,261.63%20235.37,152.43%20548.23,71.01%20673.01,-100.25z'/%3e%3cpath%20class='fil1'%20d='M6900.13%204479.24l-216.65%20-106.13c-94.39,220.74%20-451.35,190.63%20-456.28,-131.88%20-3.8,-248.59%20201.16,-328.92%20347.79,-255.91%2061.39,30.57%2074.15,63.4%20108.73,113.58l213.52%20-124.59c-24.88,-82.21%20-136.62,-175.09%20-218.2,-212.33%20-313.13,-142.93%20-727.02,56.62%20-718.49,486.1%2012.33,620.41%20813,640.07%20939.58,231.17z'/%3e%3cg%20style='clip-path:url(%23id5)'%3e%3cg%3e%3crect%20class='fil2'%20x='6906.6'%20y='3029.49'%20width='770.45'%20height='1803.81'/%3e%3c/g%3e%3c/g%3e%3cpath%20class='fil0'%20d='M6900.13%204479.24l-216.65%20-106.13c-94.39,220.74%20-451.35,190.63%20-456.28,-131.88%20-3.8,-248.59%20201.16,-328.92%20347.79,-255.91%2061.39,30.57%2074.15,63.4%20108.73,113.58l213.52%20-124.59c-24.88,-82.21%20-136.62,-175.09%20-218.2,-212.33%20-313.13,-142.93%20-727.02,56.62%20-718.49,486.1%2012.33,620.41%20813,640.07%20939.58,231.17z'/%3e%3cpath%20class='fil1'%20d='M4202.91%204736.74l266.53%200.01c-0.89,-89.19%20-4.33,-461.84%204.33,-524.3%2027.5,-198.37%20150.28,-221.17%20310.03,-210.49l1.61%20-262.4c-135.89,1.56%20-220.93,26.99%20-277.8,114.22%20-95.37,146.26%20-23.58,63.06%20-159.07,234.02%20-172.05,217.09%20-140.76,329.63%20-145.63,648.94z'/%3e%3cg%20style='clip-path:url(%23id6)'%3e%3cg%3e%3crect%20class='fil2'%20x='6906.6'%20y='3029.49'%20width='770.45'%20height='1803.81'/%3e%3c/g%3e%3c/g%3e%3cpath%20class='fil0'%20d='M4202.91%204736.74l266.53%200.01c-0.89,-89.19%20-4.33,-461.84%204.33,-524.3%2027.5,-198.37%20150.28,-221.17%20310.03,-210.49l1.61%20-262.4c-135.89,1.56%20-220.93,26.99%20-277.8,114.22%20-95.37,146.26%20-23.58,63.06%20-159.07,234.02%20-172.05,217.09%20-140.76,329.63%20-145.63,648.94z'/%3e%3cpath%20class='fil1'%20d='M7940.92%204615.03c193.33,193.93%20581.52,193.25%20747.86,-37.14%20-43.44,-57.2%20-123.12,-128.48%20-144.41,-154.51%20-28.63,14.07%20-168.76,159.23%20-357.78,70.32%20-83.06,-39.07%20-56.28,-54.26%20-100.76,-70.63%20-23.56,26.5%20-131.15,156.27%20-144.91,191.96z'/%3e%3cg%20style='clip-path:url(%23id7)'%3e%3cg%3e%3crect%20class='fil2'%20x='6906.6'%20y='3029.49'%20width='770.45'%20height='1803.81'/%3e%3c/g%3e%3c/g%3e%3cpath%20class='fil0'%20d='M7940.92%204615.03c193.33,193.93%20581.52,193.25%20747.86,-37.14%20-43.44,-57.2%20-123.12,-128.48%20-144.41,-154.51%20-28.63,14.07%20-168.76,159.23%20-357.78,70.32%20-83.06,-39.07%20-56.28,-54.26%20-100.76,-70.63%20-23.56,26.5%20-131.15,156.27%20-144.91,191.96z'/%3e%3cpath%20class='fil1'%20d='M4202.98%204158.67c51.11,-119.58%20208.03,-206.44%20235.35,-403.87%20-49.13,-1.92%20-195.43,-7.67%20-234.96,4.19l-0.39%20399.68z'/%3e%3cg%20style='clip-path:url(%23id8)'%3e%3cg%3e%3crect%20class='fil2'%20x='6906.6'%20y='3029.49'%20width='770.45'%20height='1803.81'/%3e%3c/g%3e%3c/g%3e%3cpath%20class='fil0'%20d='M4202.98%204158.67c51.11,-119.58%20208.03,-206.44%20235.35,-403.87%20-49.13,-1.92%20-195.43,-7.67%20-234.96,4.19l-0.39%20399.68z'/%3e%3c/g%3e%3c/g%3e%3c/svg%3e";
705
590
  //#endregion
706
591
  //#region src/components/layout/admin-shell.tsx
707
592
  function getUserString(user, key) {
@@ -897,7 +782,7 @@ function SidebarInner({ schemas, isLoading, location, logout, isEmbedded, collap
897
782
  }) : /* @__PURE__ */ jsx("div", {
898
783
  className: "dy-h-7 dy-w-auto dy-flex dy-items-center dy-justify-center dy-shrink-0",
899
784
  children: /* @__PURE__ */ jsx("img", {
900
- src: "data:image/svg+xml,%3c?xml%20version='1.0'%20encoding='UTF-8'?%3e%3csvg%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20viewBox='75%20408%20880%20200'%20width='1024'%20height='320'%3e%3cpath%20d='M0%200%20C80.77777778%200%2080.77777778%200%20104.25%2016.25%20C110.41149028%2022.41149028%20115.8130796%2029.84774381%20119%2038%20C119.37125%2038.93457031%20119.7425%2039.86914062%20120.125%2040.83203125%20C125.97853191%2057.96580693%20124.38837118%2076.7725057%20116.9375%2093.0625%20C109.56325726%20107.53398146%2097.58992255%20116.7156145%2082.375%20121.875%20C71.26222779%20125.44607062%2060.56671647%20126.28755488%2048.92578125%20126.1953125%20C47.67873413%20126.19329834%2046.43168701%20126.19128418%2045.14685059%20126.18920898%20C40.53536241%20126.17882812%2035.9239271%20126.15090625%2031.3125%20126.125%20C20.979375%20126.08375%2010.64625%20126.0425%200%20126%20C0%2084.42%200%2042.84%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(94,437)'/%3e%3cpath%20d='M0%200%20C2.71975521%200.35943901%203.84341638%200.83999752%205.7890625%202.828125%20C6.39492188%203.62734375%207.00078125%204.4265625%207.625%205.25%20C8.3159375%206.14847656%209.006875%207.04695313%209.71875%207.97265625%20C10.4715625%208.97167969%2011.224375%209.97070312%2012%2011%20C13.27334297%2012.66801941%2014.55020731%2014.33328608%2015.828125%2015.99780273%20C16.68920631%2017.1197048%2017.54859726%2018.24290639%2018.40625%2019.36743164%20C20.72359821%2022.39401514%2023.10162467%2025.33084868%2025.625%2028.1875%20C28%2031%2028%2031%2028%2033%20C24.04%2033%2020.08%2033%2016%2033%20C16%2036.96%2016%2040.92%2016%2045%20C23.92%2045%2031.84%2045%2040%2045%20C40%2052.26%2040%2059.52%2040%2067%20C32.08%2067%2024.16%2067%2016%2067%20C16.05110565%2073.01513491%2016.11411805%2079.02770699%2016.20751953%2085.04199219%20C16.23569066%2087.08650395%2016.25692435%2089.13112384%2016.27099609%2091.17578125%20C16.29247887%2094.12035322%2016.3391569%2097.06363041%2016.390625%20100.0078125%20C16.39185364%20100.9174173%2016.39308228%20101.82702209%2016.39434814%20102.76419067%20C16.52453003%20108.44478815%2017.27045802%20111.64305028%2021%20116%20C25.45146778%20118.22573389%2031.49130269%20117.61284521%2036.22265625%20116.45703125%20C43.02192732%20113.57781706%2047.39900966%20107.25297069%2051.15625%20101.109375%20C56.12293503%2093.05732503%2066.02505874%2086.96170223%2075%2084.4375%20C75.99%2084.2209375%2075.99%2084.2209375%2077%2084%20C77.76934372%2083.82831802%2078.53868744%2083.65663605%2079.3313446%2083.47975159%20C81.85956507%2083.02524638%2084.13490112%2082.87925324%2086.69848633%2082.88647461%20C88.0493206%2082.88658791%2088.0493206%2082.88658791%2089.42744446%2082.88670349%20C90.3859581%2082.89186478%2091.34447174%2082.89702606%2092.33203125%2082.90234375%20C93.32377853%2082.9037587%2094.31552582%2082.90517365%2095.33732605%2082.90663147%20C98.49574843%2082.91221582%20101.65409915%2082.92476548%20104.8125%2082.9375%20C106.95768127%2082.94251702%20109.10286365%2082.94707958%20111.24804688%2082.95117188%20C116.49872224%2082.96218012%20121.749356%2082.9789027%20127%2083%20C126.41627107%2081.40206803%20125.81844039%2079.8092836%20125.21484375%2078.21875%20C124.88347412%2077.33123047%20124.55210449%2076.44371094%20124.21069336%2075.52929688%20C121.96215073%2070.83179705%20118.27353717%2068.10625131%20113.671875%2065.8671875%20C107.40145998%2063.8320528%2099.62475654%2063.83565488%2093.5625%2066.5625%20C90.74762291%2068.18758368%2089.23412527%2069.92734346%2087.375%2072.5625%20C83.79694231%2077.15174791%2079.16997757%2077.25826651%2073.6875%2078.1875%20C67.93513917%2079.45496934%2063.11247292%2082.15885793%2058%2085%20C56.67024353%2085.67377293%2055.33832199%2086.34340541%2054%2087%20C54.53283313%2074.23864658%2059.85622582%2063.62873005%2069.125%2054.8125%20C79.48783101%2046.05739319%2090.98874912%2042.60318009%20104.3125%2042.6875%20C105.24167236%2042.69313965%20106.17084473%2042.6987793%20107.12817383%2042.70458984%20C120.80891332%2042.94676927%20132.08138441%2047.30179809%20142%2057%20C150.69408674%2067.01964256%20154.41434505%2078.42703622%20154.12890625%2091.5%20C154.11960083%2092.32242188%20154.11029541%2093.14484375%20154.10070801%2093.9921875%20C154.07669258%2095.99492902%20154.03971288%2097.99750824%20154%20100%20C153.20788116%20100.00142502%20152.41576233%20100.00285004%20151.59963989%20100.00431824%20C144.09719277%20100.0222236%20136.5954255%20100.06405798%20129.09327888%20100.13209057%20C125.23723861%20100.16623308%20121.38158914%20100.19145048%20117.52539062%20100.19555664%20C113.79674299%20100.1998673%20110.06897502%20100.22855506%20106.34060287%20100.27343178%20C104.9254661%20100.2863193%20103.51022356%20100.29074578%20102.09503555%20100.28615379%20C90.97909255%20100.25851196%2082.24496399%20102.13674731%2074%20110%20C72.693186%20111.68664002%2071.44412084%20113.4192826%2070.25%20115.1875%20C60.98713546%20128.13484969%2049.31550166%20137.60492408%2033.359375%20140.6015625%20C22.09111259%20141.93803083%2011.94495066%20141.67673859%201.8125%20136.3125%20C-6.21093351%20129.71545467%20-11.15550672%20122.32419258%20-13%20112%20C-13.25198192%20108.45441218%20-13.23420464%20104.92803422%20-13.1953125%20101.375%20C-13.1924826%20100.38749756%20-13.18965271%2099.39999512%20-13.18673706%2098.38256836%20C-13.1756182%2095.25491785%20-13.15052916%2092.12756272%20-13.125%2089%20C-13.11495948%2086.86849374%20-13.10583551%2084.73698296%20-13.09765625%2082.60546875%20C-13.07570607%2077.4035335%20-13.04123391%2072.20181669%20-13%2067%20C-17.95%2067%20-22.9%2067%20-28%2067%20C-28%2059.74%20-28%2052.48%20-28%2045%20C-25.11584117%2043.55792059%20-22.58278472%2043.90605113%20-19.375%2043.9375%20C-18.18648437%2043.94652344%20-16.99796875%2043.95554687%20-15.7734375%2043.96484375%20C-14.85820313%2043.97644531%20-13.94296875%2043.98804688%20-13%2044%20C-13%2040.37%20-13%2036.74%20-13%2033%20C-16.63%2033%20-20.26%2033%20-24%2033%20C-22.47026072%2029.1756518%20-21.7364866%2027.36138218%20-19.27734375%2024.43359375%20C-18.74262451%2023.78841797%20-18.20790527%2023.14324219%20-17.65698242%2022.47851562%20C-16.80583862%2021.46821289%20-16.80583862%2021.46821289%20-15.9375%2020.4375%20C-10.41141017%2013.76832013%20-5.12012996%206.98560367%200%200%20Z%20'%20fill='%23B6FF2E'%20transform='translate(660,423)'/%3e%3cpath%20d='M0%200%20C9.57%200%2019.14%200%2029%200%20C29.59839035%2022.9781895%2028.74526871%2040.62390375%2012.65625%2058.3359375%20C11%2060%2011%2060%208.4375%2062%20C5.46025693%2064.44286611%203.51309236%2067.23700629%201.33203125%2070.390625%20C0.89246094%2070.92171875%200.45289063%2071.4528125%200%2072%20C-0.66%2072%20-1.32%2072%20-2%2072%20C-2.93987733%2070.55661697%20-3.87796552%2069.11202069%20-4.8046875%2067.66015625%20C-8.25891165%2062.86262271%20-12.44079328%2060.54083019%20-18%2059%20C-25.38567118%2058.11965024%20-31.79640485%2058.30895235%20-38.12890625%2062.45703125%20C-43.93075089%2067.24143341%20-46.08004443%2072.64035542%20-47%2080%20C-47.62384022%2087.86038675%20-46.29060096%2095.4983732%20-41.375%20101.875%20C-36.78559554%20106.66837799%20-31.1204383%20109.16020416%20-24.5%20109.4375%20C-17.63097442%20109.06652475%20-10.76252345%20107.03884639%20-5.6171875%20102.3203125%20C-2.88904376%2098.40601931%20-1.66280214%2093.9535236%20-0.1809082%2089.45141602%20C3.35486261%2078.72166264%208.74872668%2071.79757179%2016.88671875%2064.08325195%20C20.82961215%2060.32870988%2023.90074122%2056.47544342%2027%2052%20C27.33%2052%2027.66%2052%2028%2052%20C28%2078.4%2028%20104.8%2028%20132%20C19.42%20132%2010.84%20132%202%20132%20C2%20128.37%202%20124.74%202%20121%20C1.34%20121%200.68%20121%200%20121%20C-0.495%20122.485%20-0.495%20122.485%20-1%20124%20C-12.73711711%20132.94256542%20-25.06338231%20134.43156199%20-39.3125%20132.56640625%20C-51.92494538%20129.92239101%20-62.18469132%20122.09849232%20-69.1875%20111.4375%20C-76.64035884%2098.17021241%20-78.4709381%2082.69085036%20-74.375%2068.0625%20C-69.54605076%2054.5211808%20-61.09321667%2044.22524607%20-48%2038%20C-41.32156484%2035.17823273%20-35.2722462%2034.50746377%20-28.0625%2034.5625%20C-27.13759766%2034.54251953%20-26.21269531%2034.52253906%20-25.25976562%2034.50195312%20C-15.04309922%2034.50911267%20-8.83524108%2037.47063244%20-1%2044%20C-0.67%2029.48%20-0.34%2014.96%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(902,431)'/%3e%3cpath%20d='M0%200%20C1.98755052%201.41100915%203.72130576%202.89802373%205.484375%204.578125%20C6.38349609%205.34576172%206.38349609%205.34576172%207.30078125%206.12890625%20C15.92373572%2013.93240069%2020.74453573%2025.07362429%2021.484375%2036.578125%20C21.60509121%2040.91384903%2021.70071786%2045.24490485%2021.484375%2049.578125%20C20.484375%2050.578125%2020.484375%2050.578125%2017.63072205%2050.69837952%20C16.35387039%2050.69615891%2015.07701874%2050.69393829%2013.76147461%2050.69165039%20C13.0590715%2050.69179642%2012.3566684%2050.69194244%2011.63298035%2050.6920929%20C9.30086222%2050.69139372%206.968823%2050.68360117%204.63671875%2050.67578125%20C3.02389062%2050.67391708%201.41106193%2050.67249318%20-0.20176697%2050.67149353%20C-4.45477857%2050.66766823%20-8.70775624%2050.65783785%20-12.96075439%2050.64678955%20C-17.2973993%2050.63657569%20-21.63404967%2050.63199596%20-25.97070312%2050.62695312%20C-34.48569269%2050.61621559%20-43.00065463%2050.59913903%20-51.515625%2050.578125%20C-50.76310085%2052.01068418%20-50.00072966%2053.43807287%20-49.234375%2054.86328125%20C-48.81091797%2055.65871338%20-48.38746094%2056.45414551%20-47.95117188%2057.27368164%20C-44.77728619%2062.36863181%20-40.24267716%2065.83885608%20-34.515625%2067.578125%20C-24.44648111%2068.75306138%20-13.88210791%2068.97920567%20-5.515625%2062.578125%20C-4.49191978%2061.60240597%20-3.48336669%2060.60937474%20-2.515625%2059.578125%20C0.41667693%2060.89933328%202.47102399%2062.32450697%204.71875%2064.6171875%20C5.29238281%2065.19726562%205.86601562%2065.77734375%206.45703125%2066.375%20C7.04355469%2066.97828125%207.63007813%2067.5815625%208.234375%2068.203125%20C8.83636719%2068.81414062%209.43835938%2069.42515625%2010.05859375%2070.0546875%20C11.53842805%2071.55801124%2013.01202176%2073.06747356%2014.484375%2074.578125%20C6.88082899%2084.58279081%20-3.31152864%2089.39611981%20-15.515625%2091.578125%20C-19.0759833%2091.8143607%20-22.63564692%2091.80900924%20-26.203125%2091.828125%20C-27.61754883%2091.8590625%20-27.61754883%2091.8590625%20-29.06054688%2091.890625%20C-43.17549414%2091.96823296%20-55.10728015%2086.56442315%20-65.26171875%2076.88671875%20C-75.61516851%2066.28205877%20-79.89439154%2053.46530582%20-79.73046875%2038.73046875%20C-78.80311822%2025.12370731%20-72.27652509%2013.81184063%20-62.515625%204.578125%20C-45.29287927%20-9.47756591%20-19.26149726%20-10.88693323%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(493.515625,472.421875)'/%3e%3cpath%20d='M0%200%20C9.57%200%2019.14%200%2029%200%20C31.88545714%206.3480057%2034.74623297%2012.64267461%2037.375%2019.08984375%20C37.66681152%2019.80048477%2037.95862305%2020.51112579%2038.25927734%2021.24330139%20C39.17479456%2023.47391024%2040.08751229%2025.70565039%2041%2027.9375%20C41.60917627%2029.42390959%2042.2185503%2030.91023814%2042.828125%2032.39648438%20C43.27551025%2033.48759018%2043.27551025%2033.48759018%2043.73193359%2034.60073853%20C44.32289018%2036.04103366%2044.91435386%2037.48112086%2045.50634766%2038.92098999%20C46.83058613%2042.14243669%2048.14705044%2045.36608605%2049.4453125%2048.59814453%20C49.87585938%2049.6601709%2050.30640625%2050.72219727%2050.75%2051.81640625%20C51.11609375%2052.7297876%2051.4821875%2053.64316895%2051.859375%2054.58422852%20C52.99948383%2056.99890679%2054.32194326%2058.93105971%2056%2061%20C63.85224401%2042.59935141%2063.85224401%2042.59935141%2071.375%2024.0625%20C74.61034321%2015.88404588%2078.06515289%207.86969422%2082%200%20C90.91%200%2099.82%200%20109%200%20C105.62156917%2011.2614361%20105.62156917%2011.2614361%20103.94921875%2015.33203125%20C103.57990234%2016.23373047%20103.21058594%2017.13542969%20102.83007812%2018.06445312%20C102.45302734%2018.97130859%20102.07597656%2019.87816406%20101.6875%2020.8125%20C101.13932617%2022.15538086%20101.13932617%2022.15538086%20100.58007812%2023.52539062%20C98.52888864%2028.50280206%2096.36531611%2033.41002468%2094.08984375%2038.2890625%20C91.12034683%2044.67044212%2088.37355778%2051.13053761%2085.67678833%2057.63122559%20C84.27693812%2061.00305678%2082.86621358%2064.37034217%2081.45703125%2067.73828125%20C81.17043137%2068.42368988%2080.88383148%2069.10909851%2080.58854675%2069.8152771%20C77.59723903%2076.96761949%2074.59243132%2084.11392962%2071.5625%2091.25%20C71.09118652%2092.37220947%2070.61987305%2093.49441895%2070.13427734%2094.65063477%20C64.14372759%20108.71158026%2057.88097216%20122.54500294%2043.26171875%20129.16015625%20C32.99566383%20132.97224918%2018.99532524%20132.39132855%209%20128%20C6.27254605%20126.74842163%203.64641133%20125.4212209%201%20124%20C1.6411928%20121.09325931%202.56662682%20118.57468666%203.84765625%20115.890625%20C4.38422852%20114.75947266%204.38422852%20114.75947266%204.93164062%20113.60546875%20C5.30482422%20112.82816406%205.67800781%20112.05085937%206.0625%20111.25%20C6.62807617%20110.06083984%206.62807617%20110.06083984%207.20507812%20108.84765625%20C8.13345839%20106.89688254%209.06629544%20104.94823094%2010%20103%20C12.57030771%20104.02467879%2015.13501673%20105.05651863%2017.6875%20106.125%20C23.13926051%20107.56508768%2028.53393046%20107.91137353%2033.875%20105.9375%20C36.67992585%20103.3800676%2038.90092755%20100.67546954%2040%2097%20C39.51255272%2092.02739581%2037.81323979%2087.84336435%2035.75390625%2083.34765625%20C35.42739075%2082.61970352%2035.10087524%2081.89175079%2034.76446533%2081.14173889%20C34.06574374%2079.58604999%2033.36386031%2078.03177798%2032.65908813%2076.4788208%20C31.54929238%2074.03339714%2030.44768068%2071.58443912%2029.34838867%2069.13427734%20C28.24699442%2066.67954634%2027.14520032%2064.22500817%2026.04084778%2061.77160645%20C22.05427867%2052.9145598%2018.19057599%2044.00588863%2014.33935547%2035.08935547%20C13.03927819%2032.09059902%2011.73151205%2029.09532776%2010.42124939%2026.10101318%20C9.20378396%2023.3178069%207.98924352%2020.53332878%206.7749939%2017.74871826%20C6.17859872%2016.3828194%205.58097738%2015.01745522%204.98208618%2013.65264893%20C4.14875742%2011.75295298%203.31997874%209.85133284%202.4921875%207.94921875%20C2.01120605%206.84924561%201.53022461%205.74927246%201.03466797%204.6159668%20C0%202%200%202%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(224,467)'/%3e%3cpath%20d='M0%200%20C4.6456294%203.80490916%208.23887006%207.95463812%2010.84375%2013.40234375%20C10.84375%2014.06234375%2010.84375%2014.72234375%2010.84375%2015.40234375%20C0.44875%2020.84734375%200.44875%2020.84734375%20-10.15625%2026.40234375%20C-15.15625%2022.40234375%20-15.15625%2022.40234375%20-17.59375%2019.83984375%20C-23.69448695%2014.03670372%20-29.49135908%2013.8685058%20-37.5859375%2014.05859375%20C-44.66458696%2014.74012674%20-48.35592604%2018.17840756%20-52.89453125%2023.42578125%20C-57.35750661%2030.4173154%20-57.05559365%2039.03898526%20-55.7265625%2046.96484375%20C-53.69407611%2054.19146201%20-49.25238278%2059.49703127%20-42.90625%2063.40234375%20C-35.21481566%2065.45339291%20-27.19943303%2065.45458604%20-20.15625%2061.40234375%20C-17.38502725%2059.04807876%20-17.38502725%2059.04807876%20-15.15625%2056.40234375%20C-13.82291667%2055.06901042%20-12.48958333%2053.73567708%20-11.15625%2052.40234375%20C-3.48829498%2054.74171986%203.61512274%2057.95003181%2010.84375%2061.40234375%20C9.71301894%2068.83286216%205.25630274%2073.41753074%20-0.15625%2078.40234375%20C-14.27515309%2088.65893292%20-29.58374274%2090.22229359%20-46.59375%2087.94140625%20C-59.50522416%2084.75107107%20-71.47879005%2076.68814229%20-78.59375%2065.40234375%20C-85.12640699%2053.53652894%20-87.70329542%2038.76522142%20-84.28515625%2025.4921875%20C-81.80476638%2018.01848819%20-78.48663047%2012.17115378%20-73.15625%206.40234375%20C-72.35574219%205.46648437%20-72.35574219%205.46648437%20-71.5390625%204.51171875%20C-54.14361329%20-14.63159857%20-19.9950983%20-14.8152087%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(612.15625,475.59765625)'/%3e%3cpath%20d='M0%200%20C0.92917236%200.00563965%201.85834473%200.0112793%202.81567383%200.01708984%20C16.49641332%200.25926927%2027.76888441%204.61429809%2037.6875%2014.3125%20C46.38158674%2024.33214256%2050.10184505%2035.73953622%2049.81640625%2048.8125%20C49.80710083%2049.63492188%2049.79779541%2050.45734375%2049.78820801%2051.3046875%20C49.76419258%2053.30742902%2049.72721288%2055.31000824%2049.6875%2057.3125%20C48.89538116%2057.31392502%2048.10326233%2057.31535004%2047.28713989%2057.31681824%20C39.78469277%2057.3347236%2032.2829255%2057.37655798%2024.78077888%2057.44459057%20C20.92473861%2057.47873308%2017.06908914%2057.50395048%2013.21289062%2057.50805664%20C9.48424299%2057.5123673%205.75647502%2057.54105506%202.02810287%2057.58593178%20C0.6129661%2057.5988193%20-0.80227644%2057.60324578%20-2.21746445%2057.59865379%20C-13.33340745%2057.57101196%20-22.06753601%2059.44924731%20-30.3125%2067.3125%20C-31.619314%2068.99914002%20-32.86837916%2070.7317826%20-34.0625%2072.5%20C-39.27138551%2079.83175205%20-44.31888353%2086.93254032%20-53.3125%2089.3125%20C-59.27605196%2089.97511688%20-63.4418563%2088.64128375%20-68.3125%2085.3125%20C-71.47815211%2082.38915707%20-73.44158139%2079.56624985%20-74.3125%2075.3125%20C-73.64863281%2075.07015625%20-72.98476563%2074.8278125%20-72.30078125%2074.578125%20C-70.97626953%2074.07539062%20-70.97626953%2074.07539062%20-69.625%2073.5625%20C-68.31982422%2073.07523438%20-68.31982422%2073.07523438%20-66.98828125%2072.578125%20C-61.914668%2070.17834297%20-58.99832299%2067.14164616%20-55.97827148%2062.4387207%20C-49.17329509%2051.85146005%20-39.91704612%2044.06974446%20-27.3125%2041.3125%20C-26.54315628%2041.14081802%20-25.77381256%2040.96913605%20-24.9811554%2040.79225159%20C-22.45293493%2040.33774638%20-20.17759888%2040.19175324%20-17.61401367%2040.19897461%20C-16.2631794%2040.19908791%20-16.2631794%2040.19908791%20-14.88505554%2040.19920349%20C-13.44728508%2040.20694542%20-13.44728508%2040.20694542%20-11.98046875%2040.21484375%20C-10.49284782%2040.21696617%20-10.49284782%2040.21696617%20-8.97517395%2040.21913147%20C-5.81675157%2040.22471582%20-2.65840085%2040.23726548%200.5%2040.25%20C2.64518127%2040.25501702%204.79036365%2040.25957958%206.93554688%2040.26367188%20C12.18622224%2040.27468012%2017.436856%2040.2914027%2022.6875%2040.3125%20C22.10377107%2038.71456803%2021.50594039%2037.1217836%2020.90234375%2035.53125%20C20.57097412%2034.64373047%2020.23960449%2033.75621094%2019.89819336%2032.84179688%20C17.64965073%2028.14429705%2013.96103717%2025.41875131%209.359375%2023.1796875%20C3.08895998%2021.1445528%20-4.68774346%2021.14815488%20-10.75%2023.875%20C-13.56487709%2025.50008368%20-15.07837473%2027.23984346%20-16.9375%2029.875%20C-20.51555769%2034.46424791%20-25.14252243%2034.57076651%20-30.625%2035.5%20C-36.37736083%2036.76746934%20-41.20002708%2039.47135793%20-46.3125%2042.3125%20C-47.64225647%2042.98627293%20-48.97417801%2043.65590541%20-50.3125%2044.3125%20C-49.77966687%2031.55114658%20-44.45627418%2020.94123005%20-35.1875%2012.125%20C-24.82466899%203.36989319%20-13.32375088%20-0.08431991%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(764.3125,465.6875)'/%3e%3cpath%20d='M0%200%20C44.84375%200%2044.84375%200%2055%2010%20C63.50692661%2020.10567615%2066.02395277%2031.00367642%2065%2044%20C63.92164324%2052.75980221%2059.27536689%2061.86408571%2053%2068%20C36.90761972%2079.76525518%2020.54677762%2076%200%2076%20C0%2050.92%200%2025.84%200%200%20Z%20'%20fill='%23FFFFFF'%20transform='translate(123,462)'/%3e%3cpath%20d='M0%200%20C0%208.58%200%2017.16%200%2026%20C-2.475%2026.0825%20-4.95%2026.165%20-7.5%2026.25%20C-15.58592043%2026.68028387%20-20.78770187%2028.00185508%20-26.8125%2033.625%20C-32.18698591%2040.84882192%20-32.45755497%2050.04763218%20-32.51171875%2058.6953125%20C-32.52966995%2059.76876923%20-32.54762115%2060.84222595%20-32.56611633%2061.94821167%20C-32.61983039%2065.34043577%20-32.65398988%2068.73252235%20-32.6875%2072.125%20C-32.72070741%2074.44012315%20-32.75520018%2076.75522823%20-32.79101562%2079.0703125%20C-32.87792806%2084.71355721%20-32.93833073%2090.35619859%20-33%2096%20C-42.24%2096%20-51.48%2096%20-61%2096%20C-61.11629021%2091.57321943%20-61.21532635%2087.15195899%20-61.2746582%2082.72485352%20C-61.29944483%2081.22662179%20-61.33328586%2079.72850609%20-61.37719727%2078.23071289%20C-61.84659218%2061.77980184%20-58.18723461%2049.29745852%20-47.64160156%2036.32958984%20C-46.11388537%2034.44998397%20-44.58793536%2032.56895731%20-43.0625%2030.6875%20C-42.54276611%2030.05078369%20-42.02303223%2029.41406738%20-41.48754883%2028.75805664%20C-38.17466035%2024.64362091%20-35.32555694%2020.47816771%20-32.625%2015.9375%20C-27.24219449%206.99173768%20-23.75743907%203.76906718%20-13.609375%200.6640625%20C-10%200%20-10%200%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(406,466)'/%3e%3cpath%20d='M0%200%20C5.66129431%204.69766975%2010.85228904%209.74723372%2016%2015%20C11.92304775%2022.70385133%204.05433775%2027.16606635%20-4%2030%20C-19.29250715%2034.53548448%20-36.16315756%2033.34402642%20-50.4140625%2026.31640625%20C-58.66486514%2021.8238732%20-58.66486514%2021.8238732%20-59.77929688%2019.08422852%20C-60%2017%20-60%2017%20-57.796875%2013.87109375%20C-56.79405635%2012.71532531%20-55.77778517%2011.57112409%20-54.75%2010.4375%20C-54.24597656%209.86064453%20-53.74195313%209.28378906%20-53.22265625%208.68945312%20C-50.89341628%206.03925489%20-48.51068548%203.47978615%20-46%201%20C-42.31120701%202.80247839%20-38.77349917%204.8276212%20-35.21875%206.87890625%20C-27.51820571%2010.76985028%20-18.90673806%209.19207078%20-10.88671875%207.06640625%20C-6.60864698%205.48600897%20-3.35300014%203.04728542%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(791,532)'/%3e%3cpath%20d='M0%200%20C4.56326885%202.95860288%208.00828055%206.6679148%209.9375%2011.8125%20C9.9375%2013.4625%209.9375%2015.1125%209.9375%2016.8125%20C-4.9125%2016.8125%20-19.7625%2016.8125%20-35.0625%2016.8125%20C-33.85907282%209.59193695%20-31.77484523%205.59340843%20-25.8984375%201.19140625%20C-17.83251928%20-3.44583989%20-8.3946856%20-4.34922034%200%200%20Z%20'%20fill='%23FFFFFF'%20transform='translate(477.0625,489.1875)'/%3e%3cpath%20d='M0%200%20C2.71975521%200.35943901%203.84341638%200.83999752%205.7890625%202.828125%20C6.39492188%203.62734375%207.00078125%204.4265625%207.625%205.25%20C8.3159375%206.14847656%209.006875%207.04695313%209.71875%207.97265625%20C10.4715625%208.97167969%2011.224375%209.97070312%2012%2011%20C13.27334297%2012.66801941%2014.55020731%2014.33328608%2015.828125%2015.99780273%20C16.68920631%2017.1197048%2017.54859726%2018.24290639%2018.40625%2019.36743164%20C20.72359821%2022.39401514%2023.10162467%2025.33084868%2025.625%2028.1875%20C28%2031%2028%2031%2028%2033%20C24.04%2033%2020.08%2033%2016%2033%20C16%2036.96%2016%2040.92%2016%2045%20C15.01%2044.505%2015.01%2044.505%2014%2044%20C13.5859375%2041.27734375%2013.5859375%2041.27734375%2013.375%2037.9375%20C13.30023437%2036.83277344%2013.22546875%2035.72804688%2013.1484375%2034.58984375%20C13.09945312%2033.73519531%2013.05046875%2032.88054687%2013%2032%20C14.134375%2031.54625%2015.26875%2031.0925%2016.4375%2030.625%20C20.04721692%2029.42904194%2020.04721692%2029.42904194%2021%2027%20C20.34%2027%2019.68%2027%2019%2027%20C18.608125%2025.9275%2018.21625%2024.855%2017.8125%2023.75%20C16.27259896%2020.08533167%2014.21849461%2018.3486312%2011%2016%20C11%2015.34%2011%2014.68%2011%2014%20C10.34%2014%209.68%2014%209%2014%20C7.4921875%2012.25%207.4921875%2012.25%205.875%2010%20C5.33617187%209.2575%204.79734375%208.515%204.2421875%207.75%20C3.83226562%207.1725%203.42234375%206.595%203%206%20C-3.93710167%209.15322803%20-9.63269943%2014.06474733%20-12.375%2021.25%20C-12.63023437%2022.05953125%20-12.88546875%2022.8690625%20-13.1484375%2023.703125%20C-14.07536523%2026.20327869%20-15.31553255%2027.94852568%20-17%2030%20C-15.02%2030.33%20-13.04%2030.66%20-11%2031%20C-9.51119807%2035.4664058%20-9.31090749%2039.30056546%20-11.09765625%2043.70703125%20C-13%2046%20-13%2046%20-16.13671875%2046.48828125%20C-19.42447917%2046.32552083%20-22.71223958%2046.16276042%20-26%2046%20C-26%2052.27%20-26%2058.54%20-26%2065%20C-24.1025%2064.95875%20-22.205%2064.9175%20-20.25%2064.875%20C-16.10895658%2064.78497732%20-13.61590012%2065.02831107%20-10%2067%20C-9.98786972%2067.91628929%20-9.98786972%2067.91628929%20-9.97549438%2068.85108948%20C-9.88922875%2075.22686062%20-9.78971604%2081.60232871%20-9.68261719%2087.9777832%20C-9.644408%2090.35500995%20-9.60954125%2092.73229292%20-9.578125%2095.10961914%20C-9.53229961%2098.53291881%20-9.47433332%20101.95583411%20-9.4140625%20105.37890625%20C-9.40251129%20106.43646622%20-9.39096008%20107.49402618%20-9.37905884%20108.58363342%20C-9.26966133%20114.09218328%20-8.82932532%20118.79123684%20-7%20124%20C-6.34%20124%20-5.68%20124%20-5%20124%20C-4.9071875%20124.928125%20-4.9071875%20124.928125%20-4.8125%20125.875%20C-4.19124685%20128.2501999%20-4.19124685%20128.2501999%20-1.625%20129.0625%20C-0.75875%20129.371875%200.1075%20129.68125%201%20130%20C2.6875%20131.5625%202.6875%20131.5625%204%20133%20C4.66%20133.33%205.32%20133.66%206%20134%20C6.625%20136.0625%206.625%20136.0625%207%20138%20C0.64042919%20136.72808584%20-3.00409013%20132.83266023%20-7%20128%20C-12.40978943%20119.7580267%20-13.30059906%20110.99356957%20-13.1953125%20101.375%20C-13.1924826%20100.38749756%20-13.18965271%2099.39999512%20-13.18673706%2098.38256836%20C-13.1756182%2095.25491785%20-13.15052916%2092.12756272%20-13.125%2089%20C-13.11495948%2086.86849374%20-13.10583551%2084.73698296%20-13.09765625%2082.60546875%20C-13.07570607%2077.4035335%20-13.04123391%2072.20181669%20-13%2067%20C-17.95%2067%20-22.9%2067%20-28%2067%20C-28%2059.74%20-28%2052.48%20-28%2045%20C-25.11584117%2043.55792059%20-22.58278472%2043.90605113%20-19.375%2043.9375%20C-18.18648437%2043.94652344%20-16.99796875%2043.95554687%20-15.7734375%2043.96484375%20C-14.85820313%2043.97644531%20-13.94296875%2043.98804688%20-13%2044%20C-13%2040.37%20-13%2036.74%20-13%2033%20C-16.63%2033%20-20.26%2033%20-24%2033%20C-22.47026072%2029.1756518%20-21.7364866%2027.36138218%20-19.27734375%2024.43359375%20C-18.74262451%2023.78841797%20-18.20790527%2023.14324219%20-17.65698242%2022.47851562%20C-16.80583862%2021.46821289%20-16.80583862%2021.46821289%20-15.9375%2020.4375%20C-10.41141017%2013.76832013%20-5.12012996%206.98560367%200%200%20Z%20'%20fill='%23C7FF57'%20transform='translate(660,423)'/%3e%3cpath%20d='M0%200%20C0.68078561%2010.15126993%20-6.26162995%2018.50517827%20-12.625%2025.8125%20C-13.10155029%2026.35165039%20-13.57810059%2026.89080078%20-14.0690918%2027.44628906%20C-17.57519453%2031.41656971%20-20.32199043%2035.44738374%20-23%2040%20C-23.33%2040%20-23.66%2040%20-24%2040%20C-24%2027.13%20-24%2014.26%20-24%201%20C-20.225625%200.835%20-16.45125%200.67%20-12.5625%200.5%20C-11.37084229%200.44779297%20-10.17918457%200.39558594%20-8.95141602%200.34179688%20C-7.55427368%200.28088867%20-7.55427368%200.28088867%20-6.12890625%200.21875%20C-5.17056885%200.17685547%20-4.21223145%200.13496094%20-3.22485352%200.09179688%20C-1%200%20-1%200%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(369,467)'/%3e%3cpath%20d='M0%200%20C2.00720923%200.28674418%204.0085944%200.61866701%206%201%20C6.495%202.485%206.495%202.485%207%204%20C7.66%204%208.32%204%209%204%20C9.495%205.98%209.495%205.98%2010%208%20C10.66%208%2011.32%208%2012%208%20C12.474375%208.639375%2012.94875%209.27875%2013.4375%209.9375%20C14.9091365%2012.28372963%2014.9091365%2012.28372963%2018%2013%20C18.495%2015.97%2018.495%2015.97%2019%2019%20C19.66%2019%2020.32%2019%2021%2019%20C22.0625%2020.8125%2022.0625%2020.8125%2023%2023%20C22.505%2024.485%2022.505%2024.485%2022%2026%20C21.3709375%2025.17757813%2020.741875%2024.35515625%2020.09375%2023.5078125%20C17.8531051%2020.58200082%2015.60149285%2017.6647905%2013.34716797%2014.74951172%20C12.10990021%2013.14272289%2010.88443769%2011.52686179%209.66015625%209.91015625%20C8.96792969%209.01167969%208.27570312%208.11320312%207.5625%207.1875%20C6.63630859%205.97126953%206.63630859%205.97126953%205.69140625%204.73046875%20C5.13324219%204.15941406%204.57507813%203.58835937%204%203%20C3.01%203%202.02%203%201%203%20C-1.1667738%205.33134682%20-1.1667738%205.33134682%20-3.375%208.4375%20C-4.25611385%209.62008724%20-5.13764692%2010.80236221%20-6.01953125%2011.984375%20C-6.49342285%2012.62568359%20-6.96731445%2013.26699219%20-7.45556641%2013.92773438%20C-9.12007314%2016.16110984%20-10.81214938%2018.37132519%20-12.51171875%2020.578125%20C-13.10098145%2021.34326416%20-13.69024414%2022.10840332%20-14.29736328%2022.89672852%20C-15.46363033%2024.41029473%20-16.62997013%2025.92380488%20-17.79638672%2027.43725586%20C-18.32893066%2028.13214111%20-18.86147461%2028.82702637%20-19.41015625%2029.54296875%20C-19.88590088%2030.16196045%20-20.36164551%2030.78095215%20-20.85180664%2031.41870117%20C-22.07331217%2033.0102519%20-22.07331217%2033.0102519%20-23%2035%20C-19.37%2035%20-15.74%2035%20-12%2035%20C-12%2038.63%20-12%2042.26%20-12%2046%20C-16.95%2046.33%20-21.9%2046.66%20-27%2047%20C-27%2054.26%20-27%2061.52%20-27%2069%20C-22.05%2069%20-17.1%2069%20-12%2069%20C-11.98541748%2070.31081543%20-11.97083496%2071.62163086%20-11.95581055%2072.97216797%20C-11.89747545%2077.87396394%20-11.82024648%2082.77531735%20-11.73754883%2087.67675781%20C-11.70446426%2089.7909421%20-11.67638204%2091.90521123%20-11.65356445%2094.01953125%20C-11.61971392%2097.07328159%20-11.56738455%20100.12626594%20-11.51171875%20103.1796875%20C-11.50532883%20104.11239471%20-11.4989389%20105.04510193%20-11.49235535%20106.006073%20C-11.26437364%20116.37399184%20-8.63724873%20126.05256773%20-1.3671875%20133.72265625%20C6.92807918%20141.29255208%2016.09690889%20142.40300166%2027.015625%20142.2109375%20C37.64372477%20141.64827339%2045.9753421%20138.49041118%2055%20133%20C55.66%20132.67%2056.32%20132.34%2057%20132%20C56.17631135%20135.60363786%2054.73164913%20137.5598772%2051.8125%20139.6875%20C43.36448472%20144.51927852%2032.57412865%20144.15231016%2023.0625%20144.25%20C22.03491577%20144.2641394%2022.03491577%20144.2641394%2020.98657227%20144.27856445%20C16.010662%20144.24659412%2011.7517971%20143.33793617%207%20142%20C6.67%20142.66%206.34%20143.32%206%20144%20C6%20143.34%206%20142.68%206%20142%20C5.2575%20141.731875%204.515%20141.46375%203.75%20141.1875%20C1.10938051%20140.04723249%20-0.85552844%20138.90619694%20-3%20137%20C-3%20136.34%20-3%20135.68%20-3%20135%20C-4.32%20134.67%20-5.64%20134.34%20-7%20134%20C-7.495%20132.02%20-7.495%20132.02%20-8%20130%20C-8.66%20130%20-9.32%20130%20-10%20130%20C-13.3917714%20117.17092103%20-13.35377076%20104.75435973%20-13.1875%2091.5625%20C-13.17241597%2089.4629003%20-13.15873419%2087.36329003%20-13.14648438%2085.26367188%20C-13.1137965%2080.17551518%20-13.0622224%2075.0878777%20-13%2070%20C-17.95%2070%20-22.9%2070%20-28%2070%20C-29.81226714%2066.37546571%20-29.18470181%2062.11521368%20-29.1875%2058.125%20C-29.19974609%2057.21363281%20-29.21199219%2056.30226563%20-29.22460938%2055.36328125%20C-29.22654297%2054.48285156%20-29.22847656%2053.60242188%20-29.23046875%2052.6953125%20C-29.23457764%2051.89109863%20-29.23868652%2051.08688477%20-29.24291992%2050.25830078%20C-28.96966064%2047.71795063%20-28.41516433%2046.12497675%20-27%2044%20C-24.1796875%2043.390625%20-24.1796875%2043.390625%20-20.875%2043.25%20C-19.77929688%2043.19328125%20-18.68359375%2043.1365625%20-17.5546875%2043.078125%20C-16.71164062%2043.05234375%20-15.86859375%2043.0265625%20-15%2043%20C-14.505%2040.03%20-14.505%2040.03%20-14%2037%20C-14.721875%2037.20625%20-15.44375%2037.4125%20-16.1875%2037.625%20C-19.54297056%2038.07239607%20-21.11604375%2037.76241771%20-24%2036%20C-24.875%2033.7421875%20-24.875%2033.7421875%20-25%2031%20C-23.453125%2028.359375%20-23.453125%2028.359375%20-21.25%2025.75%20C-20.53328125%2024.87859375%20-19.8165625%2024.0071875%20-19.078125%2023.109375%20C-17%2021%20-17%2021%20-14%2020%20C-14%2019.34%20-14%2018.68%20-14%2018%20C-13.34%2018%20-12.68%2018%20-12%2018%20C-12%2017.01%20-12%2016.02%20-12%2015%20C-11.34%2015%20-10.68%2015%20-10%2015%20C-9.938125%2014.46375%20-9.87625%2013.9275%20-9.8125%2013.375%20C-8.59964736%209.82973843%20-6.55389074%207.7407608%20-4%205%20C-3.34%205%20-2.68%205%20-2%205%20C-1.855625%204.360625%20-1.71125%203.72125%20-1.5625%203.0625%20C-1%201%20-1%201%200%200%20Z%20'%20fill='%23F2FFD9'%20transform='translate(659,421)'/%3e%3cpath%20d='M0%200%20C7.92%200%2015.84%200%2024%200%20C24%207.26%2024%2014.52%2024%2022%20C16.08%2022%208.16%2022%200%2022%20C0.05110565%2028.01513491%200.11411805%2034.02770699%200.20751953%2040.04199219%20C0.23569066%2042.08650395%200.25692435%2044.13112384%200.27099609%2046.17578125%20C0.29247887%2049.12035322%200.3391569%2052.06363041%200.390625%2055.0078125%20C0.39185364%2055.9174173%200.39308228%2056.82702209%200.39434814%2057.76419067%20C0.52424586%2063.4323883%201.24752639%2066.66904733%205%2071%20C7.15616421%2071.84067552%207.15616421%2071.84067552%209.4375%2071.875%20C13.59953049%2072.52786753%2013.59953049%2072.52786753%2015.484375%2074.75%20C16.28446347%2076.16314328%2017.06211601%2077.58923329%2017.81640625%2079.02734375%20C20.15058208%2082.91763679%2023.83300287%2084.61100096%2028%2086%20C29.72795352%2086.06802967%2031.45835365%2086.08495645%2033.1875%2086.0625%20C34.08855469%2086.05347656%2034.98960937%2086.04445313%2035.91796875%2086.03515625%20C36.60503906%2086.02355469%2037.29210937%2086.01195312%2038%2086%20C28.4198669%2094.94145756%2015.04998512%2096.35397366%202.5546875%2096.203125%20C-1.58388881%2095.96663493%20-5.07173198%2095.28269976%20-9%2094%20C-6.13129876%2093.17066175%20-3.67877335%2092.90857069%20-0.69921875%2093.0078125%20C0.51991211%2093.03294922%200.51991211%2093.03294922%201.76367188%2093.05859375%20C3.45140273%2093.10256528%205.13894568%2093.15453885%206.82617188%2093.21484375%20C12.36551383%2093.31102806%2016.06333211%2092.5449489%2021%2090%20C21%2089.01%2021%2088.02%2021%2087%20C19.5459375%2086.0409375%2019.5459375%2086.0409375%2018.0625%2085.0625%20C15%2083%2015%2083%2014.125%2080.75%20C14.08375%2080.1725%2014.0425%2079.595%2014%2079%20C13.34%2079%2012.68%2079%2012%2079%20C12%2078.34%2012%2077.68%2012%2077%20C11.278125%2076.896875%2010.55625%2076.79375%209.8125%2076.6875%20C5.46614904%2075.62505865%202.79905402%2074.21337832%200.3125%2070.4375%20C-0.120625%2069.633125%20-0.55375%2068.82875%20-1%2068%20C-1.66%2067.34%20-2.32%2066.68%20-3%2066%20C-4.56682324%2055.65896659%20-4.02187183%2044.9749078%20-3.6875%2034.5625%20C-3.65293701%2033.35924072%20-3.61837402%2032.15598145%20-3.58276367%2030.91625977%20C-3.53869385%2029.79018311%20-3.49462402%2028.66410645%20-3.44921875%2027.50390625%20C-3.41143311%2026.49142822%20-3.37364746%2025.4789502%20-3.3347168%2024.43579102%20C-3%2022%20-3%2022%20-1%2020%20C1.15478516%2019.68115234%201.15478516%2019.68115234%203.7890625%2019.5859375%20C5.20058594%2019.52792969%205.20058594%2019.52792969%206.640625%2019.46875%20C7.62546875%2019.4378125%208.6103125%2019.406875%209.625%2019.375%20C11.11386719%2019.31699219%2011.11386719%2019.31699219%2012.6328125%2019.2578125%20C15.08835385%2019.1633686%2017.5438841%2019.07780125%2020%2019%20C19.98839844%2018.18015625%2019.97679687%2017.3603125%2019.96484375%2016.515625%20C19.95582031%2015.43796875%2019.94679688%2014.3603125%2019.9375%2013.25%20C19.92589844%2012.18265625%2019.91429687%2011.1153125%2019.90234375%2010.015625%20C19.98489913%207.46631499%2020.25382442%205.42066409%2021%203%20C20.01966797%203.29197266%2020.01966797%203.29197266%2019.01953125%203.58984375%20C15.00486508%204.13517357%2011.62136988%203.38864783%207.6875%202.5625%20C6.94693359%202.41490234%206.20636719%202.26730469%205.44335938%202.11523438%20C3.62718357%201.75199921%201.81333589%201.37715682%200%201%20C0%200.67%200%200.34%200%200%20Z%20'%20fill='%239BE600'%20transform='translate(676,468)'/%3e%3cpath%20d='M0%200%20C3%203%203%203%203.2578125%205.3046875%20C3.21398437%206.15289062%203.17015625%207.00109375%203.125%207.875%20C3.00502835%2011.46371724%203.2754511%2014.48076247%204%2018%20C3.60976365%2021.31700894%202.61164065%2022.93522445%200%2025%20C-2.36010742%2025.34057617%20-2.36010742%2025.34057617%20-5.10546875%2025.29296875%20C-6.08837891%2025.28330078%20-7.07128906%2025.27363281%20-8.08398438%2025.26367188%20C-9.10814453%2025.23853516%20-10.13230469%2025.21339844%20-11.1875%2025.1875%20C-12.22326172%2025.17396484%20-13.25902344%2025.16042969%20-14.32617188%2025.14648438%20C-16.88463699%2025.11111389%20-19.4420578%2025.06175544%20-22%2025%20C-21.93433838%2025.60046143%20-21.86867676%2026.20092285%20-21.80102539%2026.81958008%20C-20.93290834%2035.43139683%20-20.67409758%2044.04154841%20-20.4375%2052.6875%20C-20.39418922%2054.17904546%20-20.35057152%2055.67058205%20-20.30664062%2057.16210938%20C-20.20089527%2060.77464429%20-20.09928034%2064.38728094%20-20%2068%20C-19.05898438%2068.29648437%20-18.11796875%2068.59296875%20-17.1484375%2068.8984375%20C-14.2055568%2069.92808062%20-12.3554191%2071.00695307%20-10%2073%20C-14.03645882%2073.31658501%20-16.32333195%2073.4210379%20-19.8125%2071.25%20C-23.0830854%2067.88596931%20-24.25459399%2065.28097814%20-24.22705078%2060.59863281%20C-24.22689972%2059.7380426%20-24.22674866%2058.87745239%20-24.22659302%2057.99078369%20C-24.21627045%2057.07085632%20-24.20594788%2056.15092896%20-24.1953125%2055.203125%20C-24.1924826%2054.25435486%20-24.18965271%2053.30558472%20-24.18673706%2052.32806396%20C-24.17555448%2049.30191361%20-24.1504533%2046.2760607%20-24.125%2043.25%20C-24.11496772%2041.19661886%20-24.1058423%2039.14323308%20-24.09765625%2037.08984375%20C-24.07732418%2032.05968942%20-24.03817166%2027.03017714%20-24%2022%20C-16.08%2022%20-8.16%2022%200%2022%20C0%2014.74%200%207.48%200%200%20Z%20'%20fill='%23E8FFC2'%20transform='translate(700,468)'/%3e%3cpath%20d='M0%200%20C4.62%200%209.24%200%2014%200%20C14.01458252%201.31081543%2014.02916504%202.62163086%2014.04418945%203.97216797%20C14.10252455%208.87396394%2014.17975352%2013.77531735%2014.26245117%2018.67675781%20C14.29553574%2020.7909421%2014.32361796%2022.90521123%2014.34643555%2025.01953125%20C14.38028608%2028.07328159%2014.43261545%2031.12626594%2014.48828125%2034.1796875%20C14.49467117%2035.11239471%2014.5010611%2036.04510193%2014.50764465%2037.006073%20C14.73562636%2047.37399184%2017.36275127%2057.05256773%2024.6328125%2064.72265625%20C32.92807918%2072.29255208%2042.09690889%2073.40300166%2053.015625%2073.2109375%20C63.64372477%2072.64827339%2071.9753421%2069.49041118%2081%2064%20C81.66%2063.67%2082.32%2063.34%2083%2063%20C82.17631135%2066.60363786%2080.73164913%2068.5598772%2077.8125%2070.6875%20C69.36448472%2075.51927852%2058.57412865%2075.15231016%2049.0625%2075.25%20C48.03491577%2075.2641394%2048.03491577%2075.2641394%2046.98657227%2075.27856445%20C42.010662%2075.24659412%2037.7517971%2074.33793617%2033%2073%20C32.67%2073.66%2032.34%2074.32%2032%2075%20C32%2074.34%2032%2073.68%2032%2073%20C31.2575%2072.731875%2030.515%2072.46375%2029.75%2072.1875%20C27.10938051%2071.04723249%2025.14447156%2069.90619694%2023%2068%20C23%2067.34%2023%2066.68%2023%2066%20C21.68%2065.67%2020.36%2065.34%2019%2065%20C18.67%2063.68%2018.34%2062.36%2018%2061%20C17.34%2061%2016.68%2061%2016%2061%20C12.6082286%2048.17092103%2012.64622924%2035.75435973%2012.8125%2022.5625%20C12.82758403%2020.4629003%2012.84126581%2018.36329003%2012.85351562%2016.26367188%20C12.8862035%2011.17551518%2012.9377776%206.0878777%2013%201%20C8.71%201%204.42%201%200%201%20C0%200.67%200%200.34%200%200%20Z%20'%20fill='%23E8FFC2'%20transform='translate(633,490)'/%3e%3cpath%20d='M0%200%20C0.81434143%202.85160391%201.11881242%205.36626131%201.09765625%208.328125%20C1.09443359%209.12734375%201.09121094%209.9265625%201.08789062%2010.75%20C1.07951172%2011.575%201.07113281%2012.4%201.0625%2013.25%20C1.05798828%2014.09046875%201.05347656%2014.9309375%201.04882812%2015.796875%20C1.03707961%2017.86461401%201.01914522%2019.93231624%201%2022%20C1.99%2022%202.98%2022%204%2022%20C4%2028.27%204%2034.54%204%2041%20C-5.24%2041%20-14.48%2041%20-24%2041%20C-24%2040.67%20-24%2040.34%20-24%2040%20C-22.35%2040%20-20.7%2040%20-19%2040%20C-19%2028.12%20-19%2016.24%20-19%204%20C-18.34%203.67%20-17.68%203.34%20-17%203%20C-17%2015.21%20-17%2027.42%20-17%2040%20C-11.72%2040%20-6.44%2040%20-1%2040%20C-1.00523682%2038.82381104%20-1.01047363%2037.64762207%20-1.01586914%2036.43579102%20C-1.03391663%2032.08797969%20-1.04543108%2027.7401717%20-1.05493164%2023.39233398%20C-1.05997244%2021.5075627%20-1.06680498%2019.62279535%20-1.07543945%2017.73803711%20C-1.08751617%2015.03498364%20-1.09323068%2012.33198169%20-1.09765625%209.62890625%20C-1.10281754%208.78099014%20-1.10797882%207.93307404%20-1.11329651%207.0594635%20C-1.11349195%205.03928932%20-1.06206211%203.01922066%20-1%201%20C-0.67%200.67%20-0.34%200.34%200%200%20Z%20'%20fill='%230D0026'%20transform='translate(369,521)'/%3e%3cpath%20d='M0%200%20C7.92%200%2015.84%200%2024%200%20C24%207.26%2024%2014.52%2024%2022%20C11.625%2022.495%2011.625%2022.495%20-1%2023%20C-1.33%2036.2%20-1.66%2049.4%20-2%2063%20C-2.33%2063%20-2.66%2063%20-3%2063%20C-4.13448821%2053.55756734%20-4.00188302%2044.23836711%20-3.6875%2034.75%20C-3.65277588%2033.53530029%20-3.61805176%2032.32060059%20-3.58227539%2031.0690918%20C-3.5383667%2029.92738525%20-3.49445801%2028.78567871%20-3.44921875%2027.609375%20C-3.41143311%2026.57780273%20-3.37364746%2025.54623047%20-3.3347168%2024.48339844%20C-3%2022%20-3%2022%20-1%2020%20C1.15478516%2019.68115234%201.15478516%2019.68115234%203.7890625%2019.5859375%20C5.20058594%2019.52792969%205.20058594%2019.52792969%206.640625%2019.46875%20C7.62546875%2019.4378125%208.6103125%2019.406875%209.625%2019.375%20C11.11386719%2019.31699219%2011.11386719%2019.31699219%2012.6328125%2019.2578125%20C15.08835385%2019.1633686%2017.5438841%2019.07780125%2020%2019%20C19.98839844%2018.18015625%2019.97679687%2017.3603125%2019.96484375%2016.515625%20C19.95582031%2015.43796875%2019.94679688%2014.3603125%2019.9375%2013.25%20C19.92589844%2012.18265625%2019.91429687%2011.1153125%2019.90234375%2010.015625%20C19.98489913%207.46631499%2020.25382442%205.42066409%2021%203%20C20.01966797%203.29197266%2020.01966797%203.29197266%2019.01953125%203.58984375%20C15.00486508%204.13517357%2011.62136988%203.38864783%207.6875%202.5625%20C6.94693359%202.41490234%206.20636719%202.26730469%205.44335938%202.11523438%20C3.62718357%201.75199921%201.81333589%201.37715682%200%201%20C0%200.67%200%200.34%200%200%20Z%20'%20fill='%23A7EA18'%20transform='translate(676,468)'/%3e%3cpath%20d='M0%200%20C1.98%200%203.96%200%206%200%20C6.96345149%205.39532832%206.9764649%2010.29708307%206.5625%2015.75%20C6.15134315%2021.36947121%206.15134315%2021.36947121%206%2027%20C4.94140625%2029.04296875%204.94140625%2029.04296875%203.5625%2031.1875%20C2.88380859%2032.26064453%202.88380859%2032.26064453%202.19140625%2033.35546875%20C1.79824219%2033.89816406%201.40507812%2034.44085938%201%2035%20C0.67%2035%200.34%2035%200%2035%20C0%2023.45%200%2011.9%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(345,472)'/%3e%3cpath%20d='M0%200%20C0.33%200%200.66%200%201%200%20C1%2025.74%201%2051.48%201%2078%20C0.01%2077.67%20-0.98%2077.34%20-2%2077%20C-1.83734146%2076.29841263%20-1.67468292%2075.59682526%20-1.50709534%2074.87397766%20C-0.97453003%2071.8556482%20-0.87991379%2069.08025882%20-0.88647461%2066.01635742%20C-0.88655014%2064.83551071%20-0.88662567%2063.654664%20-0.88670349%2062.43803406%20C-0.89186478%2061.17328751%20-0.89702606%2059.90854095%20-0.90234375%2058.60546875%20C-0.9037587%2057.30297684%20-0.90517365%2056.00048492%20-0.90663147%2054.65852356%20C-0.91043645%2051.20783546%20-0.92024936%2047.75718992%20-0.93133545%2044.30651855%20C-0.94159311%2040.78052343%20-0.9461384%2037.25452139%20-0.95117188%2033.72851562%20C-0.96187356%2026.81899301%20-0.97892557%2019.90949855%20-1%2013%20C-1.99%2012.67%20-2.98%2012.34%20-4%2012%20C-3.649375%2011.236875%20-3.29875%2010.47375%20-2.9375%209.6875%20C-1.67639116%206.95240621%20-1.67639116%206.95240621%20-3%204%20C-1.625%201.8125%20-1.625%201.8125%200%200%20Z%20'%20fill='%230D0026'%20transform='translate(929,483)'/%3e%3cpath%20d='M0%200%20C0.66%200.33%201.32%200.66%202%201%20C3.78043103%208.12172411%203%2015.65909482%203%2023%20C-16.47%2023%20-35.94%2023%20-56%2023%20C-56%2022.67%20-56%2022.34%20-56%2022%20C-28.775%2021.505%20-28.775%2021.505%20-1%2021%20C-1.66%2018.03%20-2.32%2015.06%20-3%2012%20C-2.70676058%207.60140869%20-1.82135506%204.00698114%200%200%20Z%20'%20fill='%2312003B'%20transform='translate(811,500)'/%3e%3cpath%20d='M0%200%20C10.89%200%2021.78%200%2033%200%20C32%202%2032%202%2028.9375%203.125%20C27.968125%203.41375%2026.99875%203.7025%2026%204%20C26%204.33%2026%204.66%2026%205%20C22.9166866%205.02911321%2019.83340875%205.04683682%2016.75%205.0625%20C15.87730469%205.07087891%2015.00460938%205.07925781%2014.10546875%205.08789062%20C13.26113281%205.09111328%2012.41679687%205.09433594%2011.546875%205.09765625%20C10.38430176%205.10551147%2010.38430176%205.10551147%209.19824219%205.11352539%20C6.99642569%204.99981541%205.11528675%204.60281778%203%204%20C2.2575%203.814375%201.515%203.62875%200.75%203.4375%20C0.1725%203.293125%20-0.405%203.14875%20-1%203%20C-0.67%202.01%20-0.34%201.02%200%200%20Z%20'%20fill='%230D0026'%20transform='translate(127,456)'/%3e%3cpath%20d='M0%200%20C0.33%200%200.66%200%201%200%20C1.00808685%200.61085953%201.01617371%201.22171906%201.02450562%201.85108948%20C1.11077125%208.22686062%201.21028396%2014.60232871%201.31738281%2020.9777832%20C1.355592%2023.35500995%201.39045875%2025.73229292%201.421875%2028.10961914%20C1.46770039%2031.53291881%201.52566668%2034.95583411%201.5859375%2038.37890625%20C1.60326431%2039.9652462%201.60326431%2039.9652462%201.62094116%2041.58363342%20C1.73033867%2047.09218328%202.17067468%2051.79123684%204%2057%20C4.66%2057%205.32%2057%206%2057%20C6.061875%2057.61875%206.12375%2058.2375%206.1875%2058.875%20C6.80875315%2061.2501999%206.80875315%2061.2501999%209.375%2062.0625%20C10.24125%2062.371875%2011.1075%2062.68125%2012%2063%20C13.6875%2064.5625%2013.6875%2064.5625%2015%2066%20C15.66%2066.33%2016.32%2066.66%2017%2067%20C17.625%2069.0625%2017.625%2069.0625%2018%2071%20C11.64674292%2069.72934858%207.98595005%2065.83583279%204%2061%20C-0.20320088%2054.43626224%20-1.13694835%2048.50999461%20-1.09375%2040.75%20C-1.09016479%2040.05398682%20-1.08657959%2039.35797363%20-1.08288574%2038.64086914%20C-1.02339219%2030.75687156%20-0.77025329%2022.87906229%20-0.5%2015%20C-0.4515835%2013.53125787%20-0.40340556%2012.06250786%20-0.35546875%2010.59375%20C-0.23971031%207.06240545%20-0.12078988%203.53117647%200%200%20Z%20'%20fill='%23A7EA18'%20transform='translate(649,490)'/%3e%3cpath%20d='M0%200%20C6.93%200%2013.86%200%2021%200%20C21%200.66%2021%201.32%2021%202%20C23.475%202.99%2023.475%202.99%2026%204%20C26%204.33%2026%204.66%2026%205%20C14.78%205%203.56%205%20-8%205%20C-4%203%20-4%203%20-1%202%20C-0.67%201.34%20-0.34%200.68%200%200%20Z%20'%20fill='%230D0026'%20transform='translate(132,539)'/%3e%3cpath%20d='M0%200%20C0.33%200%200.66%200%201%200%20C1.0093457%201.27117676%201.01869141%202.54235352%201.02832031%203.85205078%20C1.0682865%208.58238362%201.13406414%2013.31207062%201.20751953%2018.04199219%20C1.23569066%2020.08650395%201.25692435%2022.13112384%201.27099609%2024.17578125%20C1.29247887%2027.12035322%201.3391569%2030.06363041%201.390625%2033.0078125%20C1.39246796%2034.3722197%201.39246796%2034.3722197%201.39434814%2035.76419067%20C1.52438447%2041.4384366%202.24925859%2044.66233702%206%2049%20C8.30476633%2050.12133721%208.30476633%2050.12133721%2010.75%2050.375%20C11.54921875%2050.50648438%2012.3484375%2050.63796875%2013.171875%2050.7734375%20C13.77515625%2050.84820313%2014.3784375%2050.92296875%2015%2051%20C15%2051.33%2015%2051.66%2015%2052%20C13.22992286%2052.08114106%2011.45877902%2052.13925505%209.6875%2052.1875%20C8.70136719%2052.22230469%207.71523438%2052.25710938%206.69921875%2052.29296875%20C4%2052%204%2052%202.20703125%2050.67578125%20C1%2049%201%2049%200%2046%20C-0.66%2045.34%20-1.32%2044.68%20-2%2044%20C-2.20927429%2042.1337738%20-2.20927429%2042.1337738%20-2.15112305%2039.84155273%20C-2.13417892%2038.98403915%20-2.1172348%2038.12652557%20-2.09977722%2037.24302673%20C-2.07071793%2036.31591385%20-2.04165863%2035.38880096%20-2.01171875%2034.43359375%20C-1.98906448%2033.48436539%20-1.96641022%2032.53513702%20-1.94306946%2031.55714417%20C-1.8930653%2029.54879358%20-1.83809315%2027.54056154%20-1.77856445%2025.5324707%20C-1.68777846%2022.4469639%20-1.61311485%2019.36138491%20-1.54101562%2016.27539062%20C-1.49053325%2014.32810014%20-1.43913222%2012.38083321%20-1.38671875%2010.43359375%20C-1.36373215%209.50445663%20-1.34074554%208.57531952%20-1.31706238%207.61802673%20C-1.29066177%206.76366531%20-1.26426117%205.90930389%20-1.23706055%205.02905273%20C-1.21548386%204.27341537%20-1.19390717%203.51777802%20-1.17167664%202.73924255%20C-1%201%20-1%201%200%200%20Z%20'%20fill='%23C7FF57'%20transform='translate(675,490)'/%3e%3cpath%20d='M0%200%20C0.33%200%200.66%200%201%200%20C1%2014.85%201%2029.7%201%2045%20C-1%2043%20-1%2043%20-1.125%2040.72265625%20C-1.04178877%2038.95181718%20-0.95845579%2037.18098382%20-0.875%2035.41015625%20C-0.80800597%2032.73455911%20-0.80800597%2032.73455911%20-3%2030%20C-2.505%2028.515%20-2.505%2028.515%20-2%2027%20C-2.31050297%2025.32892945%20-2.64717051%2023.66264856%20-3%2022%20C-3.09035285%2020.00160753%20-3.13010313%2018.00042747%20-3.125%2016%20C-3.12757813%2014.989375%20-3.13015625%2013.97875%20-3.1328125%2012.9375%20C-3.00826727%2010.18285256%20-2.62110865%207.68161197%20-2%205%20C-1.34%205%20-0.68%205%200%205%20C0%203.35%200%201.7%200%200%20Z%20'%20fill='%23FFFFFF'%20transform='translate(901,431)'/%3e%3cpath%20d='M0%200%20C2.57069617%203.85604425%202.35065056%207.12746343%202.4140625%2011.60546875%20C2.43342865%2012.44467361%202.4527948%2013.28387848%202.4727478%2014.14851379%20C2.53251213%2016.82807258%202.57891612%2019.5076744%202.625%2022.1875%20C2.6631827%2024.00457599%202.70223461%2025.82163394%202.7421875%2027.63867188%20C2.83821103%2032.09230132%202.92225359%2036.54601551%203%2041%20C3.94101562%2041.29648437%204.88203125%2041.59296875%205.8515625%2041.8984375%20C8.7944432%2042.92808062%2010.6445809%2044.00695307%2013%2046%20C8.86001651%2046.32470459%206.66000999%2046.4304413%203.125%2044.125%20C0.12481839%2041.12481839%200.01401021%2040.48116775%20-0.11352539%2036.10107422%20C-0.11336671%2034.418937%20-0.10769737%2032.73679475%20-0.09765625%2031.0546875%20C-0.0962413%2030.1696756%20-0.09482635%2029.2846637%20-0.09336853%2028.37283325%20C-0.0877614%2025.54018809%20-0.07520771%2022.70762136%20-0.0625%2019.875%20C-0.05748592%2017.95703239%20-0.05292285%2016.03906354%20-0.04882812%2014.12109375%20C-0.03778966%209.41403218%20-0.02052025%204.7070294%200%200%20Z%20'%20fill='%23F2FFD9'%20transform='translate(677,495)'/%3e%3cpath%20d='M0%200%20C0.82200425%206.24723226%20-2.07448606%2010.71317837%20-5%2016%20C-6.95100616%2014.37586398%20-7.92782782%2013.56206818%20-8.2578125%2010.9921875%20C-8.21398437%2010.29351562%20-8.17015625%209.59484375%20-8.125%208.875%20C-8.08375%207.59625%20-8.0425%206.3175%20-8%205%20C-8.98267859%203.79438816%20-8.98267859%203.79438816%20-10.84765625%203.90234375%20C-12.8984375%203.93489583%20-14.94921875%203.96744792%20-17%204%20C-17%203.01%20-17%202.02%20-17%201%20C-14.3541898%200.832959%20-11.70835369%200.66634934%20-9.0625%200.5%20C-8.30775391%200.45230469%20-7.55300781%200.40460938%20-6.77539062%200.35546875%20C-1.11328125%200%20-1.11328125%200%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(369,467)'/%3e%3cpath%20d='M0%200%20C4.29%200%208.58%200%2013%200%20C13.02505615%201.34747314%2013.0501123%202.69494629%2013.07592773%204.08325195%20C13.17000223%209.07602678%2013.27022294%2014.06866249%2013.37231445%2019.0612793%20C13.41566313%2021.2233556%2013.45733825%2023.38546613%2013.49731445%2025.54760742%20C13.55501844%2028.65293702%2013.61871272%2031.75809436%2013.68359375%2034.86328125%20C13.70030624%2035.83211746%2013.71701874%2036.80095367%2013.73423767%2037.79914856%20C13.75418289%2038.6998558%2013.77412811%2039.60056305%2013.79467773%2040.52856445%20C13.81022202%2041.32132278%2013.8257663%2042.11408112%2013.84178162%2042.93086243%20C13.93081226%2045.19739774%2013.93081226%2045.19739774%2015%2048%20C15.12781786%2050.67394964%2015.04391871%2053.32095857%2015%2056%20C14.67%2056%2014.34%2056%2014%2056%20C13.29066112%2053.54623548%2012.60781467%2051.08945724%2011.9375%2048.625%20C11.73833984%2047.94566406%2011.53917969%2047.26632812%2011.33398438%2046.56640625%20C10.04560625%2041.72933752%2010.02964032%2037.78697173%2010.67358398%2032.84228516%20C11.33901124%2027.04804123%2011.37950304%2021.20090331%2011.5625%2015.375%20C11.60568359%2014.08464844%2011.64886719%2012.79429687%2011.69335938%2011.46484375%20C11.79852148%208.30998067%2011.90066604%205.15505105%2012%202%20C11.25363281%202.17402344%2010.50726562%202.34804688%209.73828125%202.52734375%20C6.30488867%203.11998355%203.41085419%202.60191545%200%202%20C0%201.34%200%200.68%200%200%20Z%20'%20fill='%23F2FFD9'%20transform='translate(633,491)'/%3e%3cpath%20d='M0%200%20C7.26%200%2014.52%200%2022%200%20C21.34%200.66%2020.68%201.32%2020%202%20C20.33%202.66%2020.66%203.32%2021%204%20C14.73%204%208.46%204%202%204%20C2%206.64%202%209.28%202%2012%20C1.34%2012.66%200.68%2013.32%200%2014%20C0.01160156%2013.30132812%200.02320313%2012.60265625%200.03515625%2011.8828125%20C0.04417969%2010.97273438%200.05320313%2010.06265625%200.0625%209.125%20C0.07410156%208.22007812%200.08570313%207.31515625%200.09765625%206.3828125%20C0.16249257%203.9831415%200.16249257%203.9831415%20-1%202%20C-0.67%201.34%20-0.34%200.68%200%200%20Z%20'%20fill='%230D0026'%20transform='translate(230,468)'/%3e%3cpath%20d='M0%200%20C3.26587942%200.14550948%206.38789358%200.49324673%209.5625%201.3125%20C9.2325%202.3025%208.9025%203.2925%208.5625%204.3125%20C9.2225%204.6425%209.8825%204.9725%2010.5625%205.3125%20C9.5625%206.3125%209.5625%206.3125%206.87866211%206.42602539%20C5.71085205%206.42078857%204.54304199%206.41555176%203.33984375%206.41015625%20C2.07978516%206.40693359%200.81972656%206.40371094%20-0.47851562%206.40039062%20C-1.81901109%206.39203403%20-3.15950588%206.38356907%20-4.5%206.375%20C-5.84439942%206.3699866%20-7.1888006%206.36542342%20-8.53320312%206.36132812%20C-11.83467941%206.34949488%20-15.13606803%206.33300971%20-18.4375%206.3125%20C-15.4375%204.3125%20-15.4375%204.3125%20-12%204.4375%20C-8.38721028%204.72990718%20-8.38721028%204.72990718%20-6.5625%202.3125%20C-4.04895307%20-0.05319123%20-3.34014743%200.01650814%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(584.4375,465.6875)'/%3e%3cpath%20d='M0%200%20C1.32%200%202.64%200%204%200%20C4%200.66%204%201.32%204%202%20C4.73605469%201.855625%205.47210937%201.71125%206.23046875%201.5625%20C7.20628906%201.376875%208.18210937%201.19125%209.1875%201%20C10.15042969%200.814375%2011.11335937%200.62875%2012.10546875%200.4375%20C18.83937824%20-0.58031088%2018.83937824%20-0.58031088%2022%201%20C22.99%200.67%2023.98%200.34%2025%200%20C25.33%200.33%2025.66%200.66%2026%201%20C27.99964982%201.08758003%2030.0023611%201.10696576%2032.00390625%201.09765625%20C33.82631836%201.09282227%2033.82631836%201.09282227%2035.68554688%201.08789062%20C36.96494141%201.07951172%2038.24433594%201.07113281%2039.5625%201.0625%20C41.48739258%201.05573242%2041.48739258%201.05573242%2043.45117188%201.04882812%20C46.63416022%201.03699545%2049.81705762%201.02051068%2053%201%20C53.495%201.99%2053.495%201.99%2054%203%20C36.18%203%2018.36%203%200%203%20C0%202.01%200%201.02%200%200%20Z%20'%20fill='%230D0026'%20transform='translate(731,509)'/%3e%3cpath%20d='M0%200%20C3.3%200%206.6%200%2010%200%20C10%200.33%2010%200.66%2010%201%20C7.69%201.33%205.38%201.66%203%202%20C3%204.64%203%207.28%203%2010%20C3.66%209.67%204.32%209.34%205%209%20C6.44848582%208.91657841%207.90070869%208.89267139%209.3515625%208.90234375%20C10.20234375%208.90556641%2011.053125%208.90878906%2011.9296875%208.91210938%20C12.81914063%208.92048828%2013.70859375%208.92886719%2014.625%208.9375%20C15.5221875%208.94201172%2016.419375%208.94652344%2017.34375%208.95117188%20C19.56256648%208.96297409%2021.78125018%208.97943845%2024%209%20C24%209.99%2024%2010.98%2024%2012%20C16.08%2012%208.16%2012%200%2012%20C0%208.04%200%204.08%200%200%20Z%20'%20fill='%23E8FFC2'%20transform='translate(676,456)'/%3e%3cpath%20d='M0%200%20C0.33%200%200.66%200%201%200%20C1.02893932%203.62498334%201.04677792%207.24993713%201.0625%2010.875%20C1.07087891%2011.90753906%201.07925781%2012.94007813%201.08789062%2014.00390625%20C1.09111328%2014.99003906%201.09433594%2015.97617187%201.09765625%2016.9921875%20C1.10289307%2017.90339355%201.10812988%2018.81459961%201.11352539%2019.75341797%20C1%2022%201%2022%200%2024%20C-0.99%2023.67%20-1.98%2023.34%20-3%2023%20C-5.01862148%2017.75866703%20-4.98056566%2010.73616357%20-3.10546875%205.50390625%20C-2.15670432%203.62314001%20-1.08879621%201.80331872%200%200%20Z%20'%20fill='%230D0026'%20transform='translate(831,508)'/%3e%3cpath%20d='M0%200%20C1.98%200%203.96%200%206%200%20C5.67%200.99%205.34%201.98%205%203%20C5.99%203.33%206.98%203.66%208%204%20C7.34%204%206.68%204%206%204%20C6.66%205.65%207.32%207.3%208%209%20C9.65%208.67%2011.3%208.34%2013%208%20C13.33%209.32%2013.66%2010.64%2014%2012%20C16.31%2012%2018.62%2012%2021%2012%20C21%2011.34%2021%2010.68%2021%2010%20C21.66%2010%2022.32%2010%2023%2010%20C23.33%2010.99%2023.66%2011.98%2024%2013%20C18.94576102%2014.68474633%2014.71544468%2014.58019314%209.875%2012.375%20C5.29909504%209.86935884%201.9168134%206.67991608%200.1875%201.625%20C0.125625%201.08875%200.06375%200.5525%200%200%20Z%20'%20fill='%236F9300'%20transform='translate(690,541)'/%3e%3cpath%20d='M0%200%20C6.93%200.33%2013.86%200.66%2021%201%20C20.34%201.66%2019.68%202.32%2019%203%20C19.33%203.66%2019.66%204.32%2020%205%20C17.10410348%205.02706445%2014.20846205%205.04687029%2011.3125%205.0625%20C10.08756836%205.07506836%2010.08756836%205.07506836%208.83789062%205.08789062%20C4.75500916%205.10442051%200.98348293%205.03035098%20-3%204%20C-2.34%203.67%20-1.68%203.34%20-1%203%20C-0.67%202.01%20-0.34%201.02%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(241,593)'/%3e%3cpath%20d='M0%200%20C0.33%200%200.66%200%201%200%20C1%208.25%201%2016.5%201%2025%20C0.34%2025%20-0.32%2025%20-1%2025%20C-3.52775351%2021.20836973%20-3.22443035%2018.19125969%20-3.125%2013.8125%20C-3.11597656%2013.06291016%20-3.10695312%2012.31332031%20-3.09765625%2011.54101562%20C-3.07412578%209.69387346%20-3.03825561%207.84689588%20-3%206%20C-2.67%206%20-2.34%206%20-2%206%20C-1.34%204.02%20-0.68%202.04%200%200%20Z%20'%20fill='%230D0026'%20transform='translate(191,487)'/%3e%3cpath%20d='M0%200%20C0.66%200.66%201.32%201.32%202%202%20C1.525625%202.845625%201.05125%203.69125%200.5625%204.5625%20C-1.69167803%209.67126796%20-1.51097377%2015.18235336%20-1.69140625%2020.671875%20C-2%2024%20-2%2024%20-4%2027%20C-4.39387788%2029.32387947%20-4.73486085%2031.65793749%20-5%2034%20C-5.33%2034%20-5.66%2034%20-6%2034%20C-6.52846015%2021.74266038%20-5.86678537%2011.12575063%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(832,489)'/%3e%3cpath%20d='M0%200%20C0.98742187%200.16242187%201.97484375%200.32484375%202.9921875%200.4921875%20C7.03537925%201.06688527%2011.04640663%201.15126811%2015.125%201.125%20C15.858396%201.12306641%2016.59179199%201.12113281%2017.34741211%201.11914062%20C23.93030125%201.06771738%2030.4468302%200.63822175%2037%200%20C33.42278921%202.9386979%2031.63341748%203.18911908%2027%203%20C22.9008693%203.63063549%2018.97489026%204.83091463%2015%206%20C15%205.34%2015%204.68%2015%204%20C13.02%204.66%2011.04%205.32%209%206%20C8.67%205.34%208.34%204.68%208%204%20C6.8553125%204.12375%206.8553125%204.12375%205.6875%204.25%20C3%204%203%204%201.1875%202%20C0.5996875%201.01%200.5996875%201.01%200%200%20Z%20'%20fill='%23F2FFD9'%20transform='translate(667,563)'/%3e%3cpath%20d='M0%200%20C-1.70577342%200.65256456%20-3.41476089%201.29673041%20-5.125%201.9375%20C-6.07632813%202.29714844%20-7.02765625%202.65679688%20-8.0078125%203.02734375%20C-18.08362171%206.30263943%20-29.94180625%206.28430816%20-40%203%20C-37.09031691%202.16087482%20-34.5469594%201.89148572%20-31.5234375%201.9375%20C-30.27046875%201.94910156%20-30.27046875%201.94910156%20-28.9921875%201.9609375%20C-28.12851562%201.97382812%20-27.26484375%201.98671875%20-26.375%202%20C-24.65370809%202.0254629%20-22.93234349%202.04651171%20-21.2109375%202.0625%20C-20.45087402%202.07410156%20-19.69081055%202.08570313%20-18.90771484%202.09765625%20C-16.91256704%202.12332635%20-16.91256704%202.12332635%20-15%201%20C-12.70190464%200.69130062%20-10.40279871%200.49116352%20-8.09375%200.28125%20C-1.8556701%20-0.55670103%20-1.8556701%20-0.55670103%200%200%20Z%20'%20fill='%23C7FF57'%20transform='translate(707,559)'/%3e%3cpath%20d='M0%200%20C9.57%200%2019.14%200%2029%200%20C29%200.33%2029%200.66%2029%201%20C21.41%201%2013.82%201%206%201%20C6.33%202.32%206.66%203.64%207%205%20C6.87890625%207.359375%206.87890625%207.359375%206.5625%209.75%20C6.46066406%2010.54921875%206.35882813%2011.3484375%206.25390625%2012.171875%20C6.12822266%2013.07679688%206.12822266%2013.07679688%206%2014%20C4.31821339%2011.47732009%203.09893258%209.18908177%201.875%206.4375%20C1.52179688%205.65246094%201.16859375%204.86742187%200.8046875%204.05859375%20C0%202%200%202%200%200%20Z%20'%20fill='%2312003B'%20transform='translate(224,467)'/%3e%3cpath%20d='M0%200%20C0.33%200%200.66%200%201%200%20C1%207.59%201%2015.18%201%2023%20C0.01%2023%20-0.98%2023%20-2%2023%20C-3.53887884%208.19349005%20-3.53887884%208.19349005%20-1%201%20C-0.67%200.67%20-0.34%200.34%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(372,520)'/%3e%3cpath%20d='M0%200%20C6.93%200%2013.86%200%2021%200%20C19.02%200.99%2019.02%200.99%2017%202%20C16.37609375%202.53238281%2015.7521875%203.06476563%2015.109375%203.61328125%20C12.34672115%205.42947035%2010.52244363%205.30437299%207.25%205.1875%20C5.77273438%205.14689453%205.77273438%205.14689453%204.265625%205.10546875%20C3.14414062%205.05326172%203.14414062%205.05326172%202%205%20C2.33%204.01%202.66%203.02%203%202%20C2.01%201.34%201.02%200.68%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(454,466)'/%3e%3cpath%20d='M0%200%20C0.33%200%200.66%200%201%200%20C1%202.97%201%205.94%201%209%20C2.32451172%208.87431641%202.32451172%208.87431641%203.67578125%208.74609375%20C11.27709596%208.10108423%2018.43413122%207.99636435%2026%209%20C26%209.66%2026%2010.32%2026%2011%20C17.42%2011%208.84%2011%200%2011%20C0%207.37%200%203.74%200%200%20Z%20'%20fill='%2312003B'%20transform='translate(904,552)'/%3e%3cpath%20d='M0%200%20C1.28132812%200.00902344%202.56265625%200.01804687%203.8828125%200.02734375%20C4.87023437%200.03894531%205.85765625%200.05054688%206.875%200.0625%20C6.875%200.7225%206.875%201.3825%206.875%202.0625%20C7.535%202.3925%208.195%202.7225%208.875%203.0625%20C7.875%204.0625%207.875%204.0625%204.27734375%204.16015625%20C2.78903133%204.1534822%201.30073568%204.14152183%20-0.1875%204.125%20C-0.94611328%204.12048828%20-1.70472656%204.11597656%20-2.48632812%204.11132812%20C-4.36591871%204.0995068%20-6.24546899%204.08157078%20-8.125%204.0625%20C-8.455%203.0725%20-8.785%202.0825%20-9.125%201.0625%20C-6.12186252%20-0.43906874%20-3.33432478%20-0.03031204%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(874.125,559.9375)'/%3e%3cpath%20d='M0%200%20C0.33%200%200.66%200%201%200%20C1%202.97%201%205.94%201%209%20C3.31%209%205.62%209%208%209%20C6.47291037%2012.43595166%204.40072955%2015.11912454%202%2018%20C1.01%2017.67%200.02%2017.34%20-1%2017%20C-0.67%2011.39%20-0.34%205.78%200%200%20Z%20'%20fill='%230D0026'%20transform='translate(351,479)'/%3e%3cpath%20d='M0%200%20C6.6%200%2013.2%200%2020%200%20C20%200.99%2020%201.98%2020%203%20C15.38%203.33%2010.76%203.66%206%204%20C6%203.67%206%203.34%206%203%20C3.03%202.505%203.03%202.505%200%202%20C0%201.34%200%200.68%200%200%20Z%20'%20fill='%230D0026'%20transform='translate(384,488)'/%3e%3cpath%20d='M0%200%20C14.7664042%20-0.22834646%2014.7664042%20-0.22834646%2022%201%20C23%202%2023%202%2023.09765625%204.50390625%20C23.08605469%205.51324219%2023.07445312%206.52257812%2023.0625%207.5625%20C23.05347656%208.57441406%2023.04445313%209.58632813%2023.03515625%2010.62890625%20C23.02355469%2011.41136719%2023.01195312%2012.19382812%2023%2013%20C22.67%2013%2022.34%2013%2022%2013%20C21.505%208.05%2021.505%208.05%2021%203%20C20.01966797%203.29197266%2020.01966797%203.29197266%2019.01953125%203.58984375%20C15.00486508%204.13517357%2011.62136988%203.38864783%207.6875%202.5625%20C6.94693359%202.41490234%206.20636719%202.26730469%205.44335938%202.11523438%20C3.62718357%201.75199921%201.81333589%201.37715682%200%201%20C0%200.67%200%200.34%200%200%20Z%20'%20fill='%23B6FF2E'%20transform='translate(676,468)'/%3e%3cpath%20d='M0%200%20C5.61%200.33%2011.22%200.66%2017%201%20C14%204%2014%204%2010.64453125%204.29296875%20C9.37996094%204.25816406%208.11539063%204.22335937%206.8125%204.1875%20C5.54019531%204.16042969%204.26789062%204.13335938%202.95703125%204.10546875%20C1.98121094%204.07066406%201.00539063%204.03585937%200%204%20C0%202.68%200%201.36%200%200%20Z%20'%20fill='%230D0026'%20transform='translate(569,540)'/%3e%3cpath%20d='M0%200%20C6.27%200%2012.54%200%2019%200%20C18.01%200.495%2018.01%200.495%2017%201%20C17%201.66%2017%202.32%2017%203%20C11.39%203%205.78%203%200%203%20C0%202.01%200%201.02%200%200%20Z%20'%20fill='%23F0E9FF'%20transform='translate(761,523)'/%3e%3cpath%20d='M0%200%20C0.33%200%200.66%200%201%200%20C1.33%209.24%201.66%2018.48%202%2028%20C2.99%2028.33%203.98%2028.66%205%2029%20C3.69593116%2031.01920337%202.36176581%2033.01924973%201%2035%20C0.67%2035%200.34%2035%200%2035%20C0%2023.45%200%2011.9%200%200%20Z%20'%20fill='%2312003B'%20transform='translate(345,472)'/%3e%3cpath%20d='M0%200%20C0%201.65%200%203.3%200%205%20C-1.134375%205.28875%20-2.26875%205.5775%20-3.4375%205.875%20C-4.613125%206.24625%20-5.78875%206.6175%20-7%207%20C-8.2981424%209.2236068%20-8.2981424%209.2236068%20-8%2013%20C-8.66%2013%20-9.32%2013%20-10%2013%20C-11%2010.4375%20-11%2010.4375%20-11%207%20C-7.98890645%203.33845177%20-4.8796426%200%200%200%20Z%20'%20fill='%230D0026'%20transform='translate(736,475)'/%3e%3cpath%20d='M0%200%20C0.66%200%201.32%200%202%200%20C2%200.66%202%201.32%202%202%20C3.36125%202.37125%203.36125%202.37125%204.75%202.75%20C8.13493865%204.05189948%209.60793414%205.35164137%2012%208%20C12.66%208.33%2013.32%208.66%2014%209%20C14.625%2011.0625%2014.625%2011.0625%2015%2013%20C8.7298413%2011.74596826%204.95911962%207.77173128%201%203%20C0.67%202.01%200.34%201.02%200%200%20Z%20'%20fill='%23C7FF57'%20transform='translate(652,548)'/%3e%3cpath%20d='M0%200%20C0.33%200%200.66%200%201%200%20C1%204.62%201%209.24%201%2014%20C0.01%2014.495%200.01%2014.495%20-1%2015%20C-1%2014.01%20-1%2013.02%20-1%2012%20C-1.99%2012%20-2.98%2012%20-4%2012%20C-3.53439347%207.25081338%20-2.83067342%203.89217595%200%200%20Z%20'%20fill='%230D0026'%20transform='translate(287,513)'/%3e%3cpath%20d='M0%200%20C2.4375%200.8125%202.4375%200.8125%205%202%20C5.33%202.99%205.66%203.98%206%205%20C7.49985609%206.66710346%207.49985609%206.66710346%209%208%20C5.68585212%2012.10954337%203.12159208%2012.43093421%20-2%2013%20C-2.66%2013.66%20-3.32%2014.32%20-4%2015%20C-3.67%2013.35%20-3.34%2011.7%20-3%2010%20C1.455%209.505%201.455%209.505%206%209%20C5.566875%208.43410156%205.13375%207.86820312%204.6875%207.28515625%20C3.8521875%206.18494141%203.8521875%206.18494141%203%205.0625%20C2.1646875%203.96615234%202.1646875%203.96615234%201.3125%202.84765625%20C0%201%200%201%200%200%20Z%20'%20fill='%23F2FFD9'%20transform='translate(682,447)'/%3e%3cpath%20d='M0%200%20C2.31%200%204.62%200%207%200%20C6.67%201.32%206.34%202.64%206%204%20C-1.26%204%20-8.52%204%20-16%204%20C-16%203.67%20-16%203.34%20-16%203%20C-11.05%203%20-6.1%203%20-1%203%20C-0.67%202.01%20-0.34%201.02%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(472,560)'/%3e%3cpath%20d='M0%200%20C3.63%200%207.26%200%2011%200%20C9%204%209%204%207.25%204.8125%20C4.36824559%205.0526462%201.82252185%204.57733402%20-1%204%20C-0.67%202.68%20-0.34%201.36%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(449,506)'/%3e%3cpath%20d='M0%200%20C3.3%200.33%206.6%200.66%2010%201%20C10.33%202.32%2010.66%203.64%2011%205%20C9.58376784%205.05447047%208.16691809%205.09300508%206.75%205.125%20C5.96109375%205.14820313%205.1721875%205.17140625%204.359375%205.1953125%20C1.79268059%204.9828378%200.2083933%204.28654105%20-2%203%20C-1.34%202.01%20-0.68%201.02%200%200%20Z%20'%20fill='%23F0E9FF'%20transform='translate(760,537)'/%3e%3cpath%20d='M0%200%20C0.66%200.33%201.32%200.66%202%201%20C1.67%201.99%201.34%202.98%201%204%20C1.74765625%203.97679687%202.4953125%203.95359375%203.265625%203.9296875%20C4.25046875%203.91164063%205.2353125%203.89359375%206.25%203.875%20C7.22453125%203.85179687%208.1990625%203.82859375%209.203125%203.8046875%20C12%204%2012%204%2016%206%20C9.73%206%203.46%206%20-3%206%20C-3%204.68%20-3%203.36%20-3%202%20C-2.01%202%20-1.02%202%200%202%20C0%201.34%200%200.68%200%200%20Z%20'%20fill='%230D0026'%20transform='translate(447,506)'/%3e%3cpath%20d='M0%200%20C0.33%200%200.66%200%201%200%20C1.22212255%202.74951693%201.42815588%205.49865612%201.625%208.25%20C1.68945312%209.02730469%201.75390625%209.80460937%201.8203125%2010.60546875%20C2.30707097%2017.72431144%202.30707097%2017.72431144%200%2021%20C-0.86860031%2016.51223172%20-1.13464852%2012.25607233%20-1.125%207.6875%20C-1.12757813%206.45386719%20-1.13015625%205.22023438%20-1.1328125%203.94921875%20C-1%201%20-1%201%200%200%20Z%20'%20fill='%230D0026'%20transform='translate(553,496)'/%3e%3cpath%20d='M0%200%20C0%201.65%200%203.3%200%205%20C-3.63%205%20-7.26%205%20-11%205%20C-11.33%204.34%20-11.66%203.68%20-12%203%20C-10.75336669%202.49166409%20-9.50250613%201.99368855%20-8.25%201.5%20C-7.55390625%201.2215625%20-6.8578125%200.943125%20-6.140625%200.65625%20C-4%200%20-4%200%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(454,467)'/%3e%3cpath%20d='M0%200%20C0.98613281%200.03480469%201.97226562%200.06960938%202.98828125%200.10546875%20C3.98214844%200.13253906%204.97601563%200.15960937%206%200.1875%20C7.13888672%200.23970703%207.13888672%200.23970703%208.30078125%200.29296875%20C8.63078125%201.28296875%208.96078125%202.27296875%209.30078125%203.29296875%20C4.35078125%203.29296875%20-0.59921875%203.29296875%20-5.69921875%203.29296875%20C-2.69921875%200.29296875%20-2.69921875%200.29296875%200%200%20Z%20'%20fill='%230D0026'%20transform='translate(461.69921875,559.70703125)'/%3e%3cpath%20d='M0%200%20C0.56203125%200.30679688%201.1240625%200.61359375%201.703125%200.9296875%20C4.06346934%202.02957585%206.20465562%202.60095851%208.75%203.125%20C9.54921875%203.29257812%2010.3484375%203.46015625%2011.171875%203.6328125%20C11.77515625%203.75398437%2012.3784375%203.87515625%2013%204%20C13%204.66%2013%205.32%2013%206%20C8.126739%207.5912689%204.19209404%208.21192221%20-1%208%20C0.32%207.34%201.64%206.68%203%206%20C2.690625%205.38125%202.38125%204.7625%202.0625%204.125%20C1.375%202.75%200.6875%201.375%200%200%20Z%20'%20fill='%23A7EA18'%20transform='translate(695,552)'/%3e%3cpath%20d='M0%200%20C-0.99%201.485%20-0.99%201.485%20-2%203%20C-4.8984375%203.36328125%20-4.8984375%203.36328125%20-8.375%203.3125%20C-9.51710938%203.30863281%20-10.65921875%203.30476562%20-11.8359375%203.30078125%20C-14.80057739%203.01895746%20-16.49947121%202.54589341%20-19%201%20C-12.65758005%20-0.15316726%20-6.43311296%20-0.09507063%200%200%20Z%20'%20fill='%230D0026'%20transform='translate(884,541)'/%3e%3cpath%20d='M0%200%20C1.58323688%20-0.027193%203.16661062%20-0.04648306%204.75%20-0.0625%20C6.07257812%20-0.07990234%206.07257812%20-0.07990234%207.421875%20-0.09765625%20C9.7818838%20-0.00826198%2011.74498524%200.33087179%2014%201%20C14%201.66%2014%202.32%2014%203%20C9.05%203%204.1%203%20-1%203%20C-0.67%202.01%20-0.34%201.02%200%200%20Z%20'%20fill='%230D0026'%20transform='translate(581,560)'/%3e%3cpath%20d='M0%200%20C0%200.99%200%201.98%200%203%20C-5.28%203%20-10.56%203%20-16%203%20C-16%202.34%20-16%201.68%20-16%201%20C-10.62915894%200.31798844%20-5.41499441%20-0.11521265%200%200%20Z%20'%20fill='%230D0026'%20transform='translate(479,541)'/%3e%3cpath%20d='M0%200%20C0.33%200%200.66%200%201%200%20C1%205.28%201%2010.56%201%2016%20C-2.37152003%2012.62847997%20-2.82142723%2011.64289204%20-3%207%20C-2.21181089%204.49988422%20-1.17946058%202.35892116%200%200%20Z%20'%20fill='%230D0026'%20transform='translate(247,504)'/%3e%3cpath%20d='M0%200%20C0.66%200.33%201.32%200.66%202%201%20C2.08082094%202.95766281%202.13910778%204.91626728%202.1875%206.875%20C2.23970703%208.51082031%202.23970703%208.51082031%202.29296875%2010.1796875%20C2.19628906%2011.11039062%202.09960938%2012.04109375%202%2013%20C1.01%2013.66%200.02%2014.32%20-1%2015%20C-1.02685412%2012.68756208%20-1.04632841%2010.3750373%20-1.0625%208.0625%20C-1.07410156%206.77472656%20-1.08570312%205.48695313%20-1.09765625%204.16015625%20C-1%201%20-1%201%200%200%20Z%20'%20fill='%230D0026'%20transform='translate(121,466)'/%3e%3cpath%20d='M0%200%20C0%202.97%200%205.94%200%209%20C-0.99%209.495%20-0.99%209.495%20-2%2010%20C-3.32%206.7%20-4.64%203.4%20-6%200%20C-2%20-1%20-2%20-1%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(254,523)'/%3e%3cpath%20d='M0%200%20C2.64%200.33%205.28%200.66%208%201%20C7.34%202.32%206.68%203.64%206%205%20C3.69%205%201.38%205%20-1%205%20C-0.67%203.35%20-0.34%201.7%200%200%20Z%20'%20fill='%23F0E9FF'%20transform='translate(880,489)'/%3e%3cpath%20d='M0%200%20C1.953125%200.390625%203.90625%200.78125%205.859375%201.171875%20C5.859375%202.161875%205.859375%203.151875%205.859375%204.171875%20C1.899375%204.171875%20-2.060625%204.171875%20-6.140625%204.171875%20C-2.140625%200.171875%20-2.140625%200.171875%200%200%20Z%20'%20fill='%230D0026'%20transform='translate(780.140625,467.828125)'/%3e%3cpath%20d='M0%200%20C0.598125%200.20625%201.19625%200.4125%201.8125%200.625%20C0.8225%200.955%20-0.1675%201.285%20-1.1875%201.625%20C-1.5175%205.915%20-1.8475%2010.205%20-2.1875%2014.625%20C-2.8475%2014.295%20-3.5075%2013.965%20-4.1875%2013.625%20C-4.6015625%2010.90234375%20-4.6015625%2010.90234375%20-4.8125%207.5625%20C-4.88726563%206.45777344%20-4.96203125%205.35304688%20-5.0390625%204.21484375%20C-5.08804688%203.36019531%20-5.13703125%202.50554687%20-5.1875%201.625%20C-2.1875%20-0.375%20-2.1875%20-0.375%200%200%20Z%20'%20fill='%23C7FF57'%20transform='translate(678.1875,453.375)'/%3e%3cpath%20d='M0%200%20C3%203.75%203%203.75%203%206%20C0.03%206%20-2.94%206%20-6%206%20C-5.67%204.68%20-5.34%203.36%20-5%202%20C-2.4375%200.75%20-2.4375%200.75%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(743,538)'/%3e%3cpath%20d='M0%200%20C3.63%200%207.26%200%2011%200%20C9.515%201.98%209.515%201.98%208%204%20C4.8125%204.25%204.8125%204.25%202%204%20C1.34%202.68%200.68%201.36%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(473,506)'/%3e%3cpath%20d='M0%200%20C0.33%200%200.66%200%201%200%20C2.62227918%205.43940666%203.3864587%209.33862697%202%2015%20C1.01%2015.495%201.01%2015.495%200%2016%20C0%2013.36%200%2010.72%200%208%20C-0.66%207.67%20-1.32%207.34%20-2%207%20C-1.125%202.25%20-1.125%202.25%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(294,496)'/%3e%3cpath%20d='M0%200%20C1.134375%200.020625%202.26875%200.04125%203.4375%200.0625%20C4.0975%202.0425%204.7575%204.0225%205.4375%206.0625%20C4.4475%206.7225%203.4575%207.3825%202.4375%208.0625%20C0.10416667%205.72916667%20-2.22916667%203.39583333%20-4.5625%201.0625%20C-3.5625%200.0625%20-3.5625%200.0625%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(594.5625,489.9375)'/%3e%3cpath%20d='M0%200%20C0%200.33%200%200.66%200%201%20C-2.31%201%20-4.62%201%20-7%201%20C-7%201.66%20-7%202.32%20-7%203%20C-7.99%203%20-8.98%203%20-10%203%20C-10%203.66%20-10%204.32%20-10%205%20C-11.65%205%20-13.3%205%20-15%205%20C-15%204.34%20-15%203.68%20-15%203%20C-15.66%202.67%20-16.32%202.34%20-17%202%20C-11.19233704%200.4943096%20-6.0018137%20-0.21824777%200%200%20Z%20'%20fill='%2312003B'%20transform='translate(750,506)'/%3e%3cpath%20d='M0%200%20C0.33%200%200.66%200%201%200%20C1%203.63%201%207.26%201%2011%20C0.34%209.68%20-0.32%208.36%20-1%207%20C-2.32%207.33%20-3.64%207.66%20-5%208%20C-4.67%206.35%20-4.34%204.7%20-4%203%20C-3.01%203%20-2.02%203%20-1%203%20C-0.67%202.01%20-0.34%201.02%200%200%20Z%20'%20fill='%230D0026'%20transform='translate(303,481)'/%3e%3cpath%20d='M0%200%20C4.62%200%209.24%200%2014%200%20C14%200.66%2014%201.32%2014%202%20C11%203%2011%203%208.625%202.4375%20C5.45352412%201.90892069%203.84890119%202.61624799%201%204%20C0.67%202.68%200.34%201.36%200%200%20Z%20'%20fill='%2394D600'%20transform='translate(634,469)'/%3e%3cpath%20d='M0%200%20C0.33%200%200.66%200%201%200%20C1%202.64%201%205.28%201%208%20C-5.27%207.67%20-11.54%207.34%20-18%207%20C-18%206.67%20-18%206.34%20-18%206%20C-9.585%205.505%20-9.585%205.505%20-1%205%20C-0.67%203.35%20-0.34%201.7%200%200%20Z%20'%20fill='%23F0E9FF'%20transform='translate(931,557)'/%3e%3cpath%20d='M0%200%20C0.66%200.33%201.32%200.66%202%201%20C1.34%203.31%200.68%205.62%200%208%20C-0.99%208%20-1.98%208%20-3%208%20C-3%205.69%20-3%203.38%20-3%201%20C-2.01%200.67%20-1.02%200.34%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(621,536)'/%3e%3cpath%20d='M0%200%20C0.33%200%200.66%200%201%200%20C1.66%202.97%202.32%205.94%203%209%20C-0.96%209%20-4.92%209%20-9%209%20C-8.67%208.34%20-8.34%207.68%20-8%207%20C-5.69%207%20-3.38%207%20-1%207%20C-0.67%204.69%20-0.34%202.38%200%200%20Z%20'%20fill='%230D0026'%20transform='translate(808,513)'/%3e%3cpath%20d='M0%200%20C0%203.73675706%20-1.26051811%205.72174568%20-3%209%20C-3.391875%209.78375%20-3.78375%2010.5675%20-4.1875%2011.375%20C-4.455625%2011.91125%20-4.72375%2012.4475%20-5%2013%20C-5.99%2013%20-6.98%2013%20-8%2013%20C-7.51294002%208.6164602%20-6.21626567%206.93247752%20-3%204%20C-1.97676564%202.68441297%20-0.96873032%201.35622245%200%200%20Z%20'%20fill='%23A7EA18'%20transform='translate(648,441)'/%3e%3cpath%20d='M0%200%20C0.66%200.33%201.32%200.66%202%201%20C2.36923077%206.53846154%202.36923077%206.53846154%200.5%208.875%20C-0.2425%209.431875%20-0.2425%209.431875%20-1%2010%20C-1.66%209.67%20-2.32%209.34%20-3%209%20C-2.30058404%205.85262818%20-1.23921302%202.97411124%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(228,582)'/%3e%3cpath%20d='M0%200%20C0.66%200%201.32%200%202%200%20C2.125%205.75%202.125%205.75%201%208%20C0.34%208%20-0.32%208%20-1%208%20C-1.33%208.99%20-1.66%209.98%20-2%2011%20C-3.13643966%207.59068103%20-2.86747764%206.99664544%20-1.5625%203.8125%20C-1.13130859%202.73935547%20-1.13130859%202.73935547%20-0.69140625%201.64453125%20C-0.46324219%201.10183594%20-0.23507812%200.55914063%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(350,514)'/%3e%3cpath%20d='M0%200%20C3.3%200%206.6%200%2010%200%20C10.33%201.32%2010.66%202.64%2011%204%20C9.35%204%207.7%204%206%204%20C6%203.67%206%203.34%206%203%20C3.03%202.505%203.03%202.505%200%202%20C0%201.34%200%200.68%200%200%20Z%20'%20fill='%230D0026'%20transform='translate(384,488)'/%3e%3cpath%20d='M0%200%20C0.845625%200.804375%201.69125%201.60875%202.5625%202.4375%20C5.8515158%205.21628662%208.68629604%205.74117776%2013%206%20C13%206.33%2013%206.66%2013%207%20C11.20866022%207.05391993%209.41686101%207.09275571%207.625%207.125%20C6.62726562%207.14820313%205.62953125%207.17140625%204.6015625%207.1953125%20C2%207%202%207%200%205%20C-0.125%202.375%20-0.125%202.375%200%200%20Z%20'%20fill='%23DFFF99'%20transform='translate(677,535)'/%3e%3cpath%20d='M0%200%20C0.33%201.65%200.66%203.3%201%205%20C-1.97%205%20-4.94%205%20-8%205%20C-3%200%20-3%200%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(175,531)'/%3e%3cpath%20d='M0%200%20C2.97%200%205.94%200%209%200%20C9.33%200.66%209.66%201.32%2010%202%20C3.71428571%204.42857143%203.71428571%204.42857143%200%203%20C0%202.01%200%201.02%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(739,522)'/%3e%3cpath%20d='M0%200%20C0.66%200%201.32%200%202%200%20C2.33%203.63%202.66%207.26%203%2011%20C2.01%2011%201.02%2011%200%2011%20C0%207.37%200%203.74%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(304,520)'/%3e%3cpath%20d='M0%200%20C0%200.66%200%201.32%200%202%20C-4.95%202%20-9.9%202%20-15%202%20C-11.5998228%200.2999114%20-9.96676075%20-0.32111638%20-6.375%20-0.6875%20C-5.21097656%20-0.81705078%20-5.21097656%20-0.81705078%20-4.0234375%20-0.94921875%20C-2%20-1%20-2%20-1%200%200%20Z%20'%20fill='%230D0026'%20transform='translate(507,520)'/%3e%3cpath%20d='M0%200%20C0.33%200%200.66%200%201%200%20C1.33%202.97%201.66%205.94%202%209%20C1.01%209.33%200.02%209.66%20-1%2010%20C-2.1875%207.8125%20-2.1875%207.8125%20-3%205%20C-1.6875%202.1875%20-1.6875%202.1875%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(421,489)'/%3e%3cpath%20d='M0%200%20C0.66%200%201.32%200%202%200%20C2%203.96%202%207.92%202%2012%20C1.01%2011.67%200.02%2011.34%20-1%2011%20C-0.67%207.37%20-0.34%203.74%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(238,488)'/%3e%3cpath%20d='M0%200%20C1.32%200%202.64%200%204%200%20C4%200.99%204%201.98%204%203%20C4.66%203%205.32%203%206%203%20C7.0625%204.8125%207.0625%204.8125%208%207%20C7.67%207.99%207.34%208.98%207%2010%20C5.83043409%208.52312468%204.66441854%207.04343707%203.5%205.5625%20C2.8503125%204.73878906%202.200625%203.91507812%201.53125%203.06640625%20C0%201%200%201%200%200%20Z%20'%20fill='%23E8FFC2'%20transform='translate(674,437)'/%3e%3cpath%20d='M0%200%20C3.23739279%201.6186964%204.42244771%204.84489543%206%208%20C2.31245243%207.50168276%200.39509338%206.89932357%20-2%204%20C-1.34%202.68%20-0.68%201.36%200%200%20Z%20'%20fill='%230D0026'%20transform='translate(230,587)'/%3e%3cpath%20d='M0%200%20C0.33%200%200.66%200%201%200%20C1%203.3%201%206.6%201%2010%20C0.01%2010.495%200.01%2010.495%20-1%2011%20C-2.1875%208.3125%20-2.1875%208.3125%20-3%205%20C-1.6875%202.125%20-1.6875%202.125%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(533,527)'/%3e%3cpath%20d='M0%200%20C0.33%200%200.66%200%201%200%20C1.22151549%201.79008467%201.42682213%203.58218162%201.625%205.375%20C1.74101563%206.37273438%201.85703125%207.37046875%201.9765625%208.3984375%20C1.98429688%209.25695312%201.99203125%2010.11546875%202%2011%20C1.34%2011.66%200.68%2012.32%200%2013%20C-0.66%2010.03%20-1.32%207.06%20-2%204%20C-1.34%204%20-0.68%204%200%204%20C0%202.68%200%201.36%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(554,513)'/%3e%3cpath%20d='M0%200%20C0.33%200.66%200.66%201.32%201%202%20C-3.51718381%203.36884358%20-6.58774263%202.47075246%20-11%201%20C-6.78915963%20-1.80722691%20-4.88445782%20-0.94537893%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(399,468)'/%3e%3cpath%20d='M0%200%20C-0.66%200.66%20-1.32%201.32%20-2%202%20C-1.34%202.66%20-0.68%203.32%200%204%20C-3.96%203.67%20-7.92%203.34%20-12%203%20C-7.27030266%20-0.54727301%20-5.56673301%20-1.35407019%200%200%20Z%20'%20fill='%23F0E9FF'%20transform='translate(167,435)'/%3e%3cpath%20d='M0%200%20C0.33%200.66%200.66%201.32%201%202%20C0.0625%204.625%200.0625%204.625%20-1%207%20C-1.33%206.34%20-1.66%205.68%20-2%205%20C-4.32156597%204.59270772%20-6.6568787%204.25561323%20-9%204%20C-9%203.67%20-9%203.34%20-9%203%20C-6.03%202.01%20-3.06%201.02%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(891,537)'/%3e%3cpath%20d='M0%200%20C0.66%200%201.32%200%202%200%20C2%202.31%202%204.62%202%207%20C2.66%207%203.32%207%204%207%20C4%207.99%204%208.98%204%2010%20C2.68%2010%201.36%2010%200%2010%20C0%206.7%200%203.4%200%200%20Z%20'%20fill='%230D0026'%20transform='translate(296,537)'/%3e%3cpath%20d='M0%200%20C1.7074998%201.28062485%203.37373596%202.61767557%205%204%20C5%204.66%205%205.32%205%206%20C1.04%206%20-2.92%206%20-7%206%20C-7%205.67%20-7%205.34%20-7%205%20C-3.535%204.505%20-3.535%204.505%200%204%20C0%202.68%200%201.36%200%200%20Z%20'%20fill='%23DFFF99'%20transform='translate(683,450)'/%3e%3cpath%20d='M0%200%20C5.94%200.99%205.94%200.99%2012%202%20C12%202.66%2012%203.32%2012%204%20C10.56416999%204.10836453%209.1259798%204.18576167%207.6875%204.25%20C6.48673828%204.31960938%206.48673828%204.31960938%205.26171875%204.390625%20C3%204%203%204%200%200%20Z%20'%20fill='%23F2FFD9'%20transform='translate(667,563)'/%3e%3cpath%20d='M0%200%20C1.65%200%203.3%200%205%200%20C5.33%201.98%205.66%203.96%206%206%20C3.69%205.01%201.38%204.02%20-1%203%20C-0.67%202.01%20-0.34%201.02%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(848,554)'/%3e%3cpath%20d='M0%200%20C3%204%203%204%204%207%20C0.25%2010%200.25%2010%20-2%2010%20C-1.34%206.7%20-0.68%203.4%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(187,506)'/%3e%3cpath%20d='M0%200%20C1.9451%202.91765%202.45276317%204.62537285%203%208%20C1.02%208.99%201.02%208.99%20-1%2010%20C-0.67%206.7%20-0.34%203.4%200%200%20Z%20'%20fill='%2312003B'%20transform='translate(715,500)'/%3e%3cpath%20d='M0%200%20C2.9375%201.1875%202.9375%201.1875%203.9375%203.1875%20C1.02267222%203.99717438%20-0.52363217%204.40595993%20-3.375%203.25%20C-3.931875%202.899375%20-4.48875%202.54875%20-5.0625%202.1875%20C-5.0625%201.5275%20-5.0625%200.8675%20-5.0625%200.1875%20C-3.0625%20-0.8125%20-3.0625%20-0.8125%200%200%20Z%20'%20fill='%23F0E9FF'%20transform='translate(606.0625,467.8125)'/%3e%3cpath%20d='M0%200%20C0.5625%201.9375%200.5625%201.9375%201%204%20C0%205%200%205%20-3.0625%205.0625%20C-4.031875%205.041875%20-5.00125%205.02125%20-6%205%20C-6.33%204.34%20-6.66%203.68%20-7%203%20C-4.69%202.01%20-2.38%201.02%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(485,537)'/%3e%3cpath%20d='M0%200%20C0.99%200.33%201.98%200.66%203%201%20C2.01%203.97%201.02%206.94%200%2010%20C-0.33%2010%20-0.66%2010%20-1%2010%20C-1.125%202.25%20-1.125%202.25%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(322,486)'/%3e%3cpath%20d='M0%200%20C1.65%200%203.3%200%205%200%20C5%200.99%205%201.98%205%203%20C3.35%203.66%201.7%204.32%200%205%20C0%203.35%200%201.7%200%200%20Z%20'%20fill='%230D0026'%20transform='translate(738,552)'/%3e%3cpath%20d='M0%200%20C0.91007813%200.00902344%201.82015625%200.01804687%202.7578125%200.02734375%20C3.45648438%200.03894531%204.15515625%200.05054688%204.875%200.0625%20C5.205%200.7225%205.535%201.3825%205.875%202.0625%20C4.82699219%202.15337891%204.82699219%202.15337891%203.7578125%202.24609375%20C2.84773437%202.32988281%201.93765625%202.41367187%201%202.5%20C0.09507812%202.58121094%20-0.80984375%202.66242188%20-1.7421875%202.74609375%20C-4.13610861%202.93239285%20-4.13610861%202.93239285%20-6.125%204.0625%20C-6.455%203.0725%20-6.785%202.0825%20-7.125%201.0625%20C-4.60024538%20-0.19987731%20-2.81299534%20-0.03606404%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(128.125,458.9375)'/%3e%3cpath%20d='M0%200%20C0.66%200.33%201.32%200.66%202%201%20C0.515%204.465%200.515%204.465%20-1%208%20C-1.66%208%20-2.32%208%20-3%208%20C-3%206.02%20-3%204.04%20-3%202%20C-2.01%202%20-1.02%202%200%202%20C0%201.34%200%200.68%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(294,556)'/%3e%3cpath%20d='M0%200%20C1.51400391%200.01740234%201.51400391%200.01740234%203.05859375%200.03515625%20C4.07050781%200.04417969%205.08242188%200.05320312%206.125%200.0625%20C7.29869141%200.07990234%207.29869141%200.07990234%208.49609375%200.09765625%20C8.49609375%200.42765625%208.49609375%200.75765625%208.49609375%201.09765625%20C5.52609375%201.09765625%202.55609375%201.09765625%20-0.50390625%201.09765625%20C-0.50390625%201.75765625%20-0.50390625%202.41765625%20-0.50390625%203.09765625%20C-2.81390625%203.09765625%20-5.12390625%203.09765625%20-7.50390625%203.09765625%20C-6.86453125%202.78828125%20-6.22515625%202.47890625%20-5.56640625%202.16015625%20C-1.48563778%200.05794219%20-1.48563778%200.05794219%200%200%20Z%20'%20fill='%2312003B'%20transform='translate(463.50390625,540.90234375)'/%3e%3cpath%20d='M0%200%20C0.33%200.66%200.66%201.32%201%202%20C2.32%201.67%203.64%201.34%205%201%20C3.9024777%203.99324263%203.32317108%204.84610901%200.375%206.25%20C-0.40875%206.4975%20-1.1925%206.745%20-2%207%20C-1.34%204.69%20-0.68%202.38%200%200%20Z%20'%20fill='%23F0E9FF'%20transform='translate(306,531)'/%3e%3cpath%20d='M0%200%20C0.33%200.99%200.66%201.98%201%203%20C-0.98%204.98%20-2.96%206.96%20-5%209%20C-5.99%208.67%20-6.98%208.34%20-8%208%20C-5.33333333%205.33333333%20-2.66666667%202.66666667%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(601,528)'/%3e%3cpath%20d='M0%200%20C0.99%200%201.98%200%203%200%20C3.125%202.875%203.125%202.875%203%206%20C2.34%206.66%201.68%207.32%201%208%20C0%207%200%207%20-0.0625%203.4375%20C-0.041875%202.303125%20-0.02125%201.16875%200%200%20Z%20'%20fill='%230D0026'%20transform='translate(272,520)'/%3e%3cpath%20d='M0%200%20C0.66%200.33%201.32%200.66%202%201%20C1.67%201.66%201.34%202.32%201%203%20C0.95977609%205.3329866%200.95679753%207.66706666%201%2010%20C0.34%2010%20-0.32%2010%20-1%2010%20C-1.9765625%203.9453125%20-1.9765625%203.9453125%20-2%202%20C-1.34%201.34%20-0.68%200.68%200%200%20Z%20'%20fill='%230D0026'%20transform='translate(359,502)'/%3e%3cpath%20d='M0%200%20C3.63%200.66%207.26%201.32%2011%202%20C11%202.33%2011%202.66%2011%203%20C7.37%203%203.74%203%200%203%20C0%202.01%200%201.02%200%200%20Z%20'%20fill='%230D0026'%20transform='translate(387,469)'/%3e%3cpath%20d='M0%200%20C2.31%200.33%204.62%200.66%207%201%20C6.67%201.66%206.34%202.32%206%203%20C4.35%203%202.7%203%201%203%20C1%203.99%201%204.98%201%206%20C0.01%206%20-0.98%206%20-2%206%20C-1.34%204.02%20-0.68%202.04%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(305,468)'/%3e%3cpath%20d='M0%200%20C1.65%200.33%203.3%200.66%205%201%20C5%201.99%205%202.98%205%204%20C3.35%204%201.7%204%200%204%20C0%202.68%200%201.36%200%200%20Z%20'%20fill='%230D0026'%20transform='translate(549,552)'/%3e%3cpath%20d='M0%200%20C0.94875%200.04125%201.8975%200.0825%202.875%200.125%20C2.875%200.785%202.875%201.445%202.875%202.125%20C0.895%202.785%20-1.085%203.445%20-3.125%204.125%20C-3.785%203.465%20-4.445%202.805%20-5.125%202.125%20C-3.125%200.125%20-3.125%200.125%200%200%20Z%20'%20fill='%2312003B'%20transform='translate(181.125,553.875)'/%3e%3cpath%20d='M0%200%20C1.9375%200.3125%201.9375%200.3125%204%201%20C4.33%201.99%204.66%202.98%205%204%20C2.69%204%200.38%204%20-2%204%20C-1.34%202.68%20-0.68%201.36%200%200%20Z%20'%20fill='%230D0026'%20transform='translate(587,540)'/%3e%3cpath%20d='M0%200%20C0%202.31%200%204.62%200%207%20C-0.99%207.495%20-0.99%207.495%20-2%208%20C-2%207.01%20-2%206.02%20-2%205%20C-2.66%205%20-3.32%205%20-4%205%20C-3.625%203.0625%20-3.625%203.0625%20-3%201%20C-1%200%20-1%200%200%200%20Z%20'%20fill='%230D0026'%20transform='translate(185,520)'/%3e%3cpath%20d='M0%200%20C0.66%200%201.32%200%202%200%20C1.67%202.64%201.34%205.28%201%208%20C0.01%207.67%20-0.98%207.34%20-2%207%20C-1.34%207%20-0.68%207%200%207%20C0%206.01%200%205.02%200%204%20C-1.32%203.67%20-2.64%203.34%20-4%203%20C-2.68%202.67%20-1.36%202.34%200%202%20C0%201.34%200%200.68%200%200%20Z%20'%20fill='%230D0026'%20transform='translate(616,486)'/%3e%3cpath%20d='M0%200%20C3.125%20-0.1875%203.125%20-0.1875%206%200%20C6%200.99%206%201.98%206%203%20C3.36%203%200.72%203%20-2%203%20C-1.34%202.01%20-0.68%201.02%200%200%20Z%20'%20fill='%230D0026'%20transform='translate(842,477)'/%3e%3cpath%20d='M0%200%20C2.475%200.495%202.475%200.495%205%201%20C4.67%202.32%204.34%203.64%204%205%20C2.68%205.33%201.36%205.66%200%206%20C0%204.02%200%202.04%200%200%20Z%20'%20fill='%230D0026'%20transform='translate(920,472)'/%3e%3cpath%20d='M0%200%20C1.65%200%203.3%200%205%200%20C5.33%200.99%205.66%201.98%206%203%20C3.69%203%201.38%203%20-1%203%20C-0.67%202.01%20-0.34%201.02%200%200%20Z%20'%20fill='%230D0026'%20transform='translate(568,560)'/%3e%3cpath%20d='M0%200%20C3.39609044%201.19322096%205.62433927%202.28495916%208%205%20C8.66%205.66%209.32%206.32%2010%207%20C7.29068581%206.84518205%205.53415961%206.51827919%203.5546875%204.59765625%20C2.32320358%203.10228292%201.1570163%201.5537076%200%200%20Z%20'%20fill='%23A7EA18'%20transform='translate(656,551)'/%3e%3cpath%20d='M0%200%20C-3.6441774%202.4294516%20-5.71241272%202.16179575%20-10%202%20C-10%201.34%20-10%200.68%20-10%200%20C-6.33694766%20-0.74926071%20-3.57644848%20-1.2380014%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(762,542)'/%3e%3cpath%20d='M0%200%20C1.32%200%202.64%200%204%200%20C4%201.65%204%203.3%204%205%20C3.01%205%202.02%205%201%205%20C0.34%203.68%20-0.32%202.36%20-1%201%20C-0.67%200.67%20-0.34%200.34%200%200%20Z%20'%20fill='%230D0026'%20transform='translate(780,539)'/%3e%3cpath%20d='M0%200%20C0%201.98%200%203.96%200%206%20C-0.99%206%20-1.98%206%20-3%206%20C-3.66%204.68%20-4.32%203.36%20-5%202%20C-1.125%200%20-1.125%200%200%200%20Z%20'%20fill='%23F0E9FF'%20transform='translate(611,497)'/%3e%3cpath%20d='M0%200%20C2%203%202%203%201.625%205.1875%20C1.41875%205.785625%201.2125%206.38375%201%207%20C0.01%207%20-0.98%207%20-2%207%20C-2%205.35%20-2%203.7%20-2%202%20C-1.34%202%20-0.68%202%200%202%20C0%201.34%200%200.68%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(260,485)'/%3e%3cpath%20d='M0%200%20C0.99%200.33%201.98%200.66%203%201%20C3.33%202.98%203.66%204.96%204%207%20C2.35%206.01%200.7%205.02%20-1%204%20C-0.67%202.68%20-0.34%201.36%200%200%20Z%20'%20fill='%23F0E9FF'%20transform='translate(896,467)'/%3e%3cpath%20d='M0%200%20C2.97%200%205.94%200%209%200%20C9%201.32%209%202.64%209%204%20C8.01%204%207.02%204%206%204%20C5.67%203.34%205.34%202.68%205%202%20C2.47266765%201.34444881%202.47266765%201.34444881%200%201%20C0%200.67%200%200.34%200%200%20Z%20'%20fill='%2312003B'%20transform='translate(396,466)'/%3e%3cpath%20d='M0%200%20C1.32%200.33%202.64%200.66%204%201%20C4%201.99%204%202.98%204%204%20C1.69%204.33%20-0.62%204.66%20-3%205%20C-2.01%203.35%20-1.02%201.7%200%200%20Z%20'%20fill='%23DFFF99'%20transform='translate(660,423)'/%3e%3cpath%20d='M0%200%20C1.32%200.33%202.64%200.66%204%201%20C4.33%202.65%204.66%204.3%205%206%20C4.01%206%203.02%206%202%206%20C1.34%204.02%200.68%202.04%200%200%20Z%20'%20fill='%236F9300'%20transform='translate(690,541)'/%3e%3cpath%20d='M0%200%20C1.32%200.99%202.64%201.98%204%203%20C3.67%203.66%203.34%204.32%203%205%20C1.35%205%20-0.3%205%20-2%205%20C-1.34%203.35%20-0.68%201.7%200%200%20Z%20'%20fill='%230D0026'%20transform='translate(858,531)'/%3e%3cpath%20d='M0%200%20C0.66%200.99%201.32%201.98%202%203%20C1.67%203.99%201.34%204.98%201%206%20C-1.5625%207.1875%20-1.5625%207.1875%20-4%208%20C-2.68%205.36%20-1.36%202.72%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(373,482)'/%3e%3cpath%20d='M0%200%20C1.74959319%202.62438979%202.62068453%203.96547627%203%207%20C2.01%208.485%202.01%208.485%201%2010%20C0.34%209.67%20-0.32%209.34%20-1%209%20C-0.67%208.34%20-0.34%207.68%200%207%20C0.04022391%204.6670134%200.04320247%202.33293334%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(360,477)'/%3e%3cpath%20d='M0%200%20C0%200.66%200%201.32%200%202%20C-0.66%202%20-1.32%202%20-2%202%20C-2%202.99%20-2%203.98%20-2%205%20C-3.32%205%20-4.64%205%20-6%205%20C-5.6875%203.0625%20-5.6875%203.0625%20-5%201%20C-2%200%20-2%200%200%200%20Z%20'%20fill='%23F0E9FF'%20transform='translate(891,561)'/%3e%3cpath%20d='M0%200%20C0.33%200.66%200.66%201.32%201%202%20C0.01%203.32%20-0.98%204.64%20-2%206%20C-3.32%205.34%20-4.64%204.68%20-6%204%20C-4.02%202.68%20-2.04%201.36%200%200%20Z%20'%20fill='%23F0E9FF'%20transform='translate(715,553)'/%3e%3cpath%20d='M0%200%20C1.98%200%203.96%200%206%200%20C6.33%201.65%206.66%203.3%207%205%20C3.535%203.02%203.535%203.02%200%201%20C0%200.67%200%200.34%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(432,552)'/%3e%3cpath%20d='M0%200%20C0.66%200.33%201.32%200.66%202%201%20C1.60196439%203.88575819%201.20990931%204.82189513%20-1.0625%206.75%20C-1.701875%207.1625%20-2.34125%207.575%20-3%208%20C-1.125%201.125%20-1.125%201.125%200%200%20Z%20'%20fill='%23F0E9FF'%20transform='translate(299,549)'/%3e%3cpath%20d='M0%200%20C0.66%200.33%201.32%200.66%202%201%20C2%201.99%202%202.98%202%204%20C-1.13349732%205.04449911%20-1.98968256%204.93423645%20-5%204%20C-3.35%202.68%20-1.7%201.36%200%200%20Z%20'%20fill='%23F0E9FF'%20transform='translate(198,546)'/%3e%3cpath%20d='M0%200%20C1.32%200.33%202.64%200.66%204%201%20C4%204%204%204%202.5%205.6875%20C2.005%206.120625%201.51%206.55375%201%207%20C0.67%204.69%200.34%202.38%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(802,545)'/%3e%3cpath%20d='M0%200%20C2%201.3125%202%201.3125%204%203%20C4%203.99%204%204.98%204%206%20C2.02%205.34%200.04%204.68%20-2%204%20C-1.34%202.68%20-0.68%201.36%200%200%20Z%20'%20fill='%23F0E9FF'%20transform='translate(617,530)'/%3e%3cpath%20d='M0%200%20C2%201.8125%202%201.8125%204%204%20C4%204.99%204%205.98%204%207%20C2.68%207.33%201.36%207.66%200%208%20C0%205.36%200%202.72%200%200%20Z%20'%20fill='%230D0026'%20transform='translate(552,520)'/%3e%3cpath%20d='M0%200%20C0.66%200.33%201.32%200.66%202%201%20C0.1875%204%200.1875%204%20-2%207%20C-2.99%207%20-3.98%207%20-5%207%20C-3.35%204.69%20-1.7%202.38%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(715,519)'/%3e%3cpath%20d='M0%200%20C2.50037734%202.17424117%203.43628586%203.73045798%204%207%20C2.68%206.67%201.36%206.34%200%206%20C0%204.02%200%202.04%200%200%20Z%20'%20fill='%23F0E9FF'%20transform='translate(483,496)'/%3e%3cpath%20d='M0%200%20C0.66%200.33%201.32%200.66%202%201%20C1.67%202.98%201.34%204.96%201%207%20C0.34%206.67%20-0.32%206.34%20-1%206%20C-1.625%203.4375%20-1.625%203.4375%20-2%201%20C-1.34%200.67%20-0.68%200.34%200%200%20Z%20'%20fill='%230D0026'%20transform='translate(182,471)'/%3e%3cpath%20d='M0%200%20C0.33%201.32%200.66%202.64%201%204%20C3.31%204%205.62%204%208%204%20C8%204.33%208%204.66%208%205%20C4.7%205%201.4%205%20-2%205%20C-1.34%203.35%20-0.68%201.7%200%200%20Z%20'%20fill='%23DFFF99'%20transform='translate(638,451)'/%3e%3c/svg%3e",
785
+ src: "data:image/svg+xml,%3c?xml%20version='1.0'%20encoding='UTF-8'?%3e%3c!DOCTYPE%20svg%20PUBLIC%20'-//W3C//DTD%20SVG%201.1//EN'%20'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'%3e%3c!--%20Creator:%20CorelDRAW%202020%20(64-Bit)%20--%3e%3csvg%20xmlns='http://www.w3.org/2000/svg'%20xml:space='preserve'%20width='1024'%20height='262'%20version='1.1'%20style='shape-rendering:geometricPrecision;%20text-rendering:geometricPrecision;%20image-rendering:optimizeQuality;%20fill-rule:evenodd;%20clip-rule:evenodd'%20viewBox='1661.62%203068.43%208348.08%202136.02'%20xmlns:xlink='http://www.w3.org/1999/xlink'%20xmlns:xodm='http://www.corel.com/coreldraw/odm/2003'%3e%3cdefs%3e%3cstyle%20type='text/css'%3e%3c![CDATA[%20.fil0%20{fill:none}%20.fil1%20{fill:%2331106F}%20.fil2%20{fill:%23BCFF2E}%20]]%3e%3c/style%3e%3cclipPath%20id='id0'%3e%3cpath%20d='M7019.56%203547.95l116.29%200.94%201.21%20175.49%20-147.35%205.59%20-0.7%20227.87%20144.92%204.05c30,184.02%20-43.07,483.22%2057.01,656.94%20113.85,197.63%20495.67,218.13%20705.04,-85.78%2051.2,-74.32%2093.13,-147.48%20172.3,-185.8%20126.71,-61.33%20518.73,-11.78%20691.7,-30.73%202.83,-175.73%20-7.55,-289.05%20-92.81,-408.89%20-60.7,-85.3%20-171.47,-170.69%20-319.21,-186.77%20-304.19,-33.12%20-534.26,180.2%20-553.67,454.78%2044.78,-22.98%2079.06,-69.98%20181.52,-96.45%2032.79,-8.47%2090.5,-3.12%20111.48,-28.82%2018.01,-22.05%2020.78,-43.97%2072.17,-75.17%20159.31,-96.73%20347.73,29.03%20339.28,164.03%20-142.7,7.31%20-361.67,-17.5%20-489.37,16.06%20-140.56,36.93%20-208.92,111.53%20-280.65,224.44%20-111.52,175.55%20-264.77,152.81%20-303.63,68.34%20-26.86,-58.38%20-21.58,-401.09%20-14.11,-484.61l229.61%20-2.23%200.94%20-233.44%20-231.52%200.41%20-0.62%20-179.31%20124.86%20-1.69c-3.83,-10.39%20-228.64,-368.72%20-253.2,-388.59%20-22.07,22.13%20-253.24,363.34%20-261.49,389.33z'/%3e%3c/clipPath%3e%3cclipPath%20id='id1'%3e%3cpath%20d='M2078.94%203670.24c159.83,-7.32%20357.13,-19.32%20472.45,57.5%20173.65,115.67%20212.68,385.1%20119.44,563.46%20-38.21,73.09%20-63.26,94.83%20-123.9,135.69%20-111.57,75.18%20-317.6,59.13%20-467.61,53.98l-0.38%20-810.63zm-276.86%201064.91c125,14.11%20329.17,2.43%20460.78,2.23%20156.32,-0.24%20272.8,-5.93%20398.39,-69.64%20191.13,-96.97%20338.35,-298.16%20337.02,-595.21%20-1.31,-294.43%20-142.82,-497.09%20-336.68,-595.19%20-125.99,-63.75%20-232.04,-74.34%20-391.72,-74.46%20-143.24,-0.11%20-326.74,-9.83%20-465.06,1.09l-2.74%201331.18z'/%3e%3c/clipPath%3e%3cclipPath%20id='id2'%3e%3cpath%20d='M9614.74%203834.29l-46.72%20-41.47c-138.25,-99.07%20-334.21,-85.36%20-468.73,-0.69%20-414.78,261.07%20-226.81,1041.5%20301.45,954.31%20154.89,-25.56%20186.57,-103.74%20222.13,-118.19l0.24%20108.18%20263.97%200.02%20-0.39%20-838.39c-18.43,13.93%20-48.93,69.07%20-65.94,89.32%20-25.72,30.6%20-48.01,57.5%20-78.11,83.26%20-167.24,143.1%20-94.11,310.72%20-227.73,403.94%20-68.29,47.65%20-171.03,51.28%20-246.4,10.84%20-209.85,-112.59%20-156.35,-582.78%20163.37,-520.33%20112.36,21.94%20129,90.83%20172.28,148.57%2015.91,-15.81%2037.83,-53.2%2053.12,-72.16%2064.66,-80.19%20114.17,-89.27%20177.07,-222.77%2061.72,-130.98%2060.11,-303.47%2052.06,-463.53l-270.72%20-3.54%20-0.95%20482.63z'/%3e%3c/clipPath%3e%3cclipPath%20id='id3'%3e%3cpath%20d='M3161.22%204831.35l-92.77%20203.85c78.25,38.44%2098.32,70.5%20225.99,78.52%20302.98,19.03%20381.34,-240.89%20467.04,-461.49l257.64%20-668.9c29.08,-74.94%2063.09,-152.79%2086.33,-229.54l-263.44%200.51c-37.04,55.73%20-219.42,586.81%20-240.97,624.5%20-13.08,22.88%20-2.8,7.62%20-14.3,18.5l-255.18%20-643.03%20-276.71%20-0.1c16.19,57.21%20103.58,256.17%20132.23,327.94%2034.05,85.27%20265.63,616.64%20263.35,656.78%20-3.46,60.89%20-50.47,117.08%20-103.77,129.47%20-88.87,20.66%20-123.22,-18.17%20-185.44,-37.02z'/%3e%3c/clipPath%3e%3cclipPath%20id='id4'%3e%3cpath%20d='M5143.22%204139.09c-6.73,-101.89%20111.69,-194.23%20221.68,-196.5%20117.41,-2.43%20224.06,87.5%20220.17,197.41l-441.84%20-0.91zm633.27%20438.8c-17.69,-24.65%20-122.26,-138.6%20-151.8,-155.07%20-152.04,151.57%20-441.06,128.69%20-483.11,-102.48l705.8%20-1.63c4.33,-164.63%20-12.93,-333.13%20-120.41,-446.83%20-10.68,-11.3%20-19.05,-15.55%20-29.4,-26.63%20-192.76,-206.34%20-635.23,-182.56%20-785.73,181.19%20-47.98,116%20-53.07,265.87%20-9.89,390.06%2041.91,120.53%20115.6,205.98%20201.53,261.63%20235.37,152.43%20548.23,71.01%20673.01,-100.25z'/%3e%3c/clipPath%3e%3cclipPath%20id='id5'%3e%3cpath%20d='M6900.13%204479.24l-216.65%20-106.13c-94.39,220.74%20-451.35,190.63%20-456.28,-131.88%20-3.8,-248.59%20201.16,-328.92%20347.79,-255.91%2061.39,30.57%2074.15,63.4%20108.73,113.58l213.52%20-124.59c-24.88,-82.21%20-136.62,-175.09%20-218.2,-212.33%20-313.13,-142.93%20-727.02,56.62%20-718.49,486.1%2012.33,620.41%20813,640.07%20939.58,231.17z'/%3e%3c/clipPath%3e%3cclipPath%20id='id6'%3e%3cpath%20d='M4202.91%204736.74l266.53%200.01c-0.89,-89.19%20-4.33,-461.84%204.33,-524.3%2027.5,-198.37%20150.28,-221.17%20310.03,-210.49l1.61%20-262.4c-135.89,1.56%20-220.93,26.99%20-277.8,114.22%20-95.37,146.26%20-23.58,63.06%20-159.07,234.02%20-172.05,217.09%20-140.76,329.63%20-145.63,648.94z'/%3e%3c/clipPath%3e%3cclipPath%20id='id7'%3e%3cpath%20d='M7940.92%204615.03c193.33,193.93%20581.52,193.25%20747.86,-37.14%20-43.44,-57.2%20-123.12,-128.48%20-144.41,-154.51%20-28.63,14.07%20-168.76,159.23%20-357.78,70.32%20-83.06,-39.07%20-56.28,-54.26%20-100.76,-70.63%20-23.56,26.5%20-131.15,156.27%20-144.91,191.96z'/%3e%3c/clipPath%3e%3cclipPath%20id='id8'%3e%3cpath%20d='M4202.98%204158.67c51.11,-119.58%20208.03,-206.44%20235.35,-403.87%20-49.13,-1.92%20-195.43,-7.67%20-234.96,4.19l-0.39%20399.68z'/%3e%3c/clipPath%3e%3c/defs%3e%3cg%20id='Layer_x0020_1'%3e%3cmetadata%20id='CorelCorpID_0Corel-Layer'/%3e%3crect%20class='fil0'%20x='-0.21'%20y='2.81'%20width='11692.91'%20height='8267.72'/%3e%3crect%20class='fil0'%20x='-0.21'%20y='2.81'%20width='11692.91'%20height='8267.72'/%3e%3cg%20id='_2489101208096'%3e%3cpath%20class='fil1'%20d='M7019.56%203547.95l116.29%200.94%201.21%20175.49%20-147.35%205.59%20-0.7%20227.87%20144.92%204.05c30,184.02%20-43.07,483.22%2057.01,656.94%20113.85,197.63%20495.67,218.13%20705.04,-85.78%2051.2,-74.32%2093.13,-147.48%20172.3,-185.8%20126.71,-61.33%20518.73,-11.78%20691.7,-30.73%202.83,-175.73%20-7.55,-289.05%20-92.81,-408.89%20-60.7,-85.3%20-171.47,-170.69%20-319.21,-186.77%20-304.19,-33.12%20-534.26,180.2%20-553.67,454.78%2044.78,-22.98%2079.06,-69.98%20181.52,-96.45%2032.79,-8.47%2090.5,-3.12%20111.48,-28.82%2018.01,-22.05%2020.78,-43.97%2072.17,-75.17%20159.31,-96.73%20347.73,29.03%20339.28,164.03%20-142.7,7.31%20-361.67,-17.5%20-489.37,16.06%20-140.56,36.93%20-208.92,111.53%20-280.65,224.44%20-111.52,175.55%20-264.77,152.81%20-303.63,68.34%20-26.86,-58.38%20-21.58,-401.09%20-14.11,-484.61l229.61%20-2.23%200.94%20-233.44%20-231.52%200.41%20-0.62%20-179.31%20124.86%20-1.69c-3.83,-10.39%20-228.64,-368.72%20-253.2,-388.59%20-22.07,22.13%20-253.24,363.34%20-261.49,389.33z'/%3e%3cg%20style='clip-path:url(%23id0)'%3e%3cg%3e%3crect%20class='fil2'%20x='6906.6'%20y='3029.49'%20width='770.45'%20height='1803.81'/%3e%3c/g%3e%3c/g%3e%3cpath%20class='fil0'%20d='M7019.56%203547.95l116.29%200.94%201.21%20175.49%20-147.35%205.59%20-0.7%20227.87%20144.92%204.05c30,184.02%20-43.07,483.22%2057.01,656.94%20113.85,197.63%20495.67,218.13%20705.04,-85.78%2051.2,-74.32%2093.13,-147.48%20172.3,-185.8%20126.71,-61.33%20518.73,-11.78%20691.7,-30.73%202.83,-175.73%20-7.55,-289.05%20-92.81,-408.89%20-60.7,-85.3%20-171.47,-170.69%20-319.21,-186.77%20-304.19,-33.12%20-534.26,180.2%20-553.67,454.78%2044.78,-22.98%2079.06,-69.98%20181.52,-96.45%2032.79,-8.47%2090.5,-3.12%20111.48,-28.82%2018.01,-22.05%2020.78,-43.97%2072.17,-75.17%20159.31,-96.73%20347.73,29.03%20339.28,164.03%20-142.7,7.31%20-361.67,-17.5%20-489.37,16.06%20-140.56,36.93%20-208.92,111.53%20-280.65,224.44%20-111.52,175.55%20-264.77,152.81%20-303.63,68.34%20-26.86,-58.38%20-21.58,-401.09%20-14.11,-484.61l229.61%20-2.23%200.94%20-233.44%20-231.52%200.41%20-0.62%20-179.31%20124.86%20-1.69c-3.83,-10.39%20-228.64,-368.72%20-253.2,-388.59%20-22.07,22.13%20-253.24,363.34%20-261.49,389.33z'/%3e%3cpath%20class='fil1'%20d='M2078.94%203670.24c159.83,-7.32%20357.13,-19.32%20472.45,57.5%20173.65,115.67%20212.68,385.1%20119.44,563.46%20-38.21,73.09%20-63.26,94.83%20-123.9,135.69%20-111.57,75.18%20-317.6,59.13%20-467.61,53.98l-0.38%20-810.63zm-276.86%201064.91c125,14.11%20329.17,2.43%20460.78,2.23%20156.32,-0.24%20272.8,-5.93%20398.39,-69.64%20191.13,-96.97%20338.35,-298.16%20337.02,-595.21%20-1.31,-294.43%20-142.82,-497.09%20-336.68,-595.19%20-125.99,-63.75%20-232.04,-74.34%20-391.72,-74.46%20-143.24,-0.11%20-326.74,-9.83%20-465.06,1.09l-2.74%201331.18z'/%3e%3cg%20style='clip-path:url(%23id1)'%3e%3cg%3e%3crect%20class='fil2'%20x='6906.6'%20y='3029.49'%20width='770.45'%20height='1803.81'/%3e%3c/g%3e%3c/g%3e%3cpath%20class='fil0'%20d='M2078.94%203670.24c159.83,-7.32%20357.13,-19.32%20472.45,57.5%20173.65,115.67%20212.68,385.1%20119.44,563.46%20-38.21,73.09%20-63.26,94.83%20-123.9,135.69%20-111.57,75.18%20-317.6,59.13%20-467.61,53.98l-0.38%20-810.63zm-276.86%201064.91c125,14.11%20329.17,2.43%20460.78,2.23%20156.32,-0.24%20272.8,-5.93%20398.39,-69.64%20191.13,-96.97%20338.35,-298.16%20337.02,-595.21%20-1.31,-294.43%20-142.82,-497.09%20-336.68,-595.19%20-125.99,-63.75%20-232.04,-74.34%20-391.72,-74.46%20-143.24,-0.11%20-326.74,-9.83%20-465.06,1.09l-2.74%201331.18z'/%3e%3cpath%20class='fil1'%20d='M9614.74%203834.29l-46.72%20-41.47c-138.25,-99.07%20-334.21,-85.36%20-468.73,-0.69%20-414.78,261.07%20-226.81,1041.5%20301.45,954.31%20154.89,-25.56%20186.57,-103.74%20222.13,-118.19l0.24%20108.18%20263.97%200.02%20-0.39%20-838.39c-18.43,13.93%20-48.93,69.07%20-65.94,89.32%20-25.72,30.6%20-48.01,57.5%20-78.11,83.26%20-167.24,143.1%20-94.11,310.72%20-227.73,403.94%20-68.29,47.65%20-171.03,51.28%20-246.4,10.84%20-209.85,-112.59%20-156.35,-582.78%20163.37,-520.33%20112.36,21.94%20129,90.83%20172.28,148.57%2015.91,-15.81%2037.83,-53.2%2053.12,-72.16%2064.66,-80.19%20114.17,-89.27%20177.07,-222.77%2061.72,-130.98%2060.11,-303.47%2052.06,-463.53l-270.72%20-3.54%20-0.95%20482.63z'/%3e%3cg%20style='clip-path:url(%23id2)'%3e%3cg%3e%3crect%20class='fil2'%20x='6906.6'%20y='3029.49'%20width='770.45'%20height='1803.81'/%3e%3c/g%3e%3c/g%3e%3cpath%20class='fil0'%20d='M9614.74%203834.29l-46.72%20-41.47c-138.25,-99.07%20-334.21,-85.36%20-468.73,-0.69%20-414.78,261.07%20-226.81,1041.5%20301.45,954.31%20154.89,-25.56%20186.57,-103.74%20222.13,-118.19l0.24%20108.18%20263.97%200.02%20-0.39%20-838.39c-18.43,13.93%20-48.93,69.07%20-65.94,89.32%20-25.72,30.6%20-48.01,57.5%20-78.11,83.26%20-167.24,143.1%20-94.11,310.72%20-227.73,403.94%20-68.29,47.65%20-171.03,51.28%20-246.4,10.84%20-209.85,-112.59%20-156.35,-582.78%20163.37,-520.33%20112.36,21.94%20129,90.83%20172.28,148.57%2015.91,-15.81%2037.83,-53.2%2053.12,-72.16%2064.66,-80.19%20114.17,-89.27%20177.07,-222.77%2061.72,-130.98%2060.11,-303.47%2052.06,-463.53l-270.72%20-3.54%20-0.95%20482.63z'/%3e%3cpath%20class='fil1'%20d='M3161.22%204831.35l-92.77%20203.85c78.25,38.44%2098.32,70.5%20225.99,78.52%20302.98,19.03%20381.34,-240.89%20467.04,-461.49l257.64%20-668.9c29.08,-74.94%2063.09,-152.79%2086.33,-229.54l-263.44%200.51c-37.04,55.73%20-219.42,586.81%20-240.97,624.5%20-13.08,22.88%20-2.8,7.62%20-14.3,18.5l-255.18%20-643.03%20-276.71%20-0.1c16.19,57.21%20103.58,256.17%20132.23,327.94%2034.05,85.27%20265.63,616.64%20263.35,656.78%20-3.46,60.89%20-50.47,117.08%20-103.77,129.47%20-88.87,20.66%20-123.22,-18.17%20-185.44,-37.02z'/%3e%3cg%20style='clip-path:url(%23id3)'%3e%3cg%3e%3crect%20class='fil2'%20x='6906.6'%20y='3029.49'%20width='770.45'%20height='1803.81'/%3e%3c/g%3e%3c/g%3e%3cpath%20class='fil0'%20d='M3161.22%204831.35l-92.77%20203.85c78.25,38.44%2098.32,70.5%20225.99,78.52%20302.98,19.03%20381.34,-240.89%20467.04,-461.49l257.64%20-668.9c29.08,-74.94%2063.09,-152.79%2086.33,-229.54l-263.44%200.51c-37.04,55.73%20-219.42,586.81%20-240.97,624.5%20-13.08,22.88%20-2.8,7.62%20-14.3,18.5l-255.18%20-643.03%20-276.71%20-0.1c16.19,57.21%20103.58,256.17%20132.23,327.94%2034.05,85.27%20265.63,616.64%20263.35,656.78%20-3.46,60.89%20-50.47,117.08%20-103.77,129.47%20-88.87,20.66%20-123.22,-18.17%20-185.44,-37.02z'/%3e%3cpath%20class='fil1'%20d='M5143.22%204139.09c-6.73,-101.89%20111.69,-194.23%20221.68,-196.5%20117.41,-2.43%20224.06,87.5%20220.17,197.41l-441.84%20-0.91zm633.27%20438.8c-17.69,-24.65%20-122.26,-138.6%20-151.8,-155.07%20-152.04,151.57%20-441.06,128.69%20-483.11,-102.48l705.8%20-1.63c4.33,-164.63%20-12.93,-333.13%20-120.41,-446.83%20-10.68,-11.3%20-19.05,-15.55%20-29.4,-26.63%20-192.76,-206.34%20-635.23,-182.56%20-785.73,181.19%20-47.98,116%20-53.07,265.87%20-9.89,390.06%2041.91,120.53%20115.6,205.98%20201.53,261.63%20235.37,152.43%20548.23,71.01%20673.01,-100.25z'/%3e%3cg%20style='clip-path:url(%23id4)'%3e%3cg%3e%3crect%20class='fil2'%20x='6906.6'%20y='3029.49'%20width='770.45'%20height='1803.81'/%3e%3c/g%3e%3c/g%3e%3cpath%20class='fil0'%20d='M5143.22%204139.09c-6.73,-101.89%20111.69,-194.23%20221.68,-196.5%20117.41,-2.43%20224.06,87.5%20220.17,197.41l-441.84%20-0.91zm633.27%20438.8c-17.69,-24.65%20-122.26,-138.6%20-151.8,-155.07%20-152.04,151.57%20-441.06,128.69%20-483.11,-102.48l705.8%20-1.63c4.33,-164.63%20-12.93,-333.13%20-120.41,-446.83%20-10.68,-11.3%20-19.05,-15.55%20-29.4,-26.63%20-192.76,-206.34%20-635.23,-182.56%20-785.73,181.19%20-47.98,116%20-53.07,265.87%20-9.89,390.06%2041.91,120.53%20115.6,205.98%20201.53,261.63%20235.37,152.43%20548.23,71.01%20673.01,-100.25z'/%3e%3cpath%20class='fil1'%20d='M6900.13%204479.24l-216.65%20-106.13c-94.39,220.74%20-451.35,190.63%20-456.28,-131.88%20-3.8,-248.59%20201.16,-328.92%20347.79,-255.91%2061.39,30.57%2074.15,63.4%20108.73,113.58l213.52%20-124.59c-24.88,-82.21%20-136.62,-175.09%20-218.2,-212.33%20-313.13,-142.93%20-727.02,56.62%20-718.49,486.1%2012.33,620.41%20813,640.07%20939.58,231.17z'/%3e%3cg%20style='clip-path:url(%23id5)'%3e%3cg%3e%3crect%20class='fil2'%20x='6906.6'%20y='3029.49'%20width='770.45'%20height='1803.81'/%3e%3c/g%3e%3c/g%3e%3cpath%20class='fil0'%20d='M6900.13%204479.24l-216.65%20-106.13c-94.39,220.74%20-451.35,190.63%20-456.28,-131.88%20-3.8,-248.59%20201.16,-328.92%20347.79,-255.91%2061.39,30.57%2074.15,63.4%20108.73,113.58l213.52%20-124.59c-24.88,-82.21%20-136.62,-175.09%20-218.2,-212.33%20-313.13,-142.93%20-727.02,56.62%20-718.49,486.1%2012.33,620.41%20813,640.07%20939.58,231.17z'/%3e%3cpath%20class='fil1'%20d='M4202.91%204736.74l266.53%200.01c-0.89,-89.19%20-4.33,-461.84%204.33,-524.3%2027.5,-198.37%20150.28,-221.17%20310.03,-210.49l1.61%20-262.4c-135.89,1.56%20-220.93,26.99%20-277.8,114.22%20-95.37,146.26%20-23.58,63.06%20-159.07,234.02%20-172.05,217.09%20-140.76,329.63%20-145.63,648.94z'/%3e%3cg%20style='clip-path:url(%23id6)'%3e%3cg%3e%3crect%20class='fil2'%20x='6906.6'%20y='3029.49'%20width='770.45'%20height='1803.81'/%3e%3c/g%3e%3c/g%3e%3cpath%20class='fil0'%20d='M4202.91%204736.74l266.53%200.01c-0.89,-89.19%20-4.33,-461.84%204.33,-524.3%2027.5,-198.37%20150.28,-221.17%20310.03,-210.49l1.61%20-262.4c-135.89,1.56%20-220.93,26.99%20-277.8,114.22%20-95.37,146.26%20-23.58,63.06%20-159.07,234.02%20-172.05,217.09%20-140.76,329.63%20-145.63,648.94z'/%3e%3cpath%20class='fil1'%20d='M7940.92%204615.03c193.33,193.93%20581.52,193.25%20747.86,-37.14%20-43.44,-57.2%20-123.12,-128.48%20-144.41,-154.51%20-28.63,14.07%20-168.76,159.23%20-357.78,70.32%20-83.06,-39.07%20-56.28,-54.26%20-100.76,-70.63%20-23.56,26.5%20-131.15,156.27%20-144.91,191.96z'/%3e%3cg%20style='clip-path:url(%23id7)'%3e%3cg%3e%3crect%20class='fil2'%20x='6906.6'%20y='3029.49'%20width='770.45'%20height='1803.81'/%3e%3c/g%3e%3c/g%3e%3cpath%20class='fil0'%20d='M7940.92%204615.03c193.33,193.93%20581.52,193.25%20747.86,-37.14%20-43.44,-57.2%20-123.12,-128.48%20-144.41,-154.51%20-28.63,14.07%20-168.76,159.23%20-357.78,70.32%20-83.06,-39.07%20-56.28,-54.26%20-100.76,-70.63%20-23.56,26.5%20-131.15,156.27%20-144.91,191.96z'/%3e%3cpath%20class='fil1'%20d='M4202.98%204158.67c51.11,-119.58%20208.03,-206.44%20235.35,-403.87%20-49.13,-1.92%20-195.43,-7.67%20-234.96,4.19l-0.39%20399.68z'/%3e%3cg%20style='clip-path:url(%23id8)'%3e%3cg%3e%3crect%20class='fil2'%20x='6906.6'%20y='3029.49'%20width='770.45'%20height='1803.81'/%3e%3c/g%3e%3c/g%3e%3cpath%20class='fil0'%20d='M4202.98%204158.67c51.11,-119.58%20208.03,-206.44%20235.35,-403.87%20-49.13,-1.92%20-195.43,-7.67%20-234.96,4.19l-0.39%20399.68z'/%3e%3c/g%3e%3c/g%3e%3c/svg%3e",
901
786
  alt: "Dyrected",
902
787
  className: "dy-h-8 dy-w-auto"
903
788
  })
@@ -919,7 +804,7 @@ function SidebarInner({ schemas, isLoading, location, logout, isEmbedded, collap
919
804
  }) }),
920
805
  uploadCollections.length > 0 && /* @__PURE__ */ jsxs("div", { children: [groupLabel("Media"), uploadCollections.map((col) => /* @__PURE__ */ jsx(NavItem, {
921
806
  to: `/collections/${col.slug}`,
922
- icon: resolveAdminIcon(col.admin?.icon, Image$1),
807
+ icon: resolveAdminIcon(col.admin?.icon, Image),
923
808
  label: col.labels?.plural ?? col.label ?? col.slug,
924
809
  active: location.pathname.startsWith(`/collections/${col.slug}`),
925
810
  collapsed,
@@ -1045,7 +930,7 @@ function isNewerVersion(latest, current) {
1045
930
  return false;
1046
931
  }
1047
932
  function useUpdateCheck() {
1048
- const currentVersion = "2.6.0";
933
+ const currentVersion = "2.6.2";
1049
934
  const [updateInfo, setUpdateInfo] = useState(() => {
1050
935
  if (typeof window === "undefined") return null;
1051
936
  const cacheKey = "dyrected_latest_release";
@@ -1271,7 +1156,7 @@ function getStatusLabel(doc) {
1271
1156
  }
1272
1157
  function Dashboard() {
1273
1158
  const { client, components, user } = useDyrected();
1274
- const currentVersion = "2.6.0";
1159
+ const currentVersion = "2.6.2";
1275
1160
  const [latestVersion, setLatestVersion] = useState(() => {
1276
1161
  if (typeof window === "undefined") return null;
1277
1162
  return localStorage.getItem("dyrected_latest_release");
@@ -1337,7 +1222,19 @@ function Dashboard() {
1337
1222
  const aTime = a.updatedAt ? new Date(a.updatedAt).getTime() : 0;
1338
1223
  return (b.updatedAt ? new Date(b.updatedAt).getTime() : 0) - aTime;
1339
1224
  }).slice(0, 6);
1225
+ const { error: storageQueryError } = useQuery({
1226
+ queryKey: ["dashboard-storage-check", uploadCollection?.slug],
1227
+ queryFn: () => client.listMedia({ limit: 1 }, uploadCollection?.slug || "media"),
1228
+ enabled: !!client && !!uploadCollection,
1229
+ retry: false
1230
+ });
1340
1231
  const attentionItems = [
1232
+ ...schemas?.hasStorage === false || isStorageNotConfiguredError(storageQueryError) ? [{
1233
+ key: "storage-not-configured",
1234
+ title: "Media storage is not set up",
1235
+ description: "File uploads are disabled. Ask your developer to configure a media storage provider in Dyrected.",
1236
+ to: "/setup"
1237
+ }] : [],
1341
1238
  ...hasUpdate ? [{
1342
1239
  key: "dyrected-update",
1343
1240
  title: `A system update is available (v${latestVersion})`,
@@ -2160,89 +2057,6 @@ var TableCaption = React$1.forwardRef(({ className, ...props }, ref) => /* @__PU
2160
2057
  }));
2161
2058
  TableCaption.displayName = "TableCaption";
2162
2059
  //#endregion
2163
- //#region src/hooks/use-preferences.ts
2164
- function arePreferenceValuesEqual(a, b) {
2165
- if (Object.is(a, b)) return true;
2166
- try {
2167
- return JSON.stringify(a) === JSON.stringify(b);
2168
- } catch {
2169
- return false;
2170
- }
2171
- }
2172
- /**
2173
- * A hook to manage and persist user preferences in the Admin UI.
2174
- * Uses localStorage for immediate persistence and syncs to the user profile
2175
- * when an authenticated Dyrected client is available.
2176
- */
2177
- function usePreferences(key, defaultValue) {
2178
- const { client, user } = useDyrected();
2179
- const localStorageKey = `dyrected_pref_${key}`;
2180
- const localWriteVersionRef = React$1.useRef(0);
2181
- const defaultValueRef = React$1.useRef(defaultValue);
2182
- defaultValueRef.current = defaultValue;
2183
- const [value, setValue] = React$1.useState(() => {
2184
- if (typeof window === "undefined") return defaultValue;
2185
- try {
2186
- const stored = window.localStorage.getItem(localStorageKey);
2187
- return stored ? JSON.parse(stored) : defaultValue;
2188
- } catch (e) {
2189
- console.warn(`[usePreferences] Error loading key "${key}":`, e);
2190
- return defaultValue;
2191
- }
2192
- });
2193
- React$1.useEffect(() => {
2194
- if (typeof window === "undefined") return;
2195
- try {
2196
- const stored = window.localStorage.getItem(localStorageKey);
2197
- const nextValue = stored ? JSON.parse(stored) : defaultValueRef.current;
2198
- setValue((prev) => arePreferenceValuesEqual(prev, nextValue) ? prev : nextValue);
2199
- } catch (e) {
2200
- console.warn(`[usePreferences] Error syncing key "${key}":`, e);
2201
- }
2202
- }, [key, localStorageKey]);
2203
- React$1.useEffect(() => {
2204
- if (!client || !user) return;
2205
- let cancelled = false;
2206
- const writeVersion = localWriteVersionRef.current;
2207
- client.getPreference(key).then((result) => {
2208
- if (cancelled || result.value === null || localWriteVersionRef.current !== writeVersion) return;
2209
- setValue((prev) => arePreferenceValuesEqual(prev, result.value) ? prev : result.value);
2210
- if (typeof window !== "undefined") window.localStorage.setItem(localStorageKey, JSON.stringify(result.value));
2211
- }).catch((e) => {
2212
- console.warn(`[usePreferences] Error loading remote key "${key}":`, e);
2213
- });
2214
- return () => {
2215
- cancelled = true;
2216
- };
2217
- }, [
2218
- client,
2219
- user,
2220
- key,
2221
- localStorageKey
2222
- ]);
2223
- return [value, React$1.useCallback((updater) => {
2224
- setValue((prev) => {
2225
- localWriteVersionRef.current += 1;
2226
- const newValue = typeof updater === "function" ? updater(prev) : updater;
2227
- if (arePreferenceValuesEqual(prev, newValue)) return prev;
2228
- if (typeof window !== "undefined") try {
2229
- window.localStorage.setItem(localStorageKey, JSON.stringify(newValue));
2230
- } catch (e) {
2231
- console.warn(`[usePreferences] Error saving key "${key}":`, e);
2232
- }
2233
- if (client && user) client.setPreference(key, newValue).catch((e) => {
2234
- console.warn(`[usePreferences] Error saving remote key "${key}":`, e);
2235
- });
2236
- return newValue;
2237
- });
2238
- }, [
2239
- client,
2240
- user,
2241
- key,
2242
- localStorageKey
2243
- ])];
2244
- }
2245
- //#endregion
2246
2060
  //#region src/components/ui/data-table.tsx
2247
2061
  var EMPTY_VISIBILITY = {};
2248
2062
  function DataTable({ columns, data, searchPlaceholder, searchValue, onSearchChange, rowSelection: externalRowSelection, onRowSelectionChange, bulkActions, toolbarActions, persistenceKey, initialColumnVisibility, hideViewButton = false }) {
@@ -3730,102 +3544,10 @@ function Pagination({ page, totalPages, total, hasPrevPage, hasNextPage, onPageC
3730
3544
  });
3731
3545
  }
3732
3546
  //#endregion
3733
- //#region src/lib/external-media.ts
3734
- var YOUTUBE_RE = /(?:youtu\.be\/|youtube\.com\/(?:v\/|u\/\w\/|embed\/|watch\?v=))([^#&?]*)/;
3735
- var VIMEO_RE = /vimeo\.com\/(?:video\/)?([0-9]+)/;
3736
- var IMAGE_RE = /\.(jpeg|jpg|gif|png|webp|svg|avif)(?:\?.*)?$/i;
3737
- /** Extract the trailing filename from a URL, stripping any query string. */
3738
- function filenameFromUrl(url, fallback) {
3739
- return url.split("/").pop()?.split("?")[0] || fallback;
3740
- }
3741
- /**
3742
- * Build a media document payload from an external URL.
3743
- * Returns `null` when the input is empty/whitespace.
3744
- */
3745
- function buildExternalMediaPayload(rawUrl) {
3746
- const url = rawUrl.trim();
3747
- if (!url) return null;
3748
- const yt = url.match(YOUTUBE_RE);
3749
- if (yt && yt[1]) return {
3750
- filename: `YouTube: ${yt[1]}`,
3751
- url,
3752
- mimeType: "video/youtube",
3753
- filesize: 0,
3754
- id: `yt_${yt[1]}`
3755
- };
3756
- const vimeo = url.match(VIMEO_RE);
3757
- if (vimeo && vimeo[1]) return {
3758
- filename: `Vimeo: ${vimeo[1]}`,
3759
- url,
3760
- mimeType: "video/vimeo",
3761
- filesize: 0,
3762
- id: `vm_${vimeo[1]}`
3763
- };
3764
- if (IMAGE_RE.test(url)) return {
3765
- filename: filenameFromUrl(url, "External Image"),
3766
- url,
3767
- mimeType: "image/external",
3768
- filesize: 0,
3769
- id: `img_${Math.random().toString(36).substring(7)}`
3770
- };
3771
- return {
3772
- filename: filenameFromUrl(url, "External File"),
3773
- url,
3774
- mimeType: "application/octet-stream",
3775
- filesize: 0,
3776
- id: `ext_${Math.random().toString(36).substring(7)}`
3777
- };
3778
- }
3779
- /**
3780
- * Resolves the thumbnail/preview image URL for any media item — external or uploaded.
3781
- *
3782
- * This is the single source of truth used by every media surface (grid, picker,
3783
- * library dialog) so YouTube, Vimeo, external images, and uploaded files all render
3784
- * consistently everywhere.
3785
- * - `video/youtube` → the YouTube thumbnail for the video id
3786
- * - `video/vimeo` → the Vimeo logo placeholder
3787
- * - `image/external`→ the external URL itself
3788
- * - anything else → resolved through {@link getMediaUrl}
3789
- */
3790
- function getMediaPreviewUrl(item, baseUrl) {
3791
- if (!item) return "";
3792
- const obj = typeof item === "object" && item !== null ? item : null;
3793
- const mimeType = obj ? obj.mimeType : void 0;
3794
- const url = obj ? obj.url : void 0;
3795
- if (mimeType === "video/youtube") {
3796
- const match = url?.match(YOUTUBE_RE);
3797
- const videoId = match && match[1];
3798
- return videoId ? `https://img.youtube.com/vi/${videoId}/mqdefault.jpg` : "";
3799
- }
3800
- if (mimeType === "video/vimeo") return "https://vimeo.com/assets/images/logo_vimeo_blue.png";
3801
- if (mimeType === "image/external") return url || "";
3802
- return getMediaUrl(item, baseUrl);
3803
- }
3804
- /**
3805
- * Returns the player embed URL for an external video item (YouTube/Vimeo), or
3806
- * `null` for anything that isn't an embeddable video. Used to render an inline
3807
- * iframe player instead of a static thumbnail.
3808
- */
3809
- function getVideoEmbedUrl(item) {
3810
- const obj = typeof item === "object" && item !== null ? item : null;
3811
- if (!obj) return null;
3812
- const mimeType = obj.mimeType;
3813
- const url = obj.url || "";
3814
- if (mimeType === "video/youtube") {
3815
- const m = url.match(YOUTUBE_RE);
3816
- return m && m[1] ? `https://www.youtube.com/embed/${m[1]}` : null;
3817
- }
3818
- if (mimeType === "video/vimeo") {
3819
- const m = url.match(VIMEO_RE);
3820
- return m && m[1] ? `https://player.vimeo.com/video/${m[1]}` : null;
3821
- }
3822
- return null;
3823
- }
3824
- //#endregion
3825
3547
  //#region src/components/media/media-card.tsx
3826
3548
  function MediaCard$1({ item, baseUrl, onDelete, editPath }) {
3827
3549
  return /* @__PURE__ */ jsxs("div", {
3828
- className: "dy-group dy-relative dy-aspect-square dy-rounded-2xl dy-overflow-hidden dy-bg-background dy-border dy-border-border/40 dy-shadow-sm hover:dy-shadow-xl hover:dy-border-primary/20 dy-transition-all dy-duration-300",
3550
+ className: "dy-group dy-relative dy-aspect-square dy-rounded-lg dy-overflow-hidden dy-bg-background dy-border dy-border-border/40 dy-shadow-sm hover:dy-shadow-xl hover:dy-border-primary/20 dy-transition-all dy-duration-300",
3829
3551
  children: [
3830
3552
  /* @__PURE__ */ jsx("img", {
3831
3553
  src: getMediaPreviewUrl(item, baseUrl),
@@ -4009,135 +3731,152 @@ var TabsContent = React$1.forwardRef(({ className, ...props }, ref) => /* @__PUR
4009
3731
  }));
4010
3732
  TabsContent.displayName = TabsPrimitive.Content.displayName;
4011
3733
  //#endregion
4012
- //#region src/hooks/use-add-media-from-url.ts
4013
- /**
4014
- * Shared behavior for the "add media from a URL" flow used by both the media page
4015
- * upload dialog and the media library picker dialog. Owns the URL input state and
4016
- * the detect create → callback pipeline so every surface behaves identically for
4017
- * YouTube, Vimeo, external images, and generic files.
4018
- */
4019
- function useAddMediaFromUrl({ collection, onAdded, onError }) {
4020
- const { client } = useDyrected();
4021
- const [url, setUrl] = React$1.useState("");
4022
- const [isSubmitting, setIsSubmitting] = React$1.useState(false);
4023
- return {
4024
- url,
4025
- setUrl,
4026
- submit: React$1.useCallback(async () => {
4027
- const payload = buildExternalMediaPayload(url);
4028
- if (!payload || !client) return;
4029
- setIsSubmitting(true);
4030
- try {
4031
- const result = await client.collection(collection).create(payload);
4032
- setUrl("");
4033
- await onAdded(result);
4034
- } catch (err) {
4035
- const error = err instanceof Error ? err : /* @__PURE__ */ new Error("Failed to add media from URL");
4036
- console.error("Failed to add media from URL", error);
4037
- onError?.(error);
4038
- } finally {
4039
- setIsSubmitting(false);
4040
- }
4041
- }, [
4042
- url,
4043
- client,
4044
- collection,
4045
- onAdded,
4046
- onError
4047
- ]),
4048
- isSubmitting,
4049
- canSubmit: !!url.trim() && !isSubmitting
4050
- };
3734
+ //#region src/components/media/storage-notice.tsx
3735
+ function StorageNotConfiguredNotice({ variant = "banner", className = "", showSetupLink = true }) {
3736
+ if (variant === "inline") return /* @__PURE__ */ jsx("div", {
3737
+ className: `dy-rounded-xl dy-border dy-border-amber-500/30 dy-bg-amber-500/10 dy-p-4 dy-text-amber-900 dark:dy-text-amber-200 ${className}`,
3738
+ children: /* @__PURE__ */ jsxs("div", {
3739
+ className: "dy-flex dy-items-start dy-gap-3",
3740
+ children: [/* @__PURE__ */ jsx(HardDrive, { className: "dy-h-5 dy-w-5 dy-flex-shrink-0 dy-text-amber-600 dark:dy-text-amber-400 dy-mt-0.5" }), /* @__PURE__ */ jsxs("div", {
3741
+ className: "dy-space-y-1",
3742
+ children: [/* @__PURE__ */ jsx("p", {
3743
+ className: "dy-text-sm dy-font-semibold",
3744
+ children: "Media storage isn't set up yet"
3745
+ }), /* @__PURE__ */ jsx("p", {
3746
+ className: "dy-text-xs dy-opacity-90 dy-leading-relaxed",
3747
+ children: "File uploads require a storage provider (such as AWS S3, Cloudinary, Backblaze B2, or local storage). Please ask your developer or system administrator to configure media storage in Dyrected."
3748
+ })]
3749
+ })]
3750
+ })
3751
+ });
3752
+ return /* @__PURE__ */ jsx("div", {
3753
+ className: `dy-relative dy-overflow-hidden dy-rounded-xl dy-border dy-border-amber-500/30 dy-bg-gradient-to-r dy-from-amber-500/10 dy-via-amber-500/5 dy-to-transparent dy-p-5 dy-text-foreground ${className}`,
3754
+ children: /* @__PURE__ */ jsxs("div", {
3755
+ className: "dy-flex dy-flex-col sm:dy-flex-row sm:dy-items-center dy-justify-between dy-gap-4",
3756
+ children: [/* @__PURE__ */ jsxs("div", {
3757
+ className: "dy-flex dy-items-start dy-gap-4",
3758
+ children: [/* @__PURE__ */ jsx("div", {
3759
+ className: "dy-flex dy-h-10 dy-w-10 dy-flex-shrink-0 dy-items-center dy-justify-center dy-rounded-lg dy-bg-amber-500/20 dy-text-amber-600 dark:dy-text-amber-400",
3760
+ children: /* @__PURE__ */ jsx(HardDrive, { className: "dy-h-5 dy-w-5" })
3761
+ }), /* @__PURE__ */ jsxs("div", {
3762
+ className: "dy-space-y-1",
3763
+ children: [/* @__PURE__ */ jsx("h4", {
3764
+ className: "dy-text-sm dy-font-bold dy-text-amber-950 dark:dy-text-amber-100",
3765
+ children: "Media storage isn't set up yet"
3766
+ }), /* @__PURE__ */ jsx("p", {
3767
+ className: "dy-text-xs dy-text-muted-foreground dy-leading-relaxed",
3768
+ children: "File uploads are currently unavailable because a media storage provider (such as AWS S3, Cloudinary, Backblaze B2, or local storage) hasn't been configured. Please ask your developer or system administrator to add a storage adapter to your Dyrected config."
3769
+ })]
3770
+ })]
3771
+ }), showSetupLink && /* @__PURE__ */ jsx("div", {
3772
+ className: "dy-flex-shrink-0",
3773
+ children: /* @__PURE__ */ jsx(Button, {
3774
+ asChild: true,
3775
+ variant: "outline",
3776
+ size: "sm",
3777
+ className: "dy-h-9 dy-gap-2 dy-border-amber-500/30 hover:dy-bg-amber-500/10",
3778
+ children: /* @__PURE__ */ jsxs(Link, {
3779
+ to: "/setup",
3780
+ children: [
3781
+ /* @__PURE__ */ jsx(Wrench, { className: "dy-h-3.5 dy-w-3.5" }),
3782
+ "Setup Guide",
3783
+ /* @__PURE__ */ jsx(ArrowRight, { className: "dy-h-3.5 dy-w-3.5" })
3784
+ ]
3785
+ })
3786
+ })
3787
+ })]
3788
+ })
3789
+ });
4051
3790
  }
4052
3791
  //#endregion
4053
3792
  //#region src/components/media/media-library-dialog.tsx
4054
3793
  function MediaLibraryDialog({ collection, isOpen, onOpenChange, selectedValues, onSelect, multiple, onConfirm }) {
4055
3794
  const { client, schemas } = useDyrected();
4056
- const schema = React$1.useMemo(() => schemas?.collections?.find((c) => c.slug === collection), [schemas, collection]);
4057
- const collectionLabel = React$1.useMemo(() => schema?.labels?.plural ?? schema?.labels?.singular ?? (collection && collection !== "media" ? collection.charAt(0).toUpperCase() + collection.slice(1) : "Media Library"), [schema, collection]);
3795
+ const activeMediaCollection = React$1.useMemo(() => resolveActiveMediaCollection(schemas, collection), [schemas, collection]);
3796
+ const schema = React$1.useMemo(() => schemas?.collections?.find((c) => c.slug === activeMediaCollection), [schemas, activeMediaCollection]);
3797
+ const collectionLabel = React$1.useMemo(() => schema?.labels?.plural ?? schema?.labels?.singular ?? (activeMediaCollection && activeMediaCollection !== "media" ? activeMediaCollection.charAt(0).toUpperCase() + activeMediaCollection.slice(1) : "Media Library"), [schema, activeMediaCollection]);
4058
3798
  const [searchQuery, setSearchQuery] = React$1.useState("");
4059
3799
  const [activeTab, setActiveTab] = React$1.useState("library");
4060
3800
  const [selectedItem, setSelectedItem] = React$1.useState(null);
4061
- const [isUploading, setIsUploading] = React$1.useState(false);
4062
- const { data, refetch, fetchNextPage, hasNextPage, isFetchingNextPage } = useInfiniteQuery({
4063
- queryKey: [collection, searchQuery],
4064
- queryFn: ({ pageParam = 1 }) => client.listMedia({
4065
- where: searchQuery ? { filename: { contains: searchQuery } } : void 0,
4066
- limit: 12,
4067
- page: pageParam
4068
- }, collection),
4069
- initialPageParam: 1,
4070
- getNextPageParam: (lastPage) => {
4071
- return lastPage.hasNextPage ? lastPage.page + 1 : void 0;
4072
- },
4073
- enabled: isOpen && !!client
3801
+ const getIdentifier = React$1.useCallback((v) => {
3802
+ if (!v) return "";
3803
+ if (typeof v === "object" && v !== null) {
3804
+ const obj = v;
3805
+ return String(obj.id || obj._id || obj.filename || "");
3806
+ }
3807
+ const strVal = String(v);
3808
+ if (strVal.includes("/")) return strVal.split("/").pop() || strVal;
3809
+ return strVal;
3810
+ }, []);
3811
+ const sVals = React$1.useMemo(() => {
3812
+ return (selectedValues || []).map(getIdentifier).filter(Boolean);
3813
+ }, [selectedValues, getIdentifier]);
3814
+ const { items: media, load, search, loadNextPage, hasNextPage, isLoading: isFetchingMedia, error: mediaQueryError, selectedItems, setSelectedIds, select, deselect, clearSelection } = useMediaLibrary({
3815
+ collection: activeMediaCollection,
3816
+ initialSelectedIds: sVals
4074
3817
  });
4075
- const media = React$1.useMemo(() => {
4076
- return data?.pages.flatMap((page) => page.docs) || [];
4077
- }, [data]);
3818
+ React$1.useEffect(() => {
3819
+ if (!isOpen) return;
3820
+ searchQuery ? search(searchQuery) : load();
3821
+ }, [
3822
+ isOpen,
3823
+ load,
3824
+ search,
3825
+ searchQuery
3826
+ ]);
3827
+ React$1.useEffect(() => {
3828
+ setSelectedIds(sVals);
3829
+ }, [sVals, setSelectedIds]);
4078
3830
  const observerRef = React$1.useRef(null);
4079
3831
  const sentinelRef = React$1.useCallback((node) => {
4080
3832
  if (observerRef.current) {
4081
3833
  observerRef.current.disconnect();
4082
3834
  observerRef.current = null;
4083
3835
  }
4084
- if (node && hasNextPage && !isFetchingNextPage) {
3836
+ if (node && hasNextPage && !isFetchingMedia) {
4085
3837
  observerRef.current = new IntersectionObserver((entries) => {
4086
- if (entries[0].isIntersecting) fetchNextPage();
3838
+ if (entries[0].isIntersecting) loadNextPage();
4087
3839
  }, { rootMargin: "100px" });
4088
3840
  observerRef.current.observe(node);
4089
3841
  }
4090
3842
  }, [
4091
3843
  hasNextPage,
4092
- isFetchingNextPage,
4093
- fetchNextPage
3844
+ isFetchingMedia,
3845
+ loadNextPage
4094
3846
  ]);
4095
- const handleUpload = async (e) => {
4096
- const file = e.target.files?.[0];
4097
- if (!file || !client) return;
4098
- setIsUploading(true);
4099
- try {
4100
- const result = await client.collection(collection).upload(file, {});
4101
- await refetch();
3847
+ const { queue, uploadFiles, retryUpload, removeQueueItem, clearQueue } = useMediaUpload({
3848
+ collectionSlug: activeMediaCollection,
3849
+ onCompletedItem: async (result) => {
3850
+ await (searchQuery ? search(searchQuery) : load());
4102
3851
  onSelect(result.id, result);
4103
- if (!multiple) onOpenChange(false);
4104
- } catch (error) {
4105
- console.error("Upload failed:", error);
4106
- alert("Upload failed. Please try again.");
4107
- } finally {
4108
- setIsUploading(false);
4109
3852
  }
4110
- };
4111
- const { url: externalUrl, setUrl: setExternalUrl, submit: handleExternalUrlSubmit, isSubmitting: isAddingUrl } = useAddMediaFromUrl({
4112
- collection,
3853
+ });
3854
+ const hasStorageError = React$1.useMemo(() => {
3855
+ return isStorageNotConfiguredError(mediaQueryError) || queue.some((item) => isStorageNotConfiguredError(item.error));
3856
+ }, [mediaQueryError, queue]);
3857
+ const { getRootProps, getInputProps, isDragActive } = useDropzone({
3858
+ onDrop: React$1.useCallback((acceptedFiles) => {
3859
+ if (acceptedFiles.length > 0) uploadFiles(acceptedFiles);
3860
+ }, [uploadFiles]),
3861
+ accept: {
3862
+ "image/*": [],
3863
+ "video/*": [],
3864
+ "application/pdf": []
3865
+ }
3866
+ });
3867
+ const { url: externalUrl, setUrl: setExternalUrl, submit: handleExternalUrlSubmit, isSubmitting: isAddingUrl } = useMediaURL({
3868
+ collection: activeMediaCollection,
4113
3869
  onAdded: async (result) => {
4114
- await refetch();
3870
+ await (searchQuery ? search(searchQuery) : load());
4115
3871
  onSelect(result.id, result);
4116
- if (!multiple) onOpenChange(false);
3872
+ setSelectedItem(result);
3873
+ setActiveTab("library");
4117
3874
  },
4118
3875
  onError: () => alert("Failed to add URL. Please make sure it is valid.")
4119
3876
  });
4120
3877
  const getPreviewUrl = (item) => getMediaPreviewUrl(item, client?.getBaseUrl() || "");
4121
- const getIdentifier = React$1.useCallback((v) => {
4122
- if (!v) return "";
4123
- if (typeof v === "object" && v !== null) {
4124
- const obj = v;
4125
- return String(obj.id || obj._id || obj.filename || "");
4126
- }
4127
- const strVal = String(v);
4128
- if (strVal.includes("/")) return strVal.split("/").pop() || strVal;
4129
- return strVal;
4130
- }, []);
4131
- const sVals = React$1.useMemo(() => {
4132
- return (selectedValues || []).map(getIdentifier).filter(Boolean);
4133
- }, [selectedValues, getIdentifier]);
4134
3878
  const handleConfirm = () => {
4135
- if (onConfirm) {
4136
- const selectedItems = sVals.map((val) => {
4137
- return media?.find((m) => m.id === val || m.filename === val || m.url === val);
4138
- }).filter(Boolean);
4139
- onConfirm(sVals, selectedItems);
4140
- }
3879
+ if (onConfirm) onConfirm(sVals, selectedItems);
4141
3880
  onOpenChange(false);
4142
3881
  };
4143
3882
  return /* @__PURE__ */ jsx(Dialog, {
@@ -4149,366 +3888,488 @@ function MediaLibraryDialog({ collection, isOpen, onOpenChange, selectedValues,
4149
3888
  value: activeTab,
4150
3889
  onValueChange: setActiveTab,
4151
3890
  className: "dy-flex dy-h-full dy-flex-col",
4152
- children: [/* @__PURE__ */ jsxs("div", {
4153
- className: "dy-flex dy-flex-col dy-gap-4 dy-border-b dy-bg-muted/20 dy-px-4 dy-py-4 sm:dy-flex-row sm:dy-items-center sm:dy-justify-between sm:dy-px-6",
4154
- children: [/* @__PURE__ */ jsxs("div", {
4155
- className: "dy-flex dy-min-w-0 dy-items-center dy-gap-3 sm:dy-gap-4",
4156
- children: [/* @__PURE__ */ jsx(DialogTitle, {
4157
- className: "dy-min-w-0 dy-truncate dy-text-lg dy-font-serif dy-font-bold dy-tracking-tight sm:dy-text-xl",
4158
- children: collectionLabel
4159
- }), multiple && sVals.length > 0 && /* @__PURE__ */ jsxs("div", {
4160
- className: "dy-flex dy-items-center dy-gap-2 dy-px-3 dy-py-1 dy-bg-primary/10 dy-rounded-full dy-border dy-border-primary/20 dy-animate-in dy-fade-in dy-slide-in-from-left-2",
4161
- children: [/* @__PURE__ */ jsxs("span", {
4162
- className: "dy-text-xs dy-font-bold dy-text-primary",
4163
- children: [sVals.length, " Selected"]
4164
- }), /* @__PURE__ */ jsx(Button, {
4165
- variant: "ghost",
4166
- size: "icon",
4167
- className: "dy-h-4 dy-w-4 dy-text-primary hover:dy-bg-transparent",
4168
- onClick: handleConfirm,
4169
- children: /* @__PURE__ */ jsx(Check, { className: "dy-h-3 dy-w-3" })
3891
+ children: [
3892
+ /* @__PURE__ */ jsxs("div", {
3893
+ className: "dy-flex dy-flex-col dy-gap-4 dy-border-b dy-bg-muted/20 dy-px-4 dy-py-4 sm:dy-flex-row sm:dy-items-center sm:dy-justify-between sm:dy-px-6",
3894
+ children: [/* @__PURE__ */ jsxs("div", {
3895
+ className: "dy-flex dy-min-w-0 dy-items-center dy-gap-3 sm:dy-gap-4",
3896
+ children: [/* @__PURE__ */ jsx(DialogTitle, {
3897
+ className: "dy-min-w-0 dy-truncate dy-text-lg dy-font-serif dy-font-bold dy-tracking-tight sm:dy-text-xl",
3898
+ children: collectionLabel
3899
+ }), multiple && sVals.length > 0 && /* @__PURE__ */ jsxs("div", {
3900
+ className: "dy-flex dy-items-center dy-gap-2 dy-px-3 dy-py-1 dy-bg-primary/10 dy-rounded-full dy-border dy-border-primary/20 dy-animate-in dy-fade-in dy-slide-in-from-left-2",
3901
+ children: [/* @__PURE__ */ jsxs("span", {
3902
+ className: "dy-text-xs dy-font-bold dy-text-primary",
3903
+ children: [sVals.length, " Selected"]
3904
+ }), /* @__PURE__ */ jsx(Button, {
3905
+ variant: "ghost",
3906
+ size: "icon",
3907
+ className: "dy-h-4 dy-w-4 dy-text-primary hover:dy-bg-transparent",
3908
+ onClick: handleConfirm,
3909
+ children: /* @__PURE__ */ jsx(Check, { className: "dy-h-3 dy-w-3" })
3910
+ })]
4170
3911
  })]
3912
+ }), /* @__PURE__ */ jsxs(TabsList, {
3913
+ className: "dy-grid dy-h-auto dy-grid-cols-3 dy-bg-muted/50 dy-p-1 dy-rounded-lg sm:dy-flex",
3914
+ children: [
3915
+ /* @__PURE__ */ jsxs(TabsTrigger, {
3916
+ value: "library",
3917
+ className: "dy-gap-1.5 dy-rounded-lg dy-px-2 dy-font-bold dy-text-[10px] dy-uppercase dy-tracking-wider dy-transition-all data-[state=active]:dy-bg-background data-[state=active]:dy-shadow-sm sm:dy-gap-2 sm:dy-px-4 sm:dy-text-xs",
3918
+ children: [/* @__PURE__ */ jsx(Library, { className: "dy-h-3.5 dy-w-3.5" }), " Library"]
3919
+ }),
3920
+ /* @__PURE__ */ jsxs(TabsTrigger, {
3921
+ value: "upload",
3922
+ className: "dy-gap-1.5 dy-rounded-lg dy-px-2 dy-font-bold dy-text-[10px] dy-uppercase dy-tracking-wider dy-transition-all data-[state=active]:dy-bg-background data-[state=active]:dy-shadow-sm sm:dy-gap-2 sm:dy-px-4 sm:dy-text-xs",
3923
+ children: [
3924
+ /* @__PURE__ */ jsx(Upload, { className: "dy-h-3.5 dy-w-3.5" }),
3925
+ " Upload",
3926
+ queue.filter((q) => q.status === "uploading" || q.status === "queued").length > 0 && /* @__PURE__ */ jsx("span", {
3927
+ className: "dy-ml-1 dy-px-1.5 dy-py-0.5 dy-text-[9px] dy-bg-primary dy-text-white dy-rounded-full dy-animate-pulse",
3928
+ children: queue.filter((q) => q.status === "uploading" || q.status === "queued").length
3929
+ })
3930
+ ]
3931
+ }),
3932
+ /* @__PURE__ */ jsxs(TabsTrigger, {
3933
+ value: "external",
3934
+ className: "dy-gap-1.5 dy-rounded-lg dy-px-2 dy-font-bold dy-text-[10px] dy-uppercase dy-tracking-wider dy-transition-all data-[state=active]:dy-bg-background data-[state=active]:dy-shadow-sm sm:dy-gap-2 sm:dy-px-4 sm:dy-text-xs",
3935
+ children: [/* @__PURE__ */ jsx(Globe, { className: "dy-h-3.5 dy-w-3.5" }), " External"]
3936
+ })
3937
+ ]
4171
3938
  })]
4172
- }), /* @__PURE__ */ jsxs(TabsList, {
4173
- className: "dy-grid dy-h-auto dy-grid-cols-3 dy-bg-muted/50 dy-p-1 dy-rounded-lg sm:dy-flex",
3939
+ }),
3940
+ hasStorageError && /* @__PURE__ */ jsx("div", {
3941
+ className: "dy-px-4 dy-pt-4 sm:dy-px-6",
3942
+ children: /* @__PURE__ */ jsx(StorageNotConfiguredNotice, { variant: "banner" })
3943
+ }),
3944
+ /* @__PURE__ */ jsxs("div", {
3945
+ className: "dy-min-h-0 dy-flex-1 dy-overflow-hidden",
4174
3946
  children: [
4175
- /* @__PURE__ */ jsxs(TabsTrigger, {
3947
+ /* @__PURE__ */ jsx(TabsContent, {
4176
3948
  value: "library",
4177
- className: "dy-gap-1.5 dy-rounded-lg dy-px-2 dy-font-bold dy-text-[10px] dy-uppercase dy-tracking-wider dy-transition-all data-[state=active]:dy-bg-background data-[state=active]:dy-shadow-sm sm:dy-gap-2 sm:dy-px-4 sm:dy-text-xs",
4178
- children: [/* @__PURE__ */ jsx(Library, { className: "dy-h-3.5 dy-w-3.5" }), " Library"]
4179
- }),
4180
- /* @__PURE__ */ jsxs(TabsTrigger, {
4181
- value: "upload",
4182
- className: "dy-gap-1.5 dy-rounded-lg dy-px-2 dy-font-bold dy-text-[10px] dy-uppercase dy-tracking-wider dy-transition-all data-[state=active]:dy-bg-background data-[state=active]:dy-shadow-sm sm:dy-gap-2 sm:dy-px-4 sm:dy-text-xs",
4183
- children: [/* @__PURE__ */ jsx(Upload, { className: "dy-h-3.5 dy-w-3.5" }), " Upload"]
4184
- }),
4185
- /* @__PURE__ */ jsxs(TabsTrigger, {
4186
- value: "external",
4187
- className: "dy-gap-1.5 dy-rounded-lg dy-px-2 dy-font-bold dy-text-[10px] dy-uppercase dy-tracking-wider dy-transition-all data-[state=active]:dy-bg-background data-[state=active]:dy-shadow-sm sm:dy-gap-2 sm:dy-px-4 sm:dy-text-xs",
4188
- children: [/* @__PURE__ */ jsx(Globe, { className: "dy-h-3.5 dy-w-3.5" }), " External"]
4189
- })
4190
- ]
4191
- })]
4192
- }), /* @__PURE__ */ jsxs("div", {
4193
- className: "dy-min-h-0 dy-flex-1 dy-overflow-hidden",
4194
- children: [
4195
- /* @__PURE__ */ jsx(TabsContent, {
4196
- value: "library",
4197
- className: "dy-h-full dy-m-0 dy-p-0 focus-visible:dy-ring-0",
4198
- children: /* @__PURE__ */ jsxs("div", {
4199
- className: "dy-flex dy-h-full dy-flex-col md:dy-flex-row",
4200
- children: [/* @__PURE__ */ jsxs("div", {
4201
- className: "dy-flex dy-min-h-0 dy-flex-1 dy-flex-col dy-space-y-4 dy-border-b dy-p-4 md:dy-border-b-0 md:dy-border-r md:dy-p-6",
3949
+ className: "dy-h-full dy-m-0 dy-p-0 focus-visible:dy-ring-0",
3950
+ children: /* @__PURE__ */ jsxs("div", {
3951
+ className: "dy-flex dy-h-full dy-flex-col md:dy-flex-row",
4202
3952
  children: [/* @__PURE__ */ jsxs("div", {
4203
- className: "dy-flex dy-flex-col dy-gap-3 sm:dy-flex-row sm:dy-items-center sm:dy-gap-4",
3953
+ className: "dy-flex dy-min-h-0 dy-flex-1 dy-flex-col dy-space-y-4 dy-border-b dy-p-4 md:dy-border-b-0 md:dy-border-r md:dy-p-6",
4204
3954
  children: [/* @__PURE__ */ jsxs("div", {
4205
- className: "dy-relative dy-flex-1 dy-group",
4206
- children: [/* @__PURE__ */ jsx(Search, { className: "dy-absolute dy-left-3.5 dy-top-1/2 dy--translate-y-1/2 dy-h-4 dy-w-4 dy-text-muted-foreground dy-group-focus-within:dy-text-primary dy-transition-colors" }), /* @__PURE__ */ jsx(Input, {
4207
- placeholder: "Search your media library...",
4208
- className: "dy-pl-11 dy-h-11 dy-rounded-lg dy-border-muted dy-bg-muted/10 focus:dy-bg-background dy-transition-all",
4209
- value: searchQuery,
4210
- onChange: (e) => setSearchQuery(e.target.value)
4211
- })]
4212
- }), multiple && /* @__PURE__ */ jsxs("div", {
4213
- className: "dy-grid dy-grid-cols-2 dy-items-center dy-gap-1 dy-rounded-lg dy-bg-muted/30 dy-p-1 sm:dy-flex",
4214
- children: [
4215
- /* @__PURE__ */ jsx(Button, {
4216
- variant: "ghost",
4217
- size: "sm",
4218
- className: "dy-h-8 dy-text-[10px] dy-font-bold dy-uppercase dy-tracking-wider dy-px-3 hover:dy-bg-background dy-rounded-md",
4219
- onClick: () => {
4220
- media?.forEach((item) => {
4221
- if (!sVals.some((v) => v === item.id || v === item.filename || v === item.url)) onSelect(item.id, item);
4222
- });
4223
- },
4224
- children: "Select All"
4225
- }),
4226
- /* @__PURE__ */ jsx("div", { className: "dy-hidden dy-w-px dy-h-4 dy-bg-border/50 dy-mx-1 sm:dy-block" }),
4227
- /* @__PURE__ */ jsx(Button, {
4228
- variant: "ghost",
4229
- size: "sm",
4230
- className: "dy-h-8 dy-text-[10px] dy-font-bold dy-uppercase dy-tracking-wider dy-px-3 dy-text-destructive hover:dy-text-destructive hover:dy-bg-destructive/10 dy-rounded-md",
4231
- onClick: () => {
4232
- sVals.forEach((val) => {
4233
- const item = media?.find((m) => m.id === val || m.filename === val || m.url === val);
4234
- onSelect(val, item);
4235
- });
4236
- },
4237
- children: "Clear"
4238
- })
4239
- ]
4240
- })]
4241
- }), /* @__PURE__ */ jsx(ScrollArea, {
4242
- className: "dy-min-h-0 dy-flex-1 dy--mx-2 dy-px-2",
4243
- children: /* @__PURE__ */ jsxs("div", {
4244
- className: "dy-grid dy-grid-cols-2 dy-gap-3 dy-pb-4 sm:dy-grid-cols-3 md:dy-grid-cols-4 lg:dy-grid-cols-5 lg:dy-gap-4",
4245
- children: [media?.map((item) => /* @__PURE__ */ jsxs("button", {
4246
- type: "button",
4247
- onClick: () => {
4248
- if (multiple) {
4249
- onSelect(item.id, item);
4250
- setSelectedItem(item);
4251
- } else if (selectedItem?.id === item.id) {
4252
- onSelect(item.id, item);
4253
- onOpenChange(false);
4254
- } else setSelectedItem(item);
4255
- },
4256
- className: cn("dy-relative dy-group dy-rounded-2xl dy-overflow-hidden dy-border-2 dy-aspect-square dy-transition-all hover:dy-scale-[1.02] active:dy-scale-95 dy-shadow-sm dy-bg-muted/5", selectedItem?.id === item.id ? "dy-border-primary dy-ring-4 dy-ring-primary/10 dy-shadow-lg dy-shadow-primary/5" : "dy-border-border/40 hover:dy-border-border"),
3955
+ className: "dy-flex dy-flex-col dy-gap-3 sm:dy-flex-row sm:dy-items-center sm:dy-gap-4",
3956
+ children: [/* @__PURE__ */ jsxs("div", {
3957
+ className: "dy-relative dy-flex-1 dy-group",
3958
+ children: [/* @__PURE__ */ jsx(Search, { className: "dy-absolute dy-left-3.5 dy-top-1/2 dy--translate-y-1/2 dy-h-4 dy-w-4 dy-text-muted-foreground dy-group-focus-within:dy-text-primary dy-transition-colors" }), /* @__PURE__ */ jsx(Input, {
3959
+ placeholder: "Search your media library...",
3960
+ className: "dy-pl-11 dy-h-11 dy-rounded-lg dy-border-muted dy-bg-muted/10 focus:dy-bg-background dy-transition-all",
3961
+ value: searchQuery,
3962
+ onChange: (e) => setSearchQuery(e.target.value)
3963
+ })]
3964
+ }), multiple && /* @__PURE__ */ jsxs("div", {
3965
+ className: "dy-grid dy-grid-cols-2 dy-items-center dy-gap-1 dy-rounded-lg dy-bg-muted/30 dy-p-1 sm:dy-flex",
4257
3966
  children: [
4258
- /* @__PURE__ */ jsx("img", {
4259
- src: getPreviewUrl(item),
4260
- alt: item.filename,
4261
- className: "dy-object-cover dy-w-full dy-h-full"
4262
- }),
4263
- sVals.some((v) => v === item.id || v === item.filename || v === item.url) && /* @__PURE__ */ jsx("div", {
4264
- className: "dy-absolute dy-top-2.5 dy-right-2.5 dy-h-7 dy-w-7 dy-bg-primary dy-rounded-full dy-flex dy-items-center dy-justify-center dy-text-white dy-shadow-xl dy-animate-in dy-zoom-in dy-border-2 dy-border-white",
4265
- children: /* @__PURE__ */ jsx(Check, { className: "dy-h-4 dy-w-4" })
3967
+ /* @__PURE__ */ jsx(Button, {
3968
+ variant: "ghost",
3969
+ size: "sm",
3970
+ className: "dy-h-8 dy-text-[10px] dy-font-bold dy-uppercase dy-tracking-wider dy-px-3 hover:dy-bg-background dy-rounded-md",
3971
+ onClick: () => {
3972
+ media?.forEach((item) => {
3973
+ if (!sVals.some((v) => v === item.id || v === item.filename || v === item.url)) {
3974
+ select(item.id);
3975
+ onSelect(item.id, item);
3976
+ }
3977
+ });
3978
+ },
3979
+ children: "Select All"
4266
3980
  }),
4267
- (item.mimeType?.startsWith("video/") || item.mimeType === "video/youtube" || item.mimeType === "video/vimeo") && /* @__PURE__ */ jsx("div", {
4268
- className: "dy-absolute dy-inset-0 dy-flex dy-items-center dy-justify-center dy-bg-black/20 dy-group-hover:dy-bg-black/40 dy-transition-colors",
4269
- children: /* @__PURE__ */ jsx("div", {
4270
- className: "dy-h-10 dy-w-10 dy-bg-background/20 dy-backdrop-blur-md dy-rounded-full dy-flex dy-items-center dy-justify-center dy-border dy-border-white/30 dy-shadow-2xl",
4271
- children: /* @__PURE__ */ jsx(Video, { className: "dy-h-5 dy-w-5 dy-text-white" })
4272
- })
4273
- }),
4274
- /* @__PURE__ */ jsx("div", {
4275
- className: "dy-absolute dy-inset-x-0 dy-bottom-0 dy-p-2.5 dy-bg-gradient-to-t dy-from-black/80 dy-via-black/40 dy-to-transparent dy-opacity-100 dy-transition-opacity sm:dy-opacity-0 sm:dy-group-hover:dy-opacity-100",
4276
- children: /* @__PURE__ */ jsx("p", {
4277
- className: "dy-text-[10px] dy-text-white dy-truncate dy-font-bold dy-uppercase dy-tracking-wider",
4278
- children: getDisplayFilename(item.filename)
4279
- })
3981
+ /* @__PURE__ */ jsx("div", { className: "dy-hidden dy-w-px dy-h-4 dy-bg-border/50 dy-mx-1 sm:dy-block" }),
3982
+ /* @__PURE__ */ jsx(Button, {
3983
+ variant: "ghost",
3984
+ size: "sm",
3985
+ className: "dy-h-8 dy-text-[10px] dy-font-bold dy-uppercase dy-tracking-wider dy-px-3 dy-text-destructive hover:dy-text-destructive hover:dy-bg-destructive/10 dy-rounded-md",
3986
+ onClick: () => {
3987
+ clearSelection();
3988
+ sVals.forEach((val) => {
3989
+ const item = media?.find((m) => m.id === val || m.filename === val || m.url === val);
3990
+ onSelect(val, item);
3991
+ });
3992
+ },
3993
+ children: "Clear"
4280
3994
  })
4281
3995
  ]
4282
- }, item.id)), /* @__PURE__ */ jsx("div", {
4283
- ref: sentinelRef,
4284
- className: "dy-w-full dy-col-span-full dy-flex dy-justify-center dy-py-4",
4285
- children: isFetchingNextPage && /* @__PURE__ */ jsx("div", { className: "dy-animate-spin dy-rounded-full dy-border-2 dy-border-primary/20 dy-border-t-primary dy-h-6 dy-w-6" })
4286
3996
  })]
4287
- })
4288
- })]
4289
- }), /* @__PURE__ */ jsx("div", {
4290
- className: "dy-flex dy-max-h-[42dvh] dy-w-full dy-flex-col dy-gap-4 dy-overflow-y-auto dy-border-muted/20 dy-bg-muted/5 dy-p-4 md:dy-h-full md:dy-max-h-none md:dy-w-80 md:dy-gap-6 md:dy-border-l md:dy-p-6",
4291
- children: selectedItem ? /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsxs("div", {
4292
- className: "dy-grid dy-grid-cols-[88px_minmax(0,1fr)] dy-gap-4 md:dy-block md:dy-space-y-5",
4293
- children: [/* @__PURE__ */ jsxs("div", {
4294
- className: "dy-aspect-square dy-rounded-2xl dy-overflow-hidden dy-border dy-bg-background dy-shadow-xl dy-group dy-relative dy-ring-1 dy-ring-border/50 md:dy-rounded-3xl md:dy-shadow-2xl",
4295
- children: [/* @__PURE__ */ jsx("img", {
4296
- src: getPreviewUrl(selectedItem),
4297
- className: "dy-w-full dy-h-full dy-object-contain dy-p-2",
4298
- alt: ""
4299
- }), /* @__PURE__ */ jsx("div", {
4300
- className: "dy-absolute dy-inset-0 dy-bg-black/40 dy-opacity-0 dy-group-hover:dy-opacity-100 dy-transition-opacity dy-flex dy-items-center dy-justify-center dy-backdrop-blur-sm",
4301
- children: /* @__PURE__ */ jsx(Button, {
4302
- variant: "secondary",
4303
- size: "sm",
4304
- className: "dy-rounded-full dy-shadow-lg dy-font-bold",
4305
- onClick: () => window.open(getPreviewUrl(selectedItem), "_blank"),
4306
- children: "View Full"
4307
- })
3997
+ }), /* @__PURE__ */ jsx(ScrollArea, {
3998
+ className: "dy-min-h-0 dy-flex-1 dy--mx-2 dy-px-2",
3999
+ children: /* @__PURE__ */ jsxs("div", {
4000
+ className: "dy-grid dy-grid-cols-2 dy-gap-3 dy-pb-4 sm:dy-grid-cols-3 md:dy-grid-cols-4 lg:dy-grid-cols-5 lg:dy-gap-4",
4001
+ children: [media?.map((item) => {
4002
+ const sourceInfo = getMediaSourceInfo(item);
4003
+ return /* @__PURE__ */ jsxs("button", {
4004
+ type: "button",
4005
+ onClick: () => {
4006
+ if (multiple) {
4007
+ if (sVals.some((v) => v === item.id || v === item.filename || v === item.url)) deselect(item.id);
4008
+ else select(item.id);
4009
+ onSelect(item.id, item);
4010
+ setSelectedItem(item);
4011
+ } else if (selectedItem?.id === item.id) {
4012
+ onSelect(item.id, item);
4013
+ onOpenChange(false);
4014
+ } else setSelectedItem(item);
4015
+ },
4016
+ className: cn("dy-relative dy-group dy-rounded-lg dy-overflow-hidden dy-border-2 dy-aspect-square dy-transition-all hover:dy-scale-[1.02] active:dy-scale-95 dy-shadow-sm dy-bg-muted/5", selectedItem?.id === item.id ? "dy-border-primary dy-ring-4 dy-ring-primary/10 dy-shadow-lg dy-shadow-primary/5" : "dy-border-border/40 hover:dy-border-border"),
4017
+ children: [
4018
+ /* @__PURE__ */ jsx("img", {
4019
+ src: getPreviewUrl(item),
4020
+ alt: item.filename,
4021
+ className: "dy-object-cover dy-w-full dy-h-full"
4022
+ }),
4023
+ /* @__PURE__ */ jsx("div", {
4024
+ className: "dy-absolute dy-top-2 dy-left-2 dy-z-10",
4025
+ children: sourceInfo.source === "external" ? /* @__PURE__ */ jsxs("span", {
4026
+ className: "dy-inline-flex dy-items-center dy-gap-1 dy-px-2 dy-py-0.5 dy-rounded-md dy-bg-sky-950/80 dy-backdrop-blur-md dy-text-sky-300 dy-text-[9px] dy-font-black dy-uppercase dy-tracking-wider dy-border dy-border-sky-400/30 dy-shadow-md",
4027
+ children: [/* @__PURE__ */ jsx(Globe, { className: "dy-h-2.5 dy-w-2.5" }), sourceInfo.type === "youtube" ? "YOUTUBE" : sourceInfo.type === "vimeo" ? "VIMEO" : "EXTERNAL"]
4028
+ }) : /* @__PURE__ */ jsx("span", {
4029
+ className: "dy-inline-flex dy-items-center dy-gap-1 dy-px-1.5 dy-py-0.5 dy-rounded-md dy-bg-black/60 dy-backdrop-blur-md dy-text-white/90 dy-text-[8px] dy-font-bold dy-uppercase dy-tracking-wider dy-border dy-border-white/20",
4030
+ children: /* @__PURE__ */ jsx(HardDrive, { className: "dy-h-2.5 dy-w-2.5" })
4031
+ })
4032
+ }),
4033
+ sVals.some((v) => v === item.id || v === item.filename || v === item.url) && /* @__PURE__ */ jsx("div", {
4034
+ className: "dy-absolute dy-top-2.5 dy-right-2.5 dy-z-20 dy-h-7 dy-w-7 dy-bg-primary dy-rounded-full dy-flex dy-items-center dy-justify-center dy-text-white dy-shadow-xl dy-animate-in dy-zoom-in dy-border-2 dy-border-white",
4035
+ children: /* @__PURE__ */ jsx(Check, { className: "dy-h-4 dy-w-4" })
4036
+ }),
4037
+ (item.mimeType?.startsWith("video/") || item.mimeType === "video/youtube" || item.mimeType === "video/vimeo" || item.mimeType === "video/external") && /* @__PURE__ */ jsx("div", {
4038
+ className: "dy-absolute dy-inset-0 dy-flex dy-items-center dy-justify-center dy-bg-black/20 dy-group-hover:dy-bg-black/40 dy-transition-colors",
4039
+ children: /* @__PURE__ */ jsx("div", {
4040
+ className: "dy-h-10 dy-w-10 dy-bg-background/20 dy-backdrop-blur-md dy-rounded-full dy-flex dy-items-center dy-justify-center dy-border dy-border-white/30 dy-shadow-2xl",
4041
+ children: /* @__PURE__ */ jsx(Video, { className: "dy-h-5 dy-w-5 dy-text-white" })
4042
+ })
4043
+ }),
4044
+ /* @__PURE__ */ jsx("div", {
4045
+ className: "dy-absolute dy-inset-x-0 dy-bottom-0 dy-p-2.5 dy-bg-gradient-to-t dy-from-black/80 dy-via-black/40 dy-to-transparent dy-opacity-100 dy-transition-opacity sm:dy-opacity-0 sm:dy-group-hover:dy-opacity-100",
4046
+ children: /* @__PURE__ */ jsx("p", {
4047
+ className: "dy-text-[10px] dy-text-white dy-truncate dy-font-bold dy-uppercase dy-tracking-wider",
4048
+ children: getDisplayFilename(item.filename)
4049
+ })
4050
+ })
4051
+ ]
4052
+ }, item.id);
4053
+ }), /* @__PURE__ */ jsx("div", {
4054
+ ref: sentinelRef,
4055
+ className: "dy-w-full dy-col-span-full dy-flex dy-justify-center dy-py-4",
4056
+ children: isFetchingMedia && /* @__PURE__ */ jsx("div", { className: "dy-animate-spin dy-rounded-full dy-border-2 dy-border-primary/20 dy-border-t-primary dy-h-6 dy-w-6" })
4057
+ })]
4058
+ })
4059
+ })]
4060
+ }), /* @__PURE__ */ jsx("div", {
4061
+ className: "dy-flex dy-max-h-[42dvh] dy-w-full dy-flex-col dy-gap-4 dy-overflow-y-auto dy-border-muted/20 dy-bg-muted/5 dy-p-4 md:dy-h-full md:dy-max-h-none md:dy-w-80 md:dy-gap-6 md:dy-border-l md:dy-p-6",
4062
+ children: selectedItem ? /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsxs("div", {
4063
+ className: "dy-grid dy-grid-cols-[88px_minmax(0,1fr)] dy-gap-4 md:dy-block md:dy-space-y-5",
4064
+ children: [/* @__PURE__ */ jsxs("div", {
4065
+ className: "dy-aspect-square dy-rounded-lg dy-overflow-hidden dy-border dy-bg-background dy-shadow-xl dy-group dy-relative dy-ring-1 dy-ring-border/50 md:dy-rounded-3xl md:dy-shadow-2xl",
4066
+ children: [/* @__PURE__ */ jsx("img", {
4067
+ src: getPreviewUrl(selectedItem),
4068
+ className: "dy-w-full dy-h-full dy-object-contain dy-p-2",
4069
+ alt: ""
4070
+ }), /* @__PURE__ */ jsx("div", {
4071
+ className: "dy-absolute dy-inset-0 dy-bg-black/40 dy-opacity-0 dy-group-hover:dy-opacity-100 dy-transition-opacity dy-flex dy-items-center dy-justify-center dy-backdrop-blur-sm",
4072
+ children: /* @__PURE__ */ jsx(Button, {
4073
+ variant: "secondary",
4074
+ size: "sm",
4075
+ className: "dy-rounded-full dy-shadow-lg dy-font-bold",
4076
+ onClick: () => window.open(getPreviewUrl(selectedItem), "_blank"),
4077
+ children: "View Full"
4078
+ })
4079
+ })]
4080
+ }), /* @__PURE__ */ jsxs("div", {
4081
+ className: "dy-space-y-2",
4082
+ children: [/* @__PURE__ */ jsx("h4", {
4083
+ className: "dy-font-bold dy-text-sm dy-truncate dy-leading-tight",
4084
+ title: selectedItem.filename,
4085
+ children: getDisplayFilename(selectedItem.filename)
4086
+ }), /* @__PURE__ */ jsxs("div", {
4087
+ className: "dy-flex dy-flex-wrap dy-items-center dy-gap-2",
4088
+ children: [(() => {
4089
+ const sInfo = getMediaSourceInfo(selectedItem);
4090
+ return /* @__PURE__ */ jsx("span", {
4091
+ className: cn("dy-text-[9px] dy-font-black dy-uppercase dy-tracking-widest dy-px-2 dy-py-1 dy-rounded-md dy-border", sInfo.source === "external" ? "dy-bg-sky-500/10 dy-text-sky-600 dy-border-sky-500/20" : "dy-bg-primary/10 dy-text-primary dy-border-primary/10"),
4092
+ children: sInfo.label
4093
+ });
4094
+ })(), /* @__PURE__ */ jsx("span", {
4095
+ className: "dy-text-[10px] dy-font-bold dy-text-muted-foreground/60",
4096
+ children: selectedItem.filesize ? `${(selectedItem.filesize / 1024).toFixed(1)} KB` : "External Asset"
4097
+ })]
4098
+ })]
4308
4099
  })]
4309
- }), /* @__PURE__ */ jsxs("div", {
4310
- className: "dy-space-y-2",
4311
- children: [/* @__PURE__ */ jsx("h4", {
4312
- className: "dy-font-bold dy-text-sm dy-truncate dy-leading-tight",
4313
- title: selectedItem.filename,
4314
- children: getDisplayFilename(selectedItem.filename)
4100
+ }), /* @__PURE__ */ jsx("div", {
4101
+ className: "dy-space-y-3 dy-border-t dy-border-muted/20 dy-pt-4 md:dy-pt-6",
4102
+ children: multiple ? /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx(Button, {
4103
+ className: "dy-w-full dy-h-11 dy-rounded-lg dy-shadow-sm dy-font-bold dy-tracking-tight dy-transition-all",
4104
+ variant: sVals.some((v) => v === selectedItem.id || v === selectedItem.filename || v === selectedItem.url) ? "outline" : "default",
4105
+ onClick: () => {
4106
+ if (sVals.some((v) => v === selectedItem.id || v === selectedItem.filename || v === selectedItem.url)) deselect(selectedItem.id);
4107
+ else select(selectedItem.id);
4108
+ onSelect(selectedItem.id, selectedItem);
4109
+ },
4110
+ children: sVals.some((v) => v === selectedItem.id || v === selectedItem.filename || v === selectedItem.url) ? "Deselect Item" : "Add to Selection"
4111
+ }), sVals.length > 0 && /* @__PURE__ */ jsxs(Button, {
4112
+ className: "dy-w-full dy-h-11 dy-rounded-lg dy-shadow-xl dy-bg-primary hover:dy-bg-primary/90 dy-font-bold dy-tracking-tight dy-transition-all dy-group",
4113
+ onClick: handleConfirm,
4114
+ children: [/* @__PURE__ */ jsxs("span", { children: [
4115
+ "Confirm ",
4116
+ sVals.length,
4117
+ " ",
4118
+ sVals.length === 1 ? "Asset" : "Assets"
4119
+ ] }), /* @__PURE__ */ jsx(Sparkles, { className: "dy-ml-2 dy-h-4 dy-w-4 dy-opacity-50 dy-group-hover:dy-opacity-100 dy-group-hover:dy-scale-110 dy-transition-all" })]
4120
+ })] }) : /* @__PURE__ */ jsx(Button, {
4121
+ className: "dy-w-full dy-h-11 dy-rounded-lg dy-shadow-lg dy-font-bold dy-tracking-tight dy-bg-primary hover:dy-bg-primary/90 dy-transition-all",
4122
+ onClick: () => {
4123
+ onSelect(selectedItem.id, selectedItem);
4124
+ onOpenChange(false);
4125
+ },
4126
+ children: "Select Media"
4127
+ })
4128
+ })] }) : /* @__PURE__ */ jsxs("div", {
4129
+ className: "dy-flex-1 dy-flex dy-flex-col dy-items-center dy-justify-center dy-text-center dy-space-y-5 dy-text-muted-foreground/30",
4130
+ children: [/* @__PURE__ */ jsx("div", {
4131
+ className: "dy-p-6 dy-bg-muted/10 dy-rounded-full dy-border dy-border-muted/20 dy-shadow-inner",
4132
+ children: /* @__PURE__ */ jsx(Image, { className: "dy-h-10 dy-w-10" })
4315
4133
  }), /* @__PURE__ */ jsxs("div", {
4316
- className: "dy-flex dy-flex-wrap dy-items-center dy-gap-2",
4317
- children: [/* @__PURE__ */ jsx("span", {
4318
- className: "dy-text-[9px] dy-font-black dy-uppercase dy-tracking-widest dy-bg-primary/10 dy-text-primary dy-px-2 dy-py-1 dy-rounded-md dy-border dy-border-primary/10",
4319
- children: selectedItem.mimeType?.split("/")[1] || selectedItem.mimeType
4320
- }), /* @__PURE__ */ jsx("span", {
4321
- className: "dy-text-[10px] dy-font-bold dy-text-muted-foreground/60",
4322
- children: selectedItem.filesize ? `${(selectedItem.filesize / 1024).toFixed(1)} KB` : "External Asset"
4134
+ className: "dy-space-y-1",
4135
+ children: [/* @__PURE__ */ jsx("p", {
4136
+ className: "dy-text-xs dy-font-bold dy-uppercase dy-tracking-widest",
4137
+ children: "No Selection"
4138
+ }), /* @__PURE__ */ jsx("p", {
4139
+ className: "dy-text-[10px] dy-font-medium dy-max-w-[150px] dy-leading-relaxed",
4140
+ children: "Select an item from the library to view details and metadata"
4323
4141
  })]
4324
4142
  })]
4325
- })]
4326
- }), /* @__PURE__ */ jsx("div", {
4327
- className: "dy-space-y-3 dy-border-t dy-border-muted/20 dy-pt-4 md:dy-pt-6",
4328
- children: multiple ? /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx(Button, {
4329
- className: "dy-w-full dy-h-11 dy-rounded-lg dy-shadow-sm dy-font-bold dy-tracking-tight dy-transition-all",
4330
- variant: sVals.some((v) => v === selectedItem.id || v === selectedItem.filename || v === selectedItem.url) ? "outline" : "default",
4331
- onClick: () => onSelect(selectedItem.id, selectedItem),
4332
- children: sVals.some((v) => v === selectedItem.id || v === selectedItem.filename || v === selectedItem.url) ? "Deselect Item" : "Add to Selection"
4333
- }), sVals.length > 0 && /* @__PURE__ */ jsxs(Button, {
4334
- className: "dy-w-full dy-h-11 dy-rounded-lg dy-shadow-xl dy-bg-primary hover:dy-bg-primary/90 dy-font-bold dy-tracking-tight dy-transition-all dy-group",
4335
- onClick: handleConfirm,
4336
- children: [/* @__PURE__ */ jsxs("span", { children: [
4337
- "Confirm ",
4338
- sVals.length,
4339
- " ",
4340
- sVals.length === 1 ? "Asset" : "Assets"
4341
- ] }), /* @__PURE__ */ jsx(Sparkles, { className: "dy-ml-2 dy-h-4 dy-w-4 dy-opacity-50 dy-group-hover:dy-opacity-100 dy-group-hover:dy-scale-110 dy-transition-all" })]
4342
- })] }) : /* @__PURE__ */ jsx(Button, {
4343
- className: "dy-w-full dy-h-11 dy-rounded-lg dy-shadow-lg dy-font-bold dy-tracking-tight dy-bg-primary hover:dy-bg-primary/90 dy-transition-all",
4344
- onClick: () => {
4345
- onSelect(selectedItem.id, selectedItem);
4346
- onOpenChange(false);
4347
- },
4348
- children: "Select Media"
4349
4143
  })
4350
- })] }) : /* @__PURE__ */ jsxs("div", {
4351
- className: "dy-flex-1 dy-flex dy-flex-col dy-items-center dy-justify-center dy-text-center dy-space-y-5 dy-text-muted-foreground/30",
4352
- children: [/* @__PURE__ */ jsx("div", {
4353
- className: "dy-p-6 dy-bg-muted/10 dy-rounded-full dy-border dy-border-muted/20 dy-shadow-inner",
4354
- children: /* @__PURE__ */ jsx(Image$1, { className: "dy-h-10 dy-w-10" })
4355
- }), /* @__PURE__ */ jsxs("div", {
4356
- className: "dy-space-y-1",
4357
- children: [/* @__PURE__ */ jsx("p", {
4358
- className: "dy-text-xs dy-font-bold dy-uppercase dy-tracking-widest",
4359
- children: "No Selection"
4360
- }), /* @__PURE__ */ jsx("p", {
4361
- className: "dy-text-[10px] dy-font-medium dy-max-w-[150px] dy-leading-relaxed",
4362
- children: "Select an item from the library to view details and metadata"
4363
- })]
4364
- })]
4365
- })
4366
- })]
4367
- })
4368
- }),
4369
- /* @__PURE__ */ jsx(TabsContent, {
4370
- value: "upload",
4371
- className: "dy-h-full dy-m-0 dy-p-4 focus-visible:dy-ring-0 sm:dy-p-8",
4372
- children: /* @__PURE__ */ jsxs("div", {
4373
- className: "dy-h-full dy-flex dy-flex-col dy-items-center dy-justify-center dy-border-2 dy-border-dashed dy-border-primary/20 dy-rounded-3xl dy-bg-primary/5 hover:dy-bg-primary/10 dy-transition-all dy-group dy-relative dy-overflow-hidden sm:dy-rounded-[2.5rem]",
4374
- children: [
4375
- /* @__PURE__ */ jsx("div", { className: "dy-absolute dy-inset-0 dy-bg-[radial-gradient(circle_at_center,var(--primary)_0%,transparent_100%)] dy-opacity-[0.03]" }),
4376
- /* @__PURE__ */ jsx("input", {
4377
- type: "file",
4378
- id: "media-upload-dialog",
4379
- className: "dy-hidden",
4380
- onChange: handleUpload,
4381
- disabled: isUploading
4382
- }),
4383
- /* @__PURE__ */ jsxs("label", {
4384
- htmlFor: "media-upload-dialog",
4385
- className: "dy-flex dy-flex-col dy-items-center dy-gap-5 dy-cursor-pointer dy-p-6 dy-text-center dy-relative dy-z-10 sm:dy-gap-8 sm:dy-p-12",
4144
+ })]
4145
+ })
4146
+ }),
4147
+ /* @__PURE__ */ jsx(TabsContent, {
4148
+ value: "upload",
4149
+ className: "dy-h-full dy-m-0 dy-p-4 focus-visible:dy-ring-0 sm:dy-p-6 dy-overflow-y-auto",
4150
+ children: /* @__PURE__ */ jsxs("div", {
4151
+ className: "dy-max-w-2xl dy-mx-auto dy-space-y-6",
4152
+ children: [/* @__PURE__ */ jsxs("div", {
4153
+ ...getRootProps(),
4154
+ className: cn("dy-flex dy-flex-col dy-items-center dy-justify-center dy-border-2 dy-border-dashed dy-rounded-3xl dy-p-8 dy-text-center dy-cursor-pointer dy-transition-all dy-relative dy-overflow-hidden sm:dy-p-10", isDragActive ? "dy-border-primary dy-bg-primary/10 dy-scale-[0.99]" : "dy-border-primary/20 dy-bg-primary/5 hover:dy-bg-primary/10"),
4386
4155
  children: [
4156
+ /* @__PURE__ */ jsx("input", { ...getInputProps() }),
4387
4157
  /* @__PURE__ */ jsx("div", {
4388
- className: "dy-h-20 dy-w-20 dy-bg-background dy-rounded-full dy-flex dy-items-center dy-justify-center dy-text-primary dy-group-hover:dy-scale-110 dy-transition-all dy-shadow-2xl dy-shadow-primary/20 dy-border dy-border-primary/10 sm:dy-h-24 sm:dy-w-24",
4389
- children: /* @__PURE__ */ jsx(Upload, { className: "dy-h-8 dy-w-8 sm:dy-h-10 sm:dy-w-10" })
4158
+ className: "dy-h-16 dy-w-16 dy-bg-background dy-rounded-full dy-flex dy-items-center dy-justify-center dy-text-primary dy-shadow-xl dy-border dy-border-primary/10 dy-mb-4",
4159
+ children: /* @__PURE__ */ jsx(Upload, { className: "dy-h-8 dy-w-8" })
4390
4160
  }),
4391
4161
  /* @__PURE__ */ jsxs("div", {
4392
- className: "dy-space-y-2",
4393
- children: [/* @__PURE__ */ jsx("p", {
4394
- className: "dy-font-serif dy-font-bold dy-text-2xl dy-tracking-tight sm:dy-text-3xl",
4395
- children: "Upload new assets"
4396
- }), /* @__PURE__ */ jsx("p", {
4397
- className: "dy-text-sm dy-text-muted-foreground/60 dy-font-medium sm:dy-text-base",
4398
- children: "Tap to browse, or drag files here on desktop"
4399
- })]
4162
+ className: "dy-space-y-1.5",
4163
+ children: [
4164
+ /* @__PURE__ */ jsx("p", {
4165
+ className: "dy-font-serif dy-font-bold dy-text-xl sm:dy-text-2xl",
4166
+ children: "Upload media assets"
4167
+ }),
4168
+ /* @__PURE__ */ jsx("p", {
4169
+ className: "dy-text-xs dy-text-muted-foreground/70 dy-font-medium sm:dy-text-sm",
4170
+ children: "Drag & drop images, videos, or documents here, or click to browse"
4171
+ }),
4172
+ /* @__PURE__ */ jsx("p", {
4173
+ className: "dy-text-[10px] dy-text-muted-foreground/50",
4174
+ children: "Supports JPEG, PNG, WebP, GIF, MP4, WebM, PDF. Images are automatically compressed."
4175
+ })
4176
+ ]
4400
4177
  }),
4401
4178
  /* @__PURE__ */ jsx(Button, {
4402
4179
  variant: "secondary",
4403
- className: "dy-rounded-full dy-px-8 dy-h-12 dy-font-bold dy-shadow-sm dy-pointer-events-none dy-group-hover:dy-bg-primary dy-group-hover:dy-text-white dy-transition-all",
4180
+ size: "sm",
4181
+ className: "dy-mt-4 dy-rounded-full dy-px-6 dy-font-bold dy-pointer-events-none",
4404
4182
  children: "Choose Files"
4405
4183
  })
4406
4184
  ]
4407
- })
4408
- ]
4409
- })
4410
- }),
4411
- /* @__PURE__ */ jsx(TabsContent, {
4412
- value: "external",
4413
- className: "dy-h-full dy-m-0 dy-overflow-y-auto dy-p-4 focus-visible:dy-ring-0 sm:dy-p-12",
4414
- children: /* @__PURE__ */ jsxs("div", {
4415
- className: "dy-mx-auto dy-max-w-2xl dy-space-y-6 dy-pt-2 sm:dy-space-y-10 sm:dy-pt-4",
4416
- children: [/* @__PURE__ */ jsxs("div", {
4417
- className: "dy-text-center dy-space-y-3 sm:dy-space-y-4",
4418
- children: [
4419
- /* @__PURE__ */ jsx("div", {
4420
- className: "dy-h-16 dy-w-16 dy-bg-primary/10 dy-text-primary dy-rounded-2xl dy-flex dy-items-center dy-justify-center dy-mx-auto dy-mb-4 dy-shadow-sm dy-rotate-3 dy-group-hover:dy-rotate-0 dy-transition-transform sm:dy-h-20 sm:dy-w-20 sm:dy-rounded-3xl sm:dy-mb-6",
4421
- children: /* @__PURE__ */ jsx(Globe, { className: "dy-h-8 dy-w-8 sm:dy-h-10 sm:dy-w-10" })
4422
- }),
4423
- /* @__PURE__ */ jsx("h3", {
4424
- className: "dy-text-2xl dy-font-serif dy-font-bold dy-tracking-tight sm:dy-text-3xl",
4425
- children: "Add External Resource"
4426
- }),
4427
- /* @__PURE__ */ jsx("p", {
4428
- className: "dy-text-sm dy-text-muted-foreground/70 dy-leading-relaxed dy-max-w-md dy-mx-auto",
4429
- children: "Paste a link to any image, YouTube video, Vimeo link, or file to add it to your library without uploading."
4430
- })
4431
- ]
4432
- }), /* @__PURE__ */ jsxs("div", {
4433
- className: "dy-space-y-5 sm:dy-space-y-6",
4434
- children: [
4435
- /* @__PURE__ */ jsxs("div", {
4436
- className: "dy-flex dy-flex-col dy-gap-3 sm:dy-flex-row",
4437
- children: [/* @__PURE__ */ jsxs("div", {
4438
- className: "dy-relative dy-flex-1",
4439
- children: [/* @__PURE__ */ jsx(Link$1, { className: "dy-absolute dy-left-4 dy-top-1/2 dy--translate-y-1/2 dy-h-4 dy-w-4 dy-text-muted-foreground" }), /* @__PURE__ */ jsx(Input, {
4440
- placeholder: "https://example.com/image.jpg or video link...",
4441
- className: "dy-h-12 dy-rounded-2xl dy-shadow-xl dy-border-muted dy-bg-muted/5 dy-pl-12 dy-text-sm dy-font-medium focus:dy-bg-background dy-transition-all sm:dy-h-14 sm:dy-text-base",
4442
- value: externalUrl,
4443
- onChange: (e) => setExternalUrl(e.target.value)
4444
- })]
4445
- }), /* @__PURE__ */ jsx(Button, {
4446
- onClick: handleExternalUrlSubmit,
4447
- disabled: isAddingUrl || !externalUrl,
4448
- className: "dy-h-12 dy-w-full dy-rounded-2xl dy-px-8 dy-font-bold dy-shadow-xl dy-shadow-primary/20 dy-bg-primary hover:dy-bg-primary/90 dy-transition-all active:dy-scale-95 sm:dy-h-14 sm:dy-w-auto sm:dy-px-10",
4449
- children: isAddingUrl ? "Adding..." : "Add URL"
4450
- })]
4451
- }),
4452
- /* @__PURE__ */ jsxs("div", {
4453
- className: "dy-grid dy-grid-cols-1 dy-gap-3 sm:dy-grid-cols-2 sm:dy-gap-4",
4454
- children: [/* @__PURE__ */ jsxs("div", {
4455
- className: "dy-p-4 dy-rounded-2xl dy-bg-red-50/50 dy-border dy-border-red-100 dy-flex dy-items-start dy-gap-3",
4456
- children: [/* @__PURE__ */ jsx("div", {
4457
- className: "dy-mt-0.5 dy-p-1.5 dy-bg-red-100 dy-rounded-lg dy-text-red-600",
4458
- children: /* @__PURE__ */ jsx(Video, { className: "dy-h-4 dy-w-4" })
4459
- }), /* @__PURE__ */ jsxs("div", { children: [/* @__PURE__ */ jsx("p", {
4460
- className: "dy-text-xs dy-font-bold dy-text-red-900",
4461
- children: "Video Streaming"
4462
- }), /* @__PURE__ */ jsx("p", {
4463
- className: "dy-text-[10px] dy-text-red-700/70 dy-leading-relaxed dy-font-medium dy-mt-0.5",
4464
- children: "Supports YouTube & Vimeo. We recommend these for the best performance and compatibility."
4465
- })] })]
4466
- }), /* @__PURE__ */ jsxs("div", {
4467
- className: "dy-p-4 dy-rounded-2xl dy-bg-blue-50/50 dy-border dy-border-blue-100 dy-flex dy-items-start dy-gap-3",
4468
- children: [/* @__PURE__ */ jsx("div", {
4469
- className: "dy-mt-0.5 dy-p-1.5 dy-bg-blue-100 dy-rounded-lg dy-text-blue-600",
4470
- children: /* @__PURE__ */ jsx(Image$1, { className: "dy-h-4 dy-w-4" })
4471
- }), /* @__PURE__ */ jsxs("div", { children: [/* @__PURE__ */ jsx("p", {
4472
- className: "dy-text-xs dy-font-bold dy-text-blue-900",
4473
- children: "External Assets"
4474
- }), /* @__PURE__ */ jsx("p", {
4475
- className: "dy-text-[10px] dy-text-blue-700/70 dy-leading-relaxed dy-font-medium dy-mt-0.5",
4476
- children: "Add direct links to images or files from other CDNs. We'll automatically detect the type."
4477
- })] })]
4185
+ }), queue.length > 0 && /* @__PURE__ */ jsxs("div", {
4186
+ className: "dy-space-y-3 dy-animate-in dy-fade-in dy-slide-in-from-bottom-2",
4187
+ children: [/* @__PURE__ */ jsxs("div", {
4188
+ className: "dy-flex dy-items-center dy-justify-between",
4189
+ children: [/* @__PURE__ */ jsxs("h4", {
4190
+ className: "dy-text-xs dy-font-bold dy-uppercase dy-tracking-wider dy-text-muted-foreground",
4191
+ children: [
4192
+ "Upload Queue (",
4193
+ queue.length,
4194
+ ")"
4195
+ ]
4196
+ }), queue.some((q) => q.status === "completed") && /* @__PURE__ */ jsx(Button, {
4197
+ variant: "ghost",
4198
+ size: "sm",
4199
+ className: "dy-h-7 dy-text-[11px]",
4200
+ onClick: clearQueue,
4201
+ children: "Clear Completed"
4478
4202
  })]
4479
- }),
4480
- /* @__PURE__ */ jsxs("div", {
4481
- className: "dy-flex dy-items-center dy-gap-3 dy-p-4 dy-rounded-2xl dy-bg-muted/20 dy-border dy-border-muted/30",
4482
- children: [/* @__PURE__ */ jsx("div", {
4483
- className: "dy-p-2 dy-bg-background dy-rounded-lg dy-shadow-sm dy-text-muted-foreground",
4484
- children: /* @__PURE__ */ jsx(Info, { className: "dy-h-4 dy-w-4" })
4485
- }), /* @__PURE__ */ jsxs("p", {
4486
- className: "dy-text-[11px] dy-text-muted-foreground/80 dy-font-medium dy-leading-relaxed",
4203
+ }), /* @__PURE__ */ jsx("div", {
4204
+ className: "dy-space-y-2",
4205
+ children: queue.map((item) => /* @__PURE__ */ jsxs("div", {
4206
+ className: "dy-flex dy-items-center dy-gap-3 dy-p-3 dy-rounded-xl dy-border dy-border-border/40 dy-bg-card dy-shadow-sm",
4487
4207
  children: [
4488
- /* @__PURE__ */ jsx("span", {
4489
- className: "dy-font-bold dy-text-foreground",
4490
- children: "Pro Tip:"
4491
- }),
4492
- " External videos are better streamed from",
4493
- /* @__PURE__ */ jsx("span", {
4494
- className: "dy-text-red-600 dy-font-bold dy-ml-1",
4495
- children: "YouTube"
4208
+ /* @__PURE__ */ jsx("div", {
4209
+ className: "dy-h-9 dy-w-9 dy-rounded-lg dy-bg-muted/40 dy-flex dy-items-center dy-justify-center dy-flex-shrink-0",
4210
+ children: item.file.type.startsWith("image/") ? /* @__PURE__ */ jsx(Image, { className: "dy-h-4 dy-w-4 dy-text-primary" }) : item.file.type.startsWith("video/") ? /* @__PURE__ */ jsx(Video, { className: "dy-h-4 dy-w-4 dy-text-purple-500" }) : /* @__PURE__ */ jsx(FileIcon, { className: "dy-h-4 dy-w-4 dy-text-muted-foreground" })
4496
4211
  }),
4497
- " or",
4498
- /* @__PURE__ */ jsx("span", {
4499
- className: "dy-text-blue-500 dy-font-bold dy-ml-1",
4500
- children: "Vimeo"
4212
+ /* @__PURE__ */ jsxs("div", {
4213
+ className: "dy-min-w-0 dy-flex-1 dy-space-y-1",
4214
+ children: [
4215
+ /* @__PURE__ */ jsxs("div", {
4216
+ className: "dy-flex dy-items-center dy-justify-between",
4217
+ children: [/* @__PURE__ */ jsx("p", {
4218
+ className: "dy-text-xs dy-font-semibold dy-truncate dy-max-w-[200px] sm:dy-max-w-[300px]",
4219
+ title: item.file.name,
4220
+ children: item.file.name
4221
+ }), /* @__PURE__ */ jsxs("span", {
4222
+ className: "dy-text-[10px] dy-font-mono dy-text-muted-foreground",
4223
+ children: [(item.compressedSize / 1024).toFixed(1), " KB"]
4224
+ })]
4225
+ }),
4226
+ item.status === "uploading" && /* @__PURE__ */ jsxs("div", {
4227
+ className: "dy-space-y-1",
4228
+ children: [/* @__PURE__ */ jsx(Progress, {
4229
+ value: item.progress,
4230
+ className: "dy-h-1.5"
4231
+ }), /* @__PURE__ */ jsxs("div", {
4232
+ className: "dy-flex dy-justify-between dy-text-[9px] dy-text-muted-foreground",
4233
+ children: [/* @__PURE__ */ jsx("span", { children: "Uploading & processing..." }), /* @__PURE__ */ jsxs("span", { children: [item.progress, "%"] })]
4234
+ })]
4235
+ }),
4236
+ item.status === "completed" && /* @__PURE__ */ jsxs("p", {
4237
+ className: "dy-text-[10px] dy-text-emerald-600 dy-font-bold dy-flex dy-items-center dy-gap-1",
4238
+ children: [/* @__PURE__ */ jsx(Check, { className: "dy-h-3 dy-w-3" }), " Uploaded & added to selection"]
4239
+ }),
4240
+ item.status === "error" && /* @__PURE__ */ jsxs("p", {
4241
+ className: "dy-text-[10px] dy-text-destructive dy-font-bold dy-flex dy-items-center dy-gap-1",
4242
+ children: [
4243
+ /* @__PURE__ */ jsx(AlertCircle, { className: "dy-h-3 dy-w-3" }),
4244
+ " ",
4245
+ item.error || "Upload failed"
4246
+ ]
4247
+ }),
4248
+ item.status === "queued" && /* @__PURE__ */ jsx("p", {
4249
+ className: "dy-text-[10px] dy-text-muted-foreground",
4250
+ children: "Waiting in queue..."
4251
+ })
4252
+ ]
4501
4253
  }),
4502
- " to ensure smooth playback on all devices."
4254
+ /* @__PURE__ */ jsxs("div", {
4255
+ className: "dy-flex dy-items-center dy-gap-1",
4256
+ children: [item.status === "error" && /* @__PURE__ */ jsx(Button, {
4257
+ size: "icon",
4258
+ variant: "ghost",
4259
+ className: "dy-h-7 dy-w-7 dy-text-muted-foreground hover:dy-text-primary",
4260
+ onClick: () => retryUpload(item.id),
4261
+ title: "Retry upload",
4262
+ children: /* @__PURE__ */ jsx(RotateCw, { className: "dy-h-3.5 dy-w-3.5" })
4263
+ }), /* @__PURE__ */ jsx(Button, {
4264
+ size: "icon",
4265
+ variant: "ghost",
4266
+ className: "dy-h-7 dy-w-7 dy-text-muted-foreground hover:dy-text-destructive",
4267
+ onClick: () => removeQueueItem(item.id),
4268
+ title: "Remove",
4269
+ children: /* @__PURE__ */ jsx(X, { className: "dy-h-3.5 dy-w-3.5" })
4270
+ })]
4271
+ })
4503
4272
  ]
4504
- })]
4505
- })
4506
- ]
4507
- })]
4273
+ }, item.id))
4274
+ })]
4275
+ })]
4276
+ })
4277
+ }),
4278
+ /* @__PURE__ */ jsx(TabsContent, {
4279
+ value: "external",
4280
+ className: "dy-h-full dy-m-0 dy-overflow-y-auto dy-p-4 focus-visible:dy-ring-0 sm:dy-p-12",
4281
+ children: /* @__PURE__ */ jsxs("div", {
4282
+ className: "dy-mx-auto dy-max-w-2xl dy-space-y-6 dy-pt-2 sm:dy-space-y-10 sm:dy-pt-4",
4283
+ children: [/* @__PURE__ */ jsxs("div", {
4284
+ className: "dy-text-center dy-space-y-3 sm:dy-space-y-4",
4285
+ children: [
4286
+ /* @__PURE__ */ jsx("div", {
4287
+ className: "dy-h-16 dy-w-16 dy-bg-primary/10 dy-text-primary dy-rounded-lg dy-flex dy-items-center dy-justify-center dy-mx-auto dy-mb-4 dy-shadow-sm dy-rotate-3 sm:dy-h-20 sm:dy-w-20 sm:dy-rounded-3xl sm:dy-mb-6",
4288
+ children: /* @__PURE__ */ jsx(Globe, { className: "dy-h-8 dy-w-8 sm:dy-h-10 sm:dy-w-10" })
4289
+ }),
4290
+ /* @__PURE__ */ jsx("h3", {
4291
+ className: "dy-text-2xl dy-font-serif dy-font-bold dy-tracking-tight sm:dy-text-3xl",
4292
+ children: "Add External Resource"
4293
+ }),
4294
+ /* @__PURE__ */ jsx("p", {
4295
+ className: "dy-text-sm dy-text-muted-foreground/70 dy-leading-relaxed dy-max-w-md dy-mx-auto",
4296
+ children: "Paste a link to any YouTube video, Vimeo link, direct video file, or image URL to add it to your library."
4297
+ })
4298
+ ]
4299
+ }), /* @__PURE__ */ jsxs("div", {
4300
+ className: "dy-space-y-5 sm:dy-space-y-6",
4301
+ children: [
4302
+ /* @__PURE__ */ jsxs("div", {
4303
+ className: "dy-flex dy-flex-col dy-gap-3 sm:dy-flex-row",
4304
+ children: [/* @__PURE__ */ jsxs("div", {
4305
+ className: "dy-relative dy-flex-1",
4306
+ children: [/* @__PURE__ */ jsx(Link$1, { className: "dy-absolute dy-left-4 dy-top-1/2 dy--translate-y-1/2 dy-h-4 dy-w-4 dy-text-muted-foreground" }), /* @__PURE__ */ jsx(Input, {
4307
+ placeholder: "https://example.com/image.jpg or video link...",
4308
+ className: "dy-h-12 dy-rounded-lg dy-shadow-xl dy-border-muted dy-bg-muted/5 dy-pl-12 dy-text-sm dy-font-medium focus:dy-bg-background dy-transition-all sm:dy-h-14 sm:dy-text-base",
4309
+ value: externalUrl,
4310
+ onChange: (e) => setExternalUrl(e.target.value),
4311
+ onKeyDown: (e) => {
4312
+ if (e.key === "Enter" && !isAddingUrl && externalUrl.trim()) {
4313
+ e.preventDefault();
4314
+ handleExternalUrlSubmit();
4315
+ }
4316
+ }
4317
+ })]
4318
+ }), /* @__PURE__ */ jsx(Button, {
4319
+ onClick: handleExternalUrlSubmit,
4320
+ disabled: isAddingUrl || !externalUrl,
4321
+ className: "dy-h-12 dy-w-full dy-rounded-lg dy-px-8 dy-font-bold dy-shadow-xl dy-shadow-primary/20 dy-bg-primary hover:dy-bg-primary/90 dy-transition-all active:dy-scale-95 sm:dy-h-14 sm:dy-w-auto sm:dy-px-10",
4322
+ children: isAddingUrl ? "Adding..." : "Add URL"
4323
+ })]
4324
+ }),
4325
+ /* @__PURE__ */ jsxs("div", {
4326
+ className: "dy-grid dy-grid-cols-1 dy-gap-3 sm:dy-grid-cols-2 sm:dy-gap-4",
4327
+ children: [/* @__PURE__ */ jsxs("div", {
4328
+ className: "dy-p-4 dy-rounded-lg dy-bg-red-50/50 dy-border dy-border-red-100 dy-flex dy-items-start dy-gap-3",
4329
+ children: [/* @__PURE__ */ jsx("div", {
4330
+ className: "dy-mt-0.5 dy-p-1.5 dy-bg-red-100 dy-rounded-lg dy-text-red-600",
4331
+ children: /* @__PURE__ */ jsx(Video, { className: "dy-h-4 dy-w-4" })
4332
+ }), /* @__PURE__ */ jsxs("div", { children: [/* @__PURE__ */ jsx("p", {
4333
+ className: "dy-text-xs dy-font-bold dy-text-red-900",
4334
+ children: "Video Streaming"
4335
+ }), /* @__PURE__ */ jsx("p", {
4336
+ className: "dy-text-[10px] dy-text-red-700/70 dy-leading-relaxed dy-font-medium dy-mt-0.5",
4337
+ children: "Supports YouTube & Vimeo embeds, as well as direct MP4/WebM video links."
4338
+ })] })]
4339
+ }), /* @__PURE__ */ jsxs("div", {
4340
+ className: "dy-p-4 dy-rounded-lg dy-bg-blue-50/50 dy-border dy-border-blue-100 dy-flex dy-items-start dy-gap-3",
4341
+ children: [/* @__PURE__ */ jsx("div", {
4342
+ className: "dy-mt-0.5 dy-p-1.5 dy-bg-blue-100 dy-rounded-lg dy-text-blue-600",
4343
+ children: /* @__PURE__ */ jsx(Image, { className: "dy-h-4 dy-w-4" })
4344
+ }), /* @__PURE__ */ jsxs("div", { children: [/* @__PURE__ */ jsx("p", {
4345
+ className: "dy-text-xs dy-font-bold dy-text-blue-900",
4346
+ children: "Direct Image Import"
4347
+ }), /* @__PURE__ */ jsx("p", {
4348
+ className: "dy-text-[10px] dy-text-blue-700/70 dy-leading-relaxed dy-font-medium dy-mt-0.5",
4349
+ children: "Direct image links are fetched, compressed, and stored safely in your media library."
4350
+ })] })]
4351
+ })]
4352
+ }),
4353
+ /* @__PURE__ */ jsxs("div", {
4354
+ className: "dy-flex dy-items-center dy-gap-3 dy-p-4 dy-rounded-lg dy-bg-muted/20 dy-border dy-border-muted/30",
4355
+ children: [/* @__PURE__ */ jsx("div", {
4356
+ className: "dy-p-2 dy-bg-background dy-rounded-lg dy-shadow-sm dy-text-muted-foreground",
4357
+ children: /* @__PURE__ */ jsx(Info, { className: "dy-h-4 dy-w-4" })
4358
+ }), /* @__PURE__ */ jsxs("p", {
4359
+ className: "dy-text-[11px] dy-text-muted-foreground/80 dy-font-medium dy-leading-relaxed",
4360
+ children: [/* @__PURE__ */ jsx("span", {
4361
+ className: "dy-font-bold dy-text-foreground",
4362
+ children: "Pro Tip:"
4363
+ }), " External videos stream directly from YouTube or Vimeo to ensure fast global delivery without high storage costs."]
4364
+ })]
4365
+ })
4366
+ ]
4367
+ })]
4368
+ })
4508
4369
  })
4509
- })
4510
- ]
4511
- })]
4370
+ ]
4371
+ })
4372
+ ]
4512
4373
  })
4513
4374
  })
4514
4375
  });
@@ -4679,61 +4540,14 @@ function ImageCropDialog({ open, onOpenChange, imageUrl, filename = "image.jpg",
4679
4540
  }
4680
4541
  //#endregion
4681
4542
  //#region src/components/forms/fields/media-picker.tsx
4682
- /**
4683
- * Compress a raster image file client-side using the Canvas API before upload.
4684
- * - Skips SVGs, GIFs, and non-images (returned unchanged).
4685
- * - Skips if the result would be larger than the original.
4686
- * - maxDimension: longest edge cap in pixels (default 2048).
4687
- * - quality: JPEG/WebP quality 0–1 (default 0.85).
4688
- */
4689
- async function compressImage(file, maxDimension = 2048, quality = .85) {
4690
- if (!file.type.startsWith("image/") || file.type === "image/svg+xml" || file.type === "image/gif") return file;
4691
- return new Promise((resolve) => {
4692
- const img = new Image();
4693
- const objectUrl = URL.createObjectURL(file);
4694
- img.onerror = () => {
4695
- URL.revokeObjectURL(objectUrl);
4696
- resolve(file);
4697
- };
4698
- img.onload = () => {
4699
- URL.revokeObjectURL(objectUrl);
4700
- let { width, height } = img;
4701
- if (width > maxDimension || height > maxDimension) {
4702
- const ratio = Math.min(maxDimension / width, maxDimension / height);
4703
- width = Math.round(width * ratio);
4704
- height = Math.round(height * ratio);
4705
- }
4706
- const canvas = document.createElement("canvas");
4707
- canvas.width = width;
4708
- canvas.height = height;
4709
- const ctx = canvas.getContext("2d");
4710
- if (!ctx) {
4711
- resolve(file);
4712
- return;
4713
- }
4714
- ctx.drawImage(img, 0, 0, width, height);
4715
- const outputType = file.type === "image/png" ? "image/png" : "image/jpeg";
4716
- canvas.toBlob((blob) => {
4717
- if (!blob || blob.size >= file.size) {
4718
- resolve(file);
4719
- return;
4720
- }
4721
- resolve(new File([blob], file.name, {
4722
- type: outputType,
4723
- lastModified: Date.now()
4724
- }));
4725
- }, outputType, quality);
4726
- };
4727
- img.src = objectUrl;
4728
- });
4729
- }
4730
4543
  function MediaPicker({ collection, value, onChange, label, variant = "default", disabled, multiple, placeholder, valueType = "id" }) {
4731
4544
  const { client, schemas } = useDyrected();
4732
4545
  const [isOpen, setIsOpen] = React$1.useState(false);
4733
4546
  const [localMediaCache, setLocalMediaCache] = React$1.useState([]);
4734
- const [uploading, setUploading] = React$1.useState(false);
4735
- const [uploadProgress, setUploadProgress] = React$1.useState(0);
4736
4547
  const [cropState, setCropState] = React$1.useState(null);
4548
+ const activeMediaCollection = React$1.useMemo(() => {
4549
+ return resolveActiveMediaCollection(schemas, collection);
4550
+ }, [schemas, collection]);
4737
4551
  const selectedValues = React$1.useMemo(() => {
4738
4552
  if (!value) return [];
4739
4553
  return Array.isArray(value) ? value : [value];
@@ -4748,23 +4562,14 @@ function MediaPicker({ collection, value, onChange, label, variant = "default",
4748
4562
  const selectedIds = React$1.useMemo(() => {
4749
4563
  return selectedValues.map(getIdentifier).filter(Boolean);
4750
4564
  }, [selectedValues, getIdentifier]);
4751
- React$1.useEffect(() => {
4752
- if (!value) return;
4753
- const objects = (Array.isArray(value) ? value : [value]).filter((v) => typeof v === "object" && v !== null);
4754
- if (objects.length > 0) Promise.resolve().then(() => {
4755
- setLocalMediaCache((prev) => {
4756
- const next = [...prev];
4757
- objects.forEach((obj) => {
4758
- if (obj.id && !next.some((m) => m.id === obj.id)) next.push(obj);
4759
- });
4760
- return next;
4761
- });
4762
- });
4763
- }, [value]);
4764
- const activeMediaCollection = React$1.useMemo(() => {
4765
- if ((schemas?.collections?.find((c) => c.slug === collection))?.upload) return collection;
4766
- return "media";
4767
- }, [schemas, collection]);
4565
+ const getFullUrl = React$1.useCallback((item) => {
4566
+ if (!item) return "";
4567
+ if (valueType === "url") {
4568
+ if (item.mimeType === "video/youtube") return item.url || "";
4569
+ return getMediaUrl(item, client?.getBaseUrl() || "");
4570
+ }
4571
+ return item.id;
4572
+ }, [valueType, client]);
4768
4573
  const missingIds = React$1.useMemo(() => {
4769
4574
  return selectedIds.filter((id) => !localMediaCache.some((m) => m.id === id || m.filename === id || m.url === id));
4770
4575
  }, [selectedIds, localMediaCache]);
@@ -4791,14 +4596,6 @@ function MediaPicker({ collection, value, onChange, label, variant = "default",
4791
4596
  });
4792
4597
  });
4793
4598
  }, [fetchedMedia]);
4794
- const getFullUrl = React$1.useCallback((item) => {
4795
- if (!item) return "";
4796
- if (valueType === "url") {
4797
- if (item.mimeType === "video/youtube") return item.url || "";
4798
- return getMediaUrl(item, client?.getBaseUrl() || "");
4799
- }
4800
- return item.id;
4801
- }, [valueType, client]);
4802
4599
  const toggleValue = (id, item) => {
4803
4600
  if (item && item.id) setLocalMediaCache((prev) => {
4804
4601
  if (!prev.some((m) => m.id === item.id)) return [...prev, item];
@@ -4848,61 +4645,52 @@ function MediaPicker({ collection, value, onChange, label, variant = "default",
4848
4645
  getFullUrl,
4849
4646
  onChange
4850
4647
  ]);
4851
- const onDrop = React$1.useCallback(async (acceptedFiles) => {
4852
- if (acceptedFiles.length === 0 || !client) return;
4853
- setUploading(true);
4854
- setUploadProgress(0);
4855
- const toastId = toast.loading(`Uploading ${acceptedFiles.length} file(s)...`);
4856
- try {
4857
- const uploadedItems = [];
4858
- const total = acceptedFiles.length;
4859
- for (let i = 0; i < acceptedFiles.length; i++) {
4860
- const processedFile = await compressImage(acceptedFiles[i]);
4861
- const res = await client.collection(activeMediaCollection).upload(processedFile, void 0, { onProgress: (pct) => setUploadProgress(Math.round((i + pct / 100) / total * 100)) });
4862
- uploadedItems.push(res);
4863
- }
4864
- setUploadProgress(100);
4865
- setLocalMediaCache((prev) => {
4866
- const next = [...prev];
4867
- uploadedItems.forEach((item) => {
4868
- if (item && item.id && !next.some((m) => m.id === item.id)) next.push(item);
4869
- });
4870
- return next;
4648
+ const handleUploadedItems = React$1.useCallback((uploadedItems) => {
4649
+ setLocalMediaCache((prev) => {
4650
+ const next = [...prev];
4651
+ uploadedItems.forEach((item) => {
4652
+ if (item && item.id && !next.some((m) => m.id === item.id)) next.push(item);
4871
4653
  });
4872
- const newIds = uploadedItems.map((item) => item.id);
4873
- if (multiple) {
4874
- const nextIds = [...selectedIds];
4875
- newIds.forEach((id) => {
4876
- if (!nextIds.includes(id)) nextIds.push(id);
4877
- });
4878
- onChange(nextIds.map((nid) => {
4879
- const cached = localMediaCache.find((m) => m.id === nid || m.filename === nid || m.url === nid) || uploadedItems.find((m) => m.id === nid || m.filename === nid || m.url === nid);
4880
- return cached ? getFullUrl(cached) : nid;
4881
- }));
4882
- } else if (newIds.length > 0) {
4883
- const nid = newIds[0];
4884
- const cached = uploadedItems.find((m) => m.id === nid || m.filename === nid || m.url === nid);
4885
- onChange(cached ? getFullUrl(cached) : nid);
4886
- }
4887
- toast.success(`Successfully uploaded and selected ${acceptedFiles.length} asset(s)`, { id: toastId });
4888
- } catch (err) {
4889
- toast.error("Upload failed", {
4890
- description: err.message,
4891
- id: toastId
4654
+ return next;
4655
+ });
4656
+ const newIds = uploadedItems.map((item) => item.id);
4657
+ if (multiple) {
4658
+ const nextIds = [...selectedIds];
4659
+ newIds.forEach((id) => {
4660
+ if (!nextIds.includes(id)) nextIds.push(id);
4892
4661
  });
4893
- } finally {
4894
- setUploading(false);
4895
- setUploadProgress(0);
4662
+ onChange(nextIds.map((nid) => {
4663
+ const cached = localMediaCache.find((m) => m.id === nid || m.filename === nid || m.url === nid) || uploadedItems.find((m) => m.id === nid || m.filename === nid || m.url === nid);
4664
+ return cached ? getFullUrl(cached) : nid;
4665
+ }));
4666
+ } else if (newIds.length > 0) {
4667
+ const nid = newIds[0];
4668
+ const cached = uploadedItems.find((m) => m.id === nid || m.filename === nid || m.url === nid);
4669
+ onChange(cached ? getFullUrl(cached) : nid);
4896
4670
  }
4897
4671
  }, [
4898
- client,
4899
- activeMediaCollection,
4900
4672
  multiple,
4901
4673
  selectedIds,
4902
4674
  localMediaCache,
4903
4675
  getFullUrl,
4904
4676
  onChange
4905
4677
  ]);
4678
+ const { isUploading: uploading, queue, uploadFiles } = useMediaUpload({
4679
+ collectionSlug: activeMediaCollection,
4680
+ onAllCompleted: (items) => {
4681
+ handleUploadedItems(items);
4682
+ toast.success(`Successfully uploaded and selected ${items.length} asset(s)`);
4683
+ },
4684
+ onError: (err) => toast.error("Upload failed", { description: err.message })
4685
+ });
4686
+ const uploadProgress = React$1.useMemo(() => {
4687
+ if (queue.length === 0) return 0;
4688
+ const total = queue.reduce((acc, q) => acc + q.progress, 0);
4689
+ return Math.round(total / queue.length);
4690
+ }, [queue]);
4691
+ const onDrop = React$1.useCallback((acceptedFiles) => {
4692
+ if (acceptedFiles.length > 0) uploadFiles(acceptedFiles);
4693
+ }, [uploadFiles]);
4906
4694
  const checkIsCropable = React$1.useCallback((id, item) => {
4907
4695
  if (item) return item.mimeType?.startsWith("image/") && item.mimeType !== "image/svg+xml";
4908
4696
  if (!id) return false;
@@ -5087,7 +4875,7 @@ function MediaPicker({ collection, value, onChange, label, variant = "default",
5087
4875
  className: "dy-w-full dy-h-full dy-object-cover dy-transition-transform dy-group-hover:dy-scale-110"
5088
4876
  }) : /* @__PURE__ */ jsx("div", {
5089
4877
  className: "dy-w-full dy-h-full dy-animate-pulse dy-bg-muted/50 dy-flex dy-items-center dy-justify-center",
5090
- children: /* @__PURE__ */ jsx(Image$1, { className: "dy-h-6 dy-w-6 dy-text-muted-foreground/20" })
4878
+ children: /* @__PURE__ */ jsx(Image, { className: "dy-h-6 dy-w-6 dy-text-muted-foreground/20" })
5091
4879
  }),
5092
4880
  index === 0 && /* @__PURE__ */ jsx("div", {
5093
4881
  className: "dy-absolute dy-top-0 dy-left-0 dy-w-full dy-text-center dy-z-10 dy-px-3 dy-py-1 dy-bg-primary dy-text-white dy-text-[9px] dy-font-black dy-uppercase dy-tracking-widest dy-shadow-primary/20",
@@ -5232,7 +5020,7 @@ function MediaPicker({ collection, value, onChange, label, variant = "default",
5232
5020
  className: "dy-w-full dy-h-full dy-object-cover dy-transition-transform dy-group-hover:dy-scale-110"
5233
5021
  }) : /* @__PURE__ */ jsx("div", {
5234
5022
  className: "dy-w-full dy-h-full dy-animate-pulse dy-bg-muted/50 dy-flex dy-items-center dy-justify-center",
5235
- children: /* @__PURE__ */ jsx(Image$1, { className: "dy-h-6 dy-w-6 dy-text-muted-foreground/20" })
5023
+ children: /* @__PURE__ */ jsx(Image, { className: "dy-h-6 dy-w-6 dy-text-muted-foreground/20" })
5236
5024
  })
5237
5025
  }),
5238
5026
  !disabled && /* @__PURE__ */ jsxs("div", {
@@ -5272,7 +5060,7 @@ function MediaPicker({ collection, value, onChange, label, variant = "default",
5272
5060
  className: "dy-px-2 dy-h-8 dy-w-8 dy-rounded-lg",
5273
5061
  disabled,
5274
5062
  onClick: () => setIsOpen(true),
5275
- children: /* @__PURE__ */ jsx(Image$1, { className: "dy-h-4 dy-w-4" })
5063
+ children: /* @__PURE__ */ jsx(Image, { className: "dy-h-4 dy-w-4" })
5276
5064
  }),
5277
5065
  /* @__PURE__ */ jsx(MediaLibraryDialog, {
5278
5066
  collection: activeMediaCollection,
@@ -5617,7 +5405,7 @@ function RichTextEditor({ value, onChange, label, disabled, collection = "media"
5617
5405
  } : false
5618
5406
  }),
5619
5407
  ...has("align") ? [TextAlign.configure({ types: ["heading", "paragraph"] })] : [],
5620
- ...has("image") ? [Image$2.configure({ HTMLAttributes: { class: "rounded-md max-w-full h-auto my-4 cursor-pointer hover:ring-2 hover:ring-primary/50 transition-all" } })] : [],
5408
+ ...has("image") ? [Image$1.configure({ HTMLAttributes: { class: "rounded-md max-w-full h-auto my-4 cursor-pointer hover:ring-2 hover:ring-primary/50 transition-all" } })] : [],
5621
5409
  ...has("table") ? [TableKit.configure({
5622
5410
  table: { HTMLAttributes: { class: "dy-border-collapse dy-w-full dy-my-4" } },
5623
5411
  tableCell: { HTMLAttributes: { class: "dy-border dy-border-border dy-p-2 dy-align-top dy-min-w-[100px]" } },
@@ -6196,286 +5984,6 @@ var FormMessage = React$1.forwardRef(({ className, children, ...props }, ref) =>
6196
5984
  });
6197
5985
  FormMessage.displayName = "FormMessage";
6198
5986
  //#endregion
6199
- //#region src/components/forms/utils.ts
6200
- /**
6201
- * Normalises a field's `options` array to the canonical `{ label, value }` shape.
6202
- * Accepts either a shorthand string array or the full object form.
6203
- */
6204
- function normalizeOptions(options) {
6205
- if (!options) return [];
6206
- return options.map((opt) => typeof opt === "string" ? {
6207
- label: opt,
6208
- value: opt
6209
- } : opt);
6210
- }
6211
- /**
6212
- * Builds a Zod schema shape from a collection's field definitions.
6213
- * Used by the form engine to validate the edit form before submission.
6214
- *
6215
- * @param fields - Field definitions from the collection schema.
6216
- * @param isEdit - When `true`, password fields accept an empty string (no change).
6217
- * @returns A record of Zod validators keyed by field name, suitable for `z.object(shape)`.
6218
- */
6219
- function buildSchemaShape(fields, isEdit = false) {
6220
- const shape = {};
6221
- fields.forEach((field) => {
6222
- if (field.type === "join") return;
6223
- if (field.type === "row" && field.fields) {
6224
- Object.assign(shape, buildSchemaShape(field.fields, isEdit));
6225
- return;
6226
- }
6227
- const name = field.name;
6228
- let validator = z.any();
6229
- const label = field.label || name.charAt(0).toUpperCase() + name.slice(1);
6230
- const isPassword = name === "password" || field.type === "password";
6231
- if (field.type === "object" && field.fields) {
6232
- validator = z.object(buildSchemaShape(field.fields, isEdit));
6233
- if (!field.required) validator = validator.optional();
6234
- shape[name] = validator;
6235
- return;
6236
- }
6237
- if (field.type === "blocks") {
6238
- validator = z.array(z.any());
6239
- if (!field.required) validator = validator.optional();
6240
- shape[name] = validator;
6241
- return;
6242
- }
6243
- if (field.type === "array" && field.fields) {
6244
- validator = z.array(z.object(buildSchemaShape(field.fields, isEdit)));
6245
- if (!field.required) validator = validator.optional();
6246
- shape[name] = validator;
6247
- return;
6248
- }
6249
- const fieldType = field.type;
6250
- if (fieldType === "relationship" || fieldType === "image") {
6251
- const singleRelSchema = z.union([z.string(), z.object({ id: z.string() }).passthrough()]);
6252
- validator = z.union([singleRelSchema, z.array(singleRelSchema)]);
6253
- if (field.required) validator = validator.refine((val) => {
6254
- if (typeof val === "string") return val.trim().length > 0;
6255
- if (Array.isArray(val)) {
6256
- if (val.length === 0) return false;
6257
- return val.every((item) => {
6258
- if (typeof item === "string") return item.trim().length > 0;
6259
- if (item && typeof item === "object") return typeof item.id === "string" && item.id.trim().length > 0;
6260
- return false;
6261
- });
6262
- }
6263
- if (val && typeof val === "object") return typeof val.id === "string" && val.id.trim().length > 0;
6264
- return false;
6265
- }, { message: `${label} is required` });
6266
- } else if (fieldType === "text" || fieldType === "textarea" || fieldType === "select" || fieldType === "radio" || fieldType === "richText" || fieldType === "date" || fieldType === "datetime" || fieldType === "time" || fieldType === "icon" || fieldType === "password") {
6267
- validator = z.string();
6268
- if (isPassword) if (!isEdit) validator = validator.min(8, "Password must be at least 8 characters");
6269
- else validator = z.string().refine((val) => val === "" || val.length >= 8, { message: "Password must be at least 8 characters" });
6270
- else if (field.required) validator = validator.min(1, `${label} is required`);
6271
- } else if (field.type === "email") {
6272
- validator = z.string().email(`${label} must be a valid email`);
6273
- if (field.required) validator = validator.min(1, `${label} is required`);
6274
- } else if (field.type === "url") {
6275
- const urlObjectSchema = z.object({
6276
- type: z.enum(["custom", "internal"]),
6277
- url: z.string(),
6278
- relationTo: z.string().optional(),
6279
- value: z.string().optional(),
6280
- label: z.string().optional()
6281
- });
6282
- validator = z.union([z.string(), urlObjectSchema]);
6283
- if (field.required) validator = validator.refine((val) => {
6284
- if (typeof val === "string") return val.trim().length > 0;
6285
- if (val && typeof val === "object") return typeof val.url === "string" && val.url.trim().length > 0;
6286
- return false;
6287
- }, { message: `${label} is required` });
6288
- } else if (field.type === "number") validator = z.coerce.number();
6289
- else if (field.type === "boolean") validator = z.boolean();
6290
- else if (field.type === "json") validator = z.any();
6291
- else if (field.type === "multiSelect") {
6292
- validator = z.array(z.string());
6293
- if (field.required) validator = validator.min(1, `${label} requires at least one selection`);
6294
- }
6295
- if (!field.required && field.type !== "multiSelect") validator = validator.optional().or(z.literal(""));
6296
- else if (!field.required && field.type === "multiSelect") validator = validator.optional();
6297
- shape[name] = validator;
6298
- });
6299
- return shape;
6300
- }
6301
- /**
6302
- * Builds `react-hook-form` default values from a collection's field definitions
6303
- * and an existing document (or an empty object for new documents).
6304
- *
6305
- * Handles nested `object`, `array`, and `blocks` fields recursively.
6306
- * Relationship and image fields are normalised to their IDs.
6307
- * Password fields are always reset to `""` so they are never pre-filled.
6308
- *
6309
- * @param fields - Field definitions from the collection schema.
6310
- * @param defaults - Existing document data, or `{}` for a new document.
6311
- */
6312
- function buildDefaultValues(fields, defaults) {
6313
- return fields.reduce((acc, field) => {
6314
- if (field.type === "join") {
6315
- if (field.name && defaults[field.name] !== void 0) acc[field.name] = defaults[field.name];
6316
- return acc;
6317
- }
6318
- if (field.type === "row" && field.fields) {
6319
- Object.assign(acc, buildDefaultValues(field.fields, defaults));
6320
- return acc;
6321
- }
6322
- const name = field.name;
6323
- let defaultVal = defaults[name] ?? field.defaultValue;
6324
- if (name === "password" || field.type === "password") defaultVal = "";
6325
- if (field.type === "object" && field.fields) {
6326
- acc[name] = buildDefaultValues(field.fields, defaultVal || {});
6327
- return acc;
6328
- }
6329
- if (field.type === "array") {
6330
- const arr = Array.isArray(defaultVal) ? defaultVal : [];
6331
- if (field.fields) acc[name] = arr.map((item) => buildDefaultValues(field.fields, item || {}));
6332
- else acc[name] = arr;
6333
- return acc;
6334
- }
6335
- if (field.type === "blocks") {
6336
- acc[name] = (Array.isArray(defaultVal) ? defaultVal : []).map((item) => {
6337
- const block = field.blocks?.find((b) => b.slug === item.blockType);
6338
- if (block && block.fields) {
6339
- const merged = {
6340
- ...item,
6341
- ...buildDefaultValues(block.fields, item || {})
6342
- };
6343
- if (block.variants?.length && merged.variant == null) merged.variant = block.variants[0].slug;
6344
- return merged;
6345
- }
6346
- return item;
6347
- });
6348
- return acc;
6349
- }
6350
- if (field.type === "relationship" || field.type === "image") {
6351
- if (Array.isArray(defaultVal)) acc[name] = defaultVal.map((val) => val && typeof val === "object" && "id" in val ? val.id : val);
6352
- else if (defaultVal && typeof defaultVal === "object" && "id" in defaultVal) acc[name] = defaultVal.id;
6353
- else acc[name] = defaultVal ?? "";
6354
- return acc;
6355
- }
6356
- if (defaultVal === void 0) if (field.type === "boolean") defaultVal = false;
6357
- else if (field.type === "multiSelect") defaultVal = [];
6358
- else if (field.type === "json") defaultVal = {};
6359
- else defaultVal = "";
6360
- acc[name] = defaultVal;
6361
- return acc;
6362
- }, {});
6363
- }
6364
- /**
6365
- * Flattens a nested `react-hook-form` errors object into a list of
6366
- * `{ path, message }` pairs for rendering under individual fields.
6367
- *
6368
- * @param errors - The `formState.errors` object from `react-hook-form`.
6369
- * @param path - Dot-notation prefix accumulated during recursion (omit when calling externally).
6370
- * @returns A flat array of field path / error message pairs.
6371
- */
6372
- function getFlatErrors(errors, path = "") {
6373
- const result = [];
6374
- if (!errors) return result;
6375
- if (typeof errors === "object") {
6376
- const asMsg = errors;
6377
- if (typeof asMsg.message === "string") {
6378
- result.push({
6379
- path,
6380
- message: asMsg.message
6381
- });
6382
- return result;
6383
- }
6384
- for (const key in errors) if (Object.prototype.hasOwnProperty.call(errors, key)) {
6385
- if (key === "ref" || key === "type") continue;
6386
- const nextPath = path ? `${path}.${key}` : key;
6387
- result.push(...getFlatErrors(errors[key], nextPath));
6388
- }
6389
- }
6390
- return result;
6391
- }
6392
- /**
6393
- * Formats a dot-notation field path into a human-readable label.
6394
- * Array indices are converted to 1-based "Item N" labels.
6395
- *
6396
- * @example
6397
- * formatPath("address.street") // → "Address > Street"
6398
- * formatPath("items.0.name") // → "Items > Item 1 > Name"
6399
- */
6400
- function formatPath(path) {
6401
- return path.split(".").map((part) => {
6402
- if (/^\d+$/.test(part)) return `Item ${parseInt(part, 10) + 1}`;
6403
- return part.charAt(0).toUpperCase() + part.slice(1).replace(/([A-Z])/g, " $1");
6404
- }).join(" > ");
6405
- }
6406
- /**
6407
- * Walks the schema tree alongside a dot-notation path (e.g. "body.2.cta.url")
6408
- * and returns the ordered PathSegments representing each drillable container
6409
- * boundary crossed. Drillable boundaries are:
6410
- * - `blocks` fields (always drillable)
6411
- * - `array` or `object` fields with `admin.drillIn === true`
6412
- * Leaf field names and raw numeric indices are consumed but not emitted.
6413
- *
6414
- * @param fields Top-level field schemas for the collection.
6415
- * @param path Dot-notation path, e.g. "body.2.cta.url"
6416
- * @param getStableId Resolves (basePath, rawIndex) → stableId from live
6417
- * useFieldArray state. Takes the full cumulative RHF path
6418
- * (e.g. "body.2.items"), not just the leaf field name, to
6419
- * disambiguate identically-named sub-arrays across block types.
6420
- * @returns Ordered PathSegment[] for the drill-in trail, or null if the path
6421
- * cannot be resolved against the schema.
6422
- */
6423
- function resolveContainerPath(fields, path, getStableId) {
6424
- const segments = path.split(".");
6425
- const result = [];
6426
- let currentFields = fields;
6427
- let i = 0;
6428
- let cumulativePath = "";
6429
- const join = (base, next) => base ? `${base}.${next}` : next;
6430
- const labelFor = (field, name) => field.label || name.charAt(0).toUpperCase() + name.slice(1);
6431
- while (i < segments.length) {
6432
- const segment = segments[i];
6433
- if (/^\d+$/.test(segment)) {
6434
- cumulativePath = join(cumulativePath, segment);
6435
- i++;
6436
- continue;
6437
- }
6438
- const field = currentFields.find((f) => f.name === segment);
6439
- if (!field) return null;
6440
- const isLast = i === segments.length - 1;
6441
- const fieldPath = join(cumulativePath, segment);
6442
- const isBlocks = field.type === "blocks";
6443
- const isDrillInArray = field.type === "array" && field.admin?.drillIn === true;
6444
- if (isBlocks || isDrillInArray) {
6445
- const nextIndex = i + 1 < segments.length ? parseInt(segments[i + 1], 10) : NaN;
6446
- if (isLast || isNaN(nextIndex)) break;
6447
- const itemBasePath = join(fieldPath, String(nextIndex));
6448
- result.push({
6449
- fieldName: segment,
6450
- basePath: itemBasePath,
6451
- stableId: getStableId(fieldPath, nextIndex),
6452
- breadcrumbLabel: labelFor(field, segment)
6453
- });
6454
- cumulativePath = itemBasePath;
6455
- i += 2;
6456
- currentFields = isBlocks ? (field.blocks ?? []).flatMap((b) => b.fields ?? []) : field.fields ?? [];
6457
- continue;
6458
- }
6459
- if (field.type === "object" && field.admin?.drillIn === true) {
6460
- if (isLast) break;
6461
- result.push({
6462
- fieldName: segment,
6463
- basePath: fieldPath,
6464
- stableId: void 0,
6465
- breadcrumbLabel: labelFor(field, segment)
6466
- });
6467
- cumulativePath = fieldPath;
6468
- i++;
6469
- currentFields = field.fields ?? [];
6470
- continue;
6471
- }
6472
- cumulativePath = fieldPath;
6473
- if (field.fields && !isLast) currentFields = field.fields;
6474
- i++;
6475
- }
6476
- return result;
6477
- }
6478
- //#endregion
6479
5987
  //#region src/components/forms/hooks-sandbox.ts
6480
5988
  var sandboxIframe = null;
6481
5989
  var messageHandlers = /* @__PURE__ */ new Map();
@@ -6632,39 +6140,52 @@ function TextField({ schema, field, disabled }) {
6632
6140
  };
6633
6141
  const inputEl = (() => {
6634
6142
  switch (schema.type) {
6635
- case "number": return /* @__PURE__ */ jsx(Input, {
6636
- type: "number",
6637
- ...field,
6638
- value: field.value ?? "",
6639
- placeholder: schema.admin?.placeholder || "0",
6640
- disabled,
6641
- min: getMin(schema),
6642
- max: getMax(schema)
6643
- });
6644
- case "email": return /* @__PURE__ */ jsx(Input, {
6645
- type: "email",
6646
- ...field,
6647
- value: field.value ?? "",
6648
- placeholder,
6649
- disabled,
6650
- maxLength
6651
- });
6652
- case "url": return /* @__PURE__ */ jsx(Input, {
6653
- type: "url",
6654
- ...field,
6655
- value: field.value ?? "",
6656
- placeholder: schema.admin?.placeholder || "https://",
6657
- disabled,
6658
- maxLength
6143
+ case "number": return renderNumberInput(schema, field, disabled);
6144
+ case "email": return /* @__PURE__ */ jsxs("div", {
6145
+ className: "dy-flex dy-items-stretch dy-gap-2",
6146
+ children: [/* @__PURE__ */ jsx(Input, {
6147
+ type: "email",
6148
+ ...field,
6149
+ value: field.value ?? "",
6150
+ placeholder,
6151
+ disabled,
6152
+ maxLength
6153
+ }), /* @__PURE__ */ jsx(LinkAction, {
6154
+ fieldType: "email",
6155
+ value: field.value,
6156
+ format: schema.admin?.format,
6157
+ disabled
6158
+ })]
6659
6159
  });
6660
- default: return /* @__PURE__ */ jsx(Input, {
6661
- type: schema.name === "password" || schema.type === "password" ? "password" : "text",
6662
- ...field,
6663
- value: field.value ?? "",
6664
- placeholder,
6665
- disabled,
6666
- maxLength
6160
+ case "url": return /* @__PURE__ */ jsxs("div", {
6161
+ className: "dy-flex dy-items-stretch dy-gap-2",
6162
+ children: [/* @__PURE__ */ jsx(Input, {
6163
+ type: "url",
6164
+ ...field,
6165
+ value: field.value ?? "",
6166
+ placeholder: schema.admin?.placeholder || "https://",
6167
+ disabled,
6168
+ maxLength
6169
+ }), /* @__PURE__ */ jsx(LinkAction, {
6170
+ fieldType: "url",
6171
+ value: field.value,
6172
+ format: schema.admin?.format,
6173
+ disabled
6174
+ })]
6667
6175
  });
6176
+ default: {
6177
+ const isPassword = schema.name === "password" || schema.type === "password";
6178
+ const textFormat = schema.type === "text" ? schema.admin?.format : void 0;
6179
+ return /* @__PURE__ */ jsx(Input, {
6180
+ type: isPassword ? "password" : "text",
6181
+ ...field,
6182
+ value: field.value ?? "",
6183
+ placeholder,
6184
+ disabled,
6185
+ maxLength,
6186
+ className: cn(isCodeText(textFormat) && "dy-font-mono")
6187
+ });
6188
+ }
6668
6189
  }
6669
6190
  })();
6670
6191
  const numberFormat = schema.type === "number" ? schema.admin?.format : void 0;
@@ -6682,6 +6203,14 @@ function TextField({ schema, field, disabled }) {
6682
6203
  })]
6683
6204
  });
6684
6205
  }
6206
+ const textPreview = schema.type === "text" ? getTextPreview(field.value, schema.admin?.format) : null;
6207
+ if (textPreview) return /* @__PURE__ */ jsxs("div", {
6208
+ className: "dy-space-y-1",
6209
+ children: [inputEl, /* @__PURE__ */ jsx("span", {
6210
+ className: "dy-text-xs dy-text-muted-foreground",
6211
+ children: textPreview
6212
+ })]
6213
+ });
6685
6214
  const hasMaxLength = maxLength && typeof maxLength === "number";
6686
6215
  const hasMaxWords = maxWords && typeof maxWords === "number";
6687
6216
  if (hasMaxLength || hasMaxWords) return /* @__PURE__ */ jsxs("div", {
@@ -6709,6 +6238,172 @@ function TextField({ schema, field, disabled }) {
6709
6238
  });
6710
6239
  return inputEl;
6711
6240
  }
6241
+ function renderNumberInput(schema, field, disabled) {
6242
+ const min = getMin(schema);
6243
+ const max = getMax(schema);
6244
+ const format = schema.admin?.format;
6245
+ const rating = getRatingSpec(field.value, format);
6246
+ if (rating) {
6247
+ const current = typeof field.value === "number" ? field.value : Number(field.value || 0);
6248
+ return /* @__PURE__ */ jsxs("div", {
6249
+ className: "dy-space-y-3",
6250
+ children: [/* @__PURE__ */ jsx("div", {
6251
+ className: "dy-inline-flex dy-items-center dy-gap-1 dy-rounded-xl dy-border dy-border-border/50 dy-bg-background/70 dy-p-1",
6252
+ role: "radiogroup",
6253
+ "aria-label": `${schema.label || schema.name} rating`,
6254
+ children: Array.from({ length: rating.max }, (_, index) => {
6255
+ const value = index + 1;
6256
+ const active = value <= Math.round(current);
6257
+ return /* @__PURE__ */ jsx("button", {
6258
+ type: "button",
6259
+ role: "radio",
6260
+ "aria-checked": active,
6261
+ "aria-label": `Set rating to ${value}`,
6262
+ disabled,
6263
+ onClick: () => field.onChange(value),
6264
+ className: cn("dy-flex dy-h-10 dy-w-10 dy-items-center dy-justify-center dy-rounded-lg dy-transition-colors", active ? "dy-bg-amber-400/15" : "hover:dy-bg-muted", disabled && "dy-cursor-not-allowed dy-opacity-50"),
6265
+ children: /* @__PURE__ */ jsx(Star, { className: cn("dy-h-5 dy-w-5", active ? "dy-fill-amber-400 dy-text-amber-400" : "dy-text-muted-foreground/35") })
6266
+ }, value);
6267
+ })
6268
+ }), /* @__PURE__ */ jsx("input", {
6269
+ ...field,
6270
+ type: "hidden",
6271
+ value: field.value ?? "",
6272
+ min,
6273
+ max
6274
+ })]
6275
+ });
6276
+ }
6277
+ const adornment = getNumberAdornment(format);
6278
+ const step = getNumberStep(schema, field.value);
6279
+ const adjustValue = (direction) => {
6280
+ const raw = field.value;
6281
+ const current = raw === "" || raw === null || raw === void 0 ? 0 : Number(raw);
6282
+ const next = clampNumber(roundNumber((Number.isFinite(current) ? current : 0) + direction * step, step), min, max);
6283
+ field.onChange(next);
6284
+ };
6285
+ return /* @__PURE__ */ jsxs("div", {
6286
+ className: "dy-flex dy-items-stretch dy-gap-2",
6287
+ children: [
6288
+ /* @__PURE__ */ jsx(StepperButton, {
6289
+ ariaLabel: `Decrease ${schema.label || schema.name}`,
6290
+ icon: /* @__PURE__ */ jsx(Minus, { className: "dy-h-4 dy-w-4" }),
6291
+ disabled: disabled || isStepLimitReached(field.value, min, step, -1),
6292
+ onClick: () => adjustValue(-1)
6293
+ }),
6294
+ /* @__PURE__ */ jsxs("div", {
6295
+ className: "dy-relative dy-flex-1",
6296
+ children: [
6297
+ adornment?.prefix && /* @__PURE__ */ jsx("span", {
6298
+ className: "dy-pointer-events-none dy-absolute dy-left-4 dy-top-1/2 dy-z-10 dy--translate-y-1/2 dy-text-sm dy-font-medium dy-text-muted-foreground",
6299
+ children: adornment.prefix
6300
+ }),
6301
+ /* @__PURE__ */ jsx(Input, {
6302
+ type: "number",
6303
+ ...field,
6304
+ value: field.value ?? "",
6305
+ placeholder: schema.admin?.placeholder || "0",
6306
+ disabled,
6307
+ min,
6308
+ max,
6309
+ step: "any",
6310
+ className: cn(adornment?.prefix && "dy-pl-12", adornment?.suffix && "dy-pr-14")
6311
+ }),
6312
+ adornment?.suffix && /* @__PURE__ */ jsx("span", {
6313
+ className: "dy-pointer-events-none dy-absolute dy-right-4 dy-top-1/2 dy-z-10 dy--translate-y-1/2 dy-text-sm dy-font-medium dy-text-muted-foreground",
6314
+ children: adornment.suffix
6315
+ })
6316
+ ]
6317
+ }),
6318
+ /* @__PURE__ */ jsx(StepperButton, {
6319
+ ariaLabel: `Increase ${schema.label || schema.name}`,
6320
+ icon: /* @__PURE__ */ jsx(Plus, { className: "dy-h-4 dy-w-4" }),
6321
+ disabled: disabled || isStepLimitReached(field.value, max, step, 1),
6322
+ onClick: () => adjustValue(1)
6323
+ })
6324
+ ]
6325
+ });
6326
+ }
6327
+ function StepperButton({ ariaLabel, icon, disabled, onClick }) {
6328
+ return /* @__PURE__ */ jsx("button", {
6329
+ type: "button",
6330
+ "aria-label": ariaLabel,
6331
+ disabled,
6332
+ onClick,
6333
+ className: cn("dy-flex dy-h-12 dy-w-12 dy-items-center dy-justify-center dy-rounded-xl dy-border dy-border-border/50 dy-bg-background dy-text-foreground dy-shadow-sm dy-transition-all hover:dy-bg-muted", "disabled:dy-cursor-not-allowed disabled:dy-opacity-50"),
6334
+ children: icon
6335
+ });
6336
+ }
6337
+ function LinkAction({ fieldType, value, format, disabled }) {
6338
+ const spec = getLinkSpec(value, format, fieldType);
6339
+ if (!spec) return null;
6340
+ return /* @__PURE__ */ jsx("a", {
6341
+ href: spec.href,
6342
+ target: spec.newTab ? "_blank" : void 0,
6343
+ rel: spec.newTab ? "noreferrer" : void 0,
6344
+ "aria-disabled": disabled ? true : void 0,
6345
+ className: cn("dy-inline-flex dy-h-12 dy-w-12 dy-items-center dy-justify-center dy-rounded-xl dy-border dy-border-border/50 dy-bg-background dy-text-muted-foreground dy-shadow-sm dy-transition-all hover:dy-bg-muted hover:dy-text-foreground", disabled && "dy-pointer-events-none dy-opacity-50"),
6346
+ title: fieldType === "email" ? "Open email composer" : "Open link",
6347
+ children: fieldType === "email" ? /* @__PURE__ */ jsx(Mail, { className: "dy-h-4 dy-w-4" }) : /* @__PURE__ */ jsx(ExternalLink, { className: "dy-h-4 dy-w-4" })
6348
+ });
6349
+ }
6350
+ function getNumberAdornment(format) {
6351
+ const resolved = resolveNumberFormat(format);
6352
+ if (!resolved) return null;
6353
+ if (resolved.type === "currency") {
6354
+ const currency = resolved.currency ?? "USD";
6355
+ try {
6356
+ return { prefix: new Intl.NumberFormat(resolved.locale, {
6357
+ style: "currency",
6358
+ currency
6359
+ }).formatToParts(0).find((part) => part.type === "currency")?.value ?? currency };
6360
+ } catch {
6361
+ return { prefix: currency };
6362
+ }
6363
+ }
6364
+ if (resolved.type === "percent") return { suffix: "%" };
6365
+ if (resolved.type === "unit") return { suffix: resolved.unitDisplay === "long" ? resolved.unit.replace(/-/g, " ") : resolved.unit };
6366
+ return null;
6367
+ }
6368
+ function getNumberStep(schema, value) {
6369
+ if (hasDecimal(value) || hasDecimal(schema.min) || hasDecimal(schema.max)) return .01;
6370
+ const resolved = resolveNumberFormat(schema.admin?.format);
6371
+ if (resolved && [
6372
+ "currency",
6373
+ "decimal",
6374
+ "percent",
6375
+ "unit"
6376
+ ].includes(resolved.type)) return .01;
6377
+ return 1;
6378
+ }
6379
+ function hasDecimal(value) {
6380
+ return typeof value === "number" ? !Number.isInteger(value) : typeof value === "string" && value.includes(".");
6381
+ }
6382
+ function roundNumber(value, step) {
6383
+ const precision = step >= 1 ? 0 : String(step).split(".")[1]?.length ?? 0;
6384
+ return Number(value.toFixed(precision));
6385
+ }
6386
+ function clampNumber(value, min, max) {
6387
+ if (typeof min === "number" && value < min) return min;
6388
+ if (typeof max === "number" && value > max) return max;
6389
+ return value;
6390
+ }
6391
+ function isStepLimitReached(value, limit, step, direction) {
6392
+ if (typeof limit !== "number") return false;
6393
+ const current = value === "" || value === null || value === void 0 ? 0 : Number(value);
6394
+ if (!Number.isFinite(current)) return false;
6395
+ return direction < 0 ? current - step < limit : current + step > limit;
6396
+ }
6397
+ function getTextPreview(value, format) {
6398
+ const resolved = resolveTextFormat(format);
6399
+ if (!resolved) return null;
6400
+ if (resolved.type === "code") return "Stored exactly as typed.";
6401
+ const preview = String(value ?? "");
6402
+ if (!preview) return null;
6403
+ const transformed = formatText(preview, format);
6404
+ if (!transformed || transformed === preview) return null;
6405
+ return `Preview: ${transformed}`;
6406
+ }
6712
6407
  function getMaxLength(schema) {
6713
6408
  if (schema.type === "number") return;
6714
6409
  return schema.maxLength ?? schema.admin?.maxLength;
@@ -6856,13 +6551,16 @@ function SelectField({ schema, field, disabled, collection, siblingValues }) {
6856
6551
  enabled: !!client && isDynamic && !!collection && !!schema.name,
6857
6552
  placeholderData: keepPreviousData
6858
6553
  });
6859
- const options = normalizeOptions(isDynamic ? dynamicOptions || [] : schema.options).map((opt) => ({
6554
+ const rawOptions = isDynamic ? dynamicOptions || [] : schema.options;
6555
+ const options = normalizeOptions(rawOptions).map((opt) => ({
6860
6556
  label: opt.label,
6861
6557
  value: String(opt.value ?? "")
6862
6558
  }));
6559
+ const optionFormat = schema.admin?.format;
6863
6560
  const currentValue = field.value === "" || field.value === void 0 || field.value === null ? "" : String(field.value);
6864
6561
  const selectedOption = options.find((opt) => opt.value === currentValue);
6865
6562
  const placeholder = isDynamic && isLoading ? "Loading options..." : schema.admin?.placeholder || `Select ${label.toLowerCase()}`;
6563
+ const selectedBadge = selectedOption ? getOptionBadge(selectedOption.value, optionFormat, rawOptions) : null;
6866
6564
  const handleOpenChange = (newOpen) => {
6867
6565
  setOpen(newOpen);
6868
6566
  if (!newOpen) setSearchVal("");
@@ -6883,7 +6581,10 @@ function SelectField({ schema, field, disabled, collection, siblingValues }) {
6883
6581
  className: cn("dy-h-12 dy-w-full dy-justify-between dy-rounded-lg dy-border-border/40 dy-bg-background/50 dy-px-4 dy-font-normal dy-shadow-sm dy-transition-all hover:dy-shadow-md", !selectedOption && "dy-text-muted-foreground"),
6884
6582
  children: [/* @__PURE__ */ jsx("span", {
6885
6583
  className: "dy-truncate",
6886
- children: selectedOption?.label || (currentValue && !selectedOption ? currentValue : placeholder)
6584
+ children: selectedBadge ? /* @__PURE__ */ jsx(Badge, {
6585
+ className: cn("dy-max-w-full dy-truncate", displayToneClass(selectedBadge.tone)),
6586
+ children: selectedBadge.label
6587
+ }) : selectedOption?.label || (currentValue && !selectedOption ? currentValue : placeholder)
6887
6588
  }), /* @__PURE__ */ jsxs("div", {
6888
6589
  className: "dy-flex dy-items-center dy-gap-1.5 dy-shrink-0",
6889
6590
  children: [selectedOption && !disabled && /* @__PURE__ */ jsx("span", {
@@ -6941,10 +6642,17 @@ function SelectField({ schema, field, disabled, collection, siblingValues }) {
6941
6642
  handleOpenChange(false);
6942
6643
  },
6943
6644
  className: "dy-rounded-lg dy-py-2.5",
6944
- children: [/* @__PURE__ */ jsx(Check, { className: cn("dy-mr-2 dy-h-4 dy-w-4", currentValue === opt.value ? "dy-opacity-100" : "dy-opacity-0") }), /* @__PURE__ */ jsx("span", {
6945
- className: "dy-truncate",
6946
- children: opt.label
6947
- })]
6645
+ children: [/* @__PURE__ */ jsx(Check, { className: cn("dy-mr-2 dy-h-4 dy-w-4", currentValue === opt.value ? "dy-opacity-100" : "dy-opacity-0") }), (() => {
6646
+ const badge = getOptionBadge(opt.value, optionFormat, rawOptions);
6647
+ if (!badge) return /* @__PURE__ */ jsx("span", {
6648
+ className: "dy-truncate",
6649
+ children: opt.label
6650
+ });
6651
+ return /* @__PURE__ */ jsx(Badge, {
6652
+ className: cn(displayToneClass(badge.tone)),
6653
+ children: badge.label
6654
+ });
6655
+ })()]
6948
6656
  }, opt.value || "__empty")) })
6949
6657
  ] })]
6950
6658
  })
@@ -7003,7 +6711,9 @@ function RadioField({ schema, field, disabled, collection, siblingValues }) {
7003
6711
  },
7004
6712
  enabled: !!client && isDynamic && !!collection && !!schema.name
7005
6713
  });
7006
- const options = normalizeOptions(isDynamic ? dynamicOptions || [] : Array.isArray(schema.options) ? schema.options : []);
6714
+ const rawOptions = isDynamic ? dynamicOptions || [] : Array.isArray(schema.options) ? schema.options : [];
6715
+ const options = normalizeOptions(rawOptions);
6716
+ const optionFormat = schema.admin?.format;
7007
6717
  const isHorizontal = schema.admin?.direction === "horizontal";
7008
6718
  if (isDynamic && isLoading) return /* @__PURE__ */ jsx("div", {
7009
6719
  className: "dy-flex dy-gap-3",
@@ -7027,7 +6737,14 @@ function RadioField({ schema, field, disabled, collection, siblingValues }) {
7027
6737
  }), /* @__PURE__ */ jsx(Label, {
7028
6738
  htmlFor: `${field.name}-${opt.value}`,
7029
6739
  className: cn("dy-flex dy-flex-1 dy-items-center dy-pl-12 dy-pr-4 dy-py-3 dy-rounded-lg dy-border dy-border-border/40 dy-bg-background/50 dy-cursor-pointer dy-transition-all hover:dy-bg-background/80 hover:dy-shadow-sm", "dy-peer-data-[state=checked]:dy-border-primary dy-peer-data-[state=checked]:dy-bg-primary/5 dy-peer-data-[state=checked]:dy-shadow-md dy-peer-data-[state=checked]:dy-ring-1 dy-peer-data-[state=checked]:dy-ring-primary/20", "dy-text-sm dy-font-medium dy-text-foreground/70 dy-peer-data-[state=checked]:dy-text-primary"),
7030
- children: opt.label
6740
+ children: (() => {
6741
+ const badge = getOptionBadge(opt.value, optionFormat, rawOptions);
6742
+ if (!badge) return opt.label;
6743
+ return /* @__PURE__ */ jsx(Badge, {
6744
+ className: cn(displayToneClass(badge.tone)),
6745
+ children: badge.label
6746
+ });
6747
+ })()
7031
6748
  })]
7032
6749
  }, opt.value))
7033
6750
  });
@@ -7078,6 +6795,7 @@ function MultiSelect({ options, value = [], onChange, label, placeholder = "Sele
7078
6795
  placeholderData: keepPreviousData
7079
6796
  });
7080
6797
  const rawOptions = isDynamic ? dynamicOptions || [] : options;
6798
+ const optionFormat = schema?.admin?.format;
7081
6799
  const normalizedOpts = (Array.isArray(rawOptions) ? rawOptions : []).map((opt) => {
7082
6800
  if (typeof opt === "string") return {
7083
6801
  label: opt,
@@ -7117,10 +6835,16 @@ function MultiSelect({ options, value = [], onChange, label, placeholder = "Sele
7117
6835
  className: "dy-truncate dy-text-muted-foreground",
7118
6836
  children: isDynamic && isLoading ? "Loading options..." : placeholder
7119
6837
  }), value.map((val) => {
6838
+ const option = normalizedOpts.find((opt) => opt.value === val);
7120
6839
  return /* @__PURE__ */ jsxs(Badge, {
7121
6840
  variant: "secondary",
7122
- className: "dy-mr-1 dy-items-center dy-gap-1 dy-rounded-md",
7123
- children: [normalizedOpts.find((opt) => opt.value === val)?.label || val, !disabled && /* @__PURE__ */ jsx("div", {
6841
+ className: cn("dy-mr-1 dy-items-center dy-gap-1 dy-rounded-md", (() => {
6842
+ const spec = getOptionBadge(val, optionFormat, rawOptions);
6843
+ return spec ? displayToneClass(spec.tone) : "";
6844
+ })()),
6845
+ children: [(() => {
6846
+ return getOptionBadge(val, optionFormat, rawOptions)?.label || option?.label || val;
6847
+ })(), !disabled && /* @__PURE__ */ jsx("div", {
7124
6848
  role: "button",
7125
6849
  tabIndex: 0,
7126
6850
  className: "dy-ring-offset-background dy-rounded-full dy-outline-none focus:dy-ring-2 focus:dy-ring-ring focus:dy-ring-offset-2",
@@ -7176,7 +6900,14 @@ function MultiSelect({ options, value = [], onChange, label, placeholder = "Sele
7176
6900
  value: `${option.label} ${option.value}`,
7177
6901
  onSelect: () => handleSelect(option.value),
7178
6902
  className: "dy-rounded-lg dy-py-2.5",
7179
- children: [/* @__PURE__ */ jsx(Check, { className: cn("dy-mr-2 dy-h-4 dy-w-4", isSelected ? "dy-opacity-100" : "dy-opacity-0") }), option.label]
6903
+ children: [/* @__PURE__ */ jsx(Check, { className: cn("dy-mr-2 dy-h-4 dy-w-4", isSelected ? "dy-opacity-100" : "dy-opacity-0") }), (() => {
6904
+ const spec = getOptionBadge(option.value, optionFormat, rawOptions);
6905
+ if (!spec) return option.label;
6906
+ return /* @__PURE__ */ jsx(Badge, {
6907
+ className: cn(displayToneClass(spec.tone)),
6908
+ children: spec.label
6909
+ });
6910
+ })()]
7180
6911
  }, option.value);
7181
6912
  }) })
7182
6913
  ] })]
@@ -7251,7 +6982,7 @@ function InlinePicker({ open, setOpen, triggerRef, children }) {
7251
6982
  children
7252
6983
  });
7253
6984
  }
7254
- function DatePicker({ value, onChange, label, disabled, withTime }) {
6985
+ function DatePicker({ value, onChange, label, disabled, withTime, fieldType, format: valueFormat }) {
7255
6986
  const [open, setOpen] = React$1.useState(false);
7256
6987
  const wrapperRef = React$1.useRef(null);
7257
6988
  const date = value ? new Date(value) : void 0;
@@ -7275,62 +7006,70 @@ function DatePicker({ value, onChange, label, disabled, withTime }) {
7275
7006
  newDate.setHours(h || 0, m || 0, 0, 0);
7276
7007
  onChange(newDate.toISOString());
7277
7008
  };
7278
- const displayFormat = withTime ? "PPP p" : "PPP";
7009
+ const triggerLabelFormat = withTime ? "PPP p" : "PPP";
7010
+ const helperText = date ? formatDate(date.toISOString(), valueFormat, fieldType) : null;
7279
7011
  return /* @__PURE__ */ jsxs("div", {
7280
7012
  className: "dy-flex dy-flex-col dy-gap-2",
7281
- children: [label && /* @__PURE__ */ jsx("label", {
7282
- className: "dy-text-sm dy-font-medium dy-leading-none",
7283
- children: label
7284
- }), /* @__PURE__ */ jsxs("div", {
7285
- ref: wrapperRef,
7286
- className: "dy-relative",
7287
- children: [/* @__PURE__ */ jsxs(Button, {
7288
- type: "button",
7289
- variant: "outline",
7290
- disabled,
7291
- onClick: () => setOpen((v) => !v),
7292
- className: cn("dy-w-full dy-justify-start dy-text-left dy-font-normal dy-h-11 dy-px-4 dy-bg-background hover:dy-bg-muted/50 dy-border-border/60 dy-shadow-sm dy-transition-all hover:dy-shadow-md", !date && "dy-text-muted-foreground", open && "dy-ring-2 dy-ring-primary/20 dy-border-primary/40"),
7293
- children: [
7294
- /* @__PURE__ */ jsx(Calendar, { className: "dy-mr-3 dy-h-4 dy-w-4 dy-text-primary dy-shrink-0" }),
7295
- /* @__PURE__ */ jsx("span", {
7296
- className: "dy-flex-1 dy-truncate",
7297
- children: date ? format(date, displayFormat) : withTime ? "Pick a date & time..." : "Pick a date..."
7298
- }),
7299
- date ? /* @__PURE__ */ jsx(X, {
7300
- className: "dy-ml-2 dy-h-3.5 dy-w-3.5 dy-text-muted-foreground hover:dy-text-foreground dy-shrink-0 dy-transition-colors",
7301
- onClick: (e) => {
7302
- e.stopPropagation();
7303
- onChange(void 0);
7304
- }
7305
- }) : /* @__PURE__ */ jsx(ChevronDown, { className: cn("dy-ml-2 dy-h-3.5 dy-w-3.5 dy-text-muted-foreground dy-shrink-0 dy-transition-transform", open && "dy-rotate-180") })
7306
- ]
7307
- }), /* @__PURE__ */ jsxs(InlinePicker, {
7308
- open: open && !disabled,
7309
- setOpen,
7310
- triggerRef: wrapperRef,
7311
- children: [/* @__PURE__ */ jsx(Calendar$1, {
7312
- mode: "single",
7313
- selected: date,
7314
- defaultMonth: date,
7315
- onSelect: handleDateSelect
7316
- }), withTime && /* @__PURE__ */ jsxs("div", {
7317
- className: "dy-border-t dy-border-border/50 dy-p-3",
7318
- children: [/* @__PURE__ */ jsxs("div", {
7319
- className: "dy-flex dy-items-center dy-gap-2",
7320
- children: [/* @__PURE__ */ jsx(Clock, { className: "dy-h-4 dy-w-4 dy-text-muted-foreground dy-shrink-0" }), /* @__PURE__ */ jsx(Input, {
7321
- type: "time",
7322
- value: timeString,
7323
- onChange: handleTimeChange,
7324
- disabled: !date,
7325
- className: "dy-h-8 dy-text-sm dy-border-border/50"
7013
+ children: [
7014
+ label && /* @__PURE__ */ jsx("label", {
7015
+ className: "dy-text-sm dy-font-medium dy-leading-none",
7016
+ children: label
7017
+ }),
7018
+ /* @__PURE__ */ jsxs("div", {
7019
+ ref: wrapperRef,
7020
+ className: "dy-relative",
7021
+ children: [/* @__PURE__ */ jsxs(Button, {
7022
+ type: "button",
7023
+ variant: "outline",
7024
+ disabled,
7025
+ onClick: () => setOpen((v) => !v),
7026
+ className: cn("dy-w-full dy-justify-start dy-text-left dy-font-normal dy-h-11 dy-px-4 dy-bg-background hover:dy-bg-muted/50 dy-border-border/60 dy-shadow-sm dy-transition-all hover:dy-shadow-md", !date && "dy-text-muted-foreground", open && "dy-ring-2 dy-ring-primary/20 dy-border-primary/40"),
7027
+ children: [
7028
+ /* @__PURE__ */ jsx(Calendar, { className: "dy-mr-3 dy-h-4 dy-w-4 dy-text-primary dy-shrink-0" }),
7029
+ /* @__PURE__ */ jsx("span", {
7030
+ className: "dy-flex-1 dy-truncate",
7031
+ children: date ? format(date, triggerLabelFormat) : withTime ? "Pick a date & time..." : "Pick a date..."
7032
+ }),
7033
+ date ? /* @__PURE__ */ jsx(X, {
7034
+ className: "dy-ml-2 dy-h-3.5 dy-w-3.5 dy-text-muted-foreground hover:dy-text-foreground dy-shrink-0 dy-transition-colors",
7035
+ onClick: (e) => {
7036
+ e.stopPropagation();
7037
+ onChange(void 0);
7038
+ }
7039
+ }) : /* @__PURE__ */ jsx(ChevronDown, { className: cn("dy-ml-2 dy-h-3.5 dy-w-3.5 dy-text-muted-foreground dy-shrink-0 dy-transition-transform", open && "dy-rotate-180") })
7040
+ ]
7041
+ }), /* @__PURE__ */ jsxs(InlinePicker, {
7042
+ open: open && !disabled,
7043
+ setOpen,
7044
+ triggerRef: wrapperRef,
7045
+ children: [/* @__PURE__ */ jsx(Calendar$1, {
7046
+ mode: "single",
7047
+ selected: date,
7048
+ defaultMonth: date,
7049
+ onSelect: handleDateSelect
7050
+ }), withTime && /* @__PURE__ */ jsxs("div", {
7051
+ className: "dy-border-t dy-border-border/50 dy-p-3",
7052
+ children: [/* @__PURE__ */ jsxs("div", {
7053
+ className: "dy-flex dy-items-center dy-gap-2",
7054
+ children: [/* @__PURE__ */ jsx(Clock, { className: "dy-h-4 dy-w-4 dy-text-muted-foreground dy-shrink-0" }), /* @__PURE__ */ jsx(Input, {
7055
+ type: "time",
7056
+ value: timeString,
7057
+ onChange: handleTimeChange,
7058
+ disabled: !date,
7059
+ className: "dy-h-8 dy-text-sm dy-border-border/50"
7060
+ })]
7061
+ }), !date && /* @__PURE__ */ jsx("p", {
7062
+ className: "dy-text-xs dy-text-muted-foreground dy-mt-1.5 dy-pl-6",
7063
+ children: "Pick a date first"
7326
7064
  })]
7327
- }), !date && /* @__PURE__ */ jsx("p", {
7328
- className: "dy-text-xs dy-text-muted-foreground dy-mt-1.5 dy-pl-6",
7329
- children: "Pick a date first"
7330
7065
  })]
7331
7066
  })]
7332
- })]
7333
- })]
7067
+ }),
7068
+ helperText && /* @__PURE__ */ jsxs("p", {
7069
+ className: "dy-text-xs dy-text-muted-foreground",
7070
+ children: ["Display: ", helperText]
7071
+ })
7072
+ ]
7334
7073
  });
7335
7074
  }
7336
7075
  function DateRangePicker({ value, onChange, label, disabled }) {
@@ -7773,7 +7512,7 @@ var parseValue = (val, siteUrl) => {
7773
7512
  url: String(val)
7774
7513
  };
7775
7514
  };
7776
- function UrlField({ field, disabled }) {
7515
+ function UrlField({ schema, field, disabled }) {
7777
7516
  const { client, schemas } = useDyrected();
7778
7517
  const siteUrl = React$1.useMemo(() => getSiteUrl(schemas?.admin?.siteUrl), [schemas?.admin?.siteUrl]);
7779
7518
  const [openPopover, setOpenPopover] = React$1.useState(false);
@@ -7904,74 +7643,86 @@ function UrlField({ field, disabled }) {
7904
7643
  ]);
7905
7644
  const selectedDoc = documents.find((d) => d.id === docValue && d.__collectionSlug === collectionValue);
7906
7645
  const selectedCollectionLabel = collections.find((c) => c.slug === collectionValue)?.labels?.singular || collectionValue;
7646
+ const linkSpec = getLinkSpec(urlValue, schema.admin?.format, "url");
7907
7647
  return /* @__PURE__ */ jsxs("div", {
7908
7648
  className: "dy-space-y-3",
7909
- children: [/* @__PURE__ */ jsxs("div", { children: [/* @__PURE__ */ jsxs(Popover, {
7910
- open: openPopover && !disabled,
7911
- onOpenChange: setOpenPopover,
7912
- children: [/* @__PURE__ */ jsx(PopoverTrigger, {
7913
- asChild: true,
7914
- children: /* @__PURE__ */ jsx("div", {
7915
- className: "dy-w-full",
7916
- children: /* @__PURE__ */ jsx(Input, {
7917
- type: "text",
7918
- value: urlValue,
7919
- onChange: (e) => handleUrlInputChange(e.target.value),
7920
- onFocus: () => setOpenPopover(true),
7921
- placeholder: "Type or paste a URL, or search pages...",
7922
- disabled,
7923
- className: "dy-bg-background dy-border-border/50 dy-h-11 dy-w-full"
7649
+ children: [/* @__PURE__ */ jsxs("div", { children: [/* @__PURE__ */ jsxs("div", {
7650
+ className: "dy-flex dy-items-stretch dy-gap-2",
7651
+ children: [/* @__PURE__ */ jsxs(Popover, {
7652
+ open: openPopover && !disabled,
7653
+ onOpenChange: setOpenPopover,
7654
+ children: [/* @__PURE__ */ jsx(PopoverTrigger, {
7655
+ asChild: true,
7656
+ children: /* @__PURE__ */ jsx("div", {
7657
+ className: "dy-w-full",
7658
+ children: /* @__PURE__ */ jsx(Input, {
7659
+ type: "text",
7660
+ value: urlValue,
7661
+ onChange: (e) => handleUrlInputChange(e.target.value),
7662
+ onFocus: () => setOpenPopover(true),
7663
+ placeholder: "Type or paste a URL, or search pages...",
7664
+ disabled,
7665
+ className: "dy-bg-background dy-border-border/50 dy-h-11 dy-w-full"
7666
+ })
7924
7667
  })
7925
- })
7926
- }), /* @__PURE__ */ jsx(PopoverContent, {
7927
- className: "dy-p-0 dy-w-[var(--radix-popover-trigger-width)] dy-max-h-60 dy-overflow-y-auto",
7928
- align: "start",
7929
- onOpenAutoFocus: (e) => e.preventDefault(),
7930
- children: /* @__PURE__ */ jsx(Command$1, {
7931
- className: "dy-border-none",
7932
- shouldFilter: false,
7933
- children: /* @__PURE__ */ jsxs(CommandList, { children: [
7934
- /* @__PURE__ */ jsx(CommandEmpty, {
7935
- className: "dy-py-2.5 dy-px-3 dy-text-xs dy-text-muted-foreground",
7936
- children: docsLoading ? "Loading pages..." : "No matching pages found. Press Enter to use as custom link."
7937
- }),
7938
- urlValue && /* @__PURE__ */ jsx(CommandGroup, {
7939
- heading: "Custom Link",
7940
- children: /* @__PURE__ */ jsxs(CommandItem, {
7941
- value: `custom-${urlValue}`,
7942
- onSelect: () => {
7943
- handleUrlInputChange(urlValue);
7944
- setOpenPopover(false);
7945
- },
7946
- className: "dy-text-primary",
7947
- children: [
7948
- "Use link \"",
7949
- urlValue,
7950
- "\""
7951
- ]
7952
- })
7953
- }),
7954
- (() => {
7955
- const grouped = {};
7956
- filteredDocs.forEach((doc) => {
7957
- const key = doc.__collectionLabel;
7958
- if (!grouped[key]) grouped[key] = [];
7959
- grouped[key].push(doc);
7960
- });
7961
- return Object.entries(grouped).map(([groupName, docs]) => /* @__PURE__ */ jsx(CommandGroup, {
7962
- heading: groupName,
7963
- children: docs.map((doc) => /* @__PURE__ */ jsxs(CommandItem, {
7964
- value: `${doc.__collectionSlug}-${doc.id}-${getDocumentDisplay(doc, doc.__collectionSlug)}`,
7965
- onSelect: () => handleDocumentSelect(doc),
7966
- children: [/* @__PURE__ */ jsx(Check, { className: cn("dy-mr-2 dy-h-4 dy-w-4", docValue === doc.id && collectionValue === doc.__collectionSlug ? "dy-opacity-100" : "dy-opacity-0") }), /* @__PURE__ */ jsx("span", {
7967
- className: "dy-flex-1",
7968
- children: getDocumentDisplay(doc, doc.__collectionSlug)
7969
- })]
7970
- }, `${doc.__collectionSlug}-${doc.id}`))
7971
- }, groupName));
7972
- })()
7973
- ] })
7974
- })
7668
+ }), /* @__PURE__ */ jsx(PopoverContent, {
7669
+ className: "dy-p-0 dy-w-[var(--radix-popover-trigger-width)] dy-max-h-60 dy-overflow-y-auto",
7670
+ align: "start",
7671
+ onOpenAutoFocus: (e) => e.preventDefault(),
7672
+ children: /* @__PURE__ */ jsx(Command$1, {
7673
+ className: "dy-border-none",
7674
+ shouldFilter: false,
7675
+ children: /* @__PURE__ */ jsxs(CommandList, { children: [
7676
+ /* @__PURE__ */ jsx(CommandEmpty, {
7677
+ className: "dy-py-2.5 dy-px-3 dy-text-xs dy-text-muted-foreground",
7678
+ children: docsLoading ? "Loading pages..." : "No matching pages found. Press Enter to use as custom link."
7679
+ }),
7680
+ urlValue && /* @__PURE__ */ jsx(CommandGroup, {
7681
+ heading: "Custom Link",
7682
+ children: /* @__PURE__ */ jsxs(CommandItem, {
7683
+ value: `custom-${urlValue}`,
7684
+ onSelect: () => {
7685
+ handleUrlInputChange(urlValue);
7686
+ setOpenPopover(false);
7687
+ },
7688
+ className: "dy-text-primary",
7689
+ children: [
7690
+ "Use link \"",
7691
+ urlValue,
7692
+ "\""
7693
+ ]
7694
+ })
7695
+ }),
7696
+ (() => {
7697
+ const grouped = {};
7698
+ filteredDocs.forEach((doc) => {
7699
+ const key = doc.__collectionLabel;
7700
+ if (!grouped[key]) grouped[key] = [];
7701
+ grouped[key].push(doc);
7702
+ });
7703
+ return Object.entries(grouped).map(([groupName, docs]) => /* @__PURE__ */ jsx(CommandGroup, {
7704
+ heading: groupName,
7705
+ children: docs.map((doc) => /* @__PURE__ */ jsxs(CommandItem, {
7706
+ value: `${doc.__collectionSlug}-${doc.id}-${getDocumentDisplay(doc, doc.__collectionSlug)}`,
7707
+ onSelect: () => handleDocumentSelect(doc),
7708
+ children: [/* @__PURE__ */ jsx(Check, { className: cn("dy-mr-2 dy-h-4 dy-w-4", docValue === doc.id && collectionValue === doc.__collectionSlug ? "dy-opacity-100" : "dy-opacity-0") }), /* @__PURE__ */ jsx("span", {
7709
+ className: "dy-flex-1",
7710
+ children: getDocumentDisplay(doc, doc.__collectionSlug)
7711
+ })]
7712
+ }, `${doc.__collectionSlug}-${doc.id}`))
7713
+ }, groupName));
7714
+ })()
7715
+ ] })
7716
+ })
7717
+ })]
7718
+ }), linkSpec && /* @__PURE__ */ jsx("a", {
7719
+ href: linkSpec.href,
7720
+ target: linkSpec.newTab ? "_blank" : void 0,
7721
+ rel: linkSpec.newTab ? "noreferrer" : void 0,
7722
+ "aria-disabled": disabled ? true : void 0,
7723
+ className: cn("dy-inline-flex dy-h-11 dy-w-11 dy-items-center dy-justify-center dy-rounded-xl dy-border dy-border-border/50 dy-bg-background dy-text-muted-foreground dy-shadow-sm dy-transition-all hover:dy-bg-muted hover:dy-text-foreground", disabled && "dy-pointer-events-none dy-opacity-50"),
7724
+ title: "Open link",
7725
+ children: /* @__PURE__ */ jsx(ExternalLink, { className: "dy-h-4 dy-w-4" })
7975
7726
  })]
7976
7727
  }), selectedDoc && /* @__PURE__ */ jsxs("p", {
7977
7728
  className: "dy-text-[11px] dy-text-muted-foreground dy-mt-1.5",
@@ -8079,16 +7830,20 @@ function FieldRenderer({ schema, field, collection, context }) {
8079
7830
  const customComponentKey = schema.admin?.component;
8080
7831
  if (customComponentKey && components?.fields?.[customComponentKey]) {
8081
7832
  const CustomComponent = components.fields[customComponentKey];
8082
- return /* @__PURE__ */ jsx(ErrorBoundary, {
8083
- fieldName: schema.name ?? customComponentKey,
8084
- children: /* @__PURE__ */ jsx(CustomComponent, {
8085
- value: field.value,
8086
- onChange: field.onChange,
8087
- field: schema,
8088
- path: field.name,
8089
- disabled,
8090
- collection,
8091
- context
7833
+ const customProps = {
7834
+ value: field.value,
7835
+ onChange: field.onChange,
7836
+ field: schema,
7837
+ path: field.name,
7838
+ disabled,
7839
+ collection,
7840
+ context
7841
+ };
7842
+ return /* @__PURE__ */ jsx(DyrectedFieldPathProvider, {
7843
+ path: field.name,
7844
+ children: /* @__PURE__ */ jsx(ErrorBoundary, {
7845
+ fieldName: schema.name ?? customComponentKey,
7846
+ children: /* @__PURE__ */ jsx(CustomComponent, { ...customProps })
8092
7847
  })
8093
7848
  });
8094
7849
  }
@@ -8155,13 +7910,17 @@ function FieldRenderer({ schema, field, collection, context }) {
8155
7910
  case "date": return /* @__PURE__ */ jsx(DatePicker, {
8156
7911
  value: field.value,
8157
7912
  onChange: field.onChange,
8158
- disabled
7913
+ disabled,
7914
+ fieldType: "date",
7915
+ format: schema.admin?.format
8159
7916
  });
8160
7917
  case "datetime": return /* @__PURE__ */ jsx(DatePicker, {
8161
7918
  value: field.value,
8162
7919
  onChange: field.onChange,
8163
7920
  disabled,
8164
- withTime: true
7921
+ withTime: true,
7922
+ fieldType: "datetime",
7923
+ format: schema.admin?.format
8165
7924
  });
8166
7925
  case "daterange": return /* @__PURE__ */ jsx(DateRangePicker, {
8167
7926
  value: field.value,
@@ -8324,10 +8083,16 @@ function useNestedEditor() {
8324
8083
  */
8325
8084
  function isActiveOrChild(activePath, basePath) {
8326
8085
  if (activePath.length === 0) return false;
8327
- return activePath.some((s) => s.basePath === basePath || s.basePath.startsWith(basePath + "."));
8086
+ return activePath.some((s) => s.basePath === basePath || s.basePath.startsWith(`${joinFieldPath(basePath)}.`));
8328
8087
  }
8329
8088
  //#endregion
8330
8089
  //#region src/components/forms/fields/block-builder.tsx
8090
+ function AdminIcon({ icon, fallback, className }) {
8091
+ return createElement(resolveAdminIcon(icon, fallback), {
8092
+ className,
8093
+ "aria-hidden": true
8094
+ });
8095
+ }
8331
8096
  /**
8332
8097
  * Variant switcher — a compact pill row shown at the top of a block's editor
8333
8098
  * when the block defines `variants`. Changing the variant writes the reserved
@@ -8349,14 +8114,17 @@ function VariantSwitcher({ control, name, variants }) {
8349
8114
  className: "dy-flex dy-flex-wrap dy-gap-1.5",
8350
8115
  children: variants.map((v) => {
8351
8116
  const isActive = current === v.slug;
8352
- const Icon = v.icon ? resolveAdminIcon(v.icon, Layers) : null;
8353
8117
  return /* @__PURE__ */ jsxs("button", {
8354
8118
  type: "button",
8355
8119
  onClick: () => field.onChange(v.slug),
8356
8120
  title: v.description || v.label || v.slug,
8357
8121
  "aria-pressed": isActive,
8358
8122
  className: cn("dy-flex dy-items-center dy-gap-1.5 dy-rounded-lg dy-border dy-px-2.5 dy-py-1.5 dy-text-xs dy-font-medium dy-transition-all", isActive ? "dy-border-primary dy-bg-primary/10 dy-text-primary" : "dy-border-border/60 dy-text-muted-foreground hover:dy-border-border hover:dy-text-foreground"),
8359
- children: [Icon && /* @__PURE__ */ jsx(Icon, { className: "dy-h-3.5 dy-w-3.5" }), v.label || v.slug]
8123
+ children: [v.icon ? /* @__PURE__ */ jsx(AdminIcon, {
8124
+ icon: v.icon,
8125
+ fallback: Layers,
8126
+ className: "dy-h-3.5 dy-w-3.5"
8127
+ }) : null, v.label || v.slug]
8360
8128
  }, v.slug);
8361
8129
  })
8362
8130
  })]
@@ -8395,7 +8163,6 @@ function SortableBlockItem({ id, index, item, schema, basePath, control, remove,
8395
8163
  return "";
8396
8164
  };
8397
8165
  const previewText = getPreviewText();
8398
- const BlockIcon = resolveAdminIcon(blockConfig.icon, Layers);
8399
8166
  const activeVariant = blockConfig.variants?.find((v) => v.slug === itemValues?.variant) ?? blockConfig.variants?.[0];
8400
8167
  const subtitle = activeVariant ? `${activeVariant.label || activeVariant.slug}${previewText ? " · " + previewText : ""}` : blockConfig.description || previewText;
8401
8168
  return /* @__PURE__ */ jsxs("div", {
@@ -8410,7 +8177,7 @@ function SortableBlockItem({ id, index, item, schema, basePath, control, remove,
8410
8177
  setExpanded((v) => !v);
8411
8178
  return;
8412
8179
  }
8413
- const itemPath = `${basePath}.${index}`;
8180
+ const itemPath = joinFieldPath(basePath, index);
8414
8181
  const blockConfig = schema.blocks?.find((b) => b.slug === item.blockType);
8415
8182
  onDrillInto({
8416
8183
  fieldName: basePath.split(".").pop() ?? basePath,
@@ -8430,7 +8197,11 @@ function SortableBlockItem({ id, index, item, schema, basePath, control, remove,
8430
8197
  }),
8431
8198
  /* @__PURE__ */ jsx("div", {
8432
8199
  className: cn("dy-flex dy-h-9 dy-w-9 dy-items-center dy-justify-center dy-rounded-lg dy-shrink-0 dy-transition-colors", active ? "dy-bg-primary/10 dy-text-primary" : "dy-bg-muted dy-text-muted-foreground group-hover:dy-text-foreground"),
8433
- children: /* @__PURE__ */ jsx(BlockIcon, { className: "dy-h-4 dy-w-4" })
8200
+ children: /* @__PURE__ */ jsx(AdminIcon, {
8201
+ icon: blockConfig.icon,
8202
+ fallback: Layers,
8203
+ className: "dy-h-4 dy-w-4"
8204
+ })
8434
8205
  }),
8435
8206
  /* @__PURE__ */ jsxs("div", {
8436
8207
  className: "dy-min-w-0 dy-flex-1",
@@ -8523,8 +8294,8 @@ function BlockBuilder({ schema, basePath, control, collection, documentId }) {
8523
8294
  name: basePath
8524
8295
  }) || [];
8525
8296
  const { drillInEnabled, activePath, drillInto, reconcileAfterMutation, registerFieldArray, unregisterFieldArray } = useNestedEditor();
8526
- const drivenPath = activePath.find((s) => isActiveOrChild([s], basePath) || s.basePath.startsWith(basePath + "."));
8527
- const focusedSegment = activePath.find((s) => s.basePath.startsWith(basePath + ".") && s.stableId);
8297
+ const drivenPath = activePath.find((s) => isActiveOrChild([s], basePath) || s.basePath.startsWith(`${joinFieldPath(basePath)}.`));
8298
+ const focusedSegment = activePath.find((s) => s.basePath.startsWith(`${joinFieldPath(basePath)}.`) && s.stableId);
8528
8299
  const focusedStableId = focusedSegment?.stableId;
8529
8300
  let focusedIndex = focusedStableId ? fields.findIndex((f) => f.id === focusedStableId) : -1;
8530
8301
  if (focusedIndex === -1 && focusedSegment) {
@@ -8662,7 +8433,11 @@ function BlockBuilder({ schema, basePath, control, collection, documentId }) {
8662
8433
  className: "dy-group dy-border dy-border-muted/30 dy-rounded-lg dy-p-4 dy-flex dy-items-start dy-gap-3 hover:dy-border-primary/40 hover:dy-bg-primary/[0.02] dy-transition-all dy-cursor-pointer dy-select-none",
8663
8434
  children: [/* @__PURE__ */ jsx("div", {
8664
8435
  className: "dy-p-2.5 dy-bg-muted/50 dy-rounded-lg dy-text-muted-foreground/60 group-hover:dy-text-primary group-hover:dy-bg-primary/10 dy-transition-colors",
8665
- children: /* @__PURE__ */ jsx(resolveAdminIcon(block.icon, Layers), { className: "dy-w-4 dy-h-4" })
8436
+ children: /* @__PURE__ */ jsx(AdminIcon, {
8437
+ icon: block.icon,
8438
+ fallback: Layers,
8439
+ className: "dy-w-4 dy-h-4"
8440
+ })
8666
8441
  }), /* @__PURE__ */ jsxs("div", {
8667
8442
  className: "dy-min-w-0 dy-flex-1",
8668
8443
  children: [/* @__PURE__ */ jsx("h5", {
@@ -8706,8 +8481,8 @@ function BlockBuilder({ schema, basePath, control, collection, documentId }) {
8706
8481
  children: /* @__PURE__ */ jsx("div", {
8707
8482
  className: "dy-pt-2 dy-space-y-4",
8708
8483
  children: fields.map((item, index) => {
8709
- const itemPath = `${basePath}.${index}`;
8710
- const isItemActive = activePath.some((s) => s.basePath === itemPath || s.basePath.startsWith(itemPath + "."));
8484
+ const itemPath = joinFieldPath(basePath, index);
8485
+ const isItemActive = activePath.some((s) => s.basePath === itemPath || s.basePath.startsWith(`${itemPath}.`));
8711
8486
  return /* @__PURE__ */ jsx(SortableBlockItem, {
8712
8487
  id: item.id,
8713
8488
  index,
@@ -9155,7 +8930,7 @@ function ArrayFieldRenderer({ schema, basePath, control, renderField }) {
9155
8930
  const isDrillIn = drillInEnabled && schema.admin?.drillIn === true;
9156
8931
  const singleField = schema.fields?.length === 1 ? schema.fields[0] : void 0;
9157
8932
  const isSimpleList = !!singleField && !isDrillIn;
9158
- const focusedSegment = isDrillIn ? activePath.find((s) => s.basePath.startsWith(basePath + ".") && s.stableId) : void 0;
8933
+ const focusedSegment = isDrillIn ? activePath.find((s) => s.basePath.startsWith(`${joinFieldPath(basePath)}.`) && s.stableId) : void 0;
9159
8934
  const isDrilledInto = (focusedSegment?.stableId ? fields.findIndex((f) => f.id === focusedSegment.stableId) : -1) !== -1;
9160
8935
  React$1.useEffect(() => {
9161
8936
  if (!isDrillIn) return;
@@ -9181,7 +8956,7 @@ function ArrayFieldRenderer({ schema, basePath, control, renderField }) {
9181
8956
  const label = schema.label || schema.name.charAt(0).toUpperCase() + schema.name.slice(1);
9182
8957
  drillInto({
9183
8958
  fieldName: basePath.split(".").pop() ?? basePath,
9184
- basePath: `${basePath}.${index}`,
8959
+ basePath: joinFieldPath(basePath, index),
9185
8960
  stableId: id,
9186
8961
  breadcrumbLabel: `${label} #${index + 1}`
9187
8962
  });
@@ -9386,6 +9161,51 @@ function ArrayFieldRenderer({ schema, basePath, control, renderField }) {
9386
9161
  }
9387
9162
  //#endregion
9388
9163
  //#region src/components/forms/form-field-renderer.tsx
9164
+ function FormValidationFieldShell({ schema, fullPath, collection, user, schemas, conditionData, isBoolean, isSwitchBoolean, hideLabel, formField }) {
9165
+ const fieldState = useField(fullPath);
9166
+ const resolvedSchema = useDyrectedForm().getFieldSchema(fullPath) ?? schema;
9167
+ return /* @__PURE__ */ jsxs(FormItem, {
9168
+ "data-dy-field": fieldState.path,
9169
+ className: cn(isSwitchBoolean ? "dy-flex dy-flex-row dy-items-center dy-justify-between dy-rounded-lg dy-border dy-border-border/40 dy-p-4 dy-bg-background/50 dy-shadow-sm dy-space-y-0" : isBoolean ? "dy-flex dy-flex-row-reverse dy-items-start dy-justify-end dy-gap-3 dy-space-y-0" : hideLabel ? "dy-space-y-0" : "dy-space-y-3"),
9170
+ children: [
9171
+ !hideLabel && /* @__PURE__ */ jsxs("div", {
9172
+ className: cn(isBoolean ? "dy-space-y-1" : "dy-flex dy-items-center dy-flex-wrap dy-gap-2 dy-mb-1"),
9173
+ children: [
9174
+ /* @__PURE__ */ jsxs(FormLabel, {
9175
+ className: "dy-text-sm dy-font-semibold dy-text-foreground/80 dy-cursor-pointer",
9176
+ children: [resolvedSchema.label || resolvedSchema.name.charAt(0).toUpperCase() + resolvedSchema.name.slice(1), resolvedSchema.required && /* @__PURE__ */ jsx("span", {
9177
+ className: "dy-text-destructive dy-ml-1",
9178
+ children: "*"
9179
+ })]
9180
+ }),
9181
+ resolvedSchema.admin?.description && /* @__PURE__ */ jsx("p", {
9182
+ className: cn("dy-text-muted-foreground/60 dy-italic", isBoolean ? "dy-text-[11px] dy-leading-tight" : "dy-text-[11px] dy-leading-relaxed"),
9183
+ children: resolvedSchema.admin.description
9184
+ }),
9185
+ !isBoolean && resolvedSchema.unique && /* @__PURE__ */ jsx("span", {
9186
+ className: "dy-inline-flex dy-items-center dy-rounded-full dy-bg-primary/10 dy-px-1.5 dy-py-0.5 dy-text-[10px] dy-font-medium dy-text-primary dy-ring-1 dy-ring-inset dy-ring-primary/10",
9187
+ children: "Unique"
9188
+ })
9189
+ ]
9190
+ }),
9191
+ /* @__PURE__ */ jsx(FormControl, { children: /* @__PURE__ */ jsx(FieldRenderer, {
9192
+ schema: resolvedSchema,
9193
+ field: formField,
9194
+ collection,
9195
+ context: {
9196
+ user,
9197
+ schemas,
9198
+ siblingData: conditionData
9199
+ }
9200
+ }) }),
9201
+ !isBoolean && resolvedSchema.admin?.description && /* @__PURE__ */ jsx("p", {
9202
+ className: "dy-text-[11px] dy-text-muted-foreground/70 dy-leading-relaxed dy-italic",
9203
+ children: resolvedSchema.admin.description
9204
+ }),
9205
+ /* @__PURE__ */ jsx(FormMessage, { className: "dy-text-xs dy-font-medium" })
9206
+ ]
9207
+ });
9208
+ }
9389
9209
  /**
9390
9210
  * FormFieldRenderer (Field Orchestrator)
9391
9211
  *
@@ -9538,7 +9358,7 @@ function FormFieldRendererInner({ schema, basePath, control, collection, canUpda
9538
9358
  ...siblingData
9539
9359
  } : formValues;
9540
9360
  if (schema.name === "password" && !canUpdate) return null;
9541
- const fullPath = basePath ? `${basePath}.${schema.name}` : schema.name;
9361
+ const fullPath = joinFieldPath(basePath, schema.name);
9542
9362
  const renderNestedField = (subField, nextBasePath) => /* @__PURE__ */ jsx(FormFieldRenderer, {
9543
9363
  schema: subField,
9544
9364
  basePath: nextBasePath,
@@ -9685,46 +9505,17 @@ function FormFieldRendererInner({ schema, basePath, control, collection, canUpda
9685
9505
  return /* @__PURE__ */ jsx(FormField, {
9686
9506
  control,
9687
9507
  name: fullPath,
9688
- render: ({ field: formField }) => /* @__PURE__ */ jsxs(FormItem, {
9689
- "data-dy-field": schema.name,
9690
- className: cn(isSwitchBoolean ? "dy-flex dy-flex-row dy-items-center dy-justify-between dy-rounded-lg dy-border dy-border-border/40 dy-p-4 dy-bg-background/50 dy-shadow-sm dy-space-y-0" : isBoolean ? "dy-flex dy-flex-row-reverse dy-items-start dy-justify-end dy-gap-3 dy-space-y-0" : hideLabel ? "dy-space-y-0" : "dy-space-y-3"),
9691
- children: [
9692
- !hideLabel && /* @__PURE__ */ jsxs("div", {
9693
- className: cn(isBoolean ? "dy-space-y-1" : "dy-flex dy-items-center dy-flex-wrap dy-gap-2 dy-mb-1"),
9694
- children: [
9695
- /* @__PURE__ */ jsxs(FormLabel, {
9696
- className: "dy-text-sm dy-font-semibold dy-text-foreground/80 dy-cursor-pointer",
9697
- children: [schema.label || schema.name.charAt(0).toUpperCase() + schema.name.slice(1), schema.required && /* @__PURE__ */ jsx("span", {
9698
- className: "dy-text-destructive dy-ml-1",
9699
- children: "*"
9700
- })]
9701
- }),
9702
- schema.admin?.description && /* @__PURE__ */ jsx("p", {
9703
- className: cn("dy-text-muted-foreground/60 dy-italic", isBoolean ? "dy-text-[11px] dy-leading-tight" : "dy-text-[11px] dy-leading-relaxed"),
9704
- children: schema.admin.description
9705
- }),
9706
- !isBoolean && schema.unique && /* @__PURE__ */ jsx("span", {
9707
- className: "dy-inline-flex dy-items-center dy-rounded-full dy-bg-primary/10 dy-px-1.5 dy-py-0.5 dy-text-[10px] dy-font-medium dy-text-primary dy-ring-1 dy-ring-inset dy-ring-primary/10",
9708
- children: "Unique"
9709
- })
9710
- ]
9711
- }),
9712
- /* @__PURE__ */ jsx(FormControl, { children: /* @__PURE__ */ jsx(FieldRenderer, {
9713
- schema,
9714
- field: formField,
9715
- collection,
9716
- context: {
9717
- user,
9718
- schemas,
9719
- siblingData: conditionData
9720
- }
9721
- }) }),
9722
- !isBoolean && schema.admin?.description && /* @__PURE__ */ jsx("p", {
9723
- className: "dy-text-[11px] dy-text-muted-foreground/70 dy-leading-relaxed dy-italic",
9724
- children: schema.admin.description
9725
- }),
9726
- /* @__PURE__ */ jsx(FormMessage, { className: "dy-text-xs dy-font-medium" })
9727
- ]
9508
+ render: ({ field: formField }) => /* @__PURE__ */ jsx(FormValidationFieldShell, {
9509
+ schema,
9510
+ fullPath,
9511
+ collection,
9512
+ user,
9513
+ schemas,
9514
+ conditionData,
9515
+ isBoolean,
9516
+ isSwitchBoolean,
9517
+ hideLabel,
9518
+ formField
9728
9519
  })
9729
9520
  });
9730
9521
  }
@@ -9751,6 +9542,24 @@ function classifyWorkflowAutosaveError(error) {
9751
9542
  //#region src/components/forms/form-engine.tsx
9752
9543
  /** Query-string key holding the active form tab (replace-navigated). */
9753
9544
  var TAB_PARAM = "tab";
9545
+ function flattenFlagTree(value, prefix = "", result = {}) {
9546
+ if (!value || typeof value !== "object") return result;
9547
+ if (Array.isArray(value)) {
9548
+ value.forEach((item, index) => {
9549
+ flattenFlagTree(item, prefix ? `${prefix}.${index}` : String(index), result);
9550
+ });
9551
+ return result;
9552
+ }
9553
+ Object.entries(value).forEach(([key, nestedValue]) => {
9554
+ const nextPath = prefix ? `${prefix}.${key}` : key;
9555
+ if (nestedValue === true) {
9556
+ result[nextPath] = true;
9557
+ return;
9558
+ }
9559
+ flattenFlagTree(nestedValue, nextPath, result);
9560
+ });
9561
+ return result;
9562
+ }
9754
9563
  function FormEngineInner({ collection, fields, defaultValues = {}, onSubmit, onChange, isLoading, submitLabel = "Save", hideSubmit = false, readOnly, onDataChange, passwordChangeMode = null, documentId, defaultTabLabel, autosave }, ref) {
9755
9564
  const { activePath, navigateToPath, getStableId } = useNestedEditor();
9756
9565
  const [searchParams, setSearchParams] = useSearchParams();
@@ -9831,6 +9640,9 @@ function FormEngineInner({ collection, fields, defaultValues = {}, onSubmit, onC
9831
9640
  isDirty
9832
9641
  ]);
9833
9642
  const watchedValues = useWatch({ control: form.control });
9643
+ const errorMap = useMemo(() => Object.fromEntries(flatErrors.map((error) => [error.path, error.message])), [flatErrors]);
9644
+ const dirtyFieldMap = useMemo(() => flattenFlagTree(form.formState.dirtyFields), [form.formState.dirtyFields]);
9645
+ const touchedFieldMap = useMemo(() => flattenFlagTree(form.formState.touchedFields), [form.formState.touchedFields]);
9834
9646
  const persistFormData = useCallback(async (data, persist, options) => {
9835
9647
  const draftKey = `dyrected_draft:${collection}:${defaultValues?.id || "global"}`;
9836
9648
  if (options?.reportAutosaveStatus) emitAutosaveState("saving");
@@ -9857,47 +9669,123 @@ function FormEngineInner({ collection, fields, defaultValues = {}, onSubmit, onC
9857
9669
  onSubmit,
9858
9670
  persistFormData
9859
9671
  ]);
9672
+ const handleFormSubmitRef = React.useRef(handleFormSubmit);
9673
+ const emitAutosaveStateRef = React.useRef(emitAutosaveState);
9674
+ const autosaveEnabledRef = React.useRef(autosaveEnabled);
9675
+ React.useLayoutEffect(() => {
9676
+ handleFormSubmitRef.current = handleFormSubmit;
9677
+ emitAutosaveStateRef.current = emitAutosaveState;
9678
+ autosaveEnabledRef.current = autosaveEnabled;
9679
+ }, [
9680
+ autosaveEnabled,
9681
+ emitAutosaveState,
9682
+ handleFormSubmit
9683
+ ]);
9860
9684
  const submitCurrentDraft = useCallback(() => {
9861
9685
  return new Promise((resolve, reject) => {
9862
9686
  form.handleSubmit(async (data) => {
9863
9687
  try {
9864
- resolve(await handleFormSubmit(data));
9688
+ resolve(await handleFormSubmitRef.current(data));
9865
9689
  } catch (error) {
9866
9690
  reject(error);
9867
9691
  }
9868
9692
  }, () => {
9869
- if (autosaveEnabled) emitAutosaveState("dirty");
9693
+ if (autosaveEnabledRef.current) emitAutosaveStateRef.current("dirty");
9870
9694
  reject(/* @__PURE__ */ new Error("Please resolve validation errors before continuing."));
9871
9695
  })();
9872
9696
  });
9873
- }, [
9874
- autosaveEnabled,
9875
- emitAutosaveState,
9876
- form,
9877
- handleFormSubmit
9878
- ]);
9697
+ }, [form]);
9879
9698
  React.useImperativeHandle(ref, () => ({
9880
9699
  submitCurrentDraft,
9881
9700
  isDirty: () => form.formState.isDirty
9882
9701
  }), [form.formState.isDirty, submitCurrentDraft]);
9702
+ const setFormValue = useCallback((path, value, options) => {
9703
+ const setValueFn = form.setValue;
9704
+ setValueFn(path, value, options);
9705
+ }, [form]);
9706
+ const resetFormValues = useCallback((values) => {
9707
+ form.reset(values);
9708
+ }, [form]);
9709
+ const validateFormPaths = useCallback(async (paths) => {
9710
+ if (!paths) return form.trigger();
9711
+ const names = Array.isArray(paths) ? paths : [paths];
9712
+ return form.trigger(names);
9713
+ }, [form]);
9714
+ const handleSubmitEvent = useCallback((event) => {
9715
+ form.handleSubmit((data) => handleFormSubmitRef.current(data))(event);
9716
+ }, [form]);
9717
+ const [formController] = React.useState(() => createDyrectedFormController({
9718
+ collection,
9719
+ fields: resolvedFields,
9720
+ documentId,
9721
+ readOnly: Boolean(readOnly),
9722
+ initialValues: watchedValues ?? buildDefaultValues(fields, defaultValues),
9723
+ initialErrors: errorMap,
9724
+ initialDirtyFields: dirtyFieldMap,
9725
+ initialTouchedFields: touchedFieldMap,
9726
+ initialIsDirty: form.formState.isDirty,
9727
+ initialIsSubmitting: form.formState.isSubmitting,
9728
+ initialIsValid: form.formState.isValid,
9729
+ initialSubmitCount: form.formState.submitCount
9730
+ }));
9731
+ useEffect(() => {
9732
+ formController.setAdapters({
9733
+ setValue: setFormValue,
9734
+ reset: resetFormValues,
9735
+ validate: validateFormPaths,
9736
+ submit: submitCurrentDraft
9737
+ });
9738
+ }, [
9739
+ formController,
9740
+ resetFormValues,
9741
+ setFormValue,
9742
+ submitCurrentDraft,
9743
+ validateFormPaths
9744
+ ]);
9745
+ useEffect(() => {
9746
+ formController.setState({
9747
+ collection,
9748
+ fields: resolvedFields,
9749
+ documentId,
9750
+ readOnly: Boolean(readOnly),
9751
+ values: watchedValues ?? {},
9752
+ errors: errorMap,
9753
+ dirtyFields: dirtyFieldMap,
9754
+ touchedFields: touchedFieldMap,
9755
+ isDirty: form.formState.isDirty,
9756
+ isSubmitting: form.formState.isSubmitting,
9757
+ isValid: form.formState.isValid,
9758
+ submitCount: form.formState.submitCount
9759
+ });
9760
+ }, [
9761
+ collection,
9762
+ resolvedFields,
9763
+ documentId,
9764
+ readOnly,
9765
+ watchedValues,
9766
+ errorMap,
9767
+ dirtyFieldMap,
9768
+ touchedFieldMap,
9769
+ form.formState.isDirty,
9770
+ form.formState.isSubmitting,
9771
+ form.formState.isValid,
9772
+ form.formState.submitCount,
9773
+ formController
9774
+ ]);
9883
9775
  useEffect(() => {
9884
9776
  if (readOnly || isLoading) return;
9885
9777
  const handleKeyDown = (e) => {
9886
9778
  if ((e.metaKey || e.ctrlKey) && e.key === "s") {
9887
9779
  e.preventDefault();
9888
- form.handleSubmit(handleFormSubmit)();
9780
+ handleSubmitEvent();
9889
9781
  }
9890
9782
  };
9891
9783
  window.addEventListener("keydown", handleKeyDown);
9892
9784
  return () => window.removeEventListener("keydown", handleKeyDown);
9893
9785
  }, [
9894
- form,
9895
- onSubmit,
9786
+ handleSubmitEvent,
9896
9787
  readOnly,
9897
- isLoading,
9898
- collection,
9899
- defaultValues,
9900
- handleFormSubmit
9788
+ isLoading
9901
9789
  ]);
9902
9790
  const hasCheckedRef = React.useRef(null);
9903
9791
  useEffect(() => {
@@ -10195,7 +10083,7 @@ function FormEngineInner({ collection, fields, defaultValues = {}, onSubmit, onC
10195
10083
  for (const tab of tabOrder) {
10196
10084
  const tabFields = tabGroups.get(tab) || [];
10197
10085
  let errorCount = 0;
10198
- for (const field of tabFields) errorCount += flatErrors.filter((err) => err.path === field.name || err.path.startsWith(field.name + ".")).length;
10086
+ for (const field of tabFields) errorCount += flatErrors.filter((err) => err.path === field.name || err.path.startsWith(`${joinFieldPath(field.name ?? "")}.`)).length;
10199
10087
  tabErrorsCount.set(tab, errorCount);
10200
10088
  }
10201
10089
  fieldsContent = /* @__PURE__ */ jsx("div", {
@@ -10252,62 +10140,65 @@ function FormEngineInner({ collection, fields, defaultValues = {}, onSubmit, onC
10252
10140
  onClick: () => navigateToPath(activePath.slice(0, idx + 1)),
10253
10141
  children: segment.breadcrumbLabel
10254
10142
  })] }, segment.stableId ?? segment.basePath))]
10255
- }), /* @__PURE__ */ jsx(Form, {
10256
- ...form,
10257
- children: /* @__PURE__ */ jsxs("form", {
10258
- id: "dyrected-edit-form",
10259
- onSubmit: form.handleSubmit(handleFormSubmit),
10260
- className: "dy-space-y-8",
10261
- children: [
10262
- resolvedFields.filter((f) => f.admin?.hidden).map((field) => /* @__PURE__ */ jsx("input", {
10263
- type: "hidden",
10264
- ...form.register(field.name)
10265
- }, field.name)),
10266
- flatErrors.length > 0 && /* @__PURE__ */ jsxs("div", {
10267
- className: "dy-p-4 dy-rounded-lg dy-bg-destructive/10 dy-border dy-border-destructive/20 dy-text-destructive dy-space-y-2",
10268
- children: [/* @__PURE__ */ jsxs("div", {
10269
- className: "dy-flex dy-items-center dy-gap-2 dy-font-semibold",
10270
- children: [/* @__PURE__ */ jsx(AlertCircle, { className: "dy-h-4 dy-w-4 dy-shrink-0" }), /* @__PURE__ */ jsx("span", { children: "Please resolve the following validation errors:" })]
10271
- }), /* @__PURE__ */ jsx("ul", {
10272
- className: "dy-list-disc dy-list-inside dy-text-sm dy-space-y-1",
10273
- children: flatErrors.map((err, idx) => /* @__PURE__ */ jsxs("li", {
10274
- className: "dy-cursor-pointer hover:dy-underline",
10275
- onClick: () => {
10276
- const trail = resolveContainerPath(resolvedFields, err.path, getStableId);
10277
- if (trail && trail.length > 0) navigateToPath(trail);
10278
- setTimeout(() => {
10279
- const el = document.querySelector(`[data-dy-field="${err.path}"]`) || document.querySelector(`[name="${err.path}"]`);
10280
- if (el) {
10281
- el.scrollIntoView({
10282
- behavior: "smooth",
10283
- block: "center"
10284
- });
10285
- (el.querySelector("input, textarea, [contenteditable], button[role=\"combobox\"]") || el)?.focus();
10286
- }
10287
- }, 0);
10288
- },
10289
- children: [
10290
- /* @__PURE__ */ jsxs("span", {
10291
- className: "dy-font-medium",
10292
- children: [formatPath(err.path), ":"]
10293
- }),
10294
- " ",
10295
- err.message
10296
- ]
10297
- }, idx))
10298
- })]
10299
- }),
10300
- fieldsContent,
10301
- showPasswordSection && tabbedFields.length === 0 && renderChangePasswordSection(),
10302
- !hideSubmit && /* @__PURE__ */ jsx("div", {
10303
- className: "dy-flex dy-justify-end dy-gap-4",
10304
- children: !readOnly && /* @__PURE__ */ jsx(Button, {
10305
- type: "submit",
10306
- disabled: isLoading,
10307
- children: isLoading ? "Saving..." : submitLabel
10143
+ }), /* @__PURE__ */ jsx(DyrectedFormProvider, {
10144
+ controller: formController,
10145
+ children: /* @__PURE__ */ jsx(Form, {
10146
+ ...form,
10147
+ children: /* @__PURE__ */ jsxs("form", {
10148
+ id: "dyrected-edit-form",
10149
+ onSubmit: handleSubmitEvent,
10150
+ className: "dy-space-y-8",
10151
+ children: [
10152
+ resolvedFields.filter((f) => f.admin?.hidden).map((field) => /* @__PURE__ */ jsx("input", {
10153
+ type: "hidden",
10154
+ ...form.register(field.name)
10155
+ }, field.name)),
10156
+ flatErrors.length > 0 && /* @__PURE__ */ jsxs("div", {
10157
+ className: "dy-p-4 dy-rounded-lg dy-bg-destructive/10 dy-border dy-border-destructive/20 dy-text-destructive dy-space-y-2",
10158
+ children: [/* @__PURE__ */ jsxs("div", {
10159
+ className: "dy-flex dy-items-center dy-gap-2 dy-font-semibold",
10160
+ children: [/* @__PURE__ */ jsx(AlertCircle, { className: "dy-h-4 dy-w-4 dy-shrink-0" }), /* @__PURE__ */ jsx("span", { children: "Please resolve the following validation errors:" })]
10161
+ }), /* @__PURE__ */ jsx("ul", {
10162
+ className: "dy-list-disc dy-list-inside dy-text-sm dy-space-y-1",
10163
+ children: flatErrors.map((err, idx) => /* @__PURE__ */ jsxs("li", {
10164
+ className: "dy-cursor-pointer hover:dy-underline",
10165
+ onClick: () => {
10166
+ const trail = resolveContainerPath(resolvedFields, err.path, getStableId);
10167
+ if (trail && trail.length > 0) navigateToPath(trail);
10168
+ setTimeout(() => {
10169
+ const el = document.querySelector(`[data-dy-field="${err.path}"]`) || document.querySelector(`[name="${err.path}"]`);
10170
+ if (el) {
10171
+ el.scrollIntoView({
10172
+ behavior: "smooth",
10173
+ block: "center"
10174
+ });
10175
+ (el.querySelector("input, textarea, [contenteditable], button[role=\"combobox\"]") || el)?.focus();
10176
+ }
10177
+ }, 0);
10178
+ },
10179
+ children: [
10180
+ /* @__PURE__ */ jsxs("span", {
10181
+ className: "dy-font-medium",
10182
+ children: [formatPath(err.path), ":"]
10183
+ }),
10184
+ " ",
10185
+ err.message
10186
+ ]
10187
+ }, idx))
10188
+ })]
10189
+ }),
10190
+ fieldsContent,
10191
+ showPasswordSection && tabbedFields.length === 0 && renderChangePasswordSection(),
10192
+ !hideSubmit && /* @__PURE__ */ jsx("div", {
10193
+ className: "dy-flex dy-justify-end dy-gap-4",
10194
+ children: !readOnly && /* @__PURE__ */ jsx(Button, {
10195
+ type: "submit",
10196
+ disabled: isLoading,
10197
+ children: isLoading ? "Saving..." : submitLabel
10198
+ })
10308
10199
  })
10309
- })
10310
- ]
10200
+ ]
10201
+ })
10311
10202
  })
10312
10203
  })] });
10313
10204
  }
@@ -11247,8 +11138,10 @@ function getAvailableWorkflowTransitions(workflowConfig, workflowMeta) {
11247
11138
  }
11248
11139
  function getPrimaryWorkflowTransition(transitions) {
11249
11140
  if (transitions.length === 0) return null;
11250
- if (transitions.length === 1) return transitions[0] ?? null;
11251
- return transitions.find((transition) => !transition.unpublish) ?? transitions[0] ?? null;
11141
+ return transitions.find((transition) => !transition.unpublish) ?? null;
11142
+ }
11143
+ function shouldUseSaveDraftAsPrimaryAction(workflowConfig, workflowMeta) {
11144
+ return !!resolveWorkflowState(workflowConfig, workflowMeta)?.published;
11252
11145
  }
11253
11146
  function groupWorkflowTransitions(transitions) {
11254
11147
  return transitions.reduce((groups, transition) => {
@@ -11278,46 +11171,51 @@ function StateIcon$1({ color }) {
11278
11171
  if (color === "info") return /* @__PURE__ */ jsx(AlertCircle, { className: "dy-h-3.5 dy-w-3.5" });
11279
11172
  return /* @__PURE__ */ jsx(Clock, { className: "dy-h-3.5 dy-w-3.5" });
11280
11173
  }
11281
- function WorkflowCommentDialog({ transition, pending, onOpenChange, onConfirm }) {
11174
+ function WorkflowCommentDialogBody({ transition, pending, onConfirm, onCancel }) {
11282
11175
  const [comment, setComment] = React$1.useState("");
11283
- React$1.useEffect(() => {
11284
- if (!transition) setComment("");
11285
- }, [transition]);
11176
+ return /* @__PURE__ */ jsxs(DialogContent, {
11177
+ className: "sm:dy-max-w-md",
11178
+ children: [
11179
+ /* @__PURE__ */ jsxs(DialogHeader, { children: [/* @__PURE__ */ jsx(DialogTitle, { children: transition.label }), /* @__PURE__ */ jsx(DialogDescription, { children: "Add the required comment before applying this workflow transition." })] }),
11180
+ /* @__PURE__ */ jsxs("div", {
11181
+ className: "dy-space-y-2",
11182
+ children: [/* @__PURE__ */ jsx("label", {
11183
+ className: "dy-text-xs dy-font-semibold dy-text-muted-foreground",
11184
+ children: "Comment"
11185
+ }), /* @__PURE__ */ jsx("textarea", {
11186
+ className: "dy-min-h-28 dy-w-full dy-rounded-lg dy-border dy-border-border/60 dy-bg-background dy-px-3 dy-py-2 dy-text-sm dy-text-foreground placeholder:dy-text-muted-foreground focus:dy-outline-none focus:dy-ring-2 focus:dy-ring-primary/30",
11187
+ value: comment,
11188
+ onChange: (event) => setComment(event.target.value),
11189
+ placeholder: `Required for "${transition.label}"`,
11190
+ autoFocus: true
11191
+ })]
11192
+ }),
11193
+ /* @__PURE__ */ jsxs(DialogFooter, {
11194
+ className: "dy-flex dy-justify-end dy-gap-2",
11195
+ children: [/* @__PURE__ */ jsx(Button, {
11196
+ variant: "outline",
11197
+ onClick: onCancel,
11198
+ disabled: pending,
11199
+ children: "Cancel"
11200
+ }), /* @__PURE__ */ jsx(Button, {
11201
+ onClick: () => onConfirm(comment.trim()),
11202
+ disabled: pending || !comment.trim(),
11203
+ children: pending ? /* @__PURE__ */ jsx(Loader2, { className: "dy-h-4 dy-w-4 dy-animate-spin" }) : transition.label
11204
+ })]
11205
+ })
11206
+ ]
11207
+ });
11208
+ }
11209
+ function WorkflowCommentDialog({ transition, pending, onOpenChange, onConfirm }) {
11286
11210
  return /* @__PURE__ */ jsx(Dialog, {
11287
11211
  open: !!transition,
11288
11212
  onOpenChange,
11289
- children: /* @__PURE__ */ jsxs(DialogContent, {
11290
- className: "sm:dy-max-w-md",
11291
- children: [
11292
- /* @__PURE__ */ jsxs(DialogHeader, { children: [/* @__PURE__ */ jsx(DialogTitle, { children: transition?.label }), /* @__PURE__ */ jsx(DialogDescription, { children: "Add the required comment before applying this workflow transition." })] }),
11293
- /* @__PURE__ */ jsxs("div", {
11294
- className: "dy-space-y-2",
11295
- children: [/* @__PURE__ */ jsx("label", {
11296
- className: "dy-text-xs dy-font-semibold dy-text-muted-foreground",
11297
- children: "Comment"
11298
- }), /* @__PURE__ */ jsx("textarea", {
11299
- className: "dy-min-h-28 dy-w-full dy-rounded-lg dy-border dy-border-border/60 dy-bg-background dy-px-3 dy-py-2 dy-text-sm dy-text-foreground placeholder:dy-text-muted-foreground focus:dy-outline-none focus:dy-ring-2 focus:dy-ring-primary/30",
11300
- value: comment,
11301
- onChange: (event) => setComment(event.target.value),
11302
- placeholder: `Required for "${transition?.label ?? "this transition"}"`,
11303
- autoFocus: true
11304
- })]
11305
- }),
11306
- /* @__PURE__ */ jsxs(DialogFooter, {
11307
- className: "dy-flex dy-justify-end dy-gap-2",
11308
- children: [/* @__PURE__ */ jsx(Button, {
11309
- variant: "outline",
11310
- onClick: () => onOpenChange(false),
11311
- disabled: pending,
11312
- children: "Cancel"
11313
- }), /* @__PURE__ */ jsx(Button, {
11314
- onClick: () => onConfirm(comment.trim()),
11315
- disabled: pending || !comment.trim(),
11316
- children: pending ? /* @__PURE__ */ jsx(Loader2, { className: "dy-h-4 dy-w-4 dy-animate-spin" }) : transition?.label
11317
- })]
11318
- })
11319
- ]
11320
- })
11213
+ children: transition ? /* @__PURE__ */ jsx(WorkflowCommentDialogBody, {
11214
+ transition,
11215
+ pending,
11216
+ onConfirm,
11217
+ onCancel: () => onOpenChange(false)
11218
+ }, transition.name) : null
11321
11219
  });
11322
11220
  }
11323
11221
  function WorkflowTransitionActionItems({ transitions, workflowConfig, onSelect, disabled }) {
@@ -11440,6 +11338,11 @@ function WorkflowTransitionSplitButton({ collection, documentId, workflowConfig,
11440
11338
  const transitions = React$1.useMemo(() => getAvailableWorkflowTransitions(workflowConfig, workflowMeta), [workflowConfig, workflowMeta]);
11441
11339
  const groupedTransitions = React$1.useMemo(() => groupWorkflowTransitions(transitions), [transitions]);
11442
11340
  const primaryTransition = React$1.useMemo(() => getPrimaryWorkflowTransition(transitions), [transitions]);
11341
+ const saveDraftIsPrimary = React$1.useMemo(() => Boolean(onSaveDraft && shouldUseSaveDraftAsPrimaryAction(workflowConfig, workflowMeta)), [
11342
+ onSaveDraft,
11343
+ workflowConfig,
11344
+ workflowMeta
11345
+ ]);
11443
11346
  const { requestTransition, commentTransition, setCommentTransition, confirmComment, mutation, isPreparing } = useWorkflowTransitionExecutor({
11444
11347
  collection,
11445
11348
  documentIds: [documentId],
@@ -11452,8 +11355,10 @@ function WorkflowTransitionSplitButton({ collection, documentId, workflowConfig,
11452
11355
  const activeTransitionName = mutation.variables?.transition?.name;
11453
11356
  const isPrimaryLoading = mutation.isPending && activeTransitionName === primaryTransition?.name;
11454
11357
  const hasTransitions = transitions.length > 0;
11455
- const hasMenuItems = hasTransitions || !!onSaveDraft;
11358
+ const hasMenuItems = hasTransitions || !!onSaveDraft && !saveDraftIsPrimary;
11456
11359
  const isBusy = mutation.isPending || isPreparing || !!saveDraftPending;
11360
+ const primaryLabel = saveDraftIsPrimary ? saveDraftPending ? "Saving draft..." : "Save draft" : primaryTransition?.label ?? "No actions";
11361
+ const primaryDisabled = saveDraftIsPrimary ? isBusy : !primaryTransition || isBusy;
11457
11362
  React$1.useEffect(() => {
11458
11363
  onPendingChange?.(mutation.isPending || isPreparing);
11459
11364
  }, [
@@ -11468,15 +11373,22 @@ function WorkflowTransitionSplitButton({ collection, documentId, workflowConfig,
11468
11373
  children: [/* @__PURE__ */ jsx(Button, {
11469
11374
  size: "sm",
11470
11375
  className: "dy-h-9 dy-rounded-none dy-border-0 dy-px-4 dy-font-bold dy-bg-primary dy-text-primary-foreground hover:dy-bg-primary/90",
11471
- disabled: !primaryTransition || isBusy,
11376
+ disabled: primaryDisabled,
11472
11377
  onClick: () => {
11378
+ if (saveDraftIsPrimary) {
11379
+ onSaveDraft?.();
11380
+ return;
11381
+ }
11473
11382
  if (primaryTransition) requestTransition(primaryTransition);
11474
11383
  },
11475
- title: primaryTransition?.label ?? "No workflow actions available",
11476
- children: isPrimaryLoading || isPreparing ? /* @__PURE__ */ jsxs("span", {
11384
+ title: saveDraftIsPrimary ? "Save draft" : primaryTransition?.label ?? "No workflow actions available",
11385
+ children: saveDraftIsPrimary && saveDraftPending ? /* @__PURE__ */ jsxs("span", {
11386
+ className: "dy-flex dy-items-center dy-gap-2",
11387
+ children: [/* @__PURE__ */ jsx(Loader2, { className: "dy-h-3.5 dy-w-3.5 dy-animate-spin" }), "Saving draft..."]
11388
+ }) : isPrimaryLoading || isPreparing ? /* @__PURE__ */ jsxs("span", {
11477
11389
  className: "dy-flex dy-items-center dy-gap-2",
11478
11390
  children: [/* @__PURE__ */ jsx(Loader2, { className: "dy-h-3.5 dy-w-3.5 dy-animate-spin" }), isPreparing ? "Saving…" : "Applying…"]
11479
- }) : primaryTransition?.label ?? "No actions"
11391
+ }) : primaryLabel
11480
11392
  }), /* @__PURE__ */ jsxs(DropdownMenu, { children: [/* @__PURE__ */ jsx(DropdownMenuTrigger, {
11481
11393
  asChild: true,
11482
11394
  children: /* @__PURE__ */ jsx(Button, {
@@ -11490,7 +11402,7 @@ function WorkflowTransitionSplitButton({ collection, documentId, workflowConfig,
11490
11402
  }), /* @__PURE__ */ jsxs(DropdownMenuContent, {
11491
11403
  align: "end",
11492
11404
  className: "dy-min-w-56",
11493
- children: [onSaveDraft && /* @__PURE__ */ jsxs(DropdownMenuItem, {
11405
+ children: [onSaveDraft && !saveDraftIsPrimary && /* @__PURE__ */ jsxs(DropdownMenuItem, {
11494
11406
  onClick: () => void onSaveDraft(),
11495
11407
  disabled: isBusy,
11496
11408
  className: "dy-flex dy-items-center dy-gap-2",
@@ -12320,7 +12232,7 @@ function CollectionListPageContent({ slug }) {
12320
12232
  /* @__PURE__ */ jsx(PageHeader, {
12321
12233
  title: "Media Library",
12322
12234
  description: "Manage your media assets and uploads.",
12323
- icon: Image$1,
12235
+ icon: Image,
12324
12236
  children: canCreate && /* @__PURE__ */ jsx(Link, {
12325
12237
  to: `/collections/${slug}/new`,
12326
12238
  className: "dy-w-full sm:dy-w-auto",
@@ -14927,7 +14839,7 @@ var SORT_OPTIONS = [
14927
14839
  }
14928
14840
  ];
14929
14841
  function MediaPage({ collectionSlug, schema }) {
14930
- const { client, components, user } = useDyrected();
14842
+ const { client, components, user, schemas } = useDyrected();
14931
14843
  const queryClient = useQueryClient();
14932
14844
  const [search, setSearch] = React$1.useState("");
14933
14845
  const [isUploadOpen, setIsUploadOpen] = React$1.useState(false);
@@ -14935,7 +14847,7 @@ function MediaPage({ collectionSlug, schema }) {
14935
14847
  const [selectedItem, setSelectedItem] = React$1.useState(null);
14936
14848
  const [sortValue, setSortValue] = React$1.useState("-createdAt");
14937
14849
  const [viewMode, setViewMode] = React$1.useState("grid");
14938
- const { data, fetchNextPage, hasNextPage, isFetchingNextPage, isLoading } = useInfiniteQuery({
14850
+ const { data, fetchNextPage, hasNextPage, isFetchingNextPage, isLoading, error: queryError } = useInfiniteQuery({
14939
14851
  queryKey: [
14940
14852
  "media",
14941
14853
  collectionSlug,
@@ -15080,6 +14992,7 @@ function MediaPage({ collectionSlug, schema }) {
15080
14992
  })]
15081
14993
  })
15082
14994
  });
14995
+ const hasStorageError = schemas?.hasStorage === false || isStorageNotConfiguredError(queryError);
15083
14996
  return /* @__PURE__ */ jsxs("div", {
15084
14997
  ...getRootProps(),
15085
14998
  onPaste: handlePaste,
@@ -15099,6 +15012,7 @@ function MediaPage({ collectionSlug, schema }) {
15099
15012
  })]
15100
15013
  })
15101
15014
  }),
15015
+ hasStorageError && /* @__PURE__ */ jsx(StorageNotConfiguredNotice, { variant: "banner" }),
15102
15016
  /* @__PURE__ */ jsx(AdminComponentSlot, {
15103
15017
  slot: "beforeList",
15104
15018
  componentKeys: collectionSlots?.beforeList,
@@ -15111,7 +15025,7 @@ function MediaPage({ collectionSlug, schema }) {
15111
15025
  className: "dy-min-w-0",
15112
15026
  children: [/* @__PURE__ */ jsxs("div", {
15113
15027
  className: "dy-flex dy-items-center dy-gap-2 dy-mb-1",
15114
- children: [/* @__PURE__ */ jsx(Image$1, { className: "dy-h-5 dy-w-5 dy-flex-shrink-0 dy-text-primary" }), /* @__PURE__ */ jsx("h1", {
15028
+ children: [/* @__PURE__ */ jsx(Image, { className: "dy-h-5 dy-w-5 dy-flex-shrink-0 dy-text-primary" }), /* @__PURE__ */ jsx("h1", {
15115
15029
  className: "dy-min-w-0 dy-break-words dy-text-2xl dy-font-bold dy-tracking-tight dy-text-foreground sm:dy-text-3xl",
15116
15030
  children: schema.labels?.plural ?? (collectionSlug !== "media" ? collectionSlug.charAt(0).toUpperCase() + collectionSlug.slice(1) : "Media Library")
15117
15031
  })]
@@ -15434,10 +15348,17 @@ function MediaCard({ item, baseUrl, onDelete, onClick, isSelected }) {
15434
15348
  children: [
15435
15349
  /* @__PURE__ */ jsx(CardHeader, {
15436
15350
  className: "!dy-p-0 dy-border-b dy-border-border/10",
15437
- children: /* @__PURE__ */ jsx(AspectRatio, {
15351
+ children: /* @__PURE__ */ jsxs(AspectRatio, {
15438
15352
  ratio: 1 / 1,
15439
15353
  className: "dy-bg-muted/30 dy-overflow-hidden dy-relative",
15440
- children: hasPreview ? /* @__PURE__ */ jsxs(Fragment, { children: [
15354
+ children: [(() => {
15355
+ const info = getMediaSourceInfo(item);
15356
+ if (info.source !== "external") return null;
15357
+ return /* @__PURE__ */ jsxs("div", {
15358
+ className: "dy-absolute dy-top-2 dy-left-2 dy-z-30 dy-flex dy-items-center dy-gap-1 dy-rounded-md dy-bg-black/60 dy-backdrop-blur-md dy-px-2 dy-py-0.5 dy-text-[9px] dy-font-bold dy-text-white dy-uppercase",
15359
+ children: [/* @__PURE__ */ jsx(Globe, { className: "dy-h-2.5 dy-w-2.5" }), info.label]
15360
+ });
15361
+ })(), hasPreview ? /* @__PURE__ */ jsxs(Fragment, { children: [
15441
15362
  item.blurhash && /* @__PURE__ */ jsx("div", {
15442
15363
  className: "dy-absolute dy-inset-0 dy-z-0",
15443
15364
  children: /* @__PURE__ */ jsx(Blurhash, {
@@ -15465,7 +15386,7 @@ function MediaCard({ item, baseUrl, onDelete, onClick, isSelected }) {
15465
15386
  ] }) : /* @__PURE__ */ jsx("div", {
15466
15387
  className: "dy-flex dy-items-center dy-justify-center dy-h-full dy-bg-primary/5",
15467
15388
  children: /* @__PURE__ */ jsx(FileIcon, { className: "dy-h-10 dy-w-10 dy-text-primary/40" })
15468
- })
15389
+ })]
15469
15390
  })
15470
15391
  }),
15471
15392
  /* @__PURE__ */ jsxs(CardContent, {
@@ -15800,10 +15721,21 @@ function DetailItem({ label, value, copyable }) {
15800
15721
  });
15801
15722
  }
15802
15723
  function FileUploader({ collectionSlug, files, setFiles, onComplete }) {
15803
- const { client } = useDyrected();
15804
- const [uploading, setUploading] = React$1.useState(false);
15805
- const [progress, setProgress] = React$1.useState(0);
15806
- const { url: externalUrl, setUrl: setExternalUrl, submit: handleAddUrl, isSubmitting: addingUrl } = useAddMediaFromUrl({
15724
+ const { isUploading: uploading, queue, uploadFiles } = useMediaUpload({
15725
+ collectionSlug: collectionSlug || "media",
15726
+ onAllCompleted: (items) => {
15727
+ setFiles([]);
15728
+ onComplete();
15729
+ toast.success(`${items.length} asset(s) uploaded successfully`);
15730
+ },
15731
+ onError: (error) => toast.error("Failed to upload assets", { description: error.message })
15732
+ });
15733
+ const progress = React$1.useMemo(() => {
15734
+ if (queue.length === 0) return 0;
15735
+ const total = queue.reduce((acc, q) => acc + q.progress, 0);
15736
+ return Math.round(total / queue.length);
15737
+ }, [queue]);
15738
+ const { url: externalUrl, setUrl: setExternalUrl, submit: handleAddUrl, isSubmitting: addingUrl } = useMediaURL({
15807
15739
  collection: collectionSlug || "media",
15808
15740
  onAdded: () => {
15809
15741
  toast.success("External media added");
@@ -15816,20 +15748,7 @@ function FileUploader({ collectionSlug, files, setFiles, onComplete }) {
15816
15748
  }, [setFiles]) });
15817
15749
  const handleUpload = async () => {
15818
15750
  if (files.length === 0) return;
15819
- setUploading(true);
15820
- setProgress(0);
15821
- try {
15822
- const total = files.length;
15823
- for (let i = 0; i < files.length; i++) await client.collection(collectionSlug || "media").upload(files[i], void 0, { onProgress: (pct) => setProgress(Math.round((i + pct / 100) / total * 100)) });
15824
- setProgress(100);
15825
- onComplete();
15826
- toast.success(`${files.length} assets uploaded successfully`);
15827
- } catch (error) {
15828
- console.error("Upload failed", error);
15829
- toast.error("Failed to upload assets", { description: error.message });
15830
- } finally {
15831
- setUploading(false);
15832
- }
15751
+ await uploadFiles(files);
15833
15752
  };
15834
15753
  return /* @__PURE__ */ jsxs(Tabs, {
15835
15754
  defaultValue: "files",
@@ -16165,7 +16084,7 @@ function SetupPromptUI({ config }) {
16165
16084
  setCopied(true);
16166
16085
  window.setTimeout(() => setCopied(false), 1800);
16167
16086
  }
16168
- const currentVersion = "2.6.0";
16087
+ const currentVersion = "2.6.2";
16169
16088
  const [latestVersion, setLatestVersion] = useState(() => {
16170
16089
  if (typeof window === "undefined") return null;
16171
16090
  return localStorage.getItem("dyrected_latest_release");
@@ -17102,49 +17021,6 @@ var Toaster$1 = ({ ...props }) => {
17102
17021
  });
17103
17022
  };
17104
17023
  //#endregion
17105
- //#region src/hooks/admin-theme-provider.tsx
17106
- function getSystemTheme() {
17107
- if (typeof window === "undefined" || !window.matchMedia) return "light";
17108
- return window.matchMedia("(prefers-color-scheme: dark)").matches ? "dark" : "light";
17109
- }
17110
- function AdminThemeProvider({ children }) {
17111
- const [theme, setTheme] = usePreferences("theme", "system");
17112
- const [systemTheme, setSystemTheme] = React$1.useState(() => getSystemTheme());
17113
- React$1.useEffect(() => {
17114
- if (typeof window === "undefined" || !window.matchMedia) return;
17115
- const media = window.matchMedia("(prefers-color-scheme: dark)");
17116
- const syncSystemTheme = () => {
17117
- setSystemTheme(media.matches ? "dark" : "light");
17118
- };
17119
- syncSystemTheme();
17120
- media.addEventListener("change", syncSystemTheme);
17121
- return () => media.removeEventListener("change", syncSystemTheme);
17122
- }, []);
17123
- const resolvedTheme = resolveAdminTheme(theme, systemTheme);
17124
- const value = React$1.useMemo(() => ({
17125
- theme,
17126
- resolvedTheme,
17127
- setTheme,
17128
- themeClassName: adminThemeClassName(resolvedTheme)
17129
- }), [
17130
- resolvedTheme,
17131
- setTheme,
17132
- theme
17133
- ]);
17134
- return /* @__PURE__ */ jsx(AdminThemeContext.Provider, {
17135
- value,
17136
- children
17137
- });
17138
- }
17139
- function AdminThemedRoot({ children }) {
17140
- const { resolvedTheme, themeClassName } = useAdminTheme();
17141
- return /* @__PURE__ */ jsx("div", {
17142
- className: `${themeClassName} dy-h-full`,
17143
- "data-theme": resolvedTheme,
17144
- children
17145
- });
17146
- }
17147
- //#endregion
17148
17024
  //#region src/index.tsx
17149
17025
  function CollectionRoute() {
17150
17026
  const { slug } = useParams();
@@ -17223,7 +17099,7 @@ function AdminRoutes({ onNavigate, isEmbedded = false }) {
17223
17099
  * <AdminUI baseUrl="/dyrected" apiKey="my-key" isEmbedded />
17224
17100
  * ```
17225
17101
  */
17226
- function AdminUI({ apiKey, baseUrl = "/dyrected", siteId, onNavigate, isEmbedded, components, initialToken, defaultTechStack }) {
17102
+ function AdminUI({ apiKey, baseUrl = "/dyrected", siteId, onNavigate, isEmbedded, components, initialToken, defaultTechStack, themeController }) {
17227
17103
  const [mounted, setMounted] = useState(false);
17228
17104
  useEffect(() => setMounted(true), []);
17229
17105
  if (!mounted) return /* @__PURE__ */ jsx("div", {
@@ -17239,14 +17115,17 @@ function AdminUI({ apiKey, baseUrl = "/dyrected", siteId, onNavigate, isEmbedded
17239
17115
  components,
17240
17116
  initialToken,
17241
17117
  defaultTechStack,
17242
- children: /* @__PURE__ */ jsx(AdminThemeProvider, { children: /* @__PURE__ */ jsxs(AdminThemedRoot, { children: [/* @__PURE__ */ jsx(QueryProvider, { children: /* @__PURE__ */ jsx(HashRouter, { children: /* @__PURE__ */ jsx(AdminRoutes, {
17243
- onNavigate,
17244
- isEmbedded
17245
- }) }) }), /* @__PURE__ */ jsx(Toaster$1, {
17246
- position: "top-center",
17247
- expand: true,
17248
- richColors: true
17249
- })] }) })
17118
+ children: /* @__PURE__ */ jsx(AdminThemeProvider, {
17119
+ controller: themeController,
17120
+ children: /* @__PURE__ */ jsxs(AdminThemedRoot, { children: [/* @__PURE__ */ jsx(QueryProvider, { children: /* @__PURE__ */ jsx(HashRouter, { children: /* @__PURE__ */ jsx(AdminRoutes, {
17121
+ onNavigate,
17122
+ isEmbedded
17123
+ }) }) }), /* @__PURE__ */ jsx(Toaster$1, {
17124
+ position: "top-center",
17125
+ expand: true,
17126
+ richColors: true
17127
+ })] })
17128
+ })
17250
17129
  }) })
17251
17130
  });
17252
17131
  }
@@ -17275,7 +17154,7 @@ function renderAdminUI(container, props) {
17275
17154
  * Intended for iframe or self-hosted deployments where the admin owns
17276
17155
  * the entire page and does not share URL history with a host app.
17277
17156
  */
17278
- function AdminStandalone({ apiKey, baseUrl, siteId }) {
17157
+ function AdminStandalone({ apiKey, baseUrl, siteId, themeController }) {
17279
17158
  const [mounted, setMounted] = useState(false);
17280
17159
  useEffect(() => setMounted(true), []);
17281
17160
  if (!mounted) return /* @__PURE__ */ jsx("div", {
@@ -17288,13 +17167,16 @@ function AdminStandalone({ apiKey, baseUrl, siteId }) {
17288
17167
  apiKey,
17289
17168
  baseUrl,
17290
17169
  siteId,
17291
- children: /* @__PURE__ */ jsx(AdminThemeProvider, { children: /* @__PURE__ */ jsxs(AdminThemedRoot, { children: [/* @__PURE__ */ jsx(QueryProvider, { children: /* @__PURE__ */ jsx(MemoryRouter, { children: /* @__PURE__ */ jsx(AdminRoutes, {}) }) }), /* @__PURE__ */ jsx(Toaster$1, {
17292
- position: "top-center",
17293
- expand: true,
17294
- richColors: true
17295
- })] }) })
17170
+ children: /* @__PURE__ */ jsx(AdminThemeProvider, {
17171
+ controller: themeController,
17172
+ children: /* @__PURE__ */ jsxs(AdminThemedRoot, { children: [/* @__PURE__ */ jsx(QueryProvider, { children: /* @__PURE__ */ jsx(MemoryRouter, { children: /* @__PURE__ */ jsx(AdminRoutes, {}) }) }), /* @__PURE__ */ jsx(Toaster$1, {
17173
+ position: "top-center",
17174
+ expand: true,
17175
+ richColors: true
17176
+ })] })
17177
+ })
17296
17178
  })
17297
17179
  });
17298
17180
  }
17299
17181
  //#endregion
17300
- export { AdminStandalone, AdminUI, SetupPromptUI, renderAdminUI };
17182
+ export { AdminStandalone, AdminThemeProvider, AdminThemedRoot, AdminUI, DyrectedFieldPathProvider, DyrectedFormProvider, SetupPromptUI, adminThemeClassName, buildDefaultValues, buildSchemaShape, compressImage, createAdminThemeController, createDyrectedFieldController, createDyrectedFormController, createMediaLibraryController, createMediaURLController, createMediaUploadController, formatPath, getFieldPathSegments, getFlatErrors, getMediaSourceInfo, getParentFieldPath, getSystemAdminTheme, getValueAtPath, isExternalMedia, joinFieldPath, normalizeFieldPath, renderAdminUI, resolveActiveMediaCollection, resolveAdminTheme, resolveContainerPath, setValueAtPath, useAddMediaFromUrl, useAdminTheme, useDyrectedForm, useField, useMediaLibrary, useMediaURL, useMediaUpload };