From 77e3eb21d6e3cbbdb1b85d10ad10da1a58348fa8 Mon Sep 17 00:00:00 2001 From: shafi54 <108669266+shafi-aviz@users.noreply.github.com> Date: Sat, 21 Mar 2026 20:59:45 +0530 Subject: [PATCH] enh --- apps/admin-ui/.expo/types/router.d.ts | 6 +- .../app/(drawer)/products/detail/[id].tsx | 42 +-- .../app/(drawer)/send-notifications/index.tsx | 40 +- apps/admin-ui/components/BannerForm.tsx | 46 +-- apps/admin-ui/components/StoreForm.tsx | 46 +-- .../hooks/useUploadToObjectStorage.ts | 117 ++++++ apps/backend/assets/signed-url-cache.json | 2 +- .../apis/product-tags.controller.ts | 6 +- .../src/trpc/apis/admin-apis/apis/banner.ts | 9 +- .../trpc/apis/admin-apis/apis/complaint.ts | 4 +- .../src/trpc/apis/admin-apis/apis/product.ts | 10 +- .../src/trpc/apis/admin-apis/apis/store.ts | 6 +- .../apis/common-apis/common-trpc-index.ts | 11 +- edge_migration.md | 342 ++++++++++++++++++ packages/ui/index.ts | 4 +- 15 files changed, 531 insertions(+), 160 deletions(-) create mode 100644 apps/admin-ui/hooks/useUploadToObjectStorage.ts create mode 100644 edge_migration.md diff --git a/apps/admin-ui/.expo/types/router.d.ts b/apps/admin-ui/.expo/types/router.d.ts index e400cfe..3dc99d3 100644 --- a/apps/admin-ui/.expo/types/router.d.ts +++ b/apps/admin-ui/.expo/types/router.d.ts @@ -6,9 +6,9 @@ export * from 'expo-router'; declare module 'expo-router' { export namespace ExpoRouter { export interface __routes { - hrefInputParams: { pathname: Router.RelativePathString, params?: Router.UnknownInputParams } | { pathname: Router.ExternalPathString, params?: Router.UnknownInputParams } | { pathname: `/`; params?: Router.UnknownInputParams; } | { pathname: `/login`; params?: Router.UnknownInputParams; } | { pathname: `/_sitemap`; params?: Router.UnknownInputParams; } | { pathname: `${'/(drawer)'}/address-management` | `/address-management`; params?: Router.UnknownInputParams; } | { pathname: `${'/(drawer)'}/complaints` | `/complaints`; params?: Router.UnknownInputParams; } | { pathname: `${'/(drawer)'}/coupons/create` | `/coupons/create`; params?: Router.UnknownInputParams; } | { pathname: `${'/(drawer)'}/coupons` | `/coupons`; params?: Router.UnknownInputParams; } | { pathname: `${'/(drawer)'}/coupons/reserved-coupons` | `/coupons/reserved-coupons`; params?: Router.UnknownInputParams; } | { pathname: `${'/(drawer)'}/customize-app/all-items-order` | `/customize-app/all-items-order`; params?: Router.UnknownInputParams; } | { pathname: `${'/(drawer)'}/customize-app` | `/customize-app`; params?: Router.UnknownInputParams; } | { pathname: `${'/(drawer)'}/customize-app/popular-items` | `/customize-app/popular-items`; params?: Router.UnknownInputParams; } | { pathname: `${'/(drawer)'}/dashboard` | `/dashboard`; params?: Router.UnknownInputParams; } | { pathname: `${'/(drawer)'}/dashboard-banners/create` | `/dashboard-banners/create`; params?: Router.UnknownInputParams; } | { pathname: `${'/(drawer)'}/dashboard-banners` | `/dashboard-banners`; params?: Router.UnknownInputParams; } | { pathname: `${'/(drawer)'}/manage-orders` | `/manage-orders`; params?: Router.UnknownInputParams; } | { pathname: `${'/(drawer)'}/manage-orders/delivery-sequences` | `/manage-orders/delivery-sequences`; params?: Router.UnknownInputParams; } | { pathname: `${'/(drawer)'}/manage-orders/orders` | `/manage-orders/orders`; params?: Router.UnknownInputParams; } | { pathname: `${'/(drawer)'}/prices-overview` | `/prices-overview`; params?: Router.UnknownInputParams; } | { pathname: `${'/(drawer)'}/product-groupings/create` | `/product-groupings/create`; params?: Router.UnknownInputParams; } | { pathname: `${'/(drawer)'}/product-groupings` | `/product-groupings`; params?: Router.UnknownInputParams; } | { pathname: `${'/(drawer)'}/product-tags/add` | `/product-tags/add`; params?: Router.UnknownInputParams; } | { pathname: `${'/(drawer)'}/product-tags` | `/product-tags`; params?: Router.UnknownInputParams; } | { pathname: `${'/(drawer)'}/product-tags/edit` | `/product-tags/edit`; params?: Router.UnknownInputParams; } | { pathname: `${'/(drawer)'}/products/add` | `/products/add`; params?: Router.UnknownInputParams; } | { pathname: `${'/(drawer)'}/products/edit` | `/products/edit`; params?: Router.UnknownInputParams; } | { pathname: `${'/(drawer)'}/products` | `/products`; params?: Router.UnknownInputParams; } | { pathname: `${'/(drawer)'}/rebalance-orders` | `/rebalance-orders`; params?: Router.UnknownInputParams; } | { pathname: `${'/(drawer)'}/send-notifications` | `/send-notifications`; params?: Router.UnknownInputParams; } | { pathname: `${'/(drawer)'}/slots/add` | `/slots/add`; params?: Router.UnknownInputParams; } | { pathname: `${'/(drawer)'}/slots` | `/slots`; params?: Router.UnknownInputParams; } | { pathname: `${'/(drawer)'}/slots/slot-details` | `/slots/slot-details`; params?: Router.UnknownInputParams; } | { pathname: `${'/(drawer)'}/stores/add` | `/stores/add`; params?: Router.UnknownInputParams; } | { pathname: `${'/(drawer)'}/stores/edit` | `/stores/edit`; params?: Router.UnknownInputParams; } | { pathname: `${'/(drawer)'}/stores` | `/stores`; params?: Router.UnknownInputParams; } | { pathname: `${'/(drawer)'}/user-management` | `/user-management`; params?: Router.UnknownInputParams; } | { pathname: `${'/(drawer)'}/users` | `/users`; params?: Router.UnknownInputParams; } | { pathname: `${'/(drawer)'}/vendor-snippets` | `/vendor-snippets`; params?: Router.UnknownInputParams; } | { pathname: `${'/(drawer)'}/stocking-schedules` | `/stocking-schedules`; params?: Router.UnknownInputParams; } | { pathname: `${'/(drawer)'}/coupons/edit/[id]` | `/coupons/edit/[id]`, params: Router.UnknownInputParams & { id: string | number; } } | { pathname: `${'/(drawer)'}/dashboard-banners/edit/[id]` | `/dashboard-banners/edit/[id]`, params: Router.UnknownInputParams & { id: string | number; } } | { pathname: `${'/(drawer)'}/manage-orders/order-details/[id]` | `/manage-orders/order-details/[id]`, params: Router.UnknownInputParams & { id: string | number; } } | { pathname: `${'/(drawer)'}/product-groupings/edit/[id]` | `/product-groupings/edit/[id]`, params: Router.UnknownInputParams & { id: string | number; } } | { pathname: `${'/(drawer)'}/products/detail/[id]` | `/products/detail/[id]`, params: Router.UnknownInputParams & { id: string | number; } } | { pathname: `${'/(drawer)'}/slots/edit/[id]` | `/slots/edit/[id]`, params: Router.UnknownInputParams & { id: string | number; } } | { pathname: `${'/(drawer)'}/user-management/[id]` | `/user-management/[id]`, params: Router.UnknownInputParams & { id: string | number; } }; - hrefOutputParams: { pathname: Router.RelativePathString, params?: Router.UnknownOutputParams } | { pathname: Router.ExternalPathString, params?: Router.UnknownOutputParams } | { pathname: `/`; params?: Router.UnknownOutputParams; } | { pathname: `/login`; params?: Router.UnknownOutputParams; } | { pathname: `/_sitemap`; params?: Router.UnknownOutputParams; } | { pathname: `${'/(drawer)'}/address-management` | `/address-management`; params?: Router.UnknownOutputParams; } | { pathname: `${'/(drawer)'}/complaints` | `/complaints`; params?: Router.UnknownOutputParams; } | { pathname: `${'/(drawer)'}/coupons/create` | `/coupons/create`; params?: Router.UnknownOutputParams; } | { pathname: `${'/(drawer)'}/coupons` | `/coupons`; params?: Router.UnknownOutputParams; } | { pathname: `${'/(drawer)'}/coupons/reserved-coupons` | `/coupons/reserved-coupons`; params?: Router.UnknownOutputParams; } | { pathname: `${'/(drawer)'}/customize-app/all-items-order` | `/customize-app/all-items-order`; params?: Router.UnknownOutputParams; } | { pathname: `${'/(drawer)'}/customize-app` | `/customize-app`; params?: Router.UnknownOutputParams; } | { pathname: `${'/(drawer)'}/customize-app/popular-items` | `/customize-app/popular-items`; params?: Router.UnknownOutputParams; } | { pathname: `${'/(drawer)'}/dashboard` | `/dashboard`; params?: Router.UnknownOutputParams; } | { pathname: `${'/(drawer)'}/dashboard-banners/create` | `/dashboard-banners/create`; params?: Router.UnknownOutputParams; } | { pathname: `${'/(drawer)'}/dashboard-banners` | `/dashboard-banners`; params?: Router.UnknownOutputParams; } | { pathname: `${'/(drawer)'}/manage-orders` | `/manage-orders`; params?: Router.UnknownOutputParams; } | { pathname: `${'/(drawer)'}/manage-orders/delivery-sequences` | `/manage-orders/delivery-sequences`; params?: Router.UnknownOutputParams; } | { pathname: `${'/(drawer)'}/manage-orders/orders` | `/manage-orders/orders`; params?: Router.UnknownOutputParams; } | { pathname: `${'/(drawer)'}/prices-overview` | `/prices-overview`; params?: Router.UnknownOutputParams; } | { pathname: `${'/(drawer)'}/product-groupings/create` | `/product-groupings/create`; params?: Router.UnknownOutputParams; } | { pathname: `${'/(drawer)'}/product-groupings` | `/product-groupings`; params?: Router.UnknownOutputParams; } | { pathname: `${'/(drawer)'}/product-tags/add` | `/product-tags/add`; params?: Router.UnknownOutputParams; } | { pathname: `${'/(drawer)'}/product-tags` | `/product-tags`; params?: Router.UnknownOutputParams; } | { pathname: `${'/(drawer)'}/product-tags/edit` | `/product-tags/edit`; params?: Router.UnknownOutputParams; } | { pathname: `${'/(drawer)'}/products/add` | `/products/add`; params?: Router.UnknownOutputParams; } | { pathname: `${'/(drawer)'}/products/edit` | `/products/edit`; params?: Router.UnknownOutputParams; } | { pathname: `${'/(drawer)'}/products` | `/products`; params?: Router.UnknownOutputParams; } | { pathname: `${'/(drawer)'}/rebalance-orders` | `/rebalance-orders`; params?: Router.UnknownOutputParams; } | { pathname: `${'/(drawer)'}/send-notifications` | `/send-notifications`; params?: Router.UnknownOutputParams; } | { pathname: `${'/(drawer)'}/slots/add` | `/slots/add`; params?: Router.UnknownOutputParams; } | { pathname: `${'/(drawer)'}/slots` | `/slots`; params?: Router.UnknownOutputParams; } | { pathname: `${'/(drawer)'}/slots/slot-details` | `/slots/slot-details`; params?: Router.UnknownOutputParams; } | { pathname: `${'/(drawer)'}/stores/add` | `/stores/add`; params?: Router.UnknownOutputParams; } | { pathname: `${'/(drawer)'}/stores/edit` | `/stores/edit`; params?: Router.UnknownOutputParams; } | { pathname: `${'/(drawer)'}/stores` | `/stores`; params?: Router.UnknownOutputParams; } | { pathname: `${'/(drawer)'}/user-management` | `/user-management`; params?: Router.UnknownOutputParams; } | { pathname: `${'/(drawer)'}/users` | `/users`; params?: Router.UnknownOutputParams; } | { pathname: `${'/(drawer)'}/vendor-snippets` | `/vendor-snippets`; params?: Router.UnknownOutputParams; } | { pathname: `${'/(drawer)'}/stocking-schedules` | `/stocking-schedules`; params?: Router.UnknownOutputParams; } | { pathname: `${'/(drawer)'}/coupons/edit/[id]` | `/coupons/edit/[id]`, params: Router.UnknownOutputParams & { id: string; } } | { pathname: `${'/(drawer)'}/dashboard-banners/edit/[id]` | `/dashboard-banners/edit/[id]`, params: Router.UnknownOutputParams & { id: string; } } | { pathname: `${'/(drawer)'}/manage-orders/order-details/[id]` | `/manage-orders/order-details/[id]`, params: Router.UnknownOutputParams & { id: string; } } | { pathname: `${'/(drawer)'}/product-groupings/edit/[id]` | `/product-groupings/edit/[id]`, params: Router.UnknownOutputParams & { id: string; } } | { pathname: `${'/(drawer)'}/products/detail/[id]` | `/products/detail/[id]`, params: Router.UnknownOutputParams & { id: string; } } | { pathname: `${'/(drawer)'}/slots/edit/[id]` | `/slots/edit/[id]`, params: Router.UnknownOutputParams & { id: string; } } | { pathname: `${'/(drawer)'}/user-management/[id]` | `/user-management/[id]`, params: Router.UnknownOutputParams & { id: string; } }; - href: Router.RelativePathString | Router.ExternalPathString | `/${`?${string}` | `#${string}` | ''}` | `/login${`?${string}` | `#${string}` | ''}` | `/_sitemap${`?${string}` | `#${string}` | ''}` | `${'/(drawer)'}/address-management${`?${string}` | `#${string}` | ''}` | `/address-management${`?${string}` | `#${string}` | ''}` | `${'/(drawer)'}/complaints${`?${string}` | `#${string}` | ''}` | `/complaints${`?${string}` | `#${string}` | ''}` | `${'/(drawer)'}/coupons/create${`?${string}` | `#${string}` | ''}` | `/coupons/create${`?${string}` | `#${string}` | ''}` | `${'/(drawer)'}/coupons${`?${string}` | `#${string}` | ''}` | `/coupons${`?${string}` | `#${string}` | ''}` | `${'/(drawer)'}/coupons/reserved-coupons${`?${string}` | `#${string}` | ''}` | `/coupons/reserved-coupons${`?${string}` | `#${string}` | ''}` | `${'/(drawer)'}/customize-app/all-items-order${`?${string}` | `#${string}` | ''}` | `/customize-app/all-items-order${`?${string}` | `#${string}` | ''}` | `${'/(drawer)'}/customize-app${`?${string}` | `#${string}` | ''}` | `/customize-app${`?${string}` | `#${string}` | ''}` | `${'/(drawer)'}/customize-app/popular-items${`?${string}` | `#${string}` | ''}` | `/customize-app/popular-items${`?${string}` | `#${string}` | ''}` | `${'/(drawer)'}/dashboard${`?${string}` | `#${string}` | ''}` | `/dashboard${`?${string}` | `#${string}` | ''}` | `${'/(drawer)'}/dashboard-banners/create${`?${string}` | `#${string}` | ''}` | `/dashboard-banners/create${`?${string}` | `#${string}` | ''}` | `${'/(drawer)'}/dashboard-banners${`?${string}` | `#${string}` | ''}` | `/dashboard-banners${`?${string}` | `#${string}` | ''}` | `${'/(drawer)'}/manage-orders${`?${string}` | `#${string}` | ''}` | `/manage-orders${`?${string}` | `#${string}` | ''}` | `${'/(drawer)'}/manage-orders/delivery-sequences${`?${string}` | `#${string}` | ''}` | `/manage-orders/delivery-sequences${`?${string}` | `#${string}` | ''}` | `${'/(drawer)'}/manage-orders/orders${`?${string}` | `#${string}` | ''}` | `/manage-orders/orders${`?${string}` | `#${string}` | ''}` | `${'/(drawer)'}/prices-overview${`?${string}` | `#${string}` | ''}` | `/prices-overview${`?${string}` | `#${string}` | ''}` | `${'/(drawer)'}/product-groupings/create${`?${string}` | `#${string}` | ''}` | `/product-groupings/create${`?${string}` | `#${string}` | ''}` | `${'/(drawer)'}/product-groupings${`?${string}` | `#${string}` | ''}` | `/product-groupings${`?${string}` | `#${string}` | ''}` | `${'/(drawer)'}/product-tags/add${`?${string}` | `#${string}` | ''}` | `/product-tags/add${`?${string}` | `#${string}` | ''}` | `${'/(drawer)'}/product-tags${`?${string}` | `#${string}` | ''}` | `/product-tags${`?${string}` | `#${string}` | ''}` | `${'/(drawer)'}/product-tags/edit${`?${string}` | `#${string}` | ''}` | `/product-tags/edit${`?${string}` | `#${string}` | ''}` | `${'/(drawer)'}/products/add${`?${string}` | `#${string}` | ''}` | `/products/add${`?${string}` | `#${string}` | ''}` | `${'/(drawer)'}/products/edit${`?${string}` | `#${string}` | ''}` | `/products/edit${`?${string}` | `#${string}` | ''}` | `${'/(drawer)'}/products${`?${string}` | `#${string}` | ''}` | `/products${`?${string}` | `#${string}` | ''}` | `${'/(drawer)'}/rebalance-orders${`?${string}` | `#${string}` | ''}` | `/rebalance-orders${`?${string}` | `#${string}` | ''}` | `${'/(drawer)'}/send-notifications${`?${string}` | `#${string}` | ''}` | `/send-notifications${`?${string}` | `#${string}` | ''}` | `${'/(drawer)'}/slots/add${`?${string}` | `#${string}` | ''}` | `/slots/add${`?${string}` | `#${string}` | ''}` | `${'/(drawer)'}/slots${`?${string}` | `#${string}` | ''}` | `/slots${`?${string}` | `#${string}` | ''}` | `${'/(drawer)'}/slots/slot-details${`?${string}` | `#${string}` | ''}` | `/slots/slot-details${`?${string}` | `#${string}` | ''}` | `${'/(drawer)'}/stores/add${`?${string}` | `#${string}` | ''}` | `/stores/add${`?${string}` | `#${string}` | ''}` | `${'/(drawer)'}/stores/edit${`?${string}` | `#${string}` | ''}` | `/stores/edit${`?${string}` | `#${string}` | ''}` | `${'/(drawer)'}/stores${`?${string}` | `#${string}` | ''}` | `/stores${`?${string}` | `#${string}` | ''}` | `${'/(drawer)'}/user-management${`?${string}` | `#${string}` | ''}` | `/user-management${`?${string}` | `#${string}` | ''}` | `${'/(drawer)'}/users${`?${string}` | `#${string}` | ''}` | `/users${`?${string}` | `#${string}` | ''}` | `${'/(drawer)'}/vendor-snippets${`?${string}` | `#${string}` | ''}` | `/vendor-snippets${`?${string}` | `#${string}` | ''}` | `${'/(drawer)'}/stocking-schedules${`?${string}` | `#${string}` | ''}` | `/stocking-schedules${`?${string}` | `#${string}` | ''}` | { pathname: Router.RelativePathString, params?: Router.UnknownInputParams } | { pathname: Router.ExternalPathString, params?: Router.UnknownInputParams } | { pathname: `/`; params?: Router.UnknownInputParams; } | { pathname: `/login`; params?: Router.UnknownInputParams; } | { pathname: `/_sitemap`; params?: Router.UnknownInputParams; } | { pathname: `${'/(drawer)'}/address-management` | `/address-management`; params?: Router.UnknownInputParams; } | { pathname: `${'/(drawer)'}/complaints` | `/complaints`; params?: Router.UnknownInputParams; } | { pathname: `${'/(drawer)'}/coupons/create` | `/coupons/create`; params?: Router.UnknownInputParams; } | { pathname: `${'/(drawer)'}/coupons` | `/coupons`; params?: Router.UnknownInputParams; } | { pathname: `${'/(drawer)'}/coupons/reserved-coupons` | `/coupons/reserved-coupons`; params?: Router.UnknownInputParams; } | { pathname: `${'/(drawer)'}/customize-app/all-items-order` | `/customize-app/all-items-order`; params?: Router.UnknownInputParams; } | { pathname: `${'/(drawer)'}/customize-app` | `/customize-app`; params?: Router.UnknownInputParams; } | { pathname: `${'/(drawer)'}/customize-app/popular-items` | `/customize-app/popular-items`; params?: Router.UnknownInputParams; } | { pathname: `${'/(drawer)'}/dashboard` | `/dashboard`; params?: Router.UnknownInputParams; } | { pathname: `${'/(drawer)'}/dashboard-banners/create` | `/dashboard-banners/create`; params?: Router.UnknownInputParams; } | { pathname: `${'/(drawer)'}/dashboard-banners` | `/dashboard-banners`; params?: Router.UnknownInputParams; } | { pathname: `${'/(drawer)'}/manage-orders` | `/manage-orders`; params?: Router.UnknownInputParams; } | { pathname: `${'/(drawer)'}/manage-orders/delivery-sequences` | `/manage-orders/delivery-sequences`; params?: Router.UnknownInputParams; } | { pathname: `${'/(drawer)'}/manage-orders/orders` | `/manage-orders/orders`; params?: Router.UnknownInputParams; } | { pathname: `${'/(drawer)'}/prices-overview` | `/prices-overview`; params?: Router.UnknownInputParams; } | { pathname: `${'/(drawer)'}/product-groupings/create` | `/product-groupings/create`; params?: Router.UnknownInputParams; } | { pathname: `${'/(drawer)'}/product-groupings` | `/product-groupings`; params?: Router.UnknownInputParams; } | { pathname: `${'/(drawer)'}/product-tags/add` | `/product-tags/add`; params?: Router.UnknownInputParams; } | { pathname: `${'/(drawer)'}/product-tags` | `/product-tags`; params?: Router.UnknownInputParams; } | { pathname: `${'/(drawer)'}/product-tags/edit` | `/product-tags/edit`; params?: Router.UnknownInputParams; } | { pathname: `${'/(drawer)'}/products/add` | `/products/add`; params?: Router.UnknownInputParams; } | { pathname: `${'/(drawer)'}/products/edit` | `/products/edit`; params?: Router.UnknownInputParams; } | { pathname: `${'/(drawer)'}/products` | `/products`; params?: Router.UnknownInputParams; } | { pathname: `${'/(drawer)'}/rebalance-orders` | `/rebalance-orders`; params?: Router.UnknownInputParams; } | { pathname: `${'/(drawer)'}/send-notifications` | `/send-notifications`; params?: Router.UnknownInputParams; } | { pathname: `${'/(drawer)'}/slots/add` | `/slots/add`; params?: Router.UnknownInputParams; } | { pathname: `${'/(drawer)'}/slots` | `/slots`; params?: Router.UnknownInputParams; } | { pathname: `${'/(drawer)'}/slots/slot-details` | `/slots/slot-details`; params?: Router.UnknownInputParams; } | { pathname: `${'/(drawer)'}/stores/add` | `/stores/add`; params?: Router.UnknownInputParams; } | { pathname: `${'/(drawer)'}/stores/edit` | `/stores/edit`; params?: Router.UnknownInputParams; } | { pathname: `${'/(drawer)'}/stores` | `/stores`; params?: Router.UnknownInputParams; } | { pathname: `${'/(drawer)'}/user-management` | `/user-management`; params?: Router.UnknownInputParams; } | { pathname: `${'/(drawer)'}/users` | `/users`; params?: Router.UnknownInputParams; } | { pathname: `${'/(drawer)'}/vendor-snippets` | `/vendor-snippets`; params?: Router.UnknownInputParams; } | { pathname: `${'/(drawer)'}/stocking-schedules` | `/stocking-schedules`; params?: Router.UnknownInputParams; } | `${'/(drawer)'}/coupons/edit/${Router.SingleRoutePart}${`?${string}` | `#${string}` | ''}` | `/coupons/edit/${Router.SingleRoutePart}${`?${string}` | `#${string}` | ''}` | `${'/(drawer)'}/dashboard-banners/edit/${Router.SingleRoutePart}${`?${string}` | `#${string}` | ''}` | `/dashboard-banners/edit/${Router.SingleRoutePart}${`?${string}` | `#${string}` | ''}` | `${'/(drawer)'}/manage-orders/order-details/${Router.SingleRoutePart}${`?${string}` | `#${string}` | ''}` | `/manage-orders/order-details/${Router.SingleRoutePart}${`?${string}` | `#${string}` | ''}` | `${'/(drawer)'}/product-groupings/edit/${Router.SingleRoutePart}${`?${string}` | `#${string}` | ''}` | `/product-groupings/edit/${Router.SingleRoutePart}${`?${string}` | `#${string}` | ''}` | `${'/(drawer)'}/products/detail/${Router.SingleRoutePart}${`?${string}` | `#${string}` | ''}` | `/products/detail/${Router.SingleRoutePart}${`?${string}` | `#${string}` | ''}` | `${'/(drawer)'}/slots/edit/${Router.SingleRoutePart}${`?${string}` | `#${string}` | ''}` | `/slots/edit/${Router.SingleRoutePart}${`?${string}` | `#${string}` | ''}` | `${'/(drawer)'}/user-management/${Router.SingleRoutePart}${`?${string}` | `#${string}` | ''}` | `/user-management/${Router.SingleRoutePart}${`?${string}` | `#${string}` | ''}` | { pathname: `${'/(drawer)'}/coupons/edit/[id]` | `/coupons/edit/[id]`, params: Router.UnknownInputParams & { id: string | number; } } | { pathname: `${'/(drawer)'}/dashboard-banners/edit/[id]` | `/dashboard-banners/edit/[id]`, params: Router.UnknownInputParams & { id: string | number; } } | { pathname: `${'/(drawer)'}/manage-orders/order-details/[id]` | `/manage-orders/order-details/[id]`, params: Router.UnknownInputParams & { id: string | number; } } | { pathname: `${'/(drawer)'}/product-groupings/edit/[id]` | `/product-groupings/edit/[id]`, params: Router.UnknownInputParams & { id: string | number; } } | { pathname: `${'/(drawer)'}/products/detail/[id]` | `/products/detail/[id]`, params: Router.UnknownInputParams & { id: string | number; } } | { pathname: `${'/(drawer)'}/slots/edit/[id]` | `/slots/edit/[id]`, params: Router.UnknownInputParams & { id: string | number; } } | { pathname: `${'/(drawer)'}/user-management/[id]` | `/user-management/[id]`, params: Router.UnknownInputParams & { id: string | number; } }; + hrefInputParams: { pathname: Router.RelativePathString, params?: Router.UnknownInputParams } | { pathname: Router.ExternalPathString, params?: Router.UnknownInputParams } | { pathname: `/`; params?: Router.UnknownInputParams; } | { pathname: `/login`; params?: Router.UnknownInputParams; } | { pathname: `/_sitemap`; params?: Router.UnknownInputParams; } | { pathname: `${'/(drawer)'}/address-management` | `/address-management`; params?: Router.UnknownInputParams; } | { pathname: `${'/(drawer)'}/complaints` | `/complaints`; params?: Router.UnknownInputParams; } | { pathname: `${'/(drawer)'}/coupons/create` | `/coupons/create`; params?: Router.UnknownInputParams; } | { pathname: `${'/(drawer)'}/coupons` | `/coupons`; params?: Router.UnknownInputParams; } | { pathname: `${'/(drawer)'}/coupons/reserved-coupons` | `/coupons/reserved-coupons`; params?: Router.UnknownInputParams; } | { pathname: `${'/(drawer)'}/customize-app/all-items-order` | `/customize-app/all-items-order`; params?: Router.UnknownInputParams; } | { pathname: `${'/(drawer)'}/customize-app` | `/customize-app`; params?: Router.UnknownInputParams; } | { pathname: `${'/(drawer)'}/customize-app/popular-items` | `/customize-app/popular-items`; params?: Router.UnknownInputParams; } | { pathname: `${'/(drawer)'}/dashboard` | `/dashboard`; params?: Router.UnknownInputParams; } | { pathname: `${'/(drawer)'}/dashboard-banners/create` | `/dashboard-banners/create`; params?: Router.UnknownInputParams; } | { pathname: `${'/(drawer)'}/dashboard-banners` | `/dashboard-banners`; params?: Router.UnknownInputParams; } | { pathname: `${'/(drawer)'}/manage-orders` | `/manage-orders`; params?: Router.UnknownInputParams; } | { pathname: `${'/(drawer)'}/manage-orders/delivery-sequences` | `/manage-orders/delivery-sequences`; params?: Router.UnknownInputParams; } | { pathname: `${'/(drawer)'}/manage-orders/orders` | `/manage-orders/orders`; params?: Router.UnknownInputParams; } | { pathname: `${'/(drawer)'}/prices-overview` | `/prices-overview`; params?: Router.UnknownInputParams; } | { pathname: `${'/(drawer)'}/product-groupings/create` | `/product-groupings/create`; params?: Router.UnknownInputParams; } | { pathname: `${'/(drawer)'}/product-groupings` | `/product-groupings`; params?: Router.UnknownInputParams; } | { pathname: `${'/(drawer)'}/product-tags/add` | `/product-tags/add`; params?: Router.UnknownInputParams; } | { pathname: `${'/(drawer)'}/product-tags` | `/product-tags`; params?: Router.UnknownInputParams; } | { pathname: `${'/(drawer)'}/product-tags/edit` | `/product-tags/edit`; params?: Router.UnknownInputParams; } | { pathname: `${'/(drawer)'}/products/add` | `/products/add`; params?: Router.UnknownInputParams; } | { pathname: `${'/(drawer)'}/products/edit` | `/products/edit`; params?: Router.UnknownInputParams; } | { pathname: `${'/(drawer)'}/products` | `/products`; params?: Router.UnknownInputParams; } | { pathname: `${'/(drawer)'}/rebalance-orders` | `/rebalance-orders`; params?: Router.UnknownInputParams; } | { pathname: `${'/(drawer)'}/send-notifications` | `/send-notifications`; params?: Router.UnknownInputParams; } | { pathname: `${'/(drawer)'}/slots/add` | `/slots/add`; params?: Router.UnknownInputParams; } | { pathname: `${'/(drawer)'}/slots` | `/slots`; params?: Router.UnknownInputParams; } | { pathname: `${'/(drawer)'}/slots/slot-details` | `/slots/slot-details`; params?: Router.UnknownInputParams; } | { pathname: `${'/(drawer)'}/stocking-schedules` | `/stocking-schedules`; params?: Router.UnknownInputParams; } | { pathname: `${'/(drawer)'}/stores/add` | `/stores/add`; params?: Router.UnknownInputParams; } | { pathname: `${'/(drawer)'}/stores/edit` | `/stores/edit`; params?: Router.UnknownInputParams; } | { pathname: `${'/(drawer)'}/stores` | `/stores`; params?: Router.UnknownInputParams; } | { pathname: `${'/(drawer)'}/user-management` | `/user-management`; params?: Router.UnknownInputParams; } | { pathname: `${'/(drawer)'}/users` | `/users`; params?: Router.UnknownInputParams; } | { pathname: `${'/(drawer)'}/vendor-snippets` | `/vendor-snippets`; params?: Router.UnknownInputParams; } | { pathname: `${'/(drawer)'}/coupons/edit/[id]` | `/coupons/edit/[id]`, params: Router.UnknownInputParams & { id: string | number; } } | { pathname: `${'/(drawer)'}/dashboard-banners/edit/[id]` | `/dashboard-banners/edit/[id]`, params: Router.UnknownInputParams & { id: string | number; } } | { pathname: `${'/(drawer)'}/manage-orders/order-details/[id]` | `/manage-orders/order-details/[id]`, params: Router.UnknownInputParams & { id: string | number; } } | { pathname: `${'/(drawer)'}/product-groupings/edit/[id]` | `/product-groupings/edit/[id]`, params: Router.UnknownInputParams & { id: string | number; } } | { pathname: `${'/(drawer)'}/products/detail/[id]` | `/products/detail/[id]`, params: Router.UnknownInputParams & { id: string | number; } } | { pathname: `${'/(drawer)'}/slots/edit/[id]` | `/slots/edit/[id]`, params: Router.UnknownInputParams & { id: string | number; } } | { pathname: `${'/(drawer)'}/user-management/[id]` | `/user-management/[id]`, params: Router.UnknownInputParams & { id: string | number; } }; + hrefOutputParams: { pathname: Router.RelativePathString, params?: Router.UnknownOutputParams } | { pathname: Router.ExternalPathString, params?: Router.UnknownOutputParams } | { pathname: `/`; params?: Router.UnknownOutputParams; } | { pathname: `/login`; params?: Router.UnknownOutputParams; } | { pathname: `/_sitemap`; params?: Router.UnknownOutputParams; } | { pathname: `${'/(drawer)'}/address-management` | `/address-management`; params?: Router.UnknownOutputParams; } | { pathname: `${'/(drawer)'}/complaints` | `/complaints`; params?: Router.UnknownOutputParams; } | { pathname: `${'/(drawer)'}/coupons/create` | `/coupons/create`; params?: Router.UnknownOutputParams; } | { pathname: `${'/(drawer)'}/coupons` | `/coupons`; params?: Router.UnknownOutputParams; } | { pathname: `${'/(drawer)'}/coupons/reserved-coupons` | `/coupons/reserved-coupons`; params?: Router.UnknownOutputParams; } | { pathname: `${'/(drawer)'}/customize-app/all-items-order` | `/customize-app/all-items-order`; params?: Router.UnknownOutputParams; } | { pathname: `${'/(drawer)'}/customize-app` | `/customize-app`; params?: Router.UnknownOutputParams; } | { pathname: `${'/(drawer)'}/customize-app/popular-items` | `/customize-app/popular-items`; params?: Router.UnknownOutputParams; } | { pathname: `${'/(drawer)'}/dashboard` | `/dashboard`; params?: Router.UnknownOutputParams; } | { pathname: `${'/(drawer)'}/dashboard-banners/create` | `/dashboard-banners/create`; params?: Router.UnknownOutputParams; } | { pathname: `${'/(drawer)'}/dashboard-banners` | `/dashboard-banners`; params?: Router.UnknownOutputParams; } | { pathname: `${'/(drawer)'}/manage-orders` | `/manage-orders`; params?: Router.UnknownOutputParams; } | { pathname: `${'/(drawer)'}/manage-orders/delivery-sequences` | `/manage-orders/delivery-sequences`; params?: Router.UnknownOutputParams; } | { pathname: `${'/(drawer)'}/manage-orders/orders` | `/manage-orders/orders`; params?: Router.UnknownOutputParams; } | { pathname: `${'/(drawer)'}/prices-overview` | `/prices-overview`; params?: Router.UnknownOutputParams; } | { pathname: `${'/(drawer)'}/product-groupings/create` | `/product-groupings/create`; params?: Router.UnknownOutputParams; } | { pathname: `${'/(drawer)'}/product-groupings` | `/product-groupings`; params?: Router.UnknownOutputParams; } | { pathname: `${'/(drawer)'}/product-tags/add` | `/product-tags/add`; params?: Router.UnknownOutputParams; } | { pathname: `${'/(drawer)'}/product-tags` | `/product-tags`; params?: Router.UnknownOutputParams; } | { pathname: `${'/(drawer)'}/product-tags/edit` | `/product-tags/edit`; params?: Router.UnknownOutputParams; } | { pathname: `${'/(drawer)'}/products/add` | `/products/add`; params?: Router.UnknownOutputParams; } | { pathname: `${'/(drawer)'}/products/edit` | `/products/edit`; params?: Router.UnknownOutputParams; } | { pathname: `${'/(drawer)'}/products` | `/products`; params?: Router.UnknownOutputParams; } | { pathname: `${'/(drawer)'}/rebalance-orders` | `/rebalance-orders`; params?: Router.UnknownOutputParams; } | { pathname: `${'/(drawer)'}/send-notifications` | `/send-notifications`; params?: Router.UnknownOutputParams; } | { pathname: `${'/(drawer)'}/slots/add` | `/slots/add`; params?: Router.UnknownOutputParams; } | { pathname: `${'/(drawer)'}/slots` | `/slots`; params?: Router.UnknownOutputParams; } | { pathname: `${'/(drawer)'}/slots/slot-details` | `/slots/slot-details`; params?: Router.UnknownOutputParams; } | { pathname: `${'/(drawer)'}/stocking-schedules` | `/stocking-schedules`; params?: Router.UnknownOutputParams; } | { pathname: `${'/(drawer)'}/stores/add` | `/stores/add`; params?: Router.UnknownOutputParams; } | { pathname: `${'/(drawer)'}/stores/edit` | `/stores/edit`; params?: Router.UnknownOutputParams; } | { pathname: `${'/(drawer)'}/stores` | `/stores`; params?: Router.UnknownOutputParams; } | { pathname: `${'/(drawer)'}/user-management` | `/user-management`; params?: Router.UnknownOutputParams; } | { pathname: `${'/(drawer)'}/users` | `/users`; params?: Router.UnknownOutputParams; } | { pathname: `${'/(drawer)'}/vendor-snippets` | `/vendor-snippets`; params?: Router.UnknownOutputParams; } | { pathname: `${'/(drawer)'}/coupons/edit/[id]` | `/coupons/edit/[id]`, params: Router.UnknownOutputParams & { id: string; } } | { pathname: `${'/(drawer)'}/dashboard-banners/edit/[id]` | `/dashboard-banners/edit/[id]`, params: Router.UnknownOutputParams & { id: string; } } | { pathname: `${'/(drawer)'}/manage-orders/order-details/[id]` | `/manage-orders/order-details/[id]`, params: Router.UnknownOutputParams & { id: string; } } | { pathname: `${'/(drawer)'}/product-groupings/edit/[id]` | `/product-groupings/edit/[id]`, params: Router.UnknownOutputParams & { id: string; } } | { pathname: `${'/(drawer)'}/products/detail/[id]` | `/products/detail/[id]`, params: Router.UnknownOutputParams & { id: string; } } | { pathname: `${'/(drawer)'}/slots/edit/[id]` | `/slots/edit/[id]`, params: Router.UnknownOutputParams & { id: string; } } | { pathname: `${'/(drawer)'}/user-management/[id]` | `/user-management/[id]`, params: Router.UnknownOutputParams & { id: string; } }; + href: Router.RelativePathString | Router.ExternalPathString | `/${`?${string}` | `#${string}` | ''}` | `/login${`?${string}` | `#${string}` | ''}` | `/_sitemap${`?${string}` | `#${string}` | ''}` | `${'/(drawer)'}/address-management${`?${string}` | `#${string}` | ''}` | `/address-management${`?${string}` | `#${string}` | ''}` | `${'/(drawer)'}/complaints${`?${string}` | `#${string}` | ''}` | `/complaints${`?${string}` | `#${string}` | ''}` | `${'/(drawer)'}/coupons/create${`?${string}` | `#${string}` | ''}` | `/coupons/create${`?${string}` | `#${string}` | ''}` | `${'/(drawer)'}/coupons${`?${string}` | `#${string}` | ''}` | `/coupons${`?${string}` | `#${string}` | ''}` | `${'/(drawer)'}/coupons/reserved-coupons${`?${string}` | `#${string}` | ''}` | `/coupons/reserved-coupons${`?${string}` | `#${string}` | ''}` | `${'/(drawer)'}/customize-app/all-items-order${`?${string}` | `#${string}` | ''}` | `/customize-app/all-items-order${`?${string}` | `#${string}` | ''}` | `${'/(drawer)'}/customize-app${`?${string}` | `#${string}` | ''}` | `/customize-app${`?${string}` | `#${string}` | ''}` | `${'/(drawer)'}/customize-app/popular-items${`?${string}` | `#${string}` | ''}` | `/customize-app/popular-items${`?${string}` | `#${string}` | ''}` | `${'/(drawer)'}/dashboard${`?${string}` | `#${string}` | ''}` | `/dashboard${`?${string}` | `#${string}` | ''}` | `${'/(drawer)'}/dashboard-banners/create${`?${string}` | `#${string}` | ''}` | `/dashboard-banners/create${`?${string}` | `#${string}` | ''}` | `${'/(drawer)'}/dashboard-banners${`?${string}` | `#${string}` | ''}` | `/dashboard-banners${`?${string}` | `#${string}` | ''}` | `${'/(drawer)'}/manage-orders${`?${string}` | `#${string}` | ''}` | `/manage-orders${`?${string}` | `#${string}` | ''}` | `${'/(drawer)'}/manage-orders/delivery-sequences${`?${string}` | `#${string}` | ''}` | `/manage-orders/delivery-sequences${`?${string}` | `#${string}` | ''}` | `${'/(drawer)'}/manage-orders/orders${`?${string}` | `#${string}` | ''}` | `/manage-orders/orders${`?${string}` | `#${string}` | ''}` | `${'/(drawer)'}/prices-overview${`?${string}` | `#${string}` | ''}` | `/prices-overview${`?${string}` | `#${string}` | ''}` | `${'/(drawer)'}/product-groupings/create${`?${string}` | `#${string}` | ''}` | `/product-groupings/create${`?${string}` | `#${string}` | ''}` | `${'/(drawer)'}/product-groupings${`?${string}` | `#${string}` | ''}` | `/product-groupings${`?${string}` | `#${string}` | ''}` | `${'/(drawer)'}/product-tags/add${`?${string}` | `#${string}` | ''}` | `/product-tags/add${`?${string}` | `#${string}` | ''}` | `${'/(drawer)'}/product-tags${`?${string}` | `#${string}` | ''}` | `/product-tags${`?${string}` | `#${string}` | ''}` | `${'/(drawer)'}/product-tags/edit${`?${string}` | `#${string}` | ''}` | `/product-tags/edit${`?${string}` | `#${string}` | ''}` | `${'/(drawer)'}/products/add${`?${string}` | `#${string}` | ''}` | `/products/add${`?${string}` | `#${string}` | ''}` | `${'/(drawer)'}/products/edit${`?${string}` | `#${string}` | ''}` | `/products/edit${`?${string}` | `#${string}` | ''}` | `${'/(drawer)'}/products${`?${string}` | `#${string}` | ''}` | `/products${`?${string}` | `#${string}` | ''}` | `${'/(drawer)'}/rebalance-orders${`?${string}` | `#${string}` | ''}` | `/rebalance-orders${`?${string}` | `#${string}` | ''}` | `${'/(drawer)'}/send-notifications${`?${string}` | `#${string}` | ''}` | `/send-notifications${`?${string}` | `#${string}` | ''}` | `${'/(drawer)'}/slots/add${`?${string}` | `#${string}` | ''}` | `/slots/add${`?${string}` | `#${string}` | ''}` | `${'/(drawer)'}/slots${`?${string}` | `#${string}` | ''}` | `/slots${`?${string}` | `#${string}` | ''}` | `${'/(drawer)'}/slots/slot-details${`?${string}` | `#${string}` | ''}` | `/slots/slot-details${`?${string}` | `#${string}` | ''}` | `${'/(drawer)'}/stocking-schedules${`?${string}` | `#${string}` | ''}` | `/stocking-schedules${`?${string}` | `#${string}` | ''}` | `${'/(drawer)'}/stores/add${`?${string}` | `#${string}` | ''}` | `/stores/add${`?${string}` | `#${string}` | ''}` | `${'/(drawer)'}/stores/edit${`?${string}` | `#${string}` | ''}` | `/stores/edit${`?${string}` | `#${string}` | ''}` | `${'/(drawer)'}/stores${`?${string}` | `#${string}` | ''}` | `/stores${`?${string}` | `#${string}` | ''}` | `${'/(drawer)'}/user-management${`?${string}` | `#${string}` | ''}` | `/user-management${`?${string}` | `#${string}` | ''}` | `${'/(drawer)'}/users${`?${string}` | `#${string}` | ''}` | `/users${`?${string}` | `#${string}` | ''}` | `${'/(drawer)'}/vendor-snippets${`?${string}` | `#${string}` | ''}` | `/vendor-snippets${`?${string}` | `#${string}` | ''}` | { pathname: Router.RelativePathString, params?: Router.UnknownInputParams } | { pathname: Router.ExternalPathString, params?: Router.UnknownInputParams } | { pathname: `/`; params?: Router.UnknownInputParams; } | { pathname: `/login`; params?: Router.UnknownInputParams; } | { pathname: `/_sitemap`; params?: Router.UnknownInputParams; } | { pathname: `${'/(drawer)'}/address-management` | `/address-management`; params?: Router.UnknownInputParams; } | { pathname: `${'/(drawer)'}/complaints` | `/complaints`; params?: Router.UnknownInputParams; } | { pathname: `${'/(drawer)'}/coupons/create` | `/coupons/create`; params?: Router.UnknownInputParams; } | { pathname: `${'/(drawer)'}/coupons` | `/coupons`; params?: Router.UnknownInputParams; } | { pathname: `${'/(drawer)'}/coupons/reserved-coupons` | `/coupons/reserved-coupons`; params?: Router.UnknownInputParams; } | { pathname: `${'/(drawer)'}/customize-app/all-items-order` | `/customize-app/all-items-order`; params?: Router.UnknownInputParams; } | { pathname: `${'/(drawer)'}/customize-app` | `/customize-app`; params?: Router.UnknownInputParams; } | { pathname: `${'/(drawer)'}/customize-app/popular-items` | `/customize-app/popular-items`; params?: Router.UnknownInputParams; } | { pathname: `${'/(drawer)'}/dashboard` | `/dashboard`; params?: Router.UnknownInputParams; } | { pathname: `${'/(drawer)'}/dashboard-banners/create` | `/dashboard-banners/create`; params?: Router.UnknownInputParams; } | { pathname: `${'/(drawer)'}/dashboard-banners` | `/dashboard-banners`; params?: Router.UnknownInputParams; } | { pathname: `${'/(drawer)'}/manage-orders` | `/manage-orders`; params?: Router.UnknownInputParams; } | { pathname: `${'/(drawer)'}/manage-orders/delivery-sequences` | `/manage-orders/delivery-sequences`; params?: Router.UnknownInputParams; } | { pathname: `${'/(drawer)'}/manage-orders/orders` | `/manage-orders/orders`; params?: Router.UnknownInputParams; } | { pathname: `${'/(drawer)'}/prices-overview` | `/prices-overview`; params?: Router.UnknownInputParams; } | { pathname: `${'/(drawer)'}/product-groupings/create` | `/product-groupings/create`; params?: Router.UnknownInputParams; } | { pathname: `${'/(drawer)'}/product-groupings` | `/product-groupings`; params?: Router.UnknownInputParams; } | { pathname: `${'/(drawer)'}/product-tags/add` | `/product-tags/add`; params?: Router.UnknownInputParams; } | { pathname: `${'/(drawer)'}/product-tags` | `/product-tags`; params?: Router.UnknownInputParams; } | { pathname: `${'/(drawer)'}/product-tags/edit` | `/product-tags/edit`; params?: Router.UnknownInputParams; } | { pathname: `${'/(drawer)'}/products/add` | `/products/add`; params?: Router.UnknownInputParams; } | { pathname: `${'/(drawer)'}/products/edit` | `/products/edit`; params?: Router.UnknownInputParams; } | { pathname: `${'/(drawer)'}/products` | `/products`; params?: Router.UnknownInputParams; } | { pathname: `${'/(drawer)'}/rebalance-orders` | `/rebalance-orders`; params?: Router.UnknownInputParams; } | { pathname: `${'/(drawer)'}/send-notifications` | `/send-notifications`; params?: Router.UnknownInputParams; } | { pathname: `${'/(drawer)'}/slots/add` | `/slots/add`; params?: Router.UnknownInputParams; } | { pathname: `${'/(drawer)'}/slots` | `/slots`; params?: Router.UnknownInputParams; } | { pathname: `${'/(drawer)'}/slots/slot-details` | `/slots/slot-details`; params?: Router.UnknownInputParams; } | { pathname: `${'/(drawer)'}/stocking-schedules` | `/stocking-schedules`; params?: Router.UnknownInputParams; } | { pathname: `${'/(drawer)'}/stores/add` | `/stores/add`; params?: Router.UnknownInputParams; } | { pathname: `${'/(drawer)'}/stores/edit` | `/stores/edit`; params?: Router.UnknownInputParams; } | { pathname: `${'/(drawer)'}/stores` | `/stores`; params?: Router.UnknownInputParams; } | { pathname: `${'/(drawer)'}/user-management` | `/user-management`; params?: Router.UnknownInputParams; } | { pathname: `${'/(drawer)'}/users` | `/users`; params?: Router.UnknownInputParams; } | { pathname: `${'/(drawer)'}/vendor-snippets` | `/vendor-snippets`; params?: Router.UnknownInputParams; } | `${'/(drawer)'}/coupons/edit/${Router.SingleRoutePart}${`?${string}` | `#${string}` | ''}` | `/coupons/edit/${Router.SingleRoutePart}${`?${string}` | `#${string}` | ''}` | `${'/(drawer)'}/dashboard-banners/edit/${Router.SingleRoutePart}${`?${string}` | `#${string}` | ''}` | `/dashboard-banners/edit/${Router.SingleRoutePart}${`?${string}` | `#${string}` | ''}` | `${'/(drawer)'}/manage-orders/order-details/${Router.SingleRoutePart}${`?${string}` | `#${string}` | ''}` | `/manage-orders/order-details/${Router.SingleRoutePart}${`?${string}` | `#${string}` | ''}` | `${'/(drawer)'}/product-groupings/edit/${Router.SingleRoutePart}${`?${string}` | `#${string}` | ''}` | `/product-groupings/edit/${Router.SingleRoutePart}${`?${string}` | `#${string}` | ''}` | `${'/(drawer)'}/products/detail/${Router.SingleRoutePart}${`?${string}` | `#${string}` | ''}` | `/products/detail/${Router.SingleRoutePart}${`?${string}` | `#${string}` | ''}` | `${'/(drawer)'}/slots/edit/${Router.SingleRoutePart}${`?${string}` | `#${string}` | ''}` | `/slots/edit/${Router.SingleRoutePart}${`?${string}` | `#${string}` | ''}` | `${'/(drawer)'}/user-management/${Router.SingleRoutePart}${`?${string}` | `#${string}` | ''}` | `/user-management/${Router.SingleRoutePart}${`?${string}` | `#${string}` | ''}` | { pathname: `${'/(drawer)'}/coupons/edit/[id]` | `/coupons/edit/[id]`, params: Router.UnknownInputParams & { id: string | number; } } | { pathname: `${'/(drawer)'}/dashboard-banners/edit/[id]` | `/dashboard-banners/edit/[id]`, params: Router.UnknownInputParams & { id: string | number; } } | { pathname: `${'/(drawer)'}/manage-orders/order-details/[id]` | `/manage-orders/order-details/[id]`, params: Router.UnknownInputParams & { id: string | number; } } | { pathname: `${'/(drawer)'}/product-groupings/edit/[id]` | `/product-groupings/edit/[id]`, params: Router.UnknownInputParams & { id: string | number; } } | { pathname: `${'/(drawer)'}/products/detail/[id]` | `/products/detail/[id]`, params: Router.UnknownInputParams & { id: string | number; } } | { pathname: `${'/(drawer)'}/slots/edit/[id]` | `/slots/edit/[id]`, params: Router.UnknownInputParams & { id: string | number; } } | { pathname: `${'/(drawer)'}/user-management/[id]` | `/user-management/[id]`, params: Router.UnknownInputParams & { id: string | number; } }; } } } diff --git a/apps/admin-ui/app/(drawer)/products/detail/[id].tsx b/apps/admin-ui/app/(drawer)/products/detail/[id].tsx index 90543df..4cbb134 100644 --- a/apps/admin-ui/app/(drawer)/products/detail/[id].tsx +++ b/apps/admin-ui/app/(drawer)/products/detail/[id].tsx @@ -6,6 +6,7 @@ import { tw, AppContainer, MyText, useMarkDataFetchers, BottomDialog, ImageUploa import { MaterialIcons, FontAwesome5, Ionicons, Feather, MaterialCommunityIcons } from '@expo/vector-icons'; import { trpc } from '@/src/trpc-client'; import usePickImage from 'common-ui/src/components/use-pick-image'; +import { useUploadToObjectStorage } from '../../../../hooks/useUploadToObjectStorage'; import { Formik } from 'formik'; import { LinearGradient } from 'expo-linear-gradient'; import { BlurView } from 'expo-blur'; @@ -26,7 +27,7 @@ const ReviewResponseForm: React.FC = ({ reviewId, onClo const [uploadUrls, setUploadUrls] = useState([]); const respondToReview = trpc.admin.product.respondToReview.useMutation(); - const generateUploadUrls = trpc.user.fileUpload.generateUploadUrls.useMutation(); + const { upload, isUploading } = useUploadToObjectStorage(); const handleImagePick = usePickImage({ setFile: async (assets: any) => { @@ -62,30 +63,16 @@ const ReviewResponseForm: React.FC = ({ reviewId, onClo const handleSubmit = async (adminResponse: string) => { try { - const mimeTypes = selectedImages.map(s => s.mimeType); - const { uploadUrls: generatedUrls } = await generateUploadUrls.mutateAsync({ - contextString: 'review', - mimeTypes, - }); - const keys = generatedUrls.map(url => { - const u = new URL(url); - const rawKey = u.pathname.replace(/^\/+/, ""); - const decodedKey = decodeURIComponent(rawKey); - const parts = decodedKey.split('/'); - parts.shift(); - return parts.join('/'); - }); - setUploadUrls(generatedUrls); + let keys: string[] = []; + let generatedUrls: string[] = []; - for (let i = 0; i < generatedUrls.length; i++) { - const uploadUrl = generatedUrls[i]; - const { blob, mimeType } = selectedImages[i]; - const uploadResponse = await fetch(uploadUrl, { - method: 'PUT', - body: blob, - headers: { 'Content-Type': mimeType }, + if (selectedImages.length > 0) { + const result = await upload({ + images: selectedImages.map(img => ({ blob: img.blob, mimeType: img.mimeType })), + contextString: 'review', }); - if (!uploadResponse.ok) throw new Error(`Upload failed with status ${uploadResponse.status}`); + keys = result.keys; + generatedUrls = result.presignedUrls; } await respondToReview.mutateAsync({ @@ -101,8 +88,7 @@ const ReviewResponseForm: React.FC = ({ reviewId, onClo setSelectedImages([]); setDisplayImages([]); setUploadUrls([]); - } catch (error:any) { - + } catch (error: any) { Alert.alert('Error', error.message || 'Failed to submit response.'); } }; @@ -137,7 +123,7 @@ const ReviewResponseForm: React.FC = ({ reviewId, onClo formikSubmit()} activeOpacity={0.8} - disabled={respondToReview.isPending} + disabled={respondToReview.isPending || isUploading} > = ({ reviewId, onClo end={{ x: 1, y: 0 }} style={tw`py-4 rounded-2xl items-center shadow-lg`} > - {respondToReview.isPending ? ( + {isUploading ? ( + + ) : respondToReview.isPending ? ( ) : ( Submit Response diff --git a/apps/admin-ui/app/(drawer)/send-notifications/index.tsx b/apps/admin-ui/app/(drawer)/send-notifications/index.tsx index e4673c0..6d866f6 100644 --- a/apps/admin-ui/app/(drawer)/send-notifications/index.tsx +++ b/apps/admin-ui/app/(drawer)/send-notifications/index.tsx @@ -18,6 +18,7 @@ import { } from 'common-ui'; import { trpc } from '@/src/trpc-client'; import usePickImage from 'common-ui/src/components/use-pick-image'; +import { useUploadToObjectStorage } from '../../../hooks/useUploadToObjectStorage'; interface User { id: number; @@ -26,12 +27,6 @@ interface User { isEligibleForNotif: boolean; } -const extractKeyFromUrl = (url: string): string => { - const u = new URL(url); - const rawKey = u.pathname.replace(/^\/+/, ''); - return decodeURIComponent(rawKey); -}; - export default function SendNotifications() { const router = useRouter(); const [selectedUserIds, setSelectedUserIds] = useState([]); @@ -46,8 +41,7 @@ export default function SendNotifications() { search: searchQuery, }); - // Generate upload URLs mutation - const generateUploadUrls = trpc.user.fileUpload.generateUploadUrls.useMutation(); + const { uploadSingle, isUploading } = useUploadToObjectStorage(); // Send notification mutation const sendNotification = trpc.admin.user.sendNotification.useMutation({ @@ -127,28 +121,8 @@ export default function SendNotifications() { // Upload image if selected if (selectedImage) { - const { uploadUrls } = await generateUploadUrls.mutateAsync({ - contextString: 'notification', - mimeTypes: [selectedImage.mimeType], - }); - - if (uploadUrls.length > 0) { - const uploadUrl = uploadUrls[0]; - imageUrl = extractKeyFromUrl(uploadUrl); - - // Upload image - const uploadResponse = await fetch(uploadUrl, { - method: 'PUT', - body: selectedImage.blob, - headers: { - 'Content-Type': selectedImage.mimeType, - }, - }); - - if (!uploadResponse.ok) { - throw new Error(`Upload failed with status ${uploadResponse.status}`); - } - } + const { key } = await uploadSingle(selectedImage.blob, selectedImage.mimeType, 'notification'); + imageUrl = key; } // Send notification @@ -256,15 +230,15 @@ export default function SendNotifications() { {/* Submit Button */} - {sendNotification.isPending ? 'Sending...' : selectedUserIds.length === 0 ? 'Send to All Users' : 'Send Notification'} + {isUploading ? 'Uploading...' : sendNotification.isPending ? 'Sending...' : selectedUserIds.length === 0 ? 'Send to All Users' : 'Send Notification'} diff --git a/apps/admin-ui/components/BannerForm.tsx b/apps/admin-ui/components/BannerForm.tsx index 544f008..986429e 100644 --- a/apps/admin-ui/components/BannerForm.tsx +++ b/apps/admin-ui/components/BannerForm.tsx @@ -8,6 +8,7 @@ import ProductsSelector from './ProductsSelector'; import { trpc } from '../src/trpc-client'; import usePickImage from 'common-ui/src/components/use-pick-image'; import MaterialIcons from '@expo/vector-icons/MaterialIcons'; +import { useUploadToObjectStorage } from '../hooks/useUploadToObjectStorage'; export interface BannerFormData { name: string; @@ -52,14 +53,7 @@ export default function BannerForm({ const [selectedImages, setSelectedImages] = useState<{ blob: Blob; mimeType: string }[]>([]); const [displayImages, setDisplayImages] = useState<{ uri?: string }[]>([]); - const generateUploadUrls = trpc.common.generateUploadUrls.useMutation(); - - // Fetch products for dropdown - const { data: productsData } = trpc.common.product.getAllProductsSummary.useQuery({}); - const products = productsData?.products || []; - - - + const { uploadSingle, isUploading } = useUploadToObjectStorage(); const handleImagePick = usePickImage({ setFile: async (assets: any) => { @@ -97,37 +91,15 @@ export default function BannerForm({ let imageUrl: string | undefined; if (selectedImages.length > 0) { - // Generate upload URLs - const mimeTypes = selectedImages.map(s => s.mimeType); - const { uploadUrls } = await generateUploadUrls.mutateAsync({ - contextString: 'store', // Using 'store' for now - mimeTypes, - }); - - // Upload image - const uploadUrl = uploadUrls[0]; const { blob, mimeType } = selectedImages[0]; - - const uploadResponse = await fetch(uploadUrl, { - method: 'PUT', - body: blob, - headers: { - 'Content-Type': mimeType, - }, - }); - - if (!uploadResponse.ok) { - throw new Error(`Upload failed with status ${uploadResponse.status}`); - } - - imageUrl = uploadUrl; + const { key, presignedUrl } = await uploadSingle(blob, mimeType, 'store'); + imageUrl = presignedUrl; } - // Call onSubmit with form values and imageUrl await onSubmit(values, imageUrl); } catch (error) { console.error('Upload error:', error); - Alert.alert('Error', 'Failed to upload image'); + Alert.alert('Error', error instanceof Error ? error.message : 'Failed to upload image'); } }; @@ -239,15 +211,15 @@ export default function BannerForm({ handleSubmit()} - disabled={isSubmitting || !isValid || !dirty} + disabled={isSubmitting || isUploading || !isValid || !dirty} style={tw`flex-1 rounded-lg py-4 items-center ${ - isSubmitting || !isValid || !dirty + isSubmitting || isUploading || !isValid || !dirty ? 'bg-blue-400' : 'bg-blue-600' }`} > - {isSubmitting ? 'Saving...' : submitButtonText} + {isUploading ? 'Uploading...' : isSubmitting ? 'Saving...' : submitButtonText} @@ -256,4 +228,4 @@ export default function BannerForm({ )} ); -} \ No newline at end of file +} diff --git a/apps/admin-ui/components/StoreForm.tsx b/apps/admin-ui/components/StoreForm.tsx index aaad4e0..16c4b6d 100644 --- a/apps/admin-ui/components/StoreForm.tsx +++ b/apps/admin-ui/components/StoreForm.tsx @@ -6,6 +6,7 @@ import { MyTextInput, BottomDropdown, MyText, tw, ImageUploader } from 'common-u import ProductsSelector from './ProductsSelector'; import { trpc } from '../src/trpc-client'; import usePickImage from 'common-ui/src/components/use-pick-image'; +import { useUploadToObjectStorage } from '../hooks/useUploadToObjectStorage'; export interface StoreFormData { name: string; @@ -66,7 +67,7 @@ const StoreForm = forwardRef((props, ref) => { - const generateUploadUrls = trpc.common.generateUploadUrls.useMutation(); + const { uploadSingle, isUploading } = useUploadToObjectStorage(); const handleImagePick = usePickImage({ setFile: async (assets: any) => { @@ -113,43 +114,16 @@ const StoreForm = forwardRef((props, ref) => { let imageUrl: string | undefined; if (selectedImages.length > 0) { - // Generate upload URLs - const mimeTypes = selectedImages.map(s => s.mimeType); - const { uploadUrls } = await generateUploadUrls.mutateAsync({ - contextString: 'store', - mimeTypes, - }); - - // Upload images - for (let i = 0; i < uploadUrls.length; i++) { - const uploadUrl = uploadUrls[i]; - const { blob, mimeType } = selectedImages[i]; - - const uploadResponse = await fetch(uploadUrl, { - method: 'PUT', - body: blob, - headers: { - 'Content-Type': mimeType, - }, - }); - - if (!uploadResponse.ok) { - throw new Error(`Upload failed with status ${uploadResponse.status}`); - } - } - - // Extract key from first upload URL - // const u = new URL(uploadUrls[0]); - // const rawKey = u.pathname.replace(/^\/+/, ""); - // imageUrl = decodeURIComponent(rawKey); - imageUrl = uploadUrls[0]; + const { blob, mimeType } = selectedImages[0]; + const { presignedUrl } = await uploadSingle(blob, mimeType, 'store'); + imageUrl = presignedUrl; } // Submit form with imageUrl onSubmit({ ...values, imageUrl }); } catch (error) { console.error('Upload error:', error); - Alert.alert('Error', 'Failed to upload image'); + Alert.alert('Error', error instanceof Error ? error.message : 'Failed to upload image'); } }; @@ -204,11 +178,11 @@ const StoreForm = forwardRef((props, ref) => { - {generateUploadUrls.isPending ? 'Uploading...' : isLoading ? (mode === 'create' ? 'Creating...' : 'Updating...') : (mode === 'create' ? 'Create Store' : 'Update Store')} + {isUploading ? 'Uploading...' : isLoading ? (mode === 'create' ? 'Creating...' : 'Updating...') : (mode === 'create' ? 'Create Store' : 'Update Store')} @@ -220,4 +194,4 @@ const StoreForm = forwardRef((props, ref) => { StoreForm.displayName = 'StoreForm'; -export default StoreForm; \ No newline at end of file +export default StoreForm; diff --git a/apps/admin-ui/hooks/useUploadToObjectStorage.ts b/apps/admin-ui/hooks/useUploadToObjectStorage.ts new file mode 100644 index 0000000..e88250c --- /dev/null +++ b/apps/admin-ui/hooks/useUploadToObjectStorage.ts @@ -0,0 +1,117 @@ +import { useState } from 'react'; +import { trpc } from '../src/trpc-client'; + +type ContextString = 'review' | 'product_info' | 'notification' | 'store'; + +interface UploadInput { + blob: Blob; + mimeType: string; +} + +interface UploadBatchInput { + images: UploadInput[]; + contextString: ContextString; +} + +interface UploadResult { + keys: string[]; + presignedUrls: string[]; +} + +export function useUploadToObjectStorage() { + const [isUploading, setIsUploading] = useState(false); + const [error, setError] = useState(null); + const [progress, setProgress] = useState<{ completed: number; total: number } | null>(null); + + const generateUploadUrls = trpc.common.generateUploadUrls.useMutation(); + + const upload = async (input: UploadBatchInput): Promise => { + setIsUploading(true); + setError(null); + setProgress({ completed: 0, total: input.images.length }); + + try { + const { images, contextString } = input; + + if (images.length === 0) { + return { keys: [], presignedUrls: [] }; + } + + // 1. Get presigned URLs from backend (one call for all images) + const mimeTypes = images.map(img => img.mimeType); + const { uploadUrls } = await generateUploadUrls.mutateAsync({ + contextString, + mimeTypes, + }); + + if (uploadUrls.length !== images.length) { + throw new Error(`Expected ${images.length} URLs, got ${uploadUrls.length}`); + } + + // 2. Upload all images in parallel + const uploadPromises = images.map(async (image, index) => { + const presignedUrl = uploadUrls[index]; + const { blob, mimeType } = image; + + const response = await fetch(presignedUrl, { + method: 'PUT', + body: blob, + headers: { 'Content-Type': mimeType }, + }); + + if (!response.ok) { + throw new Error(`Upload ${index + 1} failed with status ${response.status}`); + } + + // Update progress + setProgress(prev => prev ? { ...prev, completed: prev.completed + 1 } : null); + + return { + key: extractKeyFromPresignedUrl(presignedUrl), + presignedUrl, + }; + }); + + // Use Promise.all - if any fails, entire batch fails + const results = await Promise.all(uploadPromises); + + return { + keys: results.map(r => r.key), + presignedUrls: results.map(r => r.presignedUrl), + }; + } catch (err) { + const uploadError = err instanceof Error ? err : new Error('Upload failed'); + setError(uploadError); + throw uploadError; + } finally { + setIsUploading(false); + setProgress(null); + } + }; + + const uploadSingle = async (blob: Blob, mimeType: string, contextString: ContextString): Promise<{ key: string; presignedUrl: string }> => { + const result = await upload({ + images: [{ blob, mimeType }], + contextString, + }); + return { + key: result.keys[0], + presignedUrl: result.presignedUrls[0], + }; + }; + + return { + upload, + uploadSingle, + isUploading, + error, + progress, + isPending: generateUploadUrls.isPending + }; +} + +function extractKeyFromPresignedUrl(url: string): string { + const u = new URL(url); + const rawKey = u.pathname.replace(/^\/+/, ''); + return decodeURIComponent(rawKey); +} diff --git a/apps/backend/assets/signed-url-cache.json b/apps/backend/assets/signed-url-cache.json index 90e713b..66e0901 100644 --- a/apps/backend/assets/signed-url-cache.json +++ b/apps/backend/assets/signed-url-cache.json @@ -1 +1 @@ -{"originalToSigned":{"store-images/1770281046297.jpg":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/store-images/1770281046297.jpg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260309%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260309T193417Z&X-Amz-Expires=259200&X-Amz-Signature=271c0272ba9048bfd6785da9284c96ed15cd8f139aac094acc8883513c9adcb1&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1773343997623},"store-images/1770429593455.jpg":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/store-images/1770429593455.jpg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260309%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260309T193417Z&X-Amz-Expires=259200&X-Amz-Signature=e28f8c17df312e020caad9b63a4af47d1c299be263bf6a2289e1755ce37a5f46&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1773343997623},"tags/1773132996598-1773119837289-8c93f343-2885-415e-b545-dcaa1dc88857.jpeg%3FX-Amz-Algorithm%3DAWS4-HMAC-SHA256%26X-Amz-Content-Sha256%3DUNSIGNED-PAYLOAD%26X-Amz-Credential%3D8fab47503efb9547b50e4fb317e35cc7%252F20260310%252Fapac%252Fs3%252Faws4_request%26X-Amz-Date%3D20260310T051718Z%26X-Amz-Expires%3D259200%26X-Amz-Signature%3D22358087a6f102caf7eb7a4b3cfd455df9aca13685fff8bb751d3c3d813b9d72%26X-Amz-SignedHeaders%3Dhost%26x-amz-checksum-mode%3DENABLED%26x-id%3DGetObject":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/tags/1773132996598-1773119837289-8c93f343-2885-415e-b545-dcaa1dc88857.jpeg%253FX-Amz-Algorithm%253DAWS4-HMAC-SHA256%2526X-Amz-Content-Sha256%253DUNSIGNED-PAYLOAD%2526X-Amz-Credential%253D8fab47503efb9547b50e4fb317e35cc7%25252F20260310%25252Fapac%25252Fs3%25252Faws4_request%2526X-Amz-Date%253D20260310T051718Z%2526X-Amz-Expires%253D259200%2526X-Amz-Signature%253D22358087a6f102caf7eb7a4b3cfd455df9aca13685fff8bb751d3c3d813b9d72%2526X-Amz-SignedHeaders%253Dhost%2526x-amz-checksum-mode%253DENABLED%2526x-id%253DGetObject?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260310%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260310T091443Z&X-Amz-Expires=259200&X-Amz-Signature=b107b388b2c1507b70d611c1c91dcdda5450083e7f8888ad99572b770b7efcf1&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1773393223027},"profile-images/1766160314135-1000000018.jpg":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/profile-images/1766160314135-1000000018.jpg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260310%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260310T091448Z&X-Amz-Expires=259200&X-Amz-Signature=e2595e57f41d7b66b08c23ab6a5a89631eb9c69c323dd558743938e7673cceda&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1773393228306},"tags/1763835253683-c9c3e293-0bef-4c58-a976-dd49c050cd36.jpeg":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/tags/1763835253683-c9c3e293-0bef-4c58-a976-dd49c050cd36.jpeg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260311%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260311T110957Z&X-Amz-Expires=259200&X-Amz-Signature=367a176f8a688457d85db22252a80caabb39a1bdd63ea3cdc72f66bf9af29a01&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1773486537225},"tags/1763835293899-43b3fbe1-9b5b-441c-b4d4-d1691c3f02f3.webp":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/tags/1763835293899-43b3fbe1-9b5b-441c-b4d4-d1691c3f02f3.webp?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260311%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260311T110957Z&X-Amz-Expires=259200&X-Amz-Signature=437a86c8b956eda8929f72ce76d19bc510463774d5a7c20b09ff84c228ae90c1&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1773486537444},"tags/1768709725124-ebf421c5-ad52-49a9-b65c-1de008110b8a.png":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/tags/1768709725124-ebf421c5-ad52-49a9-b65c-1de008110b8a.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260311%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260311T110957Z&X-Amz-Expires=259200&X-Amz-Signature=12c0135edfd884a1df1f0e6baa411804b2ede5824c34148d59eba203a546662f&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1773486537653},"tags/1770321659633-1763869265110-e22b6d94-dac9-499f-babb-1e944d90b01a.jpeg%3FX-Amz-Algorithm%3DAWS4-HMAC-SHA256%26X-Amz-Content-Sha256%3DUNSIGNED-PAYLOAD%26X-Amz-Credential%3D8fab47503efb9547b50e4fb317e35cc7%252F20260205%252Fapac%252Fs3%252Faws4_request%26X-Amz-Date%3D20260205T195535Z%26X-Amz-Expires%3D259200%26X-Amz-Signature%3D917db15bcc60cab7ac5cd5e49d85d13a960fe77b4a5e327dd449048870494cf9%26X-Amz-SignedHeaders%3Dhost%26x-amz-checksum-mode%3DENABLED%26x-id%3DGetObject":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/tags/1770321659633-1763869265110-e22b6d94-dac9-499f-babb-1e944d90b01a.jpeg%253FX-Amz-Algorithm%253DAWS4-HMAC-SHA256%2526X-Amz-Content-Sha256%253DUNSIGNED-PAYLOAD%2526X-Amz-Credential%253D8fab47503efb9547b50e4fb317e35cc7%25252F20260205%25252Fapac%25252Fs3%25252Faws4_request%2526X-Amz-Date%253D20260205T195535Z%2526X-Amz-Expires%253D259200%2526X-Amz-Signature%253D917db15bcc60cab7ac5cd5e49d85d13a960fe77b4a5e327dd449048870494cf9%2526X-Amz-SignedHeaders%253Dhost%2526x-amz-checksum-mode%253DENABLED%2526x-id%253DGetObject?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260311%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260311T110957Z&X-Amz-Expires=259200&X-Amz-Signature=0ffa59d8343863e574d71cb6cbf244436ef634e5a543cc925e0425e8a1b513a5&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1773486537862},"tags/1770323410499-1763869436182-bf82f7b4-a1f3-4113-985b-96311b7a910e.jpeg%3FX-Amz-Algorithm%3DAWS4-HMAC-SHA256%26X-Amz-Content-Sha256%3DUNSIGNED-PAYLOAD%26X-Amz-Credential%3D8fab47503efb9547b50e4fb317e35cc7%252F20260205%252Fapac%252Fs3%252Faws4_request%26X-Amz-Date%3D20260205T202804Z%26X-Amz-Expires%3D259200%26X-Amz-Signature%3Dea436390b277935d843cae6b5cfa62aeed5799cb4a962ab31a0be4b132ca4b30%26X-Amz-SignedHeaders%3Dhost%26x-amz-checksum-mode%3DENABLED%26x-id%3DGetObject":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/tags/1770323410499-1763869436182-bf82f7b4-a1f3-4113-985b-96311b7a910e.jpeg%253FX-Amz-Algorithm%253DAWS4-HMAC-SHA256%2526X-Amz-Content-Sha256%253DUNSIGNED-PAYLOAD%2526X-Amz-Credential%253D8fab47503efb9547b50e4fb317e35cc7%25252F20260205%25252Fapac%25252Fs3%25252Faws4_request%2526X-Amz-Date%253D20260205T202804Z%2526X-Amz-Expires%253D259200%2526X-Amz-Signature%253Dea436390b277935d843cae6b5cfa62aeed5799cb4a962ab31a0be4b132ca4b30%2526X-Amz-SignedHeaders%253Dhost%2526x-amz-checksum-mode%253DENABLED%2526x-id%253DGetObject?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260311%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260311T110958Z&X-Amz-Expires=259200&X-Amz-Signature=989b84cfdf4b05ea954e9f56d1751e33d406c71f0ae1fb877c0884ba188a5b7c&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1773486538258},"tags/1770323560823-fd0ec463-bed0-474e-aa14-dc6480ce36af.jpeg":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/tags/1770323560823-fd0ec463-bed0-474e-aa14-dc6480ce36af.jpeg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260311%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260311T110958Z&X-Amz-Expires=259200&X-Amz-Signature=b004857f0563e5bb4694a28f5ec7827f8cf710d31f40ea62c155e9339d79f144&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1773486538972},"product-images/1768643354251-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768643354251-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=ef6a17e48db27bb68c01705b91f1b98ac67bd90c2ec7be23236f210ab4e5db93&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1773586616689},"product-images/1768641988607-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768641988607-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=c4ad1216fc341043ff2d7b4946bcd88dfd4ff8fe530ba601b224930f699cf150&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1773586616689},"product-images/1768832690994-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768832690994-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=e33eda83f892668e9802fc1fb4af4e3a292bc792cf6e792abba0a4f42d68d686&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1773586616689},"product-images/1768640936747-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768640936747-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=d604f6610f4448638fa898b97581b2be8f36aaf80b391531ce565dc1e2a21d6a&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1773586616689},"product-images/1769397372526-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1769397372526-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=5f691bce657a514afbce880fa9ad93f810ade4e07867976d5b8a81cd167147be&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1773586616689},"product-images/1768640009078-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768640009078-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=ea31722e5109b605156a96404ffef72daff6abeb216c424630f8952e28fdd6d5&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1773586616689},"product-images/1771411526889-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1771411526889-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=2e43db553d19273199cfda5ed46c7d2a776e0f69656c6947f3723da70f98345f&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1773586616689},"product-images/1768710434326-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768710434326-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=ee3f42d9631fed584125a11874a678fd9d0edec0232357d21f9995dcae02107d&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1773586616689},"product-images/1768726783083-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768726783083-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=765414504af83b12c74ade7a31d68fce874f0bf005a7dc5f470e62e7b67ba8e1&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1773586616689},"product-images/1768654740988-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768654740988-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=c7067a891da628bd21b790eb0f9fc12d263ff0e0b160c1e63a3e90cb9ecaf23a&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1773586616689},"product-images/1768649454994-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768649454994-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=3e3b10a530ae5f0dad8372ec2e88bb91b164dae5a6839252edcd9376a2351062&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1773586616689},"product-images/1768823985921-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768823985921-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=ae776633db173978d2eb645f2d8dfdb180bbf24c6cdefb0ce077418886688c3e&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1773586616689},"product-images/1768639645423-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768639645423-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=38daa65706e2bbc6526b84999e2897d7ed65789a1b47d70d42bdb2ec0967c83d&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1773586616689},"product-images/1768709567040-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768709567040-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=c67b0458cb1c0d8eb9fa0668644f41d843f8d76056894aee0425d385f8b2441f&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1773586616689},"product-images/1768710760133-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768710760133-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=19b30ce5e842ff6a4107b2076bc033e42f4a1b91068ae3237af560812b24a8ba&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1773586616689},"product-images/1768712093829-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768712093829-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=c3831ec4adc92f15c908a8719a9a608435efb6e0ea074bafd65bf335900e0517&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1773586616689},"product-images/1768711261174-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768711261174-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=c87908b3818ceb6ebd4fa41e5d6585c792ab21d188c69dc97d8ef6b132cc7857&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1773586616689},"product-images/1768484106870-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768484106870-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=b5eabd261483dd1f1958baf9ed44e09ae246cabe57fccc523782ac32ca5c713b&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1773586616689},"product-images/1768397780093-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768397780093-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=84847c3c2f67df809ab33e9fa067f8fcbe7cd9c0bf181bc4b5ccc9dae8bd0e3d&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1773586616689},"product-images/1768479562478-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768479562478-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=5d38315a92b35798c73ad442f4c8c3909c262921d381d72ca8d7c8bd00f46a8e&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1773586616689},"product-images/1768393778962-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768393778962-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=a03381376108fa6f5f49490e53605709d04f35cee253bc9de12a6e0105d77cb1&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1773586616689},"product-images/1768477813647-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768477813647-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=8efbd85bf92e1961d3f1795c532d59407ec3d34472028a63ae49a3909782b881&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1773586616689},"product-images/1768477813648-1":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768477813648-1?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=10fe09253f4ea61798ed41e9c002969b0f6b16d02fc86e56c6c9a7d48e87692c&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1773586616689},"product-images/1768390245969-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768390245969-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=e10a0249d9715b00e53799e24d2cf87b993394ef19d3c8596cb488e690035d9d&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1773586616689},"product-images/1768413754684-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768413754684-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=caa95e30c478f32f8ef490c2c325ea403c145b101a53e098087d6e38306cd30a&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1773586616689},"product-images/1768478127128-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768478127128-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=1aa8a9f228c3bb5f2855767b78c14765092453ab12a26cf3cab10b5f26cc8b07&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1773586616689},"product-images/1768478472220-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768478472220-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=47c398167dc21fdd1f46ef9bf849c8ff821499e4a54897b8535713d668a0a4a5&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1773586616689},"product-images/1768475599800-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768475599800-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=bc7c90f063e9e6cd05148248c5e2bd938330a0aeb595c030f4d54d7f073b0466&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1773586616689},"product-images/1768307047191-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768307047191-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=c5fedc8c5ef3646cfcb9e758d986b085f36d866908aeaf133e792d6cd3e5c9ec&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1773586616689},"product-images/1767637606890-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1767637606890-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=3938c4cb056963960d25cea72d4ef48d2bd9c696436bf82ea906e186ebb73f9c&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1773586616689},"product-images/1767635527063-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1767635527063-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=8c91a54eee5c2c3963cdec2b990f6965ff72f904be9e99ac4bcdc1fe076bc373&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1773586616689},"product-images/1773127805418-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1773127805418-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=ab5db4b3178616df27d591995a1161a941a404570d1e1724bab26db6f6bae7bd&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1773586616689},"product-images/1768718685357-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768718685357-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=afde4548fa52ca278064e0f0a39216deda354faab578e257a110022209a234bf&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1773586616689},"product-images/1768727264220-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768727264220-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=983dc5bfe3288b9e315376ee82a2e0e73103d4c63fc5f894825ea5f5b49ab0ab&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1773586616689},"product-images/1771249922306-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1771249922306-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=38358cecf6f1ba6926914cd5abed9e9740ad9e6f046cddb957596ebfccb5680f&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1773586616689},"product-images/1769063336125-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1769063336125-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=2ade945f8d20b3139ff43d1d4a561201e7b2a00562dd1d5e40f031649384e2d6&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1773586616689},"product-images/1768710099841-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768710099841-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=69e469909196c099f4ce27377d060f9e3477bb1d8f88153f0a6c165d196685d9&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1773586616689},"product-images/1768713206145-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768713206145-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=19d086e3e27b80cc46c923609023b1a33abfb918f0ad183f6b17ed22492fb156&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1773586616689},"product-images/1769571978680-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1769571978680-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=9005cd6838f68312ec8d61a3e9ca8b16f3a9b14690ddea41817ba10fbdb2f336&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1773586616689},"product-images/1766636589779-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1766636589779-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=3d74dae63047d2bd14153fda1e2fb5dd2119d291370b8280cb2315f170190642&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1773586616689},"product-images/1768713886512-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768713886512-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=2f495abab35028f8c0252bd5d55429336e0ea25d0e8113c3db42ce02bb97ee1a&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1773586616689},"product-images/1768640645444-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768640645444-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=66b7a7a63f7b1d3e885d224324516f63084c882a9874fa40a9d3f7944faed7ec&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1773586616689},"product-images/1769399617573-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1769399617573-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=9c0a94169286e37d91f38b4014dbcf8f07b46839574258831b667b97cb79b84c&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1773586616689},"product-images/1773129061191-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1773129061191-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=572dbb7dd60e469d2758846d2c34d493c0d3aca7a56dbf6651f176239ede2f14&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1773586616689},"product-images/1773130741608-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1773130741608-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=9599f39beec30a6c696ee701f456a6d5217f05fe0d240b4d2d807aeb3c485269&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1773586616690},"product-images/1773209103816-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1773209103816-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=9032c0c1157de7c4d300eadf0ba6dfddf477b2ecad88185f90cb5c18f046d1c9&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1773586616690},"product-images/1773222507937-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1773222507937-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=77bfd51201ace4f2f8da1480deeff6a71557e04a8b4963cc57bd040b0208245f&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1773586616690},"product-images/1773126524403-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1773126524403-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=1b0c1abeee41df128fce14f1a8986cfcf079ce654d07faf9424608c96e299aec&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1773586616690},"product-images/1773208909509-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1773208909509-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=b2116a692bbd848df535c7085c8af39f8e13567ecb3fc2439cf94def45119201&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1773586616690},"product-images/1773128056033-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1773128056033-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=30bf71994e81c9614a1cd625ffbe0032b1863de7d7d0afcd38d553a6a982f428&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1773586616690},"product-images/1773224238549-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1773224238549-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=4f0508b36d153a02857b2a0be0f0152329ea2833c57069589ac35bf14df6f760&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1773586616690},"product-images/1773207859878-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1773207859878-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=856678ba8e9943aa3fae9bff9cc43d2a1c75c134232b56691affdca69a7fd684&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1773586616690},"product-images/1773128303272-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1773128303272-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=ddae8d025e8ace66cde1f957162fe9f845c172972c2c285760bb51d30099f411&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1773586616690},"product-images/1773208255512-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1773208255512-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=12c467b1e96b240e959e7dc4bbe02fa37ead9d968f2e180b48a1d962eb617d83&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1773586616690},"product-images/1769063660493-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1769063660493-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=fd0553b1e07f5bc6d37502a17a760c41b04ec90279686eb1cfb89f28e4034967&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1773586616690},"product-images/1773129209100-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1773129209100-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=dd2d5b61b51c09e396b41354c6db0369c0d0eb8750d97d8d7be180963f494c66&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1773586616690},"product-images/1773129907627-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1773129907627-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=fc19d750bc7f244400ff9ba2e80c687dc66de50432faa56457f0fa7ef76fa4df&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1773586616690},"product-images/1769571810861-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1769571810861-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=c4e1ec262f86a81e706b49c8648432b76b69b18e02bb2b12890d0c678d4e7ed5&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1773586616690},"product-images/1769396724595-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1769396724595-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=63ab7dda9c47f0d7cdd914e72e94c0e433e2cfd2119a8d8b8bd3dc84c178406b&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1773586616691},"product-images/1768642455479-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768642455479-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=69fea7dd8249565653e612bef342d6906a274f212bd86c6a69cf477792f19029&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1773586616691},"product-images/1769241234003-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1769241234003-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=0f1f6918dde69086f142fc9e1876920a3d2cc69a248273a6adc8e6dd7f91d9e1&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1773586616691},"product-images/1773126251435-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1773126251435-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=34232ec21a98b2a58dfb51613a247bcda35417b204e7761c84cfdde837dd63b6&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1773586616691},"product-images/1768653997561-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768653997561-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=40649e785278d1ea20ba4986ec91dff064e8e34a190976e88e0baed326de6794&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1773586616691},"product-images/1769398710713-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1769398710713-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=0b76722c5179ed6d8bf3dd4465cff4b898ef128ea2324d878162e265bac097cc&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1773586616691},"product-images/1768642724520-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768642724520-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=ad18da2bf92a90dd4c7da6a4d1566de3459cad8bc4144475a76260e5d626ba1f&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1773586616691},"product-images/1768646932088-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768646932088-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=4b6f97eba79c38f1c74c86220302df3eea21d7ecdd1b2b1e8a9d848bb027847a&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1773586616691},"product-images/1769398103853-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1769398103853-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=b5b6e3c905a816bc9f8ab51765621036d7eae249bb4d87cdf12b33f23b87b485&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1773586616691},"product-images/1770212631435-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1770212631435-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=a8aa57eb9509807bd7fc4431daf8acd0ab8645f63012fd66576941a3fb266dcd&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1773586616691},"product-images/1768639090932-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768639090932-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=f0679a2332d7fde3ac5956c451fd24d49417b947b0d8319bbed1ed7458f6ca7e&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1773586616691},"product-images/1768647119198-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768647119198-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=463860fd2fbe2e6f17cff4c2d9c8593747e56c148cf72284f2e31f5afaa111ce&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1773586616691},"product-images/1769574792720-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1769574792720-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=6766ac8eeb77a0c023a741a57462b8055b66e8c9af551d6e39d3adba1b9de157&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1773586616691},"product-images/1764500702143-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1764500702143-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=9f252805d6a97d77b17dc76f7fef924505fa21f66bd64a15bf27c917c27014dc&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1773586616691},"product-images/1764500702144-1":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1764500702144-1?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=160ef1148727f77b6e7d10749dcea523d253a21308e410b19100ddb7d0304cf3&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1773586616691},"product-images/1766406273176-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1766406273176-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=63d5c2745c58b5386eda4bbe1bbd5845e2f4214da9790f92d2d5c148197689eb&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1773586616691},"product-images/1766406273178-1":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1766406273178-1?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=0b835752d5bd15c1aa71e04cd3f4854c8675a73a420961934ff9650be20c2d30&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1773586616691},"product-images/1769395184980-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1769395184980-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=1b142cb32ac06c0e95a077db5e84d3ae54a580057c120dd02bbfb9d607162087&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1773586616691},"product-images/1768650081183-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768650081183-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=e7a5e66ae1abb7cf0c9edf0494a6a800380e87275405299188b3dd214cd86e76&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1773586616691},"product-images/1768817786453-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768817786453-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=d37033864eb4fd9e666af38a8efe6fbc6edc15bce19bef0e0f232becb9c0e901&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1773586616691},"product-images/1768817786455-1":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768817786455-1?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=df807462edcf412dcc4c04c0455ab9f1361984cbbbdd24f9dda88bd244d80ee8&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1773586616691},"product-images/1768650709484-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768650709484-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=6383456d35171692a9c50ca5eabf4fbb71686e69384a8a38029070489d47ac9d&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1773586616691},"product-images/1768651334320-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768651334320-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=b9e3c691a9fd3f7e4486f7346b1999359577385f00d34102fe5648bde5baba8d&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1773586616691},"product-images/1767636171845-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1767636171845-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=e001faacdf02472977ddd254102c336b94842674823f3f551bf877250f236e61&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1773586616691},"product-images/1769356702593-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1769356702593-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=bf425c3a3ba525caedfa4b724c2e96b7dff06b11ab4d605033f3a6fd415e02bb&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1773586616691},"product-images/1769356039418-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1769356039418-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=f02e7234c87d1d5f75e3a1072db06602137c94c9cd86b6b452184c5416c2030b&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1773586616691},"product-images/1768834170995-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768834170995-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=af2058a866a15d5e547f090bcafbfeb845a2fd269ec7561b2faffd818a29d7b0&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1773586616691},"product-images/1769149707440-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1769149707440-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=3fb8385c9a22aa3942c4a12e7ec4aee1b57ff8e2298167a41fd913da81325000&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1773586616691},"product-images/1769151216776-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1769151216776-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=de206a3c962feccfbfc14d5faeb70901bb2db91b9fdb95184d36fca0d6240efd&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1773586616691},"product-images/1770051810386-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1770051810386-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=966f1bd2233600be196a302499a0b4535ea3e477812a936c80cd88e71882d6a8&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1773586616691},"product-images/1770051959669-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1770051959669-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=ce3bb7df58f809836781e88939b392ebe5cfd805df37f8014ab16b8b0294f60b&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1773586616691},"product-images/1769353802270-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1769353802270-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=8fe82b0c230308d8855b5d450bdb5e020327a6b03f914b67a6b8787194098946&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1773586616691},"product-images/1767636561867-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1767636561867-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=eb900be2361dba1d435431cd8243ce7dc5c2e3078fec7586d50a17e73f7a9403&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1773586616691},"product-images/1769150471654-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1769150471654-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=d1f4d63fc1913144953c63bcf63391ef460090328d6ceef9b01b89e7fb037ba0&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1773586616691},"product-images/1769150471655-1":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1769150471655-1?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=7b26a2e0579e4f5c630b790ebf80148354554acd08f49ea489e3cbf69911153b&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1773586616691},"product-images/1769151844424-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1769151844424-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=37a30fb90bb4214877d882d271993a860f5705761362acc41690a890a4e598c1&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1773586616691},"product-images/1768641635898-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768641635898-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=49dd19f4d3e0a52f47f94f4c16fc16a878e77b603b538eac1cbdf3a8a600c86d&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1773586616691},"product-images/1769351976737-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1769351976737-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=037725e4f9ad399f80739dbdc2c65d5e461ab7518fec917ec4c9f2270f353c20&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1773586616691},"product-images/1768652061701-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768652061701-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=7fe678b6d580f53ebe3f570f75c0a67da1bd3a57c0f983c5b4f0afd963897465&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1773586616691},"product-images/1768643138910-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768643138910-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=e7d05dce6b57df25be8a9522d95665daf19822cfc55fcf80b8fe8e525924089d&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1773586616691},"product-images/1768651774899-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768651774899-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=b61537df9ac3ee7a57d5344363b4f3a72b3bb32b43d09288f2d3afd612481bfa&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1773586616691},"product-images/1769576743718-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1769576743718-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=243c780a7f95f9fa7e28b9e6014057903251f675b430b788c823e69ee5722566&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1773586616691},"product-images/1768658094891-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768658094891-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=d027dd5368b1e8d54e4f845bf26bde28eedb9b40530a1b4b0af065798b9b52e6&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1773586616691},"product-images/1768639705530-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768639705530-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=81c0ca304e5a51718706435841e9f19479e506b2a98cd2842be4c255ab23c071&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1773586616691},"product-images/1768639707515-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768639707515-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=24c59fbd5835d4e4e3f2294d2b040d085b38b742de79a8bb51eda20b305f9f28&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1773586616691},"product-images/1769577010969-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1769577010969-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=dc8469490a91261ad535da3940b4236e8553ada9b094d06c1b2b52d3a1c0467d&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1773586616691},"product-images/1769394457296-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1769394457296-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=94e8d62b01f0e27d7e58bab0e07b974255a586cc429d0c1598ea4a01e46016f9&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1773586616691},"product-images/1768822893380-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768822893380-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=f19d1a02aa4ebdbf270753570563c96186ddceb93f56d47076482c03b0bca8a1&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1773586616691},"product-images/1768654475850-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768654475850-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=48aca04ef98dddd70250a8577dbbcda0a268a0e8163d71af1eebdf2500d81a8f&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1773586616691},"product-images/1769571126092-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1769571126092-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=f4a4fcc16a6e84b4a597595c093b553dd7da7a0c4d0a27af492bf431a7468491&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1773586616691},"product-images/1771647812442-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1771647812442-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=a1aa6676e0b6c55291aec43363acefbda9efec4a43f968487233e98d35aaf473&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1773586616691},"product-images/1769149204037-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1769149204037-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=38a9f77881af3c37523a7b8ef5f5a305c1aa01b43daf2a8eeb999b85446e671f&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1773586616691},"product-images/1768640403001-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768640403001-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=44290f5774a34c61c73c4a8edb6ba231e5af081a1b0479ea1abb59c8a08c8c80&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1773586616691},"product-images/1768646295695-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768646295695-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=702c11b88b873bcb782f351a4830a6d517188069095e4b937d6b8e6199607cb3&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1773586616691},"product-images/1769396046557-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1769396046557-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=589aefb2c8be677e765d3d9a7ef23980330cfa303eb4c02048a045a1c35460a7&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1773586616691},"product-images/1768713537512-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768713537512-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=ac7cb348311d0527ff9d17ee0ea78df78c8ec8c0c2aab8c4fc620bb37452b029&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1773586616691},"product-images/1768638795991-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768638795991-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=b08bddf8169794c05fbfb4c69f2d7a6bd2cbf10a3f5c8c7042c647a7fd82c114&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1773586616691},"product-images/1768646744949-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768646744949-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=8f4b95031d2ef6ad010a59e35415b25e5ae92dbd38b2a14a613eed1be4ed086a&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1773586616691},"product-images/1768711919135-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768711919135-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=63d846726af60f7ae8b9b6dce8d6c112339ff0d5b4f850afb3ab03a7fa83a827&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1773586616691},"product-images/1769063467386-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1769063467386-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=229e7b216d5f479daaaace3e2f4c0663c3b446618e6cf885cb02ccebb4dd9f82&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1773586616691},"product-images/1768639292540-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768639292540-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=079ae798658ae7cda9b4c17fe078906f4fad296194b93ca7511e27e95960433c&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1773586616691},"product-images/1768640233068-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768640233068-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=2c447a84a8f46b6ebc75995b18ffe12ad936a307fe5b46797c9c0aa124620c37&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1773586616691},"product-images/1768834996932-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768834996932-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=b38e8e15f47e4f8ca914159d7135721661ebd73b9390a5dd37b1c287c762a8b2&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1773586616691},"product-images/1768653009851-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768653009851-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=573fab8024104315d909d806c11e6684c2072a6eba736b84e8ec542fb9bf8c23&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1773586616691},"product-images/1768649838027-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768649838027-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=664e4c8348b31544ec78324ca5374a2da9091f08492b6fc9f0c6db8f19633f0b&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1773586616691},"product-images/1768712490280-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768712490280-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=a8df1c63e841d1a42fa0bdc93997777d0061a8cdc6e9309674e3c05f23cf7677&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1773586616691},"product-images/1768539930897-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768539930897-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=7b605406f22c1db6e6243ad7ff9714569780c3a4aedbf5202f83be93ba5788e1&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1773586616691},"product-images/1768539930899-1":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768539930899-1?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=10d579c2a9db644fab2efffca06a35ea64c1ff354180d9914dc44f6792e3c7be&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1773586616691}},"signedToOriginal":{"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/store-images/1770281046297.jpg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260309%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260309T193417Z&X-Amz-Expires=259200&X-Amz-Signature=271c0272ba9048bfd6785da9284c96ed15cd8f139aac094acc8883513c9adcb1&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"store-images/1770281046297.jpg","expiresAt":1773343997623},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/store-images/1770429593455.jpg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260309%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260309T193417Z&X-Amz-Expires=259200&X-Amz-Signature=e28f8c17df312e020caad9b63a4af47d1c299be263bf6a2289e1755ce37a5f46&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"store-images/1770429593455.jpg","expiresAt":1773343997623},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/tags/1773132996598-1773119837289-8c93f343-2885-415e-b545-dcaa1dc88857.jpeg%253FX-Amz-Algorithm%253DAWS4-HMAC-SHA256%2526X-Amz-Content-Sha256%253DUNSIGNED-PAYLOAD%2526X-Amz-Credential%253D8fab47503efb9547b50e4fb317e35cc7%25252F20260310%25252Fapac%25252Fs3%25252Faws4_request%2526X-Amz-Date%253D20260310T051718Z%2526X-Amz-Expires%253D259200%2526X-Amz-Signature%253D22358087a6f102caf7eb7a4b3cfd455df9aca13685fff8bb751d3c3d813b9d72%2526X-Amz-SignedHeaders%253Dhost%2526x-amz-checksum-mode%253DENABLED%2526x-id%253DGetObject?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260310%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260310T091443Z&X-Amz-Expires=259200&X-Amz-Signature=b107b388b2c1507b70d611c1c91dcdda5450083e7f8888ad99572b770b7efcf1&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"tags/1773132996598-1773119837289-8c93f343-2885-415e-b545-dcaa1dc88857.jpeg%3FX-Amz-Algorithm%3DAWS4-HMAC-SHA256%26X-Amz-Content-Sha256%3DUNSIGNED-PAYLOAD%26X-Amz-Credential%3D8fab47503efb9547b50e4fb317e35cc7%252F20260310%252Fapac%252Fs3%252Faws4_request%26X-Amz-Date%3D20260310T051718Z%26X-Amz-Expires%3D259200%26X-Amz-Signature%3D22358087a6f102caf7eb7a4b3cfd455df9aca13685fff8bb751d3c3d813b9d72%26X-Amz-SignedHeaders%3Dhost%26x-amz-checksum-mode%3DENABLED%26x-id%3DGetObject","expiresAt":1773393223027},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/profile-images/1766160314135-1000000018.jpg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260310%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260310T091448Z&X-Amz-Expires=259200&X-Amz-Signature=e2595e57f41d7b66b08c23ab6a5a89631eb9c69c323dd558743938e7673cceda&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"profile-images/1766160314135-1000000018.jpg","expiresAt":1773393228306},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/tags/1763835253683-c9c3e293-0bef-4c58-a976-dd49c050cd36.jpeg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260311%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260311T110957Z&X-Amz-Expires=259200&X-Amz-Signature=367a176f8a688457d85db22252a80caabb39a1bdd63ea3cdc72f66bf9af29a01&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"tags/1763835253683-c9c3e293-0bef-4c58-a976-dd49c050cd36.jpeg","expiresAt":1773486537225},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/tags/1763835293899-43b3fbe1-9b5b-441c-b4d4-d1691c3f02f3.webp?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260311%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260311T110957Z&X-Amz-Expires=259200&X-Amz-Signature=437a86c8b956eda8929f72ce76d19bc510463774d5a7c20b09ff84c228ae90c1&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"tags/1763835293899-43b3fbe1-9b5b-441c-b4d4-d1691c3f02f3.webp","expiresAt":1773486537444},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/tags/1768709725124-ebf421c5-ad52-49a9-b65c-1de008110b8a.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260311%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260311T110957Z&X-Amz-Expires=259200&X-Amz-Signature=12c0135edfd884a1df1f0e6baa411804b2ede5824c34148d59eba203a546662f&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"tags/1768709725124-ebf421c5-ad52-49a9-b65c-1de008110b8a.png","expiresAt":1773486537653},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/tags/1770321659633-1763869265110-e22b6d94-dac9-499f-babb-1e944d90b01a.jpeg%253FX-Amz-Algorithm%253DAWS4-HMAC-SHA256%2526X-Amz-Content-Sha256%253DUNSIGNED-PAYLOAD%2526X-Amz-Credential%253D8fab47503efb9547b50e4fb317e35cc7%25252F20260205%25252Fapac%25252Fs3%25252Faws4_request%2526X-Amz-Date%253D20260205T195535Z%2526X-Amz-Expires%253D259200%2526X-Amz-Signature%253D917db15bcc60cab7ac5cd5e49d85d13a960fe77b4a5e327dd449048870494cf9%2526X-Amz-SignedHeaders%253Dhost%2526x-amz-checksum-mode%253DENABLED%2526x-id%253DGetObject?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260311%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260311T110957Z&X-Amz-Expires=259200&X-Amz-Signature=0ffa59d8343863e574d71cb6cbf244436ef634e5a543cc925e0425e8a1b513a5&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"tags/1770321659633-1763869265110-e22b6d94-dac9-499f-babb-1e944d90b01a.jpeg%3FX-Amz-Algorithm%3DAWS4-HMAC-SHA256%26X-Amz-Content-Sha256%3DUNSIGNED-PAYLOAD%26X-Amz-Credential%3D8fab47503efb9547b50e4fb317e35cc7%252F20260205%252Fapac%252Fs3%252Faws4_request%26X-Amz-Date%3D20260205T195535Z%26X-Amz-Expires%3D259200%26X-Amz-Signature%3D917db15bcc60cab7ac5cd5e49d85d13a960fe77b4a5e327dd449048870494cf9%26X-Amz-SignedHeaders%3Dhost%26x-amz-checksum-mode%3DENABLED%26x-id%3DGetObject","expiresAt":1773486537862},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/tags/1770323410499-1763869436182-bf82f7b4-a1f3-4113-985b-96311b7a910e.jpeg%253FX-Amz-Algorithm%253DAWS4-HMAC-SHA256%2526X-Amz-Content-Sha256%253DUNSIGNED-PAYLOAD%2526X-Amz-Credential%253D8fab47503efb9547b50e4fb317e35cc7%25252F20260205%25252Fapac%25252Fs3%25252Faws4_request%2526X-Amz-Date%253D20260205T202804Z%2526X-Amz-Expires%253D259200%2526X-Amz-Signature%253Dea436390b277935d843cae6b5cfa62aeed5799cb4a962ab31a0be4b132ca4b30%2526X-Amz-SignedHeaders%253Dhost%2526x-amz-checksum-mode%253DENABLED%2526x-id%253DGetObject?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260311%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260311T110958Z&X-Amz-Expires=259200&X-Amz-Signature=989b84cfdf4b05ea954e9f56d1751e33d406c71f0ae1fb877c0884ba188a5b7c&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"tags/1770323410499-1763869436182-bf82f7b4-a1f3-4113-985b-96311b7a910e.jpeg%3FX-Amz-Algorithm%3DAWS4-HMAC-SHA256%26X-Amz-Content-Sha256%3DUNSIGNED-PAYLOAD%26X-Amz-Credential%3D8fab47503efb9547b50e4fb317e35cc7%252F20260205%252Fapac%252Fs3%252Faws4_request%26X-Amz-Date%3D20260205T202804Z%26X-Amz-Expires%3D259200%26X-Amz-Signature%3Dea436390b277935d843cae6b5cfa62aeed5799cb4a962ab31a0be4b132ca4b30%26X-Amz-SignedHeaders%3Dhost%26x-amz-checksum-mode%3DENABLED%26x-id%3DGetObject","expiresAt":1773486538258},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/tags/1770323560823-fd0ec463-bed0-474e-aa14-dc6480ce36af.jpeg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260311%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260311T110958Z&X-Amz-Expires=259200&X-Amz-Signature=b004857f0563e5bb4694a28f5ec7827f8cf710d31f40ea62c155e9339d79f144&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"tags/1770323560823-fd0ec463-bed0-474e-aa14-dc6480ce36af.jpeg","expiresAt":1773486538972},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768643354251-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=ef6a17e48db27bb68c01705b91f1b98ac67bd90c2ec7be23236f210ab4e5db93&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1768643354251-0","expiresAt":1773586616689},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768641988607-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=c4ad1216fc341043ff2d7b4946bcd88dfd4ff8fe530ba601b224930f699cf150&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1768641988607-0","expiresAt":1773586616689},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768832690994-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=e33eda83f892668e9802fc1fb4af4e3a292bc792cf6e792abba0a4f42d68d686&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1768832690994-0","expiresAt":1773586616689},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768640936747-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=d604f6610f4448638fa898b97581b2be8f36aaf80b391531ce565dc1e2a21d6a&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1768640936747-0","expiresAt":1773586616689},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1769397372526-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=5f691bce657a514afbce880fa9ad93f810ade4e07867976d5b8a81cd167147be&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1769397372526-0","expiresAt":1773586616689},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768640009078-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=ea31722e5109b605156a96404ffef72daff6abeb216c424630f8952e28fdd6d5&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1768640009078-0","expiresAt":1773586616689},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1771411526889-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=2e43db553d19273199cfda5ed46c7d2a776e0f69656c6947f3723da70f98345f&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1771411526889-0","expiresAt":1773586616689},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768710434326-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=ee3f42d9631fed584125a11874a678fd9d0edec0232357d21f9995dcae02107d&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1768710434326-0","expiresAt":1773586616689},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768726783083-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=765414504af83b12c74ade7a31d68fce874f0bf005a7dc5f470e62e7b67ba8e1&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1768726783083-0","expiresAt":1773586616689},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768654740988-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=c7067a891da628bd21b790eb0f9fc12d263ff0e0b160c1e63a3e90cb9ecaf23a&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1768654740988-0","expiresAt":1773586616689},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768649454994-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=3e3b10a530ae5f0dad8372ec2e88bb91b164dae5a6839252edcd9376a2351062&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1768649454994-0","expiresAt":1773586616689},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768823985921-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=ae776633db173978d2eb645f2d8dfdb180bbf24c6cdefb0ce077418886688c3e&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1768823985921-0","expiresAt":1773586616689},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768639645423-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=38daa65706e2bbc6526b84999e2897d7ed65789a1b47d70d42bdb2ec0967c83d&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1768639645423-0","expiresAt":1773586616689},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768709567040-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=c67b0458cb1c0d8eb9fa0668644f41d843f8d76056894aee0425d385f8b2441f&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1768709567040-0","expiresAt":1773586616689},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768710760133-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=19b30ce5e842ff6a4107b2076bc033e42f4a1b91068ae3237af560812b24a8ba&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1768710760133-0","expiresAt":1773586616689},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768712093829-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=c3831ec4adc92f15c908a8719a9a608435efb6e0ea074bafd65bf335900e0517&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1768712093829-0","expiresAt":1773586616689},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768711261174-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=c87908b3818ceb6ebd4fa41e5d6585c792ab21d188c69dc97d8ef6b132cc7857&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1768711261174-0","expiresAt":1773586616689},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768484106870-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=b5eabd261483dd1f1958baf9ed44e09ae246cabe57fccc523782ac32ca5c713b&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1768484106870-0","expiresAt":1773586616689},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768397780093-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=84847c3c2f67df809ab33e9fa067f8fcbe7cd9c0bf181bc4b5ccc9dae8bd0e3d&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1768397780093-0","expiresAt":1773586616689},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768479562478-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=5d38315a92b35798c73ad442f4c8c3909c262921d381d72ca8d7c8bd00f46a8e&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1768479562478-0","expiresAt":1773586616689},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768393778962-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=a03381376108fa6f5f49490e53605709d04f35cee253bc9de12a6e0105d77cb1&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1768393778962-0","expiresAt":1773586616689},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768477813647-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=8efbd85bf92e1961d3f1795c532d59407ec3d34472028a63ae49a3909782b881&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1768477813647-0","expiresAt":1773586616689},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768477813648-1?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=10fe09253f4ea61798ed41e9c002969b0f6b16d02fc86e56c6c9a7d48e87692c&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1768477813648-1","expiresAt":1773586616689},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768390245969-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=e10a0249d9715b00e53799e24d2cf87b993394ef19d3c8596cb488e690035d9d&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1768390245969-0","expiresAt":1773586616689},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768413754684-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=caa95e30c478f32f8ef490c2c325ea403c145b101a53e098087d6e38306cd30a&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1768413754684-0","expiresAt":1773586616689},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768478127128-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=1aa8a9f228c3bb5f2855767b78c14765092453ab12a26cf3cab10b5f26cc8b07&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1768478127128-0","expiresAt":1773586616689},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768478472220-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=47c398167dc21fdd1f46ef9bf849c8ff821499e4a54897b8535713d668a0a4a5&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1768478472220-0","expiresAt":1773586616689},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768475599800-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=bc7c90f063e9e6cd05148248c5e2bd938330a0aeb595c030f4d54d7f073b0466&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1768475599800-0","expiresAt":1773586616689},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768307047191-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=c5fedc8c5ef3646cfcb9e758d986b085f36d866908aeaf133e792d6cd3e5c9ec&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1768307047191-0","expiresAt":1773586616689},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1767637606890-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=3938c4cb056963960d25cea72d4ef48d2bd9c696436bf82ea906e186ebb73f9c&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1767637606890-0","expiresAt":1773586616689},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1767635527063-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=8c91a54eee5c2c3963cdec2b990f6965ff72f904be9e99ac4bcdc1fe076bc373&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1767635527063-0","expiresAt":1773586616689},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1773127805418-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=ab5db4b3178616df27d591995a1161a941a404570d1e1724bab26db6f6bae7bd&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1773127805418-0","expiresAt":1773586616689},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768718685357-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=afde4548fa52ca278064e0f0a39216deda354faab578e257a110022209a234bf&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1768718685357-0","expiresAt":1773586616689},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768727264220-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=983dc5bfe3288b9e315376ee82a2e0e73103d4c63fc5f894825ea5f5b49ab0ab&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1768727264220-0","expiresAt":1773586616689},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1771249922306-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=38358cecf6f1ba6926914cd5abed9e9740ad9e6f046cddb957596ebfccb5680f&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1771249922306-0","expiresAt":1773586616689},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1769063336125-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=2ade945f8d20b3139ff43d1d4a561201e7b2a00562dd1d5e40f031649384e2d6&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1769063336125-0","expiresAt":1773586616689},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768710099841-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=69e469909196c099f4ce27377d060f9e3477bb1d8f88153f0a6c165d196685d9&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1768710099841-0","expiresAt":1773586616689},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768713206145-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=19d086e3e27b80cc46c923609023b1a33abfb918f0ad183f6b17ed22492fb156&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1768713206145-0","expiresAt":1773586616689},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1769571978680-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=9005cd6838f68312ec8d61a3e9ca8b16f3a9b14690ddea41817ba10fbdb2f336&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1769571978680-0","expiresAt":1773586616689},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1766636589779-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=3d74dae63047d2bd14153fda1e2fb5dd2119d291370b8280cb2315f170190642&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1766636589779-0","expiresAt":1773586616689},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768713886512-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=2f495abab35028f8c0252bd5d55429336e0ea25d0e8113c3db42ce02bb97ee1a&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1768713886512-0","expiresAt":1773586616689},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768640645444-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=66b7a7a63f7b1d3e885d224324516f63084c882a9874fa40a9d3f7944faed7ec&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1768640645444-0","expiresAt":1773586616689},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1769399617573-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=9c0a94169286e37d91f38b4014dbcf8f07b46839574258831b667b97cb79b84c&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1769399617573-0","expiresAt":1773586616689},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1773129061191-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=572dbb7dd60e469d2758846d2c34d493c0d3aca7a56dbf6651f176239ede2f14&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1773129061191-0","expiresAt":1773586616689},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1773130741608-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=9599f39beec30a6c696ee701f456a6d5217f05fe0d240b4d2d807aeb3c485269&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1773130741608-0","expiresAt":1773586616690},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1773209103816-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=9032c0c1157de7c4d300eadf0ba6dfddf477b2ecad88185f90cb5c18f046d1c9&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1773209103816-0","expiresAt":1773586616690},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1773222507937-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=77bfd51201ace4f2f8da1480deeff6a71557e04a8b4963cc57bd040b0208245f&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1773222507937-0","expiresAt":1773586616690},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1773126524403-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=1b0c1abeee41df128fce14f1a8986cfcf079ce654d07faf9424608c96e299aec&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1773126524403-0","expiresAt":1773586616690},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1773208909509-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=b2116a692bbd848df535c7085c8af39f8e13567ecb3fc2439cf94def45119201&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1773208909509-0","expiresAt":1773586616690},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1773128056033-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=30bf71994e81c9614a1cd625ffbe0032b1863de7d7d0afcd38d553a6a982f428&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1773128056033-0","expiresAt":1773586616690},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1773224238549-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=4f0508b36d153a02857b2a0be0f0152329ea2833c57069589ac35bf14df6f760&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1773224238549-0","expiresAt":1773586616690},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1773207859878-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=856678ba8e9943aa3fae9bff9cc43d2a1c75c134232b56691affdca69a7fd684&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1773207859878-0","expiresAt":1773586616690},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1773128303272-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=ddae8d025e8ace66cde1f957162fe9f845c172972c2c285760bb51d30099f411&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1773128303272-0","expiresAt":1773586616690},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1773208255512-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=12c467b1e96b240e959e7dc4bbe02fa37ead9d968f2e180b48a1d962eb617d83&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1773208255512-0","expiresAt":1773586616690},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1769063660493-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=fd0553b1e07f5bc6d37502a17a760c41b04ec90279686eb1cfb89f28e4034967&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1769063660493-0","expiresAt":1773586616690},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1773129209100-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=dd2d5b61b51c09e396b41354c6db0369c0d0eb8750d97d8d7be180963f494c66&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1773129209100-0","expiresAt":1773586616690},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1773129907627-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=fc19d750bc7f244400ff9ba2e80c687dc66de50432faa56457f0fa7ef76fa4df&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1773129907627-0","expiresAt":1773586616690},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1769571810861-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=c4e1ec262f86a81e706b49c8648432b76b69b18e02bb2b12890d0c678d4e7ed5&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1769571810861-0","expiresAt":1773586616690},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1769396724595-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=63ab7dda9c47f0d7cdd914e72e94c0e433e2cfd2119a8d8b8bd3dc84c178406b&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1769396724595-0","expiresAt":1773586616691},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768642455479-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=69fea7dd8249565653e612bef342d6906a274f212bd86c6a69cf477792f19029&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1768642455479-0","expiresAt":1773586616691},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1769241234003-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=0f1f6918dde69086f142fc9e1876920a3d2cc69a248273a6adc8e6dd7f91d9e1&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1769241234003-0","expiresAt":1773586616691},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1773126251435-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=34232ec21a98b2a58dfb51613a247bcda35417b204e7761c84cfdde837dd63b6&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1773126251435-0","expiresAt":1773586616691},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768653997561-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=40649e785278d1ea20ba4986ec91dff064e8e34a190976e88e0baed326de6794&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1768653997561-0","expiresAt":1773586616691},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1769398710713-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=0b76722c5179ed6d8bf3dd4465cff4b898ef128ea2324d878162e265bac097cc&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1769398710713-0","expiresAt":1773586616691},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768642724520-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=ad18da2bf92a90dd4c7da6a4d1566de3459cad8bc4144475a76260e5d626ba1f&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1768642724520-0","expiresAt":1773586616691},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768646932088-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=4b6f97eba79c38f1c74c86220302df3eea21d7ecdd1b2b1e8a9d848bb027847a&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1768646932088-0","expiresAt":1773586616691},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1769398103853-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=b5b6e3c905a816bc9f8ab51765621036d7eae249bb4d87cdf12b33f23b87b485&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1769398103853-0","expiresAt":1773586616691},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1770212631435-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=a8aa57eb9509807bd7fc4431daf8acd0ab8645f63012fd66576941a3fb266dcd&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1770212631435-0","expiresAt":1773586616691},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768639090932-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=f0679a2332d7fde3ac5956c451fd24d49417b947b0d8319bbed1ed7458f6ca7e&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1768639090932-0","expiresAt":1773586616691},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768647119198-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=463860fd2fbe2e6f17cff4c2d9c8593747e56c148cf72284f2e31f5afaa111ce&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1768647119198-0","expiresAt":1773586616691},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1769574792720-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=6766ac8eeb77a0c023a741a57462b8055b66e8c9af551d6e39d3adba1b9de157&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1769574792720-0","expiresAt":1773586616691},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1764500702143-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=9f252805d6a97d77b17dc76f7fef924505fa21f66bd64a15bf27c917c27014dc&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1764500702143-0","expiresAt":1773586616691},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1764500702144-1?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=160ef1148727f77b6e7d10749dcea523d253a21308e410b19100ddb7d0304cf3&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1764500702144-1","expiresAt":1773586616691},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1766406273176-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=63d5c2745c58b5386eda4bbe1bbd5845e2f4214da9790f92d2d5c148197689eb&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1766406273176-0","expiresAt":1773586616691},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1766406273178-1?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=0b835752d5bd15c1aa71e04cd3f4854c8675a73a420961934ff9650be20c2d30&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1766406273178-1","expiresAt":1773586616691},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1769395184980-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=1b142cb32ac06c0e95a077db5e84d3ae54a580057c120dd02bbfb9d607162087&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1769395184980-0","expiresAt":1773586616691},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768650081183-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=e7a5e66ae1abb7cf0c9edf0494a6a800380e87275405299188b3dd214cd86e76&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1768650081183-0","expiresAt":1773586616691},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768817786453-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=d37033864eb4fd9e666af38a8efe6fbc6edc15bce19bef0e0f232becb9c0e901&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1768817786453-0","expiresAt":1773586616691},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768817786455-1?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=df807462edcf412dcc4c04c0455ab9f1361984cbbbdd24f9dda88bd244d80ee8&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1768817786455-1","expiresAt":1773586616691},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768650709484-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=6383456d35171692a9c50ca5eabf4fbb71686e69384a8a38029070489d47ac9d&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1768650709484-0","expiresAt":1773586616691},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768651334320-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=b9e3c691a9fd3f7e4486f7346b1999359577385f00d34102fe5648bde5baba8d&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1768651334320-0","expiresAt":1773586616691},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1767636171845-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=e001faacdf02472977ddd254102c336b94842674823f3f551bf877250f236e61&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1767636171845-0","expiresAt":1773586616691},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1769356702593-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=bf425c3a3ba525caedfa4b724c2e96b7dff06b11ab4d605033f3a6fd415e02bb&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1769356702593-0","expiresAt":1773586616691},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1769356039418-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=f02e7234c87d1d5f75e3a1072db06602137c94c9cd86b6b452184c5416c2030b&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1769356039418-0","expiresAt":1773586616691},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768834170995-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=af2058a866a15d5e547f090bcafbfeb845a2fd269ec7561b2faffd818a29d7b0&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1768834170995-0","expiresAt":1773586616691},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1769149707440-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=3fb8385c9a22aa3942c4a12e7ec4aee1b57ff8e2298167a41fd913da81325000&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1769149707440-0","expiresAt":1773586616691},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1769151216776-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=de206a3c962feccfbfc14d5faeb70901bb2db91b9fdb95184d36fca0d6240efd&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1769151216776-0","expiresAt":1773586616691},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1770051810386-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=966f1bd2233600be196a302499a0b4535ea3e477812a936c80cd88e71882d6a8&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1770051810386-0","expiresAt":1773586616691},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1770051959669-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=ce3bb7df58f809836781e88939b392ebe5cfd805df37f8014ab16b8b0294f60b&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1770051959669-0","expiresAt":1773586616691},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1769353802270-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=8fe82b0c230308d8855b5d450bdb5e020327a6b03f914b67a6b8787194098946&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1769353802270-0","expiresAt":1773586616691},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1767636561867-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=eb900be2361dba1d435431cd8243ce7dc5c2e3078fec7586d50a17e73f7a9403&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1767636561867-0","expiresAt":1773586616691},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1769150471654-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=d1f4d63fc1913144953c63bcf63391ef460090328d6ceef9b01b89e7fb037ba0&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1769150471654-0","expiresAt":1773586616691},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1769150471655-1?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=7b26a2e0579e4f5c630b790ebf80148354554acd08f49ea489e3cbf69911153b&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1769150471655-1","expiresAt":1773586616691},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1769151844424-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=37a30fb90bb4214877d882d271993a860f5705761362acc41690a890a4e598c1&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1769151844424-0","expiresAt":1773586616691},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768641635898-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=49dd19f4d3e0a52f47f94f4c16fc16a878e77b603b538eac1cbdf3a8a600c86d&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1768641635898-0","expiresAt":1773586616691},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1769351976737-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=037725e4f9ad399f80739dbdc2c65d5e461ab7518fec917ec4c9f2270f353c20&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1769351976737-0","expiresAt":1773586616691},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768652061701-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=7fe678b6d580f53ebe3f570f75c0a67da1bd3a57c0f983c5b4f0afd963897465&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1768652061701-0","expiresAt":1773586616691},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768643138910-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=e7d05dce6b57df25be8a9522d95665daf19822cfc55fcf80b8fe8e525924089d&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1768643138910-0","expiresAt":1773586616691},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768651774899-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=b61537df9ac3ee7a57d5344363b4f3a72b3bb32b43d09288f2d3afd612481bfa&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1768651774899-0","expiresAt":1773586616691},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1769576743718-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=243c780a7f95f9fa7e28b9e6014057903251f675b430b788c823e69ee5722566&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1769576743718-0","expiresAt":1773586616691},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768658094891-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=d027dd5368b1e8d54e4f845bf26bde28eedb9b40530a1b4b0af065798b9b52e6&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1768658094891-0","expiresAt":1773586616691},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768639705530-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=81c0ca304e5a51718706435841e9f19479e506b2a98cd2842be4c255ab23c071&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1768639705530-0","expiresAt":1773586616691},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768639707515-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=24c59fbd5835d4e4e3f2294d2b040d085b38b742de79a8bb51eda20b305f9f28&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1768639707515-0","expiresAt":1773586616691},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1769577010969-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=dc8469490a91261ad535da3940b4236e8553ada9b094d06c1b2b52d3a1c0467d&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1769577010969-0","expiresAt":1773586616691},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1769394457296-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=94e8d62b01f0e27d7e58bab0e07b974255a586cc429d0c1598ea4a01e46016f9&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1769394457296-0","expiresAt":1773586616691},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768822893380-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=f19d1a02aa4ebdbf270753570563c96186ddceb93f56d47076482c03b0bca8a1&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1768822893380-0","expiresAt":1773586616691},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768654475850-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=48aca04ef98dddd70250a8577dbbcda0a268a0e8163d71af1eebdf2500d81a8f&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1768654475850-0","expiresAt":1773586616691},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1769571126092-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=f4a4fcc16a6e84b4a597595c093b553dd7da7a0c4d0a27af492bf431a7468491&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1769571126092-0","expiresAt":1773586616691},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1771647812442-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=a1aa6676e0b6c55291aec43363acefbda9efec4a43f968487233e98d35aaf473&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1771647812442-0","expiresAt":1773586616691},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1769149204037-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=38a9f77881af3c37523a7b8ef5f5a305c1aa01b43daf2a8eeb999b85446e671f&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1769149204037-0","expiresAt":1773586616691},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768640403001-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=44290f5774a34c61c73c4a8edb6ba231e5af081a1b0479ea1abb59c8a08c8c80&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1768640403001-0","expiresAt":1773586616691},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768646295695-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=702c11b88b873bcb782f351a4830a6d517188069095e4b937d6b8e6199607cb3&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1768646295695-0","expiresAt":1773586616691},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1769396046557-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=589aefb2c8be677e765d3d9a7ef23980330cfa303eb4c02048a045a1c35460a7&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1769396046557-0","expiresAt":1773586616691},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768713537512-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=ac7cb348311d0527ff9d17ee0ea78df78c8ec8c0c2aab8c4fc620bb37452b029&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1768713537512-0","expiresAt":1773586616691},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768638795991-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=b08bddf8169794c05fbfb4c69f2d7a6bd2cbf10a3f5c8c7042c647a7fd82c114&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1768638795991-0","expiresAt":1773586616691},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768646744949-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=8f4b95031d2ef6ad010a59e35415b25e5ae92dbd38b2a14a613eed1be4ed086a&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1768646744949-0","expiresAt":1773586616691},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768711919135-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=63d846726af60f7ae8b9b6dce8d6c112339ff0d5b4f850afb3ab03a7fa83a827&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1768711919135-0","expiresAt":1773586616691},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1769063467386-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=229e7b216d5f479daaaace3e2f4c0663c3b446618e6cf885cb02ccebb4dd9f82&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1769063467386-0","expiresAt":1773586616691},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768639292540-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=079ae798658ae7cda9b4c17fe078906f4fad296194b93ca7511e27e95960433c&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1768639292540-0","expiresAt":1773586616691},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768640233068-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=2c447a84a8f46b6ebc75995b18ffe12ad936a307fe5b46797c9c0aa124620c37&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1768640233068-0","expiresAt":1773586616691},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768834996932-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=b38e8e15f47e4f8ca914159d7135721661ebd73b9390a5dd37b1c287c762a8b2&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1768834996932-0","expiresAt":1773586616691},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768653009851-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=573fab8024104315d909d806c11e6684c2072a6eba736b84e8ec542fb9bf8c23&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1768653009851-0","expiresAt":1773586616691},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768649838027-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=664e4c8348b31544ec78324ca5374a2da9091f08492b6fc9f0c6db8f19633f0b&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1768649838027-0","expiresAt":1773586616691},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768712490280-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=a8df1c63e841d1a42fa0bdc93997777d0061a8cdc6e9309674e3c05f23cf7677&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1768712490280-0","expiresAt":1773586616691},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768539930897-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=7b605406f22c1db6e6243ad7ff9714569780c3a4aedbf5202f83be93ba5788e1&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1768539930897-0","expiresAt":1773586616691},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768539930899-1?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260312%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260312T145756Z&X-Amz-Expires=259200&X-Amz-Signature=10d579c2a9db644fab2efffca06a35ea64c1ff354180d9914dc44f6792e3c7be&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1768539930899-1","expiresAt":1773586616691}}} \ No newline at end of file +{"originalToSigned":{"tags/1763835253683-c9c3e293-0bef-4c58-a976-dd49c050cd36.jpeg":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/tags/1763835253683-c9c3e293-0bef-4c58-a976-dd49c050cd36.jpeg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260320%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260320T142833Z&X-Amz-Expires=259200&X-Amz-Signature=d598f1720e46f57433ba316d631824948a1a9641cac52d3bc40f74a7fc46a6a4&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1774276053527},"tags/1763835293899-43b3fbe1-9b5b-441c-b4d4-d1691c3f02f3.webp":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/tags/1763835293899-43b3fbe1-9b5b-441c-b4d4-d1691c3f02f3.webp?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260320%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260320T142833Z&X-Amz-Expires=259200&X-Amz-Signature=4d2ea6b5dcf2139fe298f1a99af4c6a74c651324693e3638579dacef8db00ac8&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1774276053743},"tags/1768709725124-ebf421c5-ad52-49a9-b65c-1de008110b8a.png":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/tags/1768709725124-ebf421c5-ad52-49a9-b65c-1de008110b8a.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260320%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260320T142833Z&X-Amz-Expires=259200&X-Amz-Signature=cb4097321dee3a761d99e57033324ad4fb50b37b948df3ae6813f3c06e904320&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1774276053957},"tags/1770321659633-1763869265110-e22b6d94-dac9-499f-babb-1e944d90b01a.jpeg%3FX-Amz-Algorithm%3DAWS4-HMAC-SHA256%26X-Amz-Content-Sha256%3DUNSIGNED-PAYLOAD%26X-Amz-Credential%3D8fab47503efb9547b50e4fb317e35cc7%252F20260205%252Fapac%252Fs3%252Faws4_request%26X-Amz-Date%3D20260205T195535Z%26X-Amz-Expires%3D259200%26X-Amz-Signature%3D917db15bcc60cab7ac5cd5e49d85d13a960fe77b4a5e327dd449048870494cf9%26X-Amz-SignedHeaders%3Dhost%26x-amz-checksum-mode%3DENABLED%26x-id%3DGetObject":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/tags/1770321659633-1763869265110-e22b6d94-dac9-499f-babb-1e944d90b01a.jpeg%253FX-Amz-Algorithm%253DAWS4-HMAC-SHA256%2526X-Amz-Content-Sha256%253DUNSIGNED-PAYLOAD%2526X-Amz-Credential%253D8fab47503efb9547b50e4fb317e35cc7%25252F20260205%25252Fapac%25252Fs3%25252Faws4_request%2526X-Amz-Date%253D20260205T195535Z%2526X-Amz-Expires%253D259200%2526X-Amz-Signature%253D917db15bcc60cab7ac5cd5e49d85d13a960fe77b4a5e327dd449048870494cf9%2526X-Amz-SignedHeaders%253Dhost%2526x-amz-checksum-mode%253DENABLED%2526x-id%253DGetObject?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260320%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260320T142834Z&X-Amz-Expires=259200&X-Amz-Signature=e858646d56956d900ca5f77e90f3b02a1608b35b71b44473d42deaf62a2b923b&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1774276054173},"tags/1770323410499-1763869436182-bf82f7b4-a1f3-4113-985b-96311b7a910e.jpeg%3FX-Amz-Algorithm%3DAWS4-HMAC-SHA256%26X-Amz-Content-Sha256%3DUNSIGNED-PAYLOAD%26X-Amz-Credential%3D8fab47503efb9547b50e4fb317e35cc7%252F20260205%252Fapac%252Fs3%252Faws4_request%26X-Amz-Date%3D20260205T202804Z%26X-Amz-Expires%3D259200%26X-Amz-Signature%3Dea436390b277935d843cae6b5cfa62aeed5799cb4a962ab31a0be4b132ca4b30%26X-Amz-SignedHeaders%3Dhost%26x-amz-checksum-mode%3DENABLED%26x-id%3DGetObject":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/tags/1770323410499-1763869436182-bf82f7b4-a1f3-4113-985b-96311b7a910e.jpeg%253FX-Amz-Algorithm%253DAWS4-HMAC-SHA256%2526X-Amz-Content-Sha256%253DUNSIGNED-PAYLOAD%2526X-Amz-Credential%253D8fab47503efb9547b50e4fb317e35cc7%25252F20260205%25252Fapac%25252Fs3%25252Faws4_request%2526X-Amz-Date%253D20260205T202804Z%2526X-Amz-Expires%253D259200%2526X-Amz-Signature%253Dea436390b277935d843cae6b5cfa62aeed5799cb4a962ab31a0be4b132ca4b30%2526X-Amz-SignedHeaders%253Dhost%2526x-amz-checksum-mode%253DENABLED%2526x-id%253DGetObject?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260320%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260320T142834Z&X-Amz-Expires=259200&X-Amz-Signature=48e40e485516a8511cfa7b3e01c3ac1f3fd90a1f7dfc78452aeaca6134e54664&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1774276054467},"tags/1770323560823-fd0ec463-bed0-474e-aa14-dc6480ce36af.jpeg":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/tags/1770323560823-fd0ec463-bed0-474e-aa14-dc6480ce36af.jpeg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260320%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260320T142834Z&X-Amz-Expires=259200&X-Amz-Signature=f1f52a9e8837aa0ee27d70451713d875d7e988380fdc292edd77b55a14d0ca16&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1774276054680},"store-images/1770429593455.jpg":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/store-images/1770429593455.jpg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260320%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260320T144551Z&X-Amz-Expires=259200&X-Amz-Signature=fc800a140ad29be1a01c98adb94d9bd5829cb87fcafd2e13416e94e4d552c703&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1774277091446},"store-images/1770281046297.jpg":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/store-images/1770281046297.jpg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260320%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260320T144551Z&X-Amz-Expires=259200&X-Amz-Signature=ca09755e86928fcccd7978e956172ae5a0e8bc6c9b59422fe0a768870ab30347&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1774277091446},"store-images/1770281045021.jpg":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/store-images/1770281045021.jpg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260320%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260320T144551Z&X-Amz-Expires=259200&X-Amz-Signature=a9ed065f8f51e1657752e21204779e1399092a564c85785d2002c9f8632caedb&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1774277091446}},"signedToOriginal":{"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/tags/1763835253683-c9c3e293-0bef-4c58-a976-dd49c050cd36.jpeg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260320%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260320T142833Z&X-Amz-Expires=259200&X-Amz-Signature=d598f1720e46f57433ba316d631824948a1a9641cac52d3bc40f74a7fc46a6a4&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"tags/1763835253683-c9c3e293-0bef-4c58-a976-dd49c050cd36.jpeg","expiresAt":1774276053527},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/tags/1763835293899-43b3fbe1-9b5b-441c-b4d4-d1691c3f02f3.webp?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260320%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260320T142833Z&X-Amz-Expires=259200&X-Amz-Signature=4d2ea6b5dcf2139fe298f1a99af4c6a74c651324693e3638579dacef8db00ac8&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"tags/1763835293899-43b3fbe1-9b5b-441c-b4d4-d1691c3f02f3.webp","expiresAt":1774276053743},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/tags/1768709725124-ebf421c5-ad52-49a9-b65c-1de008110b8a.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260320%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260320T142833Z&X-Amz-Expires=259200&X-Amz-Signature=cb4097321dee3a761d99e57033324ad4fb50b37b948df3ae6813f3c06e904320&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"tags/1768709725124-ebf421c5-ad52-49a9-b65c-1de008110b8a.png","expiresAt":1774276053957},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/tags/1770321659633-1763869265110-e22b6d94-dac9-499f-babb-1e944d90b01a.jpeg%253FX-Amz-Algorithm%253DAWS4-HMAC-SHA256%2526X-Amz-Content-Sha256%253DUNSIGNED-PAYLOAD%2526X-Amz-Credential%253D8fab47503efb9547b50e4fb317e35cc7%25252F20260205%25252Fapac%25252Fs3%25252Faws4_request%2526X-Amz-Date%253D20260205T195535Z%2526X-Amz-Expires%253D259200%2526X-Amz-Signature%253D917db15bcc60cab7ac5cd5e49d85d13a960fe77b4a5e327dd449048870494cf9%2526X-Amz-SignedHeaders%253Dhost%2526x-amz-checksum-mode%253DENABLED%2526x-id%253DGetObject?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260320%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260320T142834Z&X-Amz-Expires=259200&X-Amz-Signature=e858646d56956d900ca5f77e90f3b02a1608b35b71b44473d42deaf62a2b923b&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"tags/1770321659633-1763869265110-e22b6d94-dac9-499f-babb-1e944d90b01a.jpeg%3FX-Amz-Algorithm%3DAWS4-HMAC-SHA256%26X-Amz-Content-Sha256%3DUNSIGNED-PAYLOAD%26X-Amz-Credential%3D8fab47503efb9547b50e4fb317e35cc7%252F20260205%252Fapac%252Fs3%252Faws4_request%26X-Amz-Date%3D20260205T195535Z%26X-Amz-Expires%3D259200%26X-Amz-Signature%3D917db15bcc60cab7ac5cd5e49d85d13a960fe77b4a5e327dd449048870494cf9%26X-Amz-SignedHeaders%3Dhost%26x-amz-checksum-mode%3DENABLED%26x-id%3DGetObject","expiresAt":1774276054173},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/tags/1770323410499-1763869436182-bf82f7b4-a1f3-4113-985b-96311b7a910e.jpeg%253FX-Amz-Algorithm%253DAWS4-HMAC-SHA256%2526X-Amz-Content-Sha256%253DUNSIGNED-PAYLOAD%2526X-Amz-Credential%253D8fab47503efb9547b50e4fb317e35cc7%25252F20260205%25252Fapac%25252Fs3%25252Faws4_request%2526X-Amz-Date%253D20260205T202804Z%2526X-Amz-Expires%253D259200%2526X-Amz-Signature%253Dea436390b277935d843cae6b5cfa62aeed5799cb4a962ab31a0be4b132ca4b30%2526X-Amz-SignedHeaders%253Dhost%2526x-amz-checksum-mode%253DENABLED%2526x-id%253DGetObject?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260320%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260320T142834Z&X-Amz-Expires=259200&X-Amz-Signature=48e40e485516a8511cfa7b3e01c3ac1f3fd90a1f7dfc78452aeaca6134e54664&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"tags/1770323410499-1763869436182-bf82f7b4-a1f3-4113-985b-96311b7a910e.jpeg%3FX-Amz-Algorithm%3DAWS4-HMAC-SHA256%26X-Amz-Content-Sha256%3DUNSIGNED-PAYLOAD%26X-Amz-Credential%3D8fab47503efb9547b50e4fb317e35cc7%252F20260205%252Fapac%252Fs3%252Faws4_request%26X-Amz-Date%3D20260205T202804Z%26X-Amz-Expires%3D259200%26X-Amz-Signature%3Dea436390b277935d843cae6b5cfa62aeed5799cb4a962ab31a0be4b132ca4b30%26X-Amz-SignedHeaders%3Dhost%26x-amz-checksum-mode%3DENABLED%26x-id%3DGetObject","expiresAt":1774276054467},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/tags/1770323560823-fd0ec463-bed0-474e-aa14-dc6480ce36af.jpeg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260320%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260320T142834Z&X-Amz-Expires=259200&X-Amz-Signature=f1f52a9e8837aa0ee27d70451713d875d7e988380fdc292edd77b55a14d0ca16&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"tags/1770323560823-fd0ec463-bed0-474e-aa14-dc6480ce36af.jpeg","expiresAt":1774276054680},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/store-images/1770429593455.jpg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260320%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260320T144551Z&X-Amz-Expires=259200&X-Amz-Signature=fc800a140ad29be1a01c98adb94d9bd5829cb87fcafd2e13416e94e4d552c703&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"store-images/1770429593455.jpg","expiresAt":1774277091446},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/store-images/1770281046297.jpg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260320%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260320T144551Z&X-Amz-Expires=259200&X-Amz-Signature=ca09755e86928fcccd7978e956172ae5a0e8bc6c9b59422fe0a768870ab30347&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"store-images/1770281046297.jpg","expiresAt":1774277091446},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/store-images/1770281045021.jpg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260320%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260320T144551Z&X-Amz-Expires=259200&X-Amz-Signature=a9ed065f8f51e1657752e21204779e1399092a564c85785d2002c9f8632caedb&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"store-images/1770281045021.jpg","expiresAt":1774277091446}}} \ No newline at end of file diff --git a/apps/backend/src/apis/admin-apis/apis/product-tags.controller.ts b/apps/backend/src/apis/admin-apis/apis/product-tags.controller.ts index ab25b69..e284afa 100644 --- a/apps/backend/src/apis/admin-apis/apis/product-tags.controller.ts +++ b/apps/backend/src/apis/admin-apis/apis/product-tags.controller.ts @@ -3,7 +3,7 @@ import { db } from "@/src/db/db_index"; import { productTagInfo } from "@/src/db/schema"; import { eq } from "drizzle-orm"; import { ApiError } from "@/src/lib/api-error"; -import { imageUploadS3, generateSignedUrlFromS3Url } from "@/src/lib/s3-client"; +import { imageUploadS3, scaffoldAssetUrl } from "@/src/lib/s3-client"; import { deleteS3Image } from "@/src/lib/delete-image"; import { scheduleStoreInitialization } from '@/src/stores/store-initializer'; @@ -81,7 +81,7 @@ export const getAllTags = async (req: Request, res: Response) => { const tagsWithSignedUrls = await Promise.all( tags.map(async (tag) => ({ ...tag, - imageUrl: tag.imageUrl ? await generateSignedUrlFromS3Url(tag.imageUrl) : null, + imageUrl: tag.imageUrl ? scaffoldAssetUrl(tag.imageUrl) : null, })) ); @@ -108,7 +108,7 @@ export const getTagById = async (req: Request, res: Response) => { // Generate signed URL for tag image const tagWithSignedUrl = { ...tag, - imageUrl: tag.imageUrl ? await generateSignedUrlFromS3Url(tag.imageUrl) : null, + imageUrl: tag.imageUrl ? scaffoldAssetUrl(tag.imageUrl) : null, }; return res.status(200).json({ diff --git a/apps/backend/src/trpc/apis/admin-apis/apis/banner.ts b/apps/backend/src/trpc/apis/admin-apis/apis/banner.ts index dde8d91..5794143 100644 --- a/apps/backend/src/trpc/apis/admin-apis/apis/banner.ts +++ b/apps/backend/src/trpc/apis/admin-apis/apis/banner.ts @@ -3,7 +3,7 @@ import { db } from '@/src/db/db_index' import { homeBanners } from '@/src/db/schema' import { eq, and, desc, sql } from 'drizzle-orm'; import { protectedProcedure, router } from '@/src/trpc/trpc-index' -import { extractKeyFromPresignedUrl, generateSignedUrlFromS3Url } from '@/src/lib/s3-client' +import { extractKeyFromPresignedUrl, scaffoldAssetUrl } from '@/src/lib/s3-client' import { ApiError } from '@/src/lib/api-error'; import { scheduleStoreInitialization } from '@/src/stores/store-initializer' @@ -25,7 +25,7 @@ export const bannerRouter = router({ try { return { ...banner, - imageUrl: banner.imageUrl ? await generateSignedUrlFromS3Url(banner.imageUrl) : banner.imageUrl, + imageUrl: banner.imageUrl ? scaffoldAssetUrl(banner.imageUrl) : banner.imageUrl, // Ensure productIds is always an array productIds: banner.productIds || [], }; @@ -65,7 +65,7 @@ export const bannerRouter = router({ try { // Convert S3 key to signed URL for client if (banner.imageUrl) { - banner.imageUrl = await generateSignedUrlFromS3Url(banner.imageUrl); + banner.imageUrl = scaffoldAssetUrl(banner.imageUrl); } } catch (error) { console.error(`Failed to generate signed URL for banner ${banner.id}:`, error); @@ -85,7 +85,7 @@ export const bannerRouter = router({ createBanner: protectedProcedure .input(z.object({ name: z.string().min(1), - imageUrl: z.string().url(), + imageUrl: z.string(), description: z.string().optional(), productIds: z.array(z.number()).optional(), redirectUrl: z.string().url().optional(), @@ -94,6 +94,7 @@ export const bannerRouter = router({ .mutation(async ({ input }) => { try { const imageUrl = extractKeyFromPresignedUrl(input.imageUrl) + // const imageUrl = input.imageUrl const [banner] = await db.insert(homeBanners).values({ name: input.name, imageUrl: imageUrl, diff --git a/apps/backend/src/trpc/apis/admin-apis/apis/complaint.ts b/apps/backend/src/trpc/apis/admin-apis/apis/complaint.ts index 17d65d4..b1791a6 100644 --- a/apps/backend/src/trpc/apis/admin-apis/apis/complaint.ts +++ b/apps/backend/src/trpc/apis/admin-apis/apis/complaint.ts @@ -3,7 +3,7 @@ import { z } from 'zod'; import { db } from '@/src/db/db_index' import { complaints, users } from '@/src/db/schema' import { eq, desc, lt, and } from 'drizzle-orm'; -import { generateSignedUrlsFromS3Urls } from '@/src/lib/s3-client' +import { scaffoldAssetUrl } from '@/src/lib/s3-client' export const complaintRouter = router({ getAll: protectedProcedure @@ -42,7 +42,7 @@ export const complaintRouter = router({ const complaintsWithSignedImages = await Promise.all( complaintsToReturn.map(async (c) => { const signedImages = c.images - ? await generateSignedUrlsFromS3Urls(c.images as string[]) + ? scaffoldAssetUrl(c.images as string[]) : []; return { diff --git a/apps/backend/src/trpc/apis/admin-apis/apis/product.ts b/apps/backend/src/trpc/apis/admin-apis/apis/product.ts index a7b6d2c..d72d7bc 100644 --- a/apps/backend/src/trpc/apis/admin-apis/apis/product.ts +++ b/apps/backend/src/trpc/apis/admin-apis/apis/product.ts @@ -4,7 +4,7 @@ import { db } from '@/src/db/db_index' import { productInfo, units, specialDeals, productSlots, productTags, productReviews, users, productGroupInfo, productGroupMembership } from '@/src/db/schema' import { eq, and, inArray, desc, sql } from 'drizzle-orm'; import { ApiError } from '@/src/lib/api-error' -import { imageUploadS3, generateSignedUrlsFromS3Urls, getOriginalUrlFromSignedUrl, claimUploadUrl } from '@/src/lib/s3-client' +import { imageUploadS3, scaffoldAssetUrl, getOriginalUrlFromSignedUrl, claimUploadUrl } from '@/src/lib/s3-client' import { deleteS3Image } from '@/src/lib/delete-image' import type { SpecialDeal } from '@/src/db/types' import { scheduleStoreInitialization } from '@/src/stores/store-initializer' @@ -31,7 +31,7 @@ export const productRouter = router({ const productsWithSignedUrls = await Promise.all( products.map(async (product) => ({ ...product, - images: await generateSignedUrlsFromS3Urls((product.images as string[]) || []), + images: scaffoldAssetUrl((product.images as string[]) || []), })) ); @@ -76,7 +76,7 @@ export const productRouter = router({ // Generate signed URLs for product images const productWithSignedUrls = { ...product, - images: await generateSignedUrlsFromS3Urls((product.images as string[]) || []), + images: scaffoldAssetUrl((product.images as string[]) || []), deals, tags: productTagsData.map(pt => pt.tag), }; @@ -294,8 +294,8 @@ export const productRouter = router({ const reviewsWithSignedUrls = await Promise.all( reviews.map(async (review) => ({ ...review, - signedImageUrls: await generateSignedUrlsFromS3Urls((review.imageUrls as string[]) || []), - signedAdminImageUrls: await generateSignedUrlsFromS3Urls((review.adminResponseImages as string[]) || []), + signedImageUrls: scaffoldAssetUrl((review.imageUrls as string[]) || []), + signedAdminImageUrls: scaffoldAssetUrl((review.adminResponseImages as string[]) || []), })) ); diff --git a/apps/backend/src/trpc/apis/admin-apis/apis/store.ts b/apps/backend/src/trpc/apis/admin-apis/apis/store.ts index 3233071..07f1153 100644 --- a/apps/backend/src/trpc/apis/admin-apis/apis/store.ts +++ b/apps/backend/src/trpc/apis/admin-apis/apis/store.ts @@ -4,7 +4,7 @@ import { db } from '@/src/db/db_index' import { storeInfo, productInfo } from '@/src/db/schema' import { eq, inArray } from 'drizzle-orm'; import { ApiError } from '@/src/lib/api-error' - import { extractKeyFromPresignedUrl, deleteImageUtil, generateSignedUrlFromS3Url } from '@/src/lib/s3-client' + import { extractKeyFromPresignedUrl, deleteImageUtil, scaffoldAssetUrl } from '@/src/lib/s3-client' import { getSignedUrl } from '@aws-sdk/s3-request-presigner'; import { scheduleStoreInitialization } from '@/src/stores/store-initializer' @@ -20,7 +20,7 @@ export const storeRouter = router({ Promise.all(stores.map(async store => { if(store.imageUrl) - store.imageUrl = await generateSignedUrlFromS3Url(store.imageUrl) + store.imageUrl = scaffoldAssetUrl(store.imageUrl) })).catch((e) => { throw new ApiError("Unable to find store image urls") } @@ -48,7 +48,7 @@ export const storeRouter = router({ if (!store) { throw new ApiError("Store not found", 404); } - store.imageUrl = await generateSignedUrlFromS3Url(store.imageUrl); + store.imageUrl = scaffoldAssetUrl(store.imageUrl); return { store, }; diff --git a/apps/backend/src/trpc/apis/common-apis/common-trpc-index.ts b/apps/backend/src/trpc/apis/common-apis/common-trpc-index.ts index bd2dafa..d9ba7be 100644 --- a/apps/backend/src/trpc/apis/common-apis/common-trpc-index.ts +++ b/apps/backend/src/trpc/apis/common-apis/common-trpc-index.ts @@ -69,7 +69,7 @@ export const commonApiRouter = router({ generateUploadUrls: protectedProcedure .input(z.object({ - contextString: z.enum(['review', 'product_info', 'store']), + contextString: z.enum(['review', 'product_info', 'store', 'notification']), mimeTypes: z.array(z.string()), })) .mutation(async ({ input }): Promise<{ uploadUrls: string[] }> => { @@ -87,9 +87,12 @@ export const commonApiRouter = router({ folder = 'product-images'; } else if (contextString === 'store') { folder = 'store-images'; - } else if (contextString === 'review_response') { - folder = 'review-response-images'; - } else { + } + // else if (contextString === 'review_response') { + // + // folder = 'review-response-images'; + // } + else { folder = ''; } diff --git a/edge_migration.md b/edge_migration.md new file mode 100644 index 0000000..d2fce89 --- /dev/null +++ b/edge_migration.md @@ -0,0 +1,342 @@ +# Edge Migration Plan: Node.js → Cloudflare Workers + +## Overview + +Migrating the backend from Node.js (Express, CommonJS) to Cloudflare Workers (V8 isolates, ESM, Web Standard APIs). + +--- + +## BLOCKERS (Must fix, won't work at all) + +### 1. Express.js — Complete Replacement Needed + +**Affected files:** +- `apps/backend/index.ts` +- `apps/backend/src/main-router.ts` +- `apps/backend/src/v1-router.ts` +- All files in `apps/backend/src/apis/` +- All files in `apps/backend/src/uv-apis/` + +**Problem:** Express uses Node.js `http` module internally — unavailable in Workers. + +**Solution:** Replace with **Hono** (lightweight, Workers-native, similar middleware pattern) or use Cloudflare's `export default { fetch }` handler. Switch tRPC from `createExpressMiddleware` to `createFetchMiddleware` (Fetch adapter). + +--- + +### 2. `node-postgres` (`pg`) Driver — TCP Sockets Unavailable + +**Affected files:** +- `apps/backend/src/db/db_index.ts:1` — `drizzle-orm/node-postgres` + +**Problem:** `node-postgres` uses TCP connections to Postgres. Workers have no TCP socket support. + +**Solution:** Replace with `drizzle-orm/neon-http` (Neon serverless driver over HTTP) or use **Cloudflare Hyperdrive** (connection pooling proxy) with `@neondatabase/serverless` or fetch-based driver. Schema stays the same, only the driver changes. + +--- + +### 3. Redis Client (`redis` npm package) — Persistent TCP + Pub/Sub Unavailable + +**Affected files:** +- `apps/backend/src/lib/redis-client.ts` (full custom RedisClient class) +- `apps/backend/src/stores/product-store.ts` +- `apps/backend/src/stores/slot-store.ts` +- `apps/backend/src/stores/banner-store.ts` +- `apps/backend/src/stores/product-tag-store.ts` +- `apps/backend/src/stores/user-negativity-store.ts` +- `apps/backend/src/lib/const-store.ts` +- `apps/backend/src/lib/event-queue.ts` +- `apps/backend/src/lib/post-order-handler.ts` + +**Problem:** The `redis` npm package uses Node.js `net`/`tls` modules. `subscribe()` / `publish()` require persistent TCP connections — fundamentally incompatible with Workers. + +**Solution:** Replace with **Upstash Redis** (HTTP-based Redis, drop-in replacement for get/set/del operations) or **Cloudflare KV** (different API, eventual consistency). Pub/Sub must be rearchitected (see #17). + +--- + +### 4. BullMQ — Depends on Node.js Events + Persistent Redis Connections + +**Affected files:** +- `apps/backend/src/lib/notif-job.ts:1-41` — `Queue` and `Worker` classes + +**Problem:** `Queue` and `Worker` classes depend on Node.js `EventEmitter` and persistent Redis TCP connections. + +**Solution:** Replace with **Cloudflare Queues** (native message queue service) — different API entirely. Or use **Cloudflare Cron Triggers** + Upstash Redis for simpler job scheduling. + +--- + +### 5. `node-cron` — No Background Process in Workers + +**Affected files:** +- `apps/backend/src/lib/automatedJobs.ts` +- `apps/backend/src/jobs/jobs-index.ts` + +**Problem:** Workers are request-driven — no long-running background processes. `cron.schedule()` is meaningless. + +**Solution:** Replace with **Cloudflare Cron Triggers** (`wrangler.toml` crons config) — each cron invocation is a separate Worker invocation. Rewrite cron logic as fetch handler with `event.type === 'scheduled'`. + +--- + +### 6. Multer — Express Middleware, Uses Node.js Streams + +**Affected files:** +- `apps/backend/src/lib/upload-handler.ts` — multer config (10MB, memory storage) +- `apps/backend/src/main-router.ts:39` — complaint upload +- `apps/backend/src/uv-apis/uv-router.ts:9` — complaint upload +- `apps/backend/src/uv-apis/auth.router.ts:8-9` — profile image +- `apps/backend/src/apis/admin-apis/apis/product.router.ts:8-9` — product images +- `apps/backend/src/apis/admin-apis/apis/tag.router.ts:8,11` — tag image + +**Problem:** Multer depends on Node.js streams and multipart parsing tied to Express. + +**Solution:** Replace with native `Request.formData()` in Workers (built into the Fetch API) or use a Workers-compatible multipart parser like `@mjackson/multipart-parser`. + +--- + +### 7. `fs` Module — No Filesystem in Workers + +**Affected files:** +- `apps/backend/src/lib/signed-url-cache.ts:1,22-25,179,196,198` — `fs.existsSync()`, `fs.mkdirSync()`, `fs.writeFileSync()`, `fs.readFileSync()` +- `apps/backend/src/lib/disk-persisted-set.ts:1,13-14,18,28` — `fs.existsSync()`, `fs.writeFileSync()`, `fs.readFileSync()` + +**Problem:** No filesystem in Workers. `fs.readFileSync`, `fs.writeFileSync`, `fs.existsSync`, `fs.mkdirSync` all unavailable. + +**Solution:** Replace disk-persisted caches with **Cloudflare KV** or **Durable Objects** (for stateful storage). +- `signed-url-cache.ts` → KV with TTL +- `disk-persisted-set.ts` → KV or D1 + +--- + +### 8. Static File Serving (`express.static`, `res.sendFile`) + +**Affected files:** +- `apps/backend/index.ts:134-173` — fallback UI serving, assets serving + +**Problem:** No filesystem means no `express.static()` or `res.sendFile()`. + +**Solution:** Deploy fallback UI as a separate **Cloudflare Pages** project. Serve assets from **R2** behind Workers. The fallback UI should not be bundled with the backend. + +--- + +## MAJOR CHANGES (Significant rewrite required) + +### 9. `process.env` — 47 Usages Across 10+ Files + +**Affected files:** +- `apps/backend/src/lib/env-exporter.ts` (27 env vars exported) +- `apps/backend/index.ts` +- `apps/backend/src/db/db_index.ts` +- `apps/backend/src/middleware/auth.ts` +- `apps/backend/src/middleware/auth.middleware.ts` +- `apps/backend/src/middleware/staff-auth.ts` +- `apps/backend/src/trpc/trpc-index.ts` +- All files importing from `env-exporter.ts` + +**Problem:** Workers expose env vars via the `Env` bindings object passed to `fetch(request, env)`, not `process.env`. + +**Solution:** Every function that reads `process.env.*` needs refactoring to accept `env` as a parameter or use a shared context pattern. Create an `Env` type in `wrangler.toml` and thread it through the app. + +--- + +### 10. `process.exit()` and Signal Handlers (`SIGTERM`, `SIGINT`) + +**Affected files:** +- `apps/backend/src/lib/signed-url-cache.ts:254,260` — `process.exit()` +- `apps/backend/src/lib/disk-persisted-set.ts:71-72,76` — `process.exit()` and signal handlers +- `apps/backend/src/lib/notif-job.ts:163` — `process.on('SIGTERM', ...)` +- `apps/backend/src/db/porter.ts:120,124` — `process.exit()` + +**Problem:** Workers don't have `process` object. + +**Solution:** Remove all signal handlers and `process.exit()` calls. Graceful shutdown is handled by the platform. + +--- + +### 11. `Buffer.from()` — 12 Usages + +**Affected files:** +- `apps/backend/src/lib/cloud_cache.ts:27,52,77,102,127,152,259,266,273,280,287,298` + +**Problem:** Workers don't have Node.js `Buffer`. + +**Solution:** Replace with `new TextEncoder().encode()` or `Uint8Array`. + +--- + +### 12. `crypto.createHmac()` — Node.js Crypto API + +**Affected files:** +- `apps/backend/src/trpc/apis/user-apis/apis/payments.ts:8,72-75` — Razorpay signature verification + +**Problem:** Node.js `crypto` module unavailable. + +**Solution:** Replace with **Web Crypto API** (`crypto.subtle.importKey` + `crypto.subtle.sign`) — available natively in Workers but different async syntax. + +--- + +### 13. `bcryptjs` — May Need WASM Alternative + +**Affected files:** +- `apps/backend/src/uv-apis/auth.controller.ts:105,242` — `bcrypt.hash()` +- `apps/backend/src/trpc/apis/user-apis/apis/auth.ts:118,196,311` — `bcrypt.compare()`, `bcrypt.hash()` + +**Problem:** bcryptjs uses Node.js `crypto.randomBytes` internally. + +**Solution:** Works in Workers with latest bcryptjs, or replace with **`@noble/hashes`** (pure JS, no Node dependencies). + +--- + +### 14. `jsonwebtoken` — Depends on Node.js Crypto + +**Affected files:** +- `apps/backend/index.ts:16,81` — `jwt.verify()` +- `apps/backend/src/middleware/auth.ts:2,31` — `jwt.verify()` +- `apps/backend/src/middleware/auth.middleware.ts:2,32` — `jwt.verify()` +- `apps/backend/src/middleware/staff-auth.ts:2,25` — `jwt.verify()` +- `apps/backend/src/uv-apis/auth.controller.ts:3,53` — `jwt.sign()` +- `apps/backend/src/trpc/apis/user-apis/apis/auth.ts:4,53` — `jwt.sign()` +- `apps/backend/src/trpc/apis/admin-apis/apis/staff-user.ts:38` — `jwt.sign()` + +**Problem:** The `jsonwebtoken` lib uses Node.js `crypto` internally. + +**Solution:** Replace with **`jose`** (JWT library designed for Web Crypto API, Workers-compatible). + +--- + +### 15. CommonJS → ESM Module System + +**Affected files:** +- `apps/backend/tsconfig.json:29` — `"module": "commonjs"` +- `apps/backend/index.ts:135,136,167` — `__dirname` usage + +**Problem:** Workers require ESM. `__dirname` not available in ESM. + +**Solution:** Change `module` to `"ESNext"` or `"ES2022"`, `moduleResolution` to `"bundler"`. Remove all `__dirname` usage (static files handled differently, see #8). + +--- + +### 16. AWS S3 (`@aws-sdk/client-s3`) — Replace with R2 + +**Affected files:** +- `apps/backend/src/lib/s3-client.ts` — S3Client, PutObjectCommand, DeleteObjectCommand, GetObjectCommand, getSignedUrl +- `apps/backend/src/lib/cloud_cache.ts` — Buffer.from() for S3 uploads +- `apps/backend/src/lib/s3-client.ts` — `generateSignedUrlFromS3Url()` + +**Problem:** AWS SDK may have Node.js-specific dependencies. + +**Solution:** R2 is S3-compatible — this is the easiest change. Update the S3Client endpoint to point to your R2 bucket. Or use the native `env.R2_BUCKET` binding for better performance. `@aws-sdk/s3-request-presigner` for upload URLs may need R2-specific handling. + +--- + +## MODERATE CHANGES + +### 17. Redis Pub/Sub for Order Notifications + +**Affected files:** +- `apps/backend/src/lib/post-order-handler.ts` — subscribes to `orders:placed`, `orders:cancelled` channels + +**Problem:** Pub/Sub requires persistent TCP connections. + +**Solution:** Replace with **Durable Objects** with WebSocket broadcasting, or **Cloudflare Queues** for async event processing. + +--- + +### 18. `expo-server-sdk` — May Not Work in Workers + +**Affected files:** +- `apps/backend/src/lib/notif-job.ts` +- `apps/backend/src/lib/expo-service.ts` + +**Problem:** SDK may use Node.js internals. + +**Solution:** Check if the SDK uses Node.js internals; if so, replace with direct HTTP calls to Expo's push API via `fetch()`. + +--- + +### 19. `razorpay` SDK — Check Node.js Dependencies + +**Affected files:** +- `apps/backend/src/lib/payments-utils.ts` — `RazorpayPaymentService.createOrder()`, `initiateRefund()`, `fetchRefund()` + +**Problem:** The Razorpay Node SDK may use `http`/`https` internally. + +**Solution:** Replace with direct `fetch()` calls to Razorpay's REST API, or check if the SDK works with a polyfill. + +--- + +### 20. `Error.captureStackTrace` — V8-Specific + +**Affected files:** +- `apps/backend/src/lib/api-error.ts:12` + +**Problem:** V8-specific API. + +**Solution:** Available in Workers (V8 runtime), so this actually works. Verify during migration. + +--- + +### 21. `process.uptime()` — Used in Health Checks + +**Affected files:** +- `apps/backend/src/main-router.ts:18,26` + +**Problem:** No `process` object in Workers. + +**Solution:** Replace with a custom uptime tracker using `Date.now()` at module load. + +--- + +### 22. `@turf/turf` — Check Bundle Size + +**Affected files:** +- `apps/backend/src/trpc/apis/common-apis/common-trpc-index.ts:5` — `turf.booleanPointInPolygon()` + +**Problem:** Workers have a **1MB compressed bundle limit** (free) or 10MB (paid). `@turf/turf` is a large library. + +**Solution:** Import only `@turf/boolean-point-in-polygon` to reduce size. Or implement the point-in-polygon check manually using a lightweight algorithm. + +--- + +## Infrastructure Changes + +| Current | Workers Replacement | +|---------|-------------------| +| Express on port 4000 | `export default { fetch }` handler (Hono) | +| PostgreSQL via `pg` | Hyperdrive + Neon/serverless driver | +| Redis (`redis` npm) | Upstash Redis (HTTP) or Cloudflare KV | +| BullMQ | Cloudflare Queues | +| node-cron | Cloudflare Cron Triggers | +| AWS S3 | Cloudflare R2 | +| Disk filesystem | KV / D1 / R2 | +| Docker deployment | `wrangler deploy` | +| `dotenv/config` | `wrangler.toml` `[vars]` + Secrets | + +--- + +## Migration Priority + +### Phase 1 — Foundation +1. CommonJS → ESM (#15) +2. Replace `dotenv/config` with wrangler env bindings (#9) +3. Replace `jsonwebtoken` with `jose` (#14) +4. Replace Node.js `crypto.createHmac` with Web Crypto API (#12) + +### Phase 2 — Data Layer +5. Replace `node-postgres` driver with Neon/HTTP driver (#2) +6. Replace Redis client with Upstash Redis (#3) +7. Replace `fs` cache with KV (#7) +8. Replace S3 with R2 (#16) + +### Phase 3 — HTTP Layer +9. Replace Express with Hono (#1) +10. Replace Multer with native FormData (#6) +11. Move static files to Pages/R2 (#8) + +### Phase 4 — Background Jobs +12. Replace BullMQ with Cloudflare Queues (#4) +13. Replace node-cron with Cron Triggers (#5) +14. Rearchitect pub/sub (#17) + +### Phase 5 — Polish +15. Verify expo-server-sdk / razorpay SDK compatibility (#18, #19) +16. Optimize bundle size (#22) +17. Remove Dockerfile, update deployment pipeline diff --git a/packages/ui/index.ts b/packages/ui/index.ts index a6dda03..7d350d2 100755 --- a/packages/ui/index.ts +++ b/packages/ui/index.ts @@ -65,8 +65,8 @@ const isDevMode = Constants.executionEnvironment !== "standalone"; // const BASE_API_URL = 'http://192.168.100.101:4000'; // const BASE_API_URL = 'http://192.168.1.5:4000'; // let BASE_API_URL = "https://mf.freshyo.in"; -let BASE_API_URL = "https://freshyo.technocracy.ovh"; -// let BASE_API_URL = 'http://192.168.100.108:4000'; +// let BASE_API_URL = "https://freshyo.technocracy.ovh"; +let BASE_API_URL = 'http://192.168.100.108:4000'; // let BASE_API_URL = 'http://192.168.29.176:4000'; // if(isDevMode) {