@churchapps/content-providers 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/interfaces.ts","../src/utils.ts","../src/pathUtils.ts","../src/instructionPathUtils.ts","../src/durationUtils.ts","../src/FormatConverters.ts","../src/FormatResolver.ts","../src/helpers/OAuthHelper.ts","../src/helpers/TokenHelper.ts","../src/helpers/DeviceFlowHelper.ts","../src/helpers/ApiHelper.ts","../src/providers/aPlay/APlayApi.ts","../src/providers/aPlay/APlayConverters.ts","../src/providers/aPlay/APlayProvider.ts","../src/providers/signPresenter/SignPresenterProvider.ts","../src/providers/lessonsChurch/LessonsChurchApi.ts","../src/providers/lessonsChurch/LessonsChurchConverters.ts","../src/providers/lessonsChurch/LessonsChurchProvider.ts","../src/providers/b1Church/B1ChurchAuth.ts","../src/providers/b1Church/B1ChurchApi.ts","../src/providers/b1Church/B1ChurchConverters.ts","../src/providers/b1Church/B1ChurchProvider.ts","../src/providers/dropbox/DropboxConverters.ts","../src/providers/dropbox/DropboxProvider.ts","../src/providers/planningCenter/PlanningCenterConverters.ts","../src/providers/planningCenter/PlanningCenterProvider.ts","../src/providers/bibleProject/data.json","../src/providers/bibleProject/BibleProjectProvider.ts","../src/providers/highVoltage/data.json","../src/providers/highVoltage/HighVoltageConverters.ts","../src/providers/highVoltage/HighVoltageInstructions.ts","../src/providers/highVoltage/HighVoltageKidsProvider.ts","../src/providers/jesusFilm/JesusFilmProvider.ts","../src/providers/index.ts","../src/index.ts"],"sourcesContent":["export interface ContentProviderAuthData {\r\n access_token: string;\r\n refresh_token: string;\r\n token_type: string;\r\n created_at: number;\r\n expires_in: number;\r\n scope: string;\r\n}\r\n\r\n/** A single endpoint value - either a static string or a function that generates a path */\r\nexport type EndpointValue = string | ((...args: string[]) => string);\r\n\r\n/** Configuration for provider API endpoints */\r\nexport type EndpointsConfig = Record<string, EndpointValue>;\r\n\r\nexport interface ContentProviderConfig {\r\n id: string;\r\n name: string;\r\n apiBase: string;\r\n oauthBase: string;\r\n clientId: string;\r\n scopes: string[];\r\n supportsDeviceFlow?: boolean;\r\n deviceAuthEndpoint?: string;\r\n endpoints: EndpointsConfig;\r\n}\r\n\r\nexport interface DeviceAuthorizationResponse {\r\n device_code: string;\r\n user_code: string;\r\n verification_uri: string;\r\n verification_uri_complete?: string;\r\n expires_in: number;\r\n interval?: number;\r\n}\r\n\r\nexport interface DeviceFlowState {\r\n status: \"loading\" | \"awaiting_user\" | \"polling\" | \"success\" | \"error\" | \"expired\";\r\n deviceAuth?: DeviceAuthorizationResponse;\r\n error?: string;\r\n pollCount?: number;\r\n}\r\n\r\nexport type AuthType = \"none\" | \"oauth_pkce\" | \"device_flow\" | \"form_login\";\r\n\r\nexport interface ProviderLogos {\r\n light: string;\r\n dark: string;\r\n}\r\n\r\nexport interface ProviderInfo {\r\n id: string;\r\n name: string;\r\n logos: ProviderLogos;\r\n implemented: boolean;\r\n requiresAuth: boolean;\r\n authTypes: AuthType[];\r\n capabilities: ProviderCapabilities;\r\n}\r\n\r\nexport interface ContentFolder {\r\n type: \"folder\";\r\n id: string;\r\n title: string;\r\n thumbnail?: string;\r\n isLeaf?: boolean;\r\n path: string;\r\n}\r\n\r\nexport interface ContentFile {\r\n type: \"file\";\r\n id: string;\r\n title: string;\r\n mediaType: \"video\" | \"image\";\r\n thumbnail?: string;\r\n url: string;\r\n downloadUrl?: string;\r\n muxPlaybackId?: string;\r\n decryptionKey?: string;\r\n mediaId?: string;\r\n pingbackUrl?: string;\r\n seconds?: number;\r\n loop?: boolean;\r\n loopVideo?: boolean;\r\n streamUrl?: string;\r\n /** Provider-specific metadata that varies by provider implementation */\r\n providerData?: Record<string, unknown>;\r\n}\r\n\r\nexport type ContentItem = ContentFolder | ContentFile;\r\n\r\nexport function isContentFolder(item: ContentItem): item is ContentFolder {\r\n return item.type === \"folder\";\r\n}\r\n\r\nexport function isContentFile(item: ContentItem): item is ContentFile {\r\n return item.type === \"file\";\r\n}\r\n\r\nexport type DeviceFlowPollResult =\r\n | ContentProviderAuthData\r\n | { error: string; shouldSlowDown?: boolean }\r\n | null;\r\n\r\nexport interface PlanPresentation {\r\n id: string;\r\n name: string;\r\n actionType: \"play\" | \"other\";\r\n files: ContentFile[];\r\n providerData?: Record<string, unknown>;\r\n}\r\n\r\nexport interface PlanSection {\r\n id: string;\r\n name: string;\r\n presentations: PlanPresentation[];\r\n}\r\n\r\nexport interface Plan {\r\n id: string;\r\n name: string;\r\n description?: string;\r\n thumbnail?: string;\r\n sections: PlanSection[];\r\n allFiles: ContentFile[];\r\n}\r\n\r\nexport interface FeedFileInterface {\r\n id?: string;\r\n name?: string;\r\n url?: string;\r\n streamUrl?: string;\r\n seconds?: number;\r\n fileType?: string;\r\n thumbnail?: string;\r\n}\r\n\r\nexport interface FeedActionInterface {\r\n id?: string;\r\n actionType?: string;\r\n content?: string;\r\n files?: FeedFileInterface[];\r\n}\r\n\r\nexport interface FeedSectionInterface {\r\n id?: string;\r\n name?: string;\r\n actions?: FeedActionInterface[];\r\n}\r\n\r\nexport interface FeedVenueInterface {\r\n id?: string;\r\n lessonId?: string;\r\n name?: string;\r\n lessonName?: string;\r\n lessonDescription?: string;\r\n lessonImage?: string;\r\n sections?: FeedSectionInterface[];\r\n}\r\n\r\nexport interface InstructionItem {\r\n id?: string;\r\n itemType?: string;\r\n relatedId?: string;\r\n label?: string;\r\n actionType?: string;\r\n content?: string;\r\n seconds?: number;\r\n children?: InstructionItem[];\r\n downloadUrl?: string;\r\n thumbnail?: string;\r\n}\r\n\r\nexport interface Instructions {\r\n name?: string;\r\n items: InstructionItem[];\r\n}\r\n\r\nexport interface VenueActionInterface {\r\n id?: string;\r\n name?: string;\r\n actionType?: string;\r\n seconds?: number;\r\n}\r\n\r\nexport interface VenueSectionActionsInterface {\r\n id?: string;\r\n name?: string;\r\n actions?: VenueActionInterface[];\r\n}\r\n\r\nexport interface VenueActionsResponseInterface {\r\n venueName?: string;\r\n sections?: VenueSectionActionsInterface[];\r\n}\r\n\r\nexport interface ProviderCapabilities {\r\n browse: boolean;\r\n presentations: boolean;\r\n playlist: boolean;\r\n instructions: boolean;\r\n mediaLicensing: boolean;\r\n}\r\n\r\nexport type MediaLicenseStatus = \"valid\" | \"expired\" | \"not_licensed\" | \"unknown\";\r\n\r\nexport interface MediaLicenseResult {\r\n mediaId: string;\r\n status: MediaLicenseStatus;\r\n message?: string;\r\n expiresAt?: string | number;\r\n}\r\n\r\n/**\r\n * Core provider interface - all providers should implement this\r\n */\r\nexport interface IProvider {\r\n // Identity (required)\r\n readonly id: string;\r\n readonly name: string;\r\n readonly logos: ProviderLogos;\r\n readonly config: ContentProviderConfig;\r\n\r\n // Metadata (required)\r\n readonly requiresAuth: boolean;\r\n readonly capabilities: ProviderCapabilities;\r\n readonly authTypes: AuthType[];\r\n\r\n // Core methods (required)\r\n browse(path?: string | null, auth?: ContentProviderAuthData | null): Promise<ContentItem[]>;\r\n // getPresentations(path: string, auth?: ContentProviderAuthData | null): Promise<Plan | null>;\r\n\r\n // Auth methods (required)\r\n supportsDeviceFlow(): boolean;\r\n\r\n // Auth methods (optional - only needed for providers that require auth)\r\n generateCodeVerifier?(): string;\r\n buildAuthUrl?(codeVerifier: string, redirectUri: string, state?: string): Promise<{ url: string; challengeMethod: string }>;\r\n exchangeCodeForTokens?(code: string, codeVerifier: string, redirectUri: string): Promise<ContentProviderAuthData | null>;\r\n initiateDeviceFlow?(): Promise<DeviceAuthorizationResponse | null>;\r\n pollDeviceFlowToken?(deviceCode: string): Promise<DeviceFlowPollResult>;\r\n\r\n // Optional methods - providers can implement these if they have custom logic\r\n getPlaylist?(path: string, auth?: ContentProviderAuthData | null, resolution?: number): Promise<ContentFile[] | null>;\r\n getInstructions?(path: string, auth?: ContentProviderAuthData | null): Promise<Instructions | null>;\r\n checkMediaLicense?(mediaId: string, auth?: ContentProviderAuthData | null): Promise<MediaLicenseResult | null>;\r\n}\r\n","import { ContentFolder, ContentFile } from \"./interfaces\";\r\n\r\nexport function slugify(text: string): string {\r\n return text\r\n .toLowerCase()\r\n .replace(/[^a-z0-9]+/g, \"-\")\r\n .replace(/^-|-$/g, \"\");\r\n}\r\n\r\nexport function detectMediaType(url: string, explicitType?: string): \"video\" | \"image\" {\r\n if (explicitType === \"video\") return \"video\";\r\n const videoPatterns = [\".mp4\", \".webm\", \".m3u8\", \".mov\", \"stream.mux.com\"];\r\n return videoPatterns.some(p => url.includes(p)) ? \"video\" : \"image\";\r\n}\r\n\r\nexport function createFolder(id: string, title: string, path: string, thumbnail?: string, isLeaf?: boolean): ContentFolder {\r\n return { type: \"folder\", id, title, path, thumbnail, isLeaf };\r\n}\r\n\r\nexport function createFile(id: string, title: string, url: string, options?: { mediaType?: \"video\" | \"image\"; thumbnail?: string; muxPlaybackId?: string; seconds?: number; loop?: boolean; loopVideo?: boolean; streamUrl?: string; }): ContentFile {\r\n return { type: \"file\", id, title, url, mediaType: options?.mediaType ?? detectMediaType(url), thumbnail: options?.thumbnail, muxPlaybackId: options?.muxPlaybackId, seconds: options?.seconds, loop: options?.loop, loopVideo: options?.loopVideo, streamUrl: options?.streamUrl };\r\n}\r\n","/**\r\n * Path parsing utilities for content providers.\r\n * Paths follow the format: /segment1/segment2/segment3/...\r\n * Example: /lessons/programId/studyId/lessonId/venueId\r\n */\r\n\r\nexport interface ParsedPath {\r\n segments: string[];\r\n depth: number;\r\n}\r\n\r\n/**\r\n * Parse a path string into segments and depth.\r\n * @param path - The path to parse (e.g., \"/lessons/abc123/def456\")\r\n * @returns Object with segments array and depth count\r\n */\r\nexport function parsePath(path: string | null | undefined): ParsedPath {\r\n if (!path || path === \"/\" || path === \"\") {\r\n return { segments: [], depth: 0 };\r\n }\r\n const segments = path.replace(/^\\//, \"\").split(\"/\").filter(Boolean);\r\n return { segments, depth: segments.length };\r\n}\r\n\r\n/**\r\n * Get a specific segment from a path by index.\r\n * @param path - The path to parse\r\n * @param index - Zero-based index of the segment to retrieve\r\n * @returns The segment at the given index, or null if not found\r\n */\r\nexport function getSegment(path: string | null | undefined, index: number): string | null {\r\n const { segments } = parsePath(path);\r\n return segments[index] ?? null;\r\n}\r\n\r\n/**\r\n * Build a path string from segments.\r\n * @param segments - Array of path segments\r\n * @returns Path string with leading slash\r\n */\r\nexport function buildPath(segments: string[]): string {\r\n if (segments.length === 0) return \"/\";\r\n return \"/\" + segments.join(\"/\");\r\n}\r\n\r\n/**\r\n * Append a segment to an existing path.\r\n * @param basePath - The base path\r\n * @param segment - The segment to append\r\n * @returns New path with segment appended\r\n */\r\nexport function appendToPath(basePath: string | null | undefined, segment: string): string {\r\n if (!basePath || basePath === \"/\" || basePath === \"\") {\r\n return \"/\" + segment;\r\n }\r\n const cleanBase = basePath.endsWith(\"/\") ? basePath.slice(0, -1) : basePath;\r\n return cleanBase + \"/\" + segment;\r\n}\r\n","import { Instructions, InstructionItem } from \"./interfaces\";\r\n\r\n/**\r\n * Navigate to a specific item using a dot-notation path.\r\n * Path format: \"0.2.1\" means items[0].children[2].children[1]\r\n */\r\nexport function navigateToPath(instructions: Instructions, path: string): InstructionItem | null {\r\n if (!path || !instructions?.items) return null;\r\n\r\n const indices = path.split(\".\").map(Number);\r\n if (indices.some(isNaN)) return null;\r\n\r\n let current: InstructionItem | null = instructions.items[indices[0]] || null;\r\n\r\n for (let i = 1; i < indices.length && current; i++) {\r\n current = current.children?.[indices[i]] || null;\r\n }\r\n\r\n return current;\r\n}\r\n\r\n/**\r\n * Generate a path string for an item given its position in the tree.\r\n * Used when selecting an item to store its path.\r\n */\r\nexport function generatePath(indices: number[]): string {\r\n return indices.join(\".\");\r\n}\r\n","export interface DurationEstimationConfig {\r\n secondsPerImage: number; // Default: 15\r\n wordsPerMinute: number; // Default: 150\r\n}\r\n\r\nexport const DEFAULT_DURATION_CONFIG: DurationEstimationConfig = {\r\n secondsPerImage: 15,\r\n wordsPerMinute: 150\r\n};\r\n\r\n/**\r\n * Count words in text (splits on whitespace)\r\n */\r\nexport function countWords(text: string): number {\r\n if (!text || !text.trim()) return 0;\r\n return text.trim().split(/\\s+/).length;\r\n}\r\n\r\n/**\r\n * Estimate duration for image content\r\n * @returns Duration in seconds (default: 15)\r\n */\r\nexport function estimateImageDuration(\r\n config: Partial<DurationEstimationConfig> = {}\r\n): number {\r\n return config.secondsPerImage ?? DEFAULT_DURATION_CONFIG.secondsPerImage;\r\n}\r\n\r\n/**\r\n * Estimate duration for text content based on word count\r\n * @param text - The text content\r\n * @param config - Optional configuration overrides\r\n * @returns Duration in seconds\r\n */\r\nexport function estimateTextDuration(\r\n text: string,\r\n config: Partial<DurationEstimationConfig> = {}\r\n): number {\r\n const words = countWords(text);\r\n const wpm = config.wordsPerMinute ?? DEFAULT_DURATION_CONFIG.wordsPerMinute;\r\n return Math.ceil((words / wpm) * 60);\r\n}\r\n\r\n/**\r\n * Estimate duration based on media type\r\n * @param mediaType - \"video\" | \"image\" | \"text\"\r\n * @param options - Text content or word count for text estimation\r\n * @returns Duration in seconds (0 for video/unknown)\r\n */\r\nexport function estimateDuration(\r\n mediaType: \"video\" | \"image\" | \"text\",\r\n options?: {\r\n text?: string;\r\n wordCount?: number;\r\n config?: Partial<DurationEstimationConfig>;\r\n }\r\n): number {\r\n const config = options?.config ?? {};\r\n\r\n switch (mediaType) {\r\n case \"image\": return estimateImageDuration(config);\r\n case \"text\":\r\n if (options?.wordCount) {\r\n const wpm = config.wordsPerMinute ?? DEFAULT_DURATION_CONFIG.wordsPerMinute;\r\n return Math.ceil((options.wordCount / wpm) * 60);\r\n }\r\n if (options?.text) {\r\n return estimateTextDuration(options.text, config);\r\n }\r\n return 0;\r\n case \"video\":\r\n default: return 0;\r\n }\r\n}\r\n","import type { ContentFile, Plan, PlanSection, PlanPresentation, Instructions, InstructionItem } from \"./interfaces\";\r\nimport { detectMediaType } from \"./utils\";\r\n\r\nfunction generateId(): string {\r\n return \"gen-\" + Math.random().toString(36).substring(2, 11);\r\n}\r\n\r\nfunction mapItemTypeToActionType(itemType?: string): \"play\" | \"other\" {\r\n switch (itemType) {\r\n case \"action\":\r\n case \"lessonAction\":\r\n case \"providerPresentation\":\r\n case \"play\":\r\n case \"addon\":\r\n case \"add-on\":\r\n case \"lessonAddOn\":\r\n case \"providerFile\": return \"play\";\r\n default: return \"other\";\r\n }\r\n}\r\n\r\n// LOSSLESS: All file data preserved, only hierarchy lost\r\nexport function presentationsToPlaylist(plan: Plan): ContentFile[] {\r\n if (plan.allFiles && plan.allFiles.length > 0) {\r\n return [...plan.allFiles];\r\n }\r\n\r\n const files: ContentFile[] = [];\r\n for (const section of plan.sections) {\r\n for (const presentation of section.presentations) {\r\n files.push(...presentation.files);\r\n }\r\n }\r\n return files;\r\n}\r\n\r\nfunction mapActionTypeToItemType(actionType: \"play\" | \"other\"): string {\r\n switch (actionType) {\r\n case \"play\": return \"action\";\r\n default: return \"item\";\r\n }\r\n}\r\n\r\n// LOSSLESS: All hierarchy and file data preserved\r\nexport function presentationsToExpandedInstructions(plan: Plan): Instructions {\r\n return {\r\n name: plan.name,\r\n items: plan.sections.map(section => ({\r\n id: section.id,\r\n itemType: \"section\",\r\n label: section.name,\r\n children: section.presentations.map(pres => ({\r\n id: pres.id,\r\n itemType: mapActionTypeToItemType(pres.actionType),\r\n label: pres.name,\r\n description: pres.actionType !== \"other\" ? pres.actionType : undefined,\r\n seconds: pres.files.reduce((sum, f) => sum + (f.seconds || 0), 0) || undefined,\r\n children: pres.files.map(f => ({\r\n id: f.id,\r\n itemType: \"file\",\r\n label: f.title,\r\n seconds: f.seconds,\r\n downloadUrl: f.downloadUrl || f.url,\r\n thumbnail: f.thumbnail\r\n }))\r\n }))\r\n }))\r\n };\r\n}\r\n\r\n// LOSSLESS for media: All items with downloadUrl become files\r\nexport function instructionsToPlaylist(instructions: Instructions): ContentFile[] {\r\n const files: ContentFile[] = [];\r\n\r\n function extractFiles(items: InstructionItem[]) {\r\n for (const item of items) {\r\n if (item.downloadUrl && (item.itemType === \"file\" || !item.children?.length)) {\r\n files.push({ type: \"file\", id: item.id || item.relatedId || generateId(), title: item.label || \"Untitled\", mediaType: detectMediaType(item.downloadUrl), url: item.downloadUrl, downloadUrl: item.downloadUrl, seconds: item.seconds, thumbnail: item.thumbnail });\r\n }\r\n if (item.children) {\r\n extractFiles(item.children);\r\n }\r\n }\r\n }\r\n\r\n extractFiles(instructions.items);\r\n return files;\r\n}\r\n\r\nexport const expandedInstructionsToPlaylist = instructionsToPlaylist;\r\n\r\n// LOSSLESS when instructions have proper structure\r\nexport function instructionsToPresentations(instructions: Instructions, planId?: string): Plan {\r\n const allFiles: ContentFile[] = [];\r\n\r\n const sections: PlanSection[] = instructions.items.filter(item => item.children && item.children.length > 0).map(sectionItem => {\r\n const presentations: PlanPresentation[] = (sectionItem.children || []).map(presItem => {\r\n const files: ContentFile[] = [];\r\n\r\n if (presItem.children && presItem.children.length > 0) {\r\n for (const child of presItem.children) {\r\n if (child.downloadUrl) {\r\n const file: ContentFile = { type: \"file\", id: child.id || child.relatedId || generateId(), title: child.label || \"Untitled\", mediaType: detectMediaType(child.downloadUrl), url: child.downloadUrl, downloadUrl: child.downloadUrl, seconds: child.seconds, thumbnail: child.thumbnail };\r\n allFiles.push(file);\r\n files.push(file);\r\n }\r\n }\r\n }\r\n\r\n if (files.length === 0 && presItem.downloadUrl) {\r\n const file: ContentFile = { type: \"file\", id: presItem.id || presItem.relatedId || generateId(), title: presItem.label || \"Untitled\", mediaType: detectMediaType(presItem.downloadUrl), url: presItem.downloadUrl, downloadUrl: presItem.downloadUrl, seconds: presItem.seconds, thumbnail: presItem.thumbnail };\r\n allFiles.push(file);\r\n files.push(file);\r\n }\r\n\r\n return { id: presItem.id || presItem.relatedId || generateId(), name: presItem.label || \"Presentation\", actionType: mapItemTypeToActionType(presItem.itemType), files };\r\n });\r\n\r\n return { id: sectionItem.id || sectionItem.relatedId || generateId(), name: sectionItem.label || \"Section\", presentations };\r\n });\r\n\r\n return { id: planId || generateId(), name: instructions.name || \"Plan\", sections, allFiles };\r\n}\r\n\r\nexport const expandedInstructionsToPresentations = instructionsToPresentations;\r\n\r\n// LOSSY: No structural information - all files in one section\r\nexport function playlistToPresentations(files: ContentFile[], planName: string = \"Playlist\", sectionName: string = \"Content\"): Plan {\r\n const presentations: PlanPresentation[] = files.map((file, index) => ({ id: `pres-${index}-${file.id}`, name: file.title, actionType: \"play\" as const, files: [file] }));\r\n return { id: \"playlist-plan-\" + generateId(), name: planName, sections: [{ id: \"main-section\", name: sectionName, presentations }], allFiles: [...files] };\r\n}\r\n\r\n// LOSSY: Minimal structure - just file references in a single section\r\nexport function playlistToInstructions(files: ContentFile[], name: string = \"Playlist\"): Instructions {\r\n return { name, items: [{ id: \"main-section\", itemType: \"section\", label: \"Content\", children: files.map((file, index) => ({ id: file.id || `item-${index}`, itemType: \"file\", label: file.title, seconds: file.seconds, downloadUrl: file.downloadUrl || file.url, thumbnail: file.thumbnail })) }] };\r\n}\r\n\r\nexport const playlistToExpandedInstructions = playlistToInstructions;\r\n","import type { IProvider, ContentFile, ContentProviderAuthData, Instructions } from \"./interfaces\";\r\nimport * as Converters from \"./FormatConverters\";\r\nimport { parsePath } from \"./pathUtils\";\r\n\r\nexport interface FormatResolverOptions {\r\n allowLossy?: boolean;\r\n}\r\n\r\nexport interface ResolvedFormatMeta {\r\n isNative: boolean;\r\n sourceFormat?: \"playlist\" | \"presentations\" | \"instructions\";\r\n isLossy: boolean;\r\n}\r\n\r\nexport class FormatResolver {\r\n private provider: IProvider;\r\n private options: Required<FormatResolverOptions>;\r\n\r\n constructor(provider: IProvider, options: FormatResolverOptions = {}) {\r\n this.provider = provider;\r\n this.options = { allowLossy: options.allowLossy ?? true };\r\n }\r\n\r\n getProvider(): IProvider {\r\n return this.provider;\r\n }\r\n\r\n /** Extract the last segment from a path to use as fallback ID/title */\r\n private getIdFromPath(path: string): string {\r\n const { segments } = parsePath(path);\r\n return segments[segments.length - 1] || \"content\";\r\n }\r\n\r\n async getPlaylist(path: string, auth?: ContentProviderAuthData | null): Promise<ContentFile[] | null> {\r\n const caps = this.provider.capabilities;\r\n\r\n if (caps.playlist && this.provider.getPlaylist) {\r\n const result = await this.provider.getPlaylist(path, auth);\r\n if (result && result.length > 0) return result;\r\n }\r\n\r\n // if (caps.presentations) {\r\n // const plan = await this.provider.getPresentations(path, auth);\r\n // if (plan) return Converters.presentationsToPlaylist(plan);\r\n // }\r\n\r\n if (caps.instructions && this.provider.getInstructions) {\r\n const expanded = await this.provider.getInstructions(path, auth);\r\n if (expanded) return Converters.instructionsToPlaylist(expanded);\r\n }\r\n\r\n return null;\r\n }\r\n\r\n async getPlaylistWithMeta(path: string, auth?: ContentProviderAuthData | null): Promise<{ data: ContentFile[] | null; meta: ResolvedFormatMeta }> {\r\n const caps = this.provider.capabilities;\r\n\r\n if (caps.playlist && this.provider.getPlaylist) {\r\n const result = await this.provider.getPlaylist(path, auth);\r\n if (result && result.length > 0) {\r\n return { data: result, meta: { isNative: true, isLossy: false } };\r\n }\r\n }\r\n\r\n // if (caps.presentations) {\r\n // const plan = await this.provider.getPresentations(path, auth);\r\n // if (plan) return { data: Converters.presentationsToPlaylist(plan), meta: { isNative: false, sourceFormat: \"presentations\", isLossy: false } };\r\n // }\r\n\r\n if (caps.instructions && this.provider.getInstructions) {\r\n const expanded = await this.provider.getInstructions(path, auth);\r\n if (expanded) return { data: Converters.instructionsToPlaylist(expanded), meta: { isNative: false, sourceFormat: \"instructions\", isLossy: false } };\r\n }\r\n\r\n return { data: null, meta: { isNative: false, isLossy: false } };\r\n }\r\n\r\n // async getPresentations(path: string, auth?: ContentProviderAuthData | null): Promise<Plan | null> {\r\n // const caps = this.provider.capabilities;\r\n // const fallbackId = this.getIdFromPath(path);\r\n\r\n // if (caps.presentations) {\r\n // const result = await this.provider.getPresentations(path, auth);\r\n // if (result) return result;\r\n // }\r\n\r\n // if (caps.instructions && this.provider.getInstructions) {\r\n // const expanded = await this.provider.getInstructions(path, auth);\r\n // if (expanded) return Converters.instructionsToPresentations(expanded, fallbackId);\r\n // }\r\n\r\n // if (this.options.allowLossy && caps.playlist && this.provider.getPlaylist) {\r\n // const playlist = await this.provider.getPlaylist(path, auth);\r\n // if (playlist && playlist.length > 0) {\r\n // return Converters.playlistToPresentations(playlist, fallbackId);\r\n // }\r\n // }\r\n\r\n // return null;\r\n // }\r\n\r\n // async getPresentationsWithMeta(path: string, auth?: ContentProviderAuthData | null): Promise<{ data: Plan | null; meta: ResolvedFormatMeta }> {\r\n // const caps = this.provider.capabilities;\r\n // const fallbackId = this.getIdFromPath(path);\r\n\r\n // if (caps.presentations) {\r\n // const result = await this.provider.getPresentations(path, auth);\r\n // if (result) {\r\n // return { data: result, meta: { isNative: true, isLossy: false } };\r\n // }\r\n // }\r\n\r\n // if (caps.instructions && this.provider.getInstructions) {\r\n // const expanded = await this.provider.getInstructions(path, auth);\r\n // if (expanded) return { data: Converters.instructionsToPresentations(expanded, fallbackId), meta: { isNative: false, sourceFormat: \"instructions\", isLossy: false } };\r\n // }\r\n\r\n // if (this.options.allowLossy && caps.playlist && this.provider.getPlaylist) {\r\n // const playlist = await this.provider.getPlaylist(path, auth);\r\n // if (playlist && playlist.length > 0) return { data: Converters.playlistToPresentations(playlist, fallbackId), meta: { isNative: false, sourceFormat: \"playlist\", isLossy: true } };\r\n // }\r\n\r\n // return { data: null, meta: { isNative: false, isLossy: false } };\r\n // }\r\n\r\n async getInstructions(path: string, auth?: ContentProviderAuthData | null): Promise<Instructions | null> {\r\n const caps = this.provider.capabilities;\r\n const fallbackTitle = this.getIdFromPath(path);\r\n\r\n if (caps.instructions && this.provider.getInstructions) {\r\n const result = await this.provider.getInstructions(path, auth);\r\n if (result) return result;\r\n }\r\n\r\n // if (caps.presentations) {\r\n // const plan = await this.provider.getPresentations(path, auth);\r\n // if (plan) return Converters.presentationsToExpandedInstructions(plan);\r\n // }\r\n\r\n if (this.options.allowLossy && caps.playlist && this.provider.getPlaylist) {\r\n const playlist = await this.provider.getPlaylist(path, auth);\r\n if (playlist && playlist.length > 0) {\r\n return Converters.playlistToInstructions(playlist, fallbackTitle);\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n\r\n async getInstructionsWithMeta(path: string, auth?: ContentProviderAuthData | null): Promise<{ data: Instructions | null; meta: ResolvedFormatMeta }> {\r\n const caps = this.provider.capabilities;\r\n const fallbackTitle = this.getIdFromPath(path);\r\n\r\n if (caps.instructions && this.provider.getInstructions) {\r\n const result = await this.provider.getInstructions(path, auth);\r\n if (result) {\r\n return { data: result, meta: { isNative: true, isLossy: false } };\r\n }\r\n }\r\n\r\n // if (caps.presentations) {\r\n // const plan = await this.provider.getPresentations(path, auth);\r\n // if (plan) return { data: Converters.presentationsToExpandedInstructions(plan), meta: { isNative: false, sourceFormat: \"presentations\", isLossy: false } };\r\n // }\r\n\r\n if (this.options.allowLossy && caps.playlist && this.provider.getPlaylist) {\r\n const playlist = await this.provider.getPlaylist(path, auth);\r\n if (playlist && playlist.length > 0) return { data: Converters.playlistToInstructions(playlist, fallbackTitle), meta: { isNative: false, sourceFormat: \"playlist\", isLossy: true } };\r\n }\r\n\r\n return { data: null, meta: { isNative: false, isLossy: false } };\r\n }\r\n}\r\n","import { ContentProviderAuthData, ContentProviderConfig } from \"../interfaces\";\r\n\r\nexport class OAuthHelper {\r\n generateCodeVerifier(): string {\r\n const chars = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-._~\";\r\n const length = 64;\r\n const array = new Uint8Array(length);\r\n crypto.getRandomValues(array);\r\n let result = \"\";\r\n for (let i = 0; i < length; i++) {\r\n result += chars.charAt(array[i] % chars.length);\r\n }\r\n return result;\r\n }\r\n\r\n async generateCodeChallenge(verifier: string): Promise<string> {\r\n const encoder = new TextEncoder();\r\n const data = encoder.encode(verifier);\r\n const hashBuffer = await crypto.subtle.digest(\"SHA-256\", data);\r\n const hashArray = new Uint8Array(hashBuffer);\r\n\r\n let binary = \"\";\r\n for (let i = 0; i < hashArray.length; i++) {\r\n binary += String.fromCharCode(hashArray[i]);\r\n }\r\n const base64 = btoa(binary);\r\n return base64.replace(/\\+/g, \"-\").replace(/\\//g, \"_\").replace(/=+$/, \"\");\r\n }\r\n\r\n async buildAuthUrl(config: ContentProviderConfig, codeVerifier: string, redirectUri: string, state?: string): Promise<{ url: string; challengeMethod: string }> {\r\n const codeChallenge = await this.generateCodeChallenge(codeVerifier);\r\n const params = new URLSearchParams({\r\n response_type: \"code\",\r\n client_id: config.clientId,\r\n redirect_uri: redirectUri,\r\n scope: config.scopes.join(\" \"),\r\n code_challenge: codeChallenge,\r\n code_challenge_method: \"S256\",\r\n state: state || \"\"\r\n });\r\n return { url: `${config.oauthBase}/authorize?${params.toString()}`, challengeMethod: \"S256\" };\r\n }\r\n\r\n async exchangeCodeForTokens(config: ContentProviderConfig, _providerId: string, code: string, codeVerifier: string, redirectUri: string): Promise<ContentProviderAuthData | null> {\r\n try {\r\n const params = new URLSearchParams({\r\n grant_type: \"authorization_code\",\r\n code,\r\n redirect_uri: redirectUri,\r\n client_id: config.clientId,\r\n code_verifier: codeVerifier\r\n });\r\n\r\n const tokenUrl = `${config.oauthBase}/token`;\r\n const response = await fetch(tokenUrl, { method: \"POST\", headers: { \"Content-Type\": \"application/x-www-form-urlencoded\" }, body: params.toString() });\r\n\r\n if (!response.ok) {\r\n return null;\r\n }\r\n\r\n const data = await response.json();\r\n return { access_token: data.access_token, refresh_token: data.refresh_token, token_type: data.token_type || \"Bearer\", created_at: Math.floor(Date.now() / 1000), expires_in: data.expires_in, scope: data.scope || config.scopes.join(\" \") };\r\n } catch {\r\n return null;\r\n }\r\n }\r\n}\r\n","import { ContentProviderAuthData, ContentProviderConfig } from \"../interfaces\";\r\n\r\nexport class TokenHelper {\r\n isAuthValid(auth: ContentProviderAuthData | null | undefined): boolean {\r\n if (!auth) return false;\r\n return !this.isTokenExpired(auth);\r\n }\r\n\r\n isTokenExpired(auth: ContentProviderAuthData): boolean {\r\n if (!auth.created_at || !auth.expires_in) return true;\r\n const expiresAt = (auth.created_at + auth.expires_in) * 1000;\r\n return Date.now() > expiresAt - 5 * 60 * 1000; // 5-minute buffer\r\n }\r\n\r\n async refreshToken(config: ContentProviderConfig, auth: ContentProviderAuthData): Promise<ContentProviderAuthData | null> {\r\n if (!auth.refresh_token) return null;\r\n\r\n try {\r\n const params = new URLSearchParams({\r\n grant_type: \"refresh_token\",\r\n refresh_token: auth.refresh_token,\r\n client_id: config.clientId\r\n });\r\n\r\n const response = await fetch(`${config.oauthBase}/token`, { method: \"POST\", headers: { \"Content-Type\": \"application/x-www-form-urlencoded\" }, body: params.toString() });\r\n if (!response.ok) return null;\r\n\r\n const data = await response.json();\r\n return { access_token: data.access_token, refresh_token: data.refresh_token || auth.refresh_token, token_type: data.token_type || \"Bearer\", created_at: Math.floor(Date.now() / 1000), expires_in: data.expires_in, scope: data.scope || auth.scope };\r\n } catch {\r\n return null;\r\n }\r\n }\r\n}\r\n","import { ContentProviderConfig, DeviceAuthorizationResponse, DeviceFlowPollResult } from \"../interfaces\";\r\n\r\nexport class DeviceFlowHelper {\r\n supportsDeviceFlow(config: ContentProviderConfig): boolean {\r\n return !!config.supportsDeviceFlow && !!config.deviceAuthEndpoint;\r\n }\r\n\r\n async initiateDeviceFlow(config: ContentProviderConfig): Promise<DeviceAuthorizationResponse | null> {\r\n if (!this.supportsDeviceFlow(config)) return null;\r\n\r\n try {\r\n const response = await fetch(`${config.oauthBase}${config.deviceAuthEndpoint}`, { method: \"POST\", headers: { \"Content-Type\": \"application/json\" }, body: JSON.stringify({ client_id: config.clientId, scope: config.scopes.join(\" \") }) });\r\n if (!response.ok) return null;\r\n return await response.json();\r\n } catch {\r\n return null;\r\n }\r\n }\r\n\r\n async pollDeviceFlowToken(config: ContentProviderConfig, deviceCode: string): Promise<DeviceFlowPollResult> {\r\n try {\r\n const response = await fetch(`${config.oauthBase}/token`, { method: \"POST\", headers: { \"Content-Type\": \"application/json\" }, body: JSON.stringify({ grant_type: \"urn:ietf:params:oauth:grant-type:device_code\", device_code: deviceCode, client_id: config.clientId }) });\r\n\r\n if (response.ok) {\r\n const data = await response.json();\r\n return { access_token: data.access_token, refresh_token: data.refresh_token, token_type: data.token_type || \"Bearer\", created_at: Math.floor(Date.now() / 1000), expires_in: data.expires_in, scope: data.scope || config.scopes.join(\" \") };\r\n }\r\n\r\n const errorData = await response.json();\r\n switch (errorData.error) {\r\n case \"authorization_pending\": return { error: \"authorization_pending\" };\r\n case \"slow_down\": return { error: \"slow_down\", shouldSlowDown: true };\r\n case \"expired_token\": return null;\r\n case \"access_denied\": return null;\r\n default: return null;\r\n }\r\n } catch {\r\n return { error: \"network_error\" };\r\n }\r\n }\r\n\r\n calculatePollDelay(baseInterval: number = 5, slowDownCount: number = 0): number {\r\n return (baseInterval + slowDownCount * 5) * 1000;\r\n }\r\n}\r\n","import { ContentProviderAuthData, ContentProviderConfig } from \"../interfaces\";\r\n\r\nexport class ApiHelper {\r\n createAuthHeaders(auth: ContentProviderAuthData | null | undefined): Record<string, string> | null {\r\n if (!auth) return null;\r\n return { Authorization: `Bearer ${auth.access_token}`, Accept: \"application/json\" };\r\n }\r\n\r\n async apiRequest<T>(config: ContentProviderConfig, _providerId: string, path: string, auth?: ContentProviderAuthData | null, method: \"GET\" | \"POST\" = \"GET\", body?: unknown): Promise<T | null> {\r\n try {\r\n const url = `${config.apiBase}${path}`;\r\n const headers: Record<string, string> = { Accept: \"application/json\" };\r\n if (auth) headers[\"Authorization\"] = `Bearer ${auth.access_token}`;\r\n if (body) headers[\"Content-Type\"] = \"application/json\";\r\n\r\n const options: RequestInit = { method, headers, ...(body ? { body: JSON.stringify(body) } : {}) };\r\n const response = await fetch(url, options);\r\n\r\n if (!response.ok) {\r\n return null;\r\n }\r\n return await response.json();\r\n } catch {\r\n return null;\r\n }\r\n }\r\n}\r\n","import { ContentProviderAuthData, MediaLicenseResult } from \"../../interfaces\";\r\n\r\nexport const API_BASE = \"https://api-prod.amazingkids.app\";\r\n\r\nexport async function checkMediaLicense(mediaId: string, auth?: ContentProviderAuthData | null): Promise<MediaLicenseResult | null> {\r\n if (!auth) return null;\r\n\r\n try {\r\n const url = `${API_BASE}/prod/reports/media/license-check`;\r\n const response = await fetch(url, { method: \"POST\", headers: { \"Authorization\": `Bearer ${auth.access_token}`, \"Content-Type\": \"application/json\", \"Accept\": \"application/json\" }, body: JSON.stringify({ mediaIds: [mediaId] }) });\r\n\r\n if (!response.ok) return null;\r\n\r\n const data = await response.json();\r\n const licenseData = Array.isArray(data) ? data : data.data || [];\r\n const result = licenseData.find((item: Record<string, unknown>) => item.mediaId === mediaId);\r\n\r\n if (result?.isLicensed) {\r\n return { mediaId, status: \"valid\", message: \"Media is licensed for playback\", expiresAt: result.expiresAt as string | number | undefined };\r\n }\r\n return { mediaId, status: \"not_licensed\", message: \"Media is not licensed\" };\r\n } catch {\r\n return { mediaId, status: \"unknown\", message: \"Unable to verify license status\" };\r\n }\r\n}\r\n","import { ContentFile, ContentItem, PlanPresentation, InstructionItem } from \"../../interfaces\";\r\nimport { detectMediaType } from \"../../utils\";\r\nimport { parsePath } from \"../../pathUtils\";\r\n\r\n/**\r\n * Extract library ID from path based on path structure\r\n */\r\nexport function extractLibraryId(path: string): string | null {\r\n const { segments, depth } = parsePath(path);\r\n\r\n if (depth < 4 || segments[0] !== \"modules\") return null;\r\n\r\n // /modules/{moduleId}/products/{productId}/{libraryId}\r\n if (segments[2] === \"products\" && depth === 5) {\r\n return segments[4];\r\n }\r\n // /modules/{moduleId}/libraries/{libraryId}\r\n if (segments[2] === \"libraries\" && depth === 4) {\r\n return segments[3];\r\n }\r\n\r\n return null;\r\n}\r\n\r\n/**\r\n * Convert raw media items to ContentFile array\r\n */\r\nexport function convertMediaToFiles(mediaItems: Record<string, unknown>[]): ContentFile[] {\r\n const files: ContentFile[] = [];\r\n\r\n for (const item of mediaItems) {\r\n const mediaType = (item.mediaType as string)?.toLowerCase();\r\n let url = \"\";\r\n let thumbnail = ((item.thumbnail as Record<string, unknown>)?.src || \"\") as string;\r\n let muxPlaybackId: string | undefined;\r\n\r\n const video = item.video as Record<string, unknown> | undefined;\r\n const image = item.image as Record<string, unknown> | undefined;\r\n\r\n if (mediaType === \"video\" && video) {\r\n muxPlaybackId = video.muxPlaybackId as string | undefined;\r\n if (muxPlaybackId) {\r\n url = `https://stream.mux.com/${muxPlaybackId}/capped-1080p.mp4`;\r\n } else {\r\n url = (video.muxStreamingUrl || video.url || \"\") as string;\r\n }\r\n thumbnail = thumbnail || (video.thumbnailUrl as string) || \"\";\r\n } else if (mediaType === \"image\" || image) {\r\n url = (image?.src || item.url || \"\") as string;\r\n thumbnail = thumbnail || (image?.src as string) || \"\";\r\n } else {\r\n url = (item.url || item.src || \"\") as string;\r\n thumbnail = thumbnail || (item.thumbnailUrl as string) || \"\";\r\n }\r\n\r\n if (!url) continue;\r\n\r\n const detectedMediaType = detectMediaType(url, mediaType);\r\n const fileId = (item.mediaId || item.id) as string;\r\n\r\n files.push({ type: \"file\", id: fileId, title: (item.title || item.name || item.fileName || \"\") as string, mediaType: detectedMediaType, thumbnail: thumbnail, url, muxPlaybackId, mediaId: fileId });\r\n }\r\n\r\n return files;\r\n}\r\n\r\n/**\r\n * Convert modules response to ContentItem folders\r\n */\r\nexport function convertModulesToFolders(modules: Record<string, unknown>[]): ContentItem[] {\r\n const items: ContentItem[] = [];\r\n\r\n for (const m of modules) {\r\n if (m.isLocked) continue;\r\n\r\n const moduleId = (m.id || m.moduleId) as string;\r\n const moduleTitle = (m.title || m.name) as string;\r\n const moduleImage = m.image as string | undefined;\r\n\r\n items.push({\r\n type: \"folder\" as const,\r\n id: moduleId,\r\n title: moduleTitle,\r\n thumbnail: moduleImage,\r\n path: `/modules/${moduleId}`\r\n });\r\n }\r\n\r\n return items;\r\n}\r\n\r\n/**\r\n * Convert libraries response to ContentItem folders\r\n */\r\nexport function convertLibrariesToFolders(libraries: Record<string, unknown>[], currentPath: string): ContentItem[] {\r\n return libraries.map((l) => ({\r\n type: \"folder\" as const,\r\n id: (l.libraryId || l.id) as string,\r\n title: (l.title || l.name) as string,\r\n thumbnail: l.image as string | undefined,\r\n isLeaf: true,\r\n path: `${currentPath}/${l.libraryId || l.id}`\r\n }));\r\n}\r\n\r\n/**\r\n * Convert products response to ContentItem folders\r\n */\r\nexport function convertProductsToFolders(products: Record<string, unknown>[], currentPath: string): ContentItem[] {\r\n return products.map((p) => ({\r\n type: \"folder\" as const,\r\n id: (p.productId || p.id) as string,\r\n title: (p.title || p.name) as string,\r\n thumbnail: p.image as string | undefined,\r\n path: `${currentPath}/products/${p.productId || p.id}`\r\n }));\r\n}\r\n\r\n/**\r\n * Convert files to presentations\r\n */\r\ninterface ConvertFilesResult {\r\n presentations: PlanPresentation[];\r\n plan: {\r\n id: string;\r\n name: string;\r\n sections: { id: string; name: string; presentations: PlanPresentation[] }[];\r\n allFiles: ContentFile[];\r\n };\r\n}\r\n\r\nexport function convertFilesToPresentations(files: ContentFile[], libraryId: string): ConvertFilesResult {\r\n const title = \"Library\";\r\n const presentations: PlanPresentation[] = files.map(f => ({ id: f.id, name: f.title, actionType: \"play\" as const, files: [f] }));\r\n return {\r\n presentations,\r\n plan: { id: libraryId, name: title, sections: [{ id: `section-${libraryId}`, name: title, presentations }], allFiles: files }\r\n };\r\n}\r\n\r\n/**\r\n * Convert files to instructions\r\n */\r\nexport function convertFilesToInstructions(files: ContentFile[], _libraryId: string): { name: string; items: InstructionItem[] } {\r\n const items: InstructionItem[] = files.map(file => ({\r\n id: file.id + \"-action\",\r\n itemType: \"action\",\r\n label: file.title,\r\n actionType: \"play\",\r\n children: [\r\n {\r\n id: file.id,\r\n itemType: \"file\",\r\n label: file.title,\r\n seconds: file.seconds,\r\n downloadUrl: file.url,\r\n thumbnail: file.thumbnail\r\n }\r\n ]\r\n }));\r\n\r\n return { name: \"Library\", items };\r\n}\r\n","import { ContentProviderConfig, ContentProviderAuthData, ContentItem, ContentFile, ProviderLogos, ProviderCapabilities, MediaLicenseResult, IProvider, AuthType, Instructions } from \"../../interfaces\";\r\nimport { parsePath } from \"../../pathUtils\";\r\nimport { ApiHelper } from \"../../helpers\";\r\nimport { checkMediaLicense, API_BASE } from \"./APlayApi\";\r\nimport { extractLibraryId, convertMediaToFiles, convertModulesToFolders, convertLibrariesToFolders, convertProductsToFolders, convertFilesToInstructions } from \"./APlayConverters\";\r\n\r\n/**\r\n * Extracts an array from an API response that may have different formats.\r\n * Handles: { data: [...] }, { <key>: [...] }, or [...] directly.\r\n */\r\nfunction extractArray<T = Record<string, unknown>>(\r\n response: Record<string, unknown> | null,\r\n ...keys: string[]\r\n): T[] {\r\n if (!response) return [];\r\n if (Array.isArray(response)) return response as T[];\r\n\r\n for (const key of keys) {\r\n if (response[key] && Array.isArray(response[key])) {\r\n return response[key] as T[];\r\n }\r\n }\r\n\r\n return [];\r\n}\r\n\r\n/**\r\n * APlay Provider\r\n *\r\n * Path structure (variable depth based on module products):\r\n * /modules -> list modules\r\n * /modules/{moduleId} -> list products OR libraries (depends on module)\r\n * /modules/{moduleId}/products/{productId} -> list libraries (if module has multiple products)\r\n * /modules/{moduleId}/products/{productId}/{libraryId} -> media files\r\n * /modules/{moduleId}/libraries/{libraryId} -> media files (if module has 0-1 products)\r\n */\r\nexport class APlayProvider implements IProvider {\r\n private readonly apiHelper = new ApiHelper();\r\n\r\n private async apiRequest<T>(path: string, auth?: ContentProviderAuthData | null): Promise<T | null> {\r\n return this.apiHelper.apiRequest<T>(this.config, this.id, path, auth);\r\n }\r\n\r\n readonly id = \"aplay\";\r\n readonly name = \"APlay\";\r\n\r\n readonly logos: ProviderLogos = { light: \"https://www.joinamazing.com/_assets/v11/3ba846c5afd7e73d27bc4d87b63d423e7ae2dc73.svg\", dark: \"https://www.joinamazing.com/_assets/v11/3ba846c5afd7e73d27bc4d87b63d423e7ae2dc73.svg\" };\r\n\r\n readonly config: ContentProviderConfig = { id: \"aplay\", name: \"APlay\", apiBase: API_BASE, oauthBase: \"https://api.joinamazing.com/prod/aims/oauth\", clientId: \"xFJFq7yNYuXXXMx0YBiQ\", scopes: [\"openid\", \"profile\", \"email\"], endpoints: { modules: \"/prod/curriculum/modules\", productLibraries: (productId: string) => `/prod/curriculum/modules/products/${productId}/libraries`, libraryMedia: (libraryId: string) => `/prod/creators/libraries/${libraryId}/media` } };\r\n\r\n readonly requiresAuth = true;\r\n readonly authTypes: AuthType[] = [\"oauth_pkce\"];\r\n readonly capabilities: ProviderCapabilities = { browse: true, presentations: true, playlist: true, instructions: true, mediaLicensing: true };\r\n\r\n async browse(path?: string | null, auth?: ContentProviderAuthData | null): Promise<ContentItem[]> {\r\n const { segments, depth } = parsePath(path);\r\n\r\n if (depth === 0) {\r\n return [{ type: \"folder\" as const, id: \"modules-root\", title: \"Modules\", path: \"/modules\" }];\r\n }\r\n\r\n const root = segments[0];\r\n if (root !== \"modules\") return [];\r\n\r\n if (depth === 1) return this.getModules(auth);\r\n if (depth === 2) return this.getModuleContent(segments[1], path!, auth);\r\n if (depth === 4 && segments[2] === \"products\") return this.getLibraryFolders(segments[3], path!, auth);\r\n if (depth === 5 && segments[2] === \"products\") return this.getMediaFiles(segments[4], auth);\r\n if (depth === 4 && segments[2] === \"libraries\") return this.getMediaFiles(segments[3], auth);\r\n\r\n return [];\r\n }\r\n\r\n private async getModules(auth?: ContentProviderAuthData | null): Promise<ContentItem[]> {\r\n const response = await this.apiRequest<Record<string, unknown>>(this.config.endpoints.modules as string, auth);\r\n const modules = extractArray(response, \"data\", \"modules\");\r\n return convertModulesToFolders(modules);\r\n }\r\n\r\n private async getModuleContent(moduleId: string, currentPath: string, auth?: ContentProviderAuthData | null): Promise<ContentItem[]> {\r\n const response = await this.apiRequest<Record<string, unknown>>(this.config.endpoints.modules as string, auth);\r\n const modules = extractArray(response, \"data\", \"modules\");\r\n const module = modules.find(m => (m.id || m.moduleId) === moduleId);\r\n if (!module) return [];\r\n\r\n const allProducts = (module.products as Record<string, unknown>[]) || [];\r\n const products = allProducts.filter((p) => !p.isHidden);\r\n\r\n if (products.length === 0) {\r\n return this.getLibraryFolders(moduleId, `${currentPath}/libraries`, auth);\r\n } else if (products.length === 1) {\r\n const productId = (products[0].productId || products[0].id) as string;\r\n return this.getLibraryFolders(productId, `${currentPath}/libraries`, auth);\r\n } else {\r\n return convertProductsToFolders(products, currentPath);\r\n }\r\n }\r\n\r\n private async getLibraryFolders(productId: string, currentPath: string, auth?: ContentProviderAuthData | null): Promise<ContentItem[]> {\r\n const pathFn = this.config.endpoints.productLibraries as (id: string) => string;\r\n const response = await this.apiRequest<Record<string, unknown>>(pathFn(productId), auth);\r\n const libraries = extractArray(response, \"data\", \"libraries\");\r\n return convertLibrariesToFolders(libraries, currentPath);\r\n }\r\n\r\n private async getMediaFiles(libraryId: string, auth?: ContentProviderAuthData | null): Promise<ContentItem[]> {\r\n const pathFn = this.config.endpoints.libraryMedia as (id: string) => string;\r\n const response = await this.apiRequest<Record<string, unknown>>(pathFn(libraryId), auth);\r\n const mediaItems = extractArray(response, \"data\", \"media\");\r\n return convertMediaToFiles(mediaItems);\r\n }\r\n\r\n // async getPresentations(path: string, auth?: ContentProviderAuthData | null): Promise<Plan | null> {\r\n // const libraryId = extractLibraryId(path);\r\n // if (!libraryId) return null;\r\n\r\n // const files = await this.getMediaFiles(libraryId, auth) as ContentFile[];\r\n // if (files.length === 0) return null;\r\n\r\n // return convertFilesToPresentations(files, libraryId).plan;\r\n // }\r\n\r\n async getPlaylist(path: string, auth?: ContentProviderAuthData | null, _resolution?: number): Promise<ContentFile[] | null> {\r\n const libraryId = extractLibraryId(path);\r\n if (!libraryId) return null;\r\n\r\n const files = await this.getMediaFiles(libraryId, auth) as ContentFile[];\r\n return files.length > 0 ? files : null;\r\n }\r\n\r\n async getInstructions(path: string, auth?: ContentProviderAuthData | null): Promise<Instructions | null> {\r\n const libraryId = extractLibraryId(path);\r\n if (!libraryId) return null;\r\n\r\n const files = await this.getMediaFiles(libraryId, auth) as ContentFile[];\r\n if (files.length === 0) return null;\r\n\r\n return convertFilesToInstructions(files, libraryId);\r\n }\r\n\r\n async checkMediaLicense(mediaId: string, auth?: ContentProviderAuthData | null): Promise<MediaLicenseResult | null> {\r\n return checkMediaLicense(mediaId, auth);\r\n }\r\n\r\n supportsDeviceFlow(): boolean {\r\n return false;\r\n }\r\n}\r\n","import { ContentProviderConfig, ContentProviderAuthData, ContentItem, ContentFile, ProviderLogos, ProviderCapabilities, IProvider, AuthType, Instructions, InstructionItem, DeviceAuthorizationResponse, DeviceFlowPollResult } from \"../../interfaces\";\r\nimport { detectMediaType, createFile } from \"../../utils\";\r\nimport { parsePath } from \"../../pathUtils\";\r\nimport { ApiHelper, OAuthHelper, DeviceFlowHelper } from \"../../helpers\";\r\n\r\n/**\r\n * SignPresenter Provider\r\n *\r\n * Path structure:\r\n * /playlists -> list playlists\r\n * /playlists/{playlistId} -> list messages (files)\r\n */\r\nexport class SignPresenterProvider implements IProvider {\r\n private readonly apiHelper = new ApiHelper();\r\n private readonly oauthHelper = new OAuthHelper();\r\n private readonly deviceFlowHelper = new DeviceFlowHelper();\r\n\r\n private async apiRequest<T>(path: string, auth?: ContentProviderAuthData | null): Promise<T | null> {\r\n return this.apiHelper.apiRequest<T>(this.config, this.id, path, auth);\r\n }\r\n readonly id = \"signpresenter\";\r\n readonly name = \"SignPresenter\";\r\n\r\n readonly logos: ProviderLogos = { light: \"https://signpresenter.com/files/shared/images/logo.png\", dark: \"https://signpresenter.com/files/shared/images/logo.png\" };\r\n\r\n readonly config: ContentProviderConfig = { id: \"signpresenter\", name: \"SignPresenter\", apiBase: \"https://api.signpresenter.com\", oauthBase: \"https://api.signpresenter.com/oauth\", clientId: \"lessonsscreen-tv\", scopes: [\"openid\", \"profile\", \"content\"], supportsDeviceFlow: true, deviceAuthEndpoint: \"/device/authorize\", endpoints: { playlists: \"/content/playlists\", messages: (playlistId: string) => `/content/playlists/${playlistId}/messages` } };\r\n\r\n readonly requiresAuth = true;\r\n readonly authTypes: AuthType[] = [\"oauth_pkce\", \"device_flow\"];\r\n readonly capabilities: ProviderCapabilities = { browse: true, presentations: true, playlist: true, instructions: true, mediaLicensing: false };\r\n\r\n async browse(path?: string | null, auth?: ContentProviderAuthData | null): Promise<ContentItem[]> {\r\n const { segments, depth } = parsePath(path);\r\n\r\n if (depth === 0) {\r\n return [\n {\r\n type: \"folder\" as const,\r\n id: \"playlists-root\",\r\n title: \"Playlists\",\r\n path: \"/playlists\"\r\n }\n ];\r\n }\r\n\r\n const root = segments[0];\r\n if (root !== \"playlists\") return [];\r\n\r\n // /playlists -> list all playlists\r\n if (depth === 1) {\r\n return this.getPlaylists(auth);\r\n }\r\n\r\n // /playlists/{playlistId} -> list messages\r\n if (depth === 2) {\r\n const playlistId = segments[1];\r\n return this.getMessages(playlistId, auth);\r\n }\r\n\r\n return [];\r\n }\r\n\r\n private async getPlaylists(auth?: ContentProviderAuthData | null): Promise<ContentItem[]> {\r\n const apiPath = this.config.endpoints.playlists as string;\r\n const response = await this.apiRequest<unknown>(apiPath, auth);\r\n if (!response) return [];\r\n\r\n const playlists = Array.isArray(response)\r\n ? response\r\n : ((response as Record<string, unknown>).data || (response as Record<string, unknown>).playlists || []) as Record<string, unknown>[];\r\n\r\n if (!Array.isArray(playlists)) return [];\r\n\r\n return playlists.map((p) => ({\r\n type: \"folder\" as const,\r\n id: p.id as string,\r\n title: p.name as string,\r\n thumbnail: p.image as string | undefined,\r\n path: `/playlists/${p.id}`,\r\n isLeaf: true\r\n }));\r\n }\r\n\r\n private async getMessages(playlistId: string, auth?: ContentProviderAuthData | null): Promise<ContentItem[]> {\r\n const pathFn = this.config.endpoints.messages as (id: string) => string;\r\n const response = await this.apiRequest<unknown>(pathFn(playlistId), auth);\r\n if (!response) return [];\r\n\r\n const messages = Array.isArray(response)\r\n ? response\r\n : ((response as Record<string, unknown>).data || (response as Record<string, unknown>).messages || []) as Record<string, unknown>[];\r\n\r\n if (!Array.isArray(messages)) return [];\r\n\r\n const files: ContentFile[] = [];\r\n\r\n for (const msg of messages) {\r\n if (!msg.url) continue;\r\n\r\n const url = msg.url as string;\r\n const seconds = msg.seconds as number | undefined;\r\n const file = createFile(\r\n msg.id as string,\r\n msg.name as string,\r\n url,\r\n {\r\n mediaType: detectMediaType(url, msg.mediaType as string | undefined),\r\n thumbnail: (msg.thumbnail || msg.image) as string | undefined,\r\n seconds\r\n }\r\n );\r\n file.downloadUrl = url;\r\n files.push(file);\r\n }\r\n\r\n return files;\r\n }\r\n\r\n // async getPresentations(path: string, auth?: ContentProviderAuthData | null): Promise<Plan | null> {\r\n // const { segments, depth } = parsePath(path);\r\n\r\n // if (depth < 2 || segments[0] !== \"playlists\") return null;\r\n\r\n // const playlistId = segments[1];\r\n // const files = await this.getMessages(playlistId, auth) as ContentFile[];\r\n // if (files.length === 0) return null;\r\n\r\n // // Get playlist info for title\r\n // const playlists = await this.getPlaylists(auth);\r\n // const playlist = playlists.find(p => p.id === playlistId);\r\n // const title = playlist?.title || \"Playlist\";\r\n // const thumbnail = (playlist as Record<string, unknown> | undefined)?.image as string | undefined;\r\n\r\n // const presentations: PlanPresentation[] = files.map(f => ({ id: f.id, name: f.title, actionType: \"play\" as const, files: [f] }));\r\n // return { id: playlistId, name: title as string, thumbnail, sections: [{ id: `section-${playlistId}`, name: title as string, presentations }], allFiles: files };\r\n // }\r\n\r\n async getPlaylist(path: string, auth?: ContentProviderAuthData | null, _resolution?: number): Promise<ContentFile[] | null> {\r\n const { segments, depth } = parsePath(path);\r\n\r\n if (depth < 2 || segments[0] !== \"playlists\") return null;\r\n\r\n const playlistId = segments[1];\r\n const files = await this.getMessages(playlistId, auth) as ContentFile[];\r\n return files.length > 0 ? files : null;\r\n }\r\n\r\n async getInstructions(path: string, auth?: ContentProviderAuthData | null): Promise<Instructions | null> {\r\n const { segments, depth } = parsePath(path);\r\n\r\n if (depth < 2 || segments[0] !== \"playlists\") return null;\r\n\r\n const playlistId = segments[1];\r\n const files = await this.getMessages(playlistId, auth) as ContentFile[];\r\n if (files.length === 0) return null;\r\n\r\n // Get playlist info for title\r\n const playlists = await this.getPlaylists(auth);\r\n const playlist = playlists.find(p => p.id === playlistId);\r\n const title = playlist?.title || \"Playlist\";\r\n\r\n const actionItems: InstructionItem[] = files.map(file => ({\r\n id: file.id + \"-action\",\r\n itemType: \"action\",\r\n label: file.title,\r\n actionType: \"play\",\r\n seconds: file.seconds,\r\n children: [\n {\r\n id: file.id,\r\n itemType: \"file\",\r\n label: file.title,\r\n seconds: file.seconds,\r\n downloadUrl: file.downloadUrl || file.url,\r\n thumbnail: file.thumbnail\r\n }\n ]\r\n }));\r\n\r\n // Wrap actions in a section using the playlist name\r\n const sectionItem: InstructionItem = {\r\n id: playlistId + \"-section\",\r\n itemType: \"section\",\r\n label: title as string,\r\n children: actionItems\r\n };\r\n\r\n // Wrap section in a header for consistency with other providers\r\n const headerItem: InstructionItem = {\r\n id: playlistId + \"-header\",\r\n itemType: \"header\",\r\n label: title as string,\r\n children: [sectionItem]\r\n };\r\n\r\n return { name: title as string, items: [headerItem] };\r\n }\r\n\r\n // Auth methods\r\n supportsDeviceFlow(): boolean {\r\n return this.deviceFlowHelper.supportsDeviceFlow(this.config);\r\n }\r\n\r\n generateCodeVerifier(): string {\r\n return this.oauthHelper.generateCodeVerifier();\r\n }\r\n\r\n async buildAuthUrl(codeVerifier: string, redirectUri: string, state?: string): Promise<{ url: string; challengeMethod: string }> {\r\n return this.oauthHelper.buildAuthUrl(this.config, codeVerifier, redirectUri, state || this.id);\r\n }\r\n\r\n async exchangeCodeForTokens(code: string, codeVerifier: string, redirectUri: string): Promise<ContentProviderAuthData | null> {\r\n return this.oauthHelper.exchangeCodeForTokens(this.config, this.id, code, codeVerifier, redirectUri);\r\n }\r\n\r\n async initiateDeviceFlow(): Promise<DeviceAuthorizationResponse | null> {\r\n return this.deviceFlowHelper.initiateDeviceFlow(this.config);\r\n }\r\n\r\n async pollDeviceFlowToken(deviceCode: string): Promise<DeviceFlowPollResult> {\r\n return this.deviceFlowHelper.pollDeviceFlowToken(this.config, deviceCode);\r\n }\r\n}\r\n","export const API_BASE = \"https://api.lessons.church\";\r\n\r\nexport async function apiRequest<T>(path: string): Promise<T | null> {\r\n try {\r\n const url = `${API_BASE}${path}`;\r\n const response = await fetch(url, { method: \"GET\", headers: { Accept: \"application/json\" } });\r\n if (!response.ok) return null;\r\n return await response.json();\r\n } catch {\r\n return null;\r\n }\r\n}\r\n","import { ContentFile, FeedVenueInterface, Plan, PlanSection, PlanPresentation, InstructionItem, Instructions, VenueActionsResponseInterface } from \"../../interfaces\";\r\nimport { detectMediaType } from \"../../utils\";\r\nimport { estimateImageDuration } from \"../../durationUtils\";\r\nimport { apiRequest, API_BASE } from \"./LessonsChurchApi\";\r\n\r\nexport function normalizeItemType(type?: string): string | undefined {\r\n if (type === \"lessonSection\") return \"section\";\r\n if (type === \"lessonAction\") return \"action\";\r\n if (type === \"lessonAddOn\") return \"action\";\r\n return type;\r\n}\r\n\r\nfunction stripMarkdown(text: string): string {\r\n return text\r\n .replace(/\\*\\*(.+?)\\*\\*/g, \"$1\") // **bold**\r\n .replace(/__(.+?)__/g, \"$1\") // __bold__\r\n .replace(/\\*(.+?)\\*/g, \"$1\") // *italic*\r\n .replace(/_(.+?)_/g, \"$1\") // _italic_\r\n .replace(/#{1,6}\\s*/g, \"\") // # headers\r\n .replace(/\\[([^\\]]+)\\]\\([^)]+\\)/g, \"$1\") // [text](url)\r\n .replace(/`([^`]+)`/g, \"$1\") // `code`\r\n .replace(/\\n+/g, \" \") // newlines to spaces\r\n .replace(/\\s+/g, \" \") // collapse whitespace\r\n .trim();\r\n}\r\n\r\nfunction truncateForLabel(text: string): string {\r\n // Find first line break\r\n const lineBreakPos = text.search(/\\n/);\r\n // Cut at line break or 100 chars, whichever comes first\r\n const cutoff = lineBreakPos > 0 && lineBreakPos < 100 ? lineBreakPos : 100;\r\n const truncated = text.length > cutoff ? text.substring(0, cutoff) : text;\r\n // Strip markdown and clean up for label\r\n return stripMarkdown(truncated) + (text.length > cutoff ? \"...\" : \"\");\r\n}\r\n\r\nexport function getEmbedUrl(apiType?: string, relatedId?: string): string | undefined {\r\n if (!relatedId) return undefined;\r\n\r\n const baseUrl = \"https://lessons.church\";\r\n switch (apiType) {\r\n case \"action\":\r\n case \"lessonAction\": return `${baseUrl}/embed/action/${relatedId}`;\r\n case \"addon\":\r\n case \"lessonAddOn\": return `${baseUrl}/embed/addon/${relatedId}`;\r\n case \"section\":\r\n case \"lessonSection\": return `${baseUrl}/embed/section/${relatedId}`;\r\n default: return undefined;\r\n }\r\n}\r\n\r\nexport function convertVenueToPlan(venue: FeedVenueInterface): Plan {\r\n const sections: PlanSection[] = [];\r\n const allFiles: ContentFile[] = [];\r\n\r\n for (const section of venue.sections || []) {\r\n const presentations: PlanPresentation[] = [];\r\n\r\n for (const action of section.actions || []) {\r\n const rawActionType = action.actionType?.toLowerCase() || \"other\";\r\n if (rawActionType !== \"play\" && rawActionType !== \"add-on\") continue;\r\n\r\n const files: ContentFile[] = [];\r\n\r\n for (const file of action.files || []) {\r\n if (!file.url) continue;\r\n\r\n const contentFile: ContentFile = { type: \"file\", id: file.id || \"\", title: file.name || \"\", mediaType: detectMediaType(file.url, file.fileType), thumbnail: file.thumbnail || venue.lessonImage, url: file.url, downloadUrl: file.url, seconds: file.seconds, streamUrl: file.streamUrl };\r\n\r\n files.push(contentFile);\r\n allFiles.push(contentFile);\r\n }\r\n\r\n if (files.length > 0) {\r\n presentations.push({ id: action.id || \"\", name: action.content || section.name || \"Untitled\", actionType: \"play\", files });\r\n }\r\n }\r\n\r\n if (presentations.length > 0) {\r\n sections.push({ id: section.id || \"\", name: section.name || \"Untitled Section\", presentations });\r\n }\r\n }\r\n\r\n return { id: venue.id || \"\", name: venue.lessonName || venue.name || \"Plan\", thumbnail: venue.lessonImage, sections, allFiles };\r\n}\r\n\r\nexport async function convertAddOnToFile(addOn: Record<string, unknown>): Promise<ContentFile | null> {\r\n const apiPath = `/addOns/public/${addOn.id as string}`;\r\n const detail = await apiRequest<Record<string, unknown>>(apiPath);\r\n if (!detail) return null;\r\n\r\n let url = \"\";\r\n let mediaType: \"video\" | \"image\" = \"video\";\r\n let seconds = (addOn.seconds as number) || 10;\r\n\r\n const video = detail.video as Record<string, unknown> | undefined;\r\n const file = detail.file as Record<string, unknown> | undefined;\r\n\r\n if (video) {\r\n url = `${API_BASE}/externalVideos/download/${video.id}`;\r\n seconds = (video.seconds as number) || seconds;\r\n } else if (file) {\r\n url = file.contentPath as string;\r\n const fileType = file.fileType as string | undefined;\r\n mediaType = fileType?.startsWith(\"video/\") ? \"video\" : \"image\";\r\n } else {\r\n return null;\r\n }\r\n\r\n return { type: \"file\", id: addOn.id as string, title: addOn.name as string, mediaType, thumbnail: addOn.image as string | undefined, url, downloadUrl: url, seconds, loopVideo: ((video as Record<string, unknown> | undefined)?.loopVideo as boolean) || false };\r\n}\r\n\r\nexport function buildSectionActionsMap(actionsResponse: VenueActionsResponseInterface | null, lessonImage?: string, feedResponse?: FeedVenueInterface | null): Map<string, InstructionItem[]> {\r\n const sectionActionsMap = new Map<string, InstructionItem[]>();\r\n\r\n // Build maps of action ID -> file data and content from feed\r\n const actionThumbnailMap = new Map<string, string>();\r\n const actionUrlMap = new Map<string, string>();\r\n const actionContentMap = new Map<string, string>();\r\n if (feedResponse?.sections) {\r\n for (const section of feedResponse.sections) {\r\n for (const action of section.actions || []) {\r\n if (action.id) {\r\n if (action.content) actionContentMap.set(action.id, action.content);\r\n if (action.files?.length) {\r\n const firstFile = action.files[0];\r\n if (firstFile?.thumbnail) actionThumbnailMap.set(action.id, firstFile.thumbnail);\r\n if (firstFile?.url) actionUrlMap.set(action.id, firstFile.url);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (actionsResponse?.sections) {\r\n for (const section of actionsResponse.sections) {\r\n if (section.id && section.actions) {\r\n sectionActionsMap.set(section.id, section.actions.map(action => {\r\n const seconds = action.seconds ?? estimateImageDuration();\r\n const rawActionType = action.actionType?.toLowerCase() || \"\";\r\n const hasFiles = rawActionType === \"play\" || rawActionType === \"add-on\";\r\n const thumbnail = (action.id && actionThumbnailMap.get(action.id)) || lessonImage;\r\n const downloadUrl = action.id ? actionUrlMap.get(action.id) : undefined;\r\n const fullContent = action.id ? actionContentMap.get(action.id) : undefined;\r\n const label = fullContent ? truncateForLabel(fullContent) : action.name;\r\n const needsFullContent = fullContent && (fullContent.length > 100 || fullContent.includes(\"\\n\"));\r\n const content = needsFullContent ? fullContent : undefined;\r\n return { id: action.id, itemType: \"action\", relatedId: action.id, label, actionType: rawActionType || undefined, content, seconds, downloadUrl, thumbnail, children: hasFiles ? [{ id: action.id + \"-file\", itemType: \"file\", label: action.name, seconds, downloadUrl, thumbnail }] : undefined };\r\n }));\r\n }\r\n }\r\n }\r\n return sectionActionsMap;\r\n}\r\n\r\nexport function processInstructionItem(item: Record<string, unknown>, sectionActionsMap: Map<string, InstructionItem[]>, thumbnail?: string): InstructionItem {\r\n const relatedId = item.relatedId as string | undefined;\r\n const rawItemType = item.itemType as string | undefined;\r\n const itemType = normalizeItemType(rawItemType);\r\n const children = item.children as Record<string, unknown>[] | undefined;\r\n\r\n let processedChildren: InstructionItem[] | undefined;\r\n\r\n if (children) {\r\n processedChildren = children.map(child => {\r\n const childRelatedId = child.relatedId as string | undefined;\r\n const rawChildItemType = child.itemType as string | undefined;\r\n const childItemType = normalizeItemType(rawChildItemType);\r\n if (childRelatedId && sectionActionsMap.has(childRelatedId)) {\r\n // Section has actions with direct download URLs from sectionActionsMap\r\n const sectionActions = sectionActionsMap.get(childRelatedId);\r\n // Get download URL from first action's child file if available\r\n const firstActionUrl = sectionActions?.[0]?.downloadUrl;\r\n return {\r\n id: child.id as string | undefined,\n itemType: childItemType,\n relatedId: childRelatedId,\r\n label: child.label as string | undefined,\n actionType: child.actionType as string | undefined,\r\n content: child.content as string | undefined,\n seconds: child.seconds as number | undefined,\r\n children: sectionActions,\n downloadUrl: firstActionUrl,\n thumbnail\r\n };\r\n }\r\n return processInstructionItem(child, sectionActionsMap, thumbnail);\r\n });\r\n }\r\n\r\n const isFileType = itemType === \"file\" || (itemType === \"action\" && !children?.length);\r\n\r\n // Check if this item itself is a section that needs expansion\r\n let finalChildren = processedChildren;\r\n if (itemType === \"section\" && relatedId && sectionActionsMap.has(relatedId) && !processedChildren?.length) {\r\n finalChildren = sectionActionsMap.get(relatedId);\r\n }\r\n\r\n return {\r\n id: item.id as string | undefined,\n itemType,\n relatedId,\r\n label: item.label as string | undefined,\n actionType: item.actionType as string | undefined,\r\n content: item.content as string | undefined,\n seconds: item.seconds as number | undefined,\r\n children: finalChildren,\n downloadUrl: undefined,\n thumbnail: isFileType ? thumbnail : undefined\r\n };\r\n}\r\n\r\nexport async function convertAddOnCategoryToPlan(category: string): Promise<Plan | null> {\r\n const decodedCategory = decodeURIComponent(category);\r\n const response = await apiRequest<Record<string, unknown>[]>(\"/addOns/public\");\r\n if (!response || !Array.isArray(response)) return null;\r\n\r\n const filtered = response.filter((a) => a.category === decodedCategory);\r\n const presentations: PlanPresentation[] = [];\r\n const allFiles: ContentFile[] = [];\r\n\r\n for (const addOn of filtered) {\r\n const file = await convertAddOnToFile(addOn);\r\n if (file) {\r\n presentations.push({ id: addOn.id as string, name: addOn.name as string, actionType: \"play\", files: [file] });\r\n allFiles.push(file);\r\n }\r\n }\r\n\r\n if (presentations.length === 0) return null;\r\n\r\n const section: PlanSection = { id: `category-${decodedCategory}`, name: decodedCategory, presentations };\r\n return { id: `addons-${decodedCategory}`, name: decodedCategory, sections: [section], allFiles };\r\n}\r\n\r\nexport async function convertAddOnCategoryToInstructions(category: string): Promise<Instructions | null> {\r\n const decodedCategory = decodeURIComponent(category);\r\n const response = await apiRequest<Record<string, unknown>[]>(\"/addOns/public\");\r\n if (!response || !Array.isArray(response)) return null;\r\n\r\n const filtered = response.filter((a) => a.category === decodedCategory);\r\n const children: InstructionItem[] = [];\r\n\r\n for (const addOn of filtered) {\r\n const id = addOn.id as string;\r\n const label = addOn.name as string;\r\n const addOnImage = addOn.image as string | undefined;\r\n const file = await convertAddOnToFile(addOn);\r\n const seconds = file?.seconds || (addOn.seconds as number) || 10;\r\n const downloadUrl = file?.url;\r\n\r\n children.push({\r\n id,\r\n itemType: \"action\",\r\n relatedId: id,\r\n label,\r\n seconds,\r\n children: [{ id: id + \"-file\", itemType: \"file\", label, seconds, downloadUrl, thumbnail: addOnImage }]\r\n });\r\n }\r\n\r\n if (children.length === 0) return null;\r\n\r\n const sectionItem: InstructionItem = { id: `category-${decodedCategory}`, itemType: \"section\", label: decodedCategory, children };\r\n return { name: decodedCategory, items: [sectionItem] };\r\n}\r\n","import { ContentProviderConfig, ContentProviderAuthData, ContentItem, ContentFile, ProviderLogos, FeedVenueInterface, Instructions, VenueActionsResponseInterface, ProviderCapabilities, IProvider, AuthType } from \"../../interfaces\";\r\nimport { detectMediaType } from \"../../utils\";\r\nimport { parsePath, getSegment } from \"../../pathUtils\";\r\nimport { apiRequest, API_BASE } from \"./LessonsChurchApi\";\r\nimport { convertAddOnToFile, convertAddOnCategoryToInstructions, buildSectionActionsMap, processInstructionItem } from \"./LessonsChurchConverters\";\r\n\r\n/**\r\n * LessonsChurch Provider\r\n *\r\n * Path structure:\r\n * /lessons -> programs\r\n * /lessons/{programId} -> studies\r\n * /lessons/{programId}/{studyId} -> lessons\r\n * /lessons/{programId}/{studyId}/{lessonId} -> venues\r\n * /lessons/{programId}/{studyId}/{lessonId}/{venueId} -> playlist files\r\n *\r\n * /addons -> categories\r\n * /addons/{category} -> add-on files\r\n */\r\nexport class LessonsChurchProvider implements IProvider {\r\n readonly id = \"lessonschurch\";\r\n readonly name = \"Lessons.church\";\r\n\r\n readonly logos: ProviderLogos = { light: \"https://lessons.church/images/logo.png\", dark: \"https://lessons.church/images/logo-dark.png\" };\r\n\r\n readonly config: ContentProviderConfig = { id: \"lessonschurch\", name: \"Lessons.church\", apiBase: API_BASE, oauthBase: \"\", clientId: \"\", scopes: [], endpoints: { programs: \"/programs/public\", studies: (programId: string) => `/studies/public/program/${programId}`, lessons: (studyId: string) => `/lessons/public/study/${studyId}`, venues: (lessonId: string) => `/venues/public/lesson/${lessonId}`, playlist: (venueId: string) => `/venues/playlist/${venueId}`, feed: (venueId: string) => `/venues/public/feed/${venueId}`, addOns: \"/addOns/public\", addOnDetail: (id: string) => `/addOns/public/${id}` } };\r\n\r\n readonly requiresAuth = false;\r\n readonly authTypes: AuthType[] = [\"none\"];\r\n readonly capabilities: ProviderCapabilities = { browse: true, presentations: true, playlist: true, instructions: true, mediaLicensing: false };\r\n\r\n async getPlaylist(path: string, _auth?: ContentProviderAuthData | null, resolution?: number): Promise<ContentFile[] | null> {\r\n const venueId = getSegment(path, 4);\r\n if (!venueId) return null;\r\n\r\n let apiPath = `/venues/playlist/${venueId}`;\r\n if (resolution) apiPath += `?resolution=${resolution}`;\r\n\r\n const response = await apiRequest<Record<string, unknown>>(apiPath);\r\n if (!response) return null;\r\n\r\n const files: ContentFile[] = [];\r\n const messages = (response.messages || []) as Record<string, unknown>[];\r\n\r\n let fileIndex = 0;\r\n for (const msg of messages) {\r\n const msgFiles = (msg.files || []) as Record<string, unknown>[];\r\n for (let i = 0; i < msgFiles.length; i++) {\r\n const f = msgFiles[i];\r\n if (!f.url) continue;\r\n\r\n const url = f.url as string;\r\n const fileId = (f.id as string) || `playlist-${fileIndex++}`;\r\n\r\n files.push({ type: \"file\", id: fileId, title: (f.name || msg.name) as string, mediaType: detectMediaType(url, f.fileType as string | undefined), thumbnail: (f.thumbnail as string | undefined) || (response.lessonImage as string | undefined), url, downloadUrl: url, seconds: f.seconds as number | undefined, loop: f.loop as boolean | undefined, loopVideo: f.loopVideo as boolean | undefined });\r\n }\r\n }\r\n\r\n return files.length > 0 ? files : null;\r\n }\r\n\r\n async browse(path?: string | null, _auth?: ContentProviderAuthData | null): Promise<ContentItem[]> {\r\n const { segments, depth } = parsePath(path);\r\n\r\n if (depth === 0) {\r\n return [\r\n { type: \"folder\" as const, id: \"lessons-root\", title: \"Lessons\", path: \"/lessons\" },\r\n { type: \"folder\" as const, id: \"addons-root\", title: \"Add-Ons\", path: \"/addons\" }\r\n ];\r\n }\r\n\r\n const root = segments[0];\r\n if (root === \"lessons\") return this.browseLessons(path!, segments);\r\n if (root === \"addons\") return this.browseAddOns(path!, segments);\r\n return [];\r\n }\r\n\r\n private async browseLessons(currentPath: string, segments: string[]): Promise<ContentItem[]> {\r\n const depth = segments.length;\r\n\r\n if (depth === 1) return this.getPrograms();\r\n if (depth === 2) return this.getStudies(segments[1], currentPath);\r\n if (depth === 3) return this.getLessons(segments[2], currentPath);\r\n if (depth === 4) return this.getVenues(segments[3], currentPath);\r\n if (depth === 5) return this.getPlaylistFiles(segments[4]);\r\n\r\n return [];\r\n }\r\n\r\n private async getPrograms(): Promise<ContentItem[]> {\r\n const response = await apiRequest<Record<string, unknown>[]>(this.config.endpoints.programs as string);\r\n if (!response) return [];\r\n\r\n const programs = Array.isArray(response) ? response : [];\r\n return programs.map((p) => ({\r\n type: \"folder\" as const,\r\n id: p.id as string,\r\n title: p.name as string,\r\n thumbnail: p.image as string | undefined,\r\n path: `/lessons/${p.id}`\r\n }));\r\n }\r\n\r\n private async getStudies(programId: string, currentPath: string): Promise<ContentItem[]> {\r\n const pathFn = this.config.endpoints.studies as (id: string) => string;\r\n const response = await apiRequest<Record<string, unknown>[]>(pathFn(programId));\r\n if (!response) return [];\r\n\r\n const studies = Array.isArray(response) ? response : [];\r\n return studies.map((s) => ({\r\n type: \"folder\" as const,\r\n id: s.id as string,\r\n title: s.name as string,\r\n thumbnail: s.image as string | undefined,\r\n path: `${currentPath}/${s.id}`\r\n }));\r\n }\r\n\r\n private async getLessons(studyId: string, currentPath: string): Promise<ContentItem[]> {\r\n const pathFn = this.config.endpoints.lessons as (id: string) => string;\r\n const response = await apiRequest<Record<string, unknown>[]>(pathFn(studyId));\r\n if (!response) return [];\r\n\r\n const lessons = Array.isArray(response) ? response : [];\r\n return lessons.map((l) => ({\r\n type: \"folder\" as const,\r\n id: l.id as string,\r\n title: (l.name || l.title) as string,\r\n thumbnail: l.image as string | undefined,\r\n path: `${currentPath}/${l.id}`\r\n }));\r\n }\r\n\r\n private async getVenues(lessonId: string, currentPath: string): Promise<ContentItem[]> {\r\n const pathFn = this.config.endpoints.venues as (id: string) => string;\r\n const response = await apiRequest<Record<string, unknown>[]>(pathFn(lessonId));\r\n if (!response) return [];\r\n\r\n const lessonResponse = await apiRequest<Record<string, unknown>>(`/lessons/public/${lessonId}`);\r\n const lessonImage = lessonResponse?.image as string | undefined;\r\n\r\n const venues = Array.isArray(response) ? response : [];\r\n return venues.map((v) => ({\r\n type: \"folder\" as const,\r\n id: v.id as string,\r\n title: v.name as string,\r\n thumbnail: lessonImage,\r\n isLeaf: true,\r\n path: `${currentPath}/${v.id}`\r\n }));\r\n }\r\n\r\n private async getPlaylistFiles(venueId: string): Promise<ContentItem[]> {\r\n const files = await this.getPlaylist(`/lessons/_/_/_/${venueId}`, null);\r\n return files || [];\r\n }\r\n\r\n private async browseAddOns(_currentPath: string, segments: string[]): Promise<ContentItem[]> {\r\n const depth = segments.length;\r\n\r\n if (depth === 1) return this.getAddOnCategories();\r\n if (depth === 2) return this.getAddOnsByCategory(segments[1]);\r\n\r\n return [];\r\n }\r\n\r\n private async getAddOnCategories(): Promise<ContentItem[]> {\r\n const response = await apiRequest<Record<string, unknown>[]>(this.config.endpoints.addOns as string);\r\n if (!response) return [];\r\n\r\n const addOns = Array.isArray(response) ? response : [];\r\n const categories = Array.from(new Set(addOns.map((a) => a.category as string).filter(Boolean)));\r\n\r\n return categories.sort().map((category) => ({\r\n type: \"folder\" as const,\r\n id: `category-${category}`,\r\n title: category,\r\n isLeaf: true,\r\n path: `/addons/${encodeURIComponent(category)}`\r\n }));\r\n }\r\n\r\n private async getAddOnsByCategory(category: string): Promise<ContentItem[]> {\r\n const decodedCategory = decodeURIComponent(category);\r\n\r\n const response = await apiRequest<Record<string, unknown>[]>(this.config.endpoints.addOns as string);\r\n if (!response) return [];\r\n\r\n const allAddOns = Array.isArray(response) ? response : [];\r\n const filtered = allAddOns.filter((a) => a.category === decodedCategory);\r\n\r\n const files: ContentFile[] = [];\r\n for (const addOn of filtered) {\r\n const file = await convertAddOnToFile(addOn);\r\n if (file) files.push(file);\r\n }\r\n return files;\r\n }\r\n\r\n // async getPresentations(path: string, _auth?: ContentProviderAuthData | null): Promise<Plan | null> {\r\n // const venueId = getSegment(path, 4);\r\n // if (venueId) {\r\n // const venueData = await apiRequest<FeedVenueInterface>(`/venues/public/feed/${venueId}`);\r\n // if (!venueData) return null;\r\n // return convertVenueToPlan(venueData);\r\n // }\r\n\r\n // const { segments } = parsePath(path);\r\n // if (segments[0] === \"addons\" && segments.length === 2) {\r\n // return convertAddOnCategoryToPlan(segments[1]);\r\n // }\r\n\r\n // return null;\r\n // }\r\n\r\n async getInstructions(path: string, _auth?: ContentProviderAuthData | null): Promise<Instructions | null> {\r\n const venueId = getSegment(path, 4);\r\n if (venueId) {\r\n const [planItemsResponse, actionsResponse, feedResponse] = await Promise.all([\r\n apiRequest<{ venueName?: string; items?: Record<string, unknown>[] }>(`/venues/public/planItems/${venueId}`),\r\n apiRequest<VenueActionsResponseInterface>(`/venues/public/actions/${venueId}`),\r\n apiRequest<FeedVenueInterface>(`/venues/public/feed/${venueId}`)\r\n ]);\r\n\r\n if (!planItemsResponse) return null;\r\n\r\n const lessonImage = feedResponse?.lessonImage;\r\n const sectionActionsMap = buildSectionActionsMap(actionsResponse, lessonImage, feedResponse);\r\n\r\n return { name: planItemsResponse.venueName, items: (planItemsResponse.items || []).map(item => processInstructionItem(item, sectionActionsMap, lessonImage)) };\r\n }\r\n\r\n const { segments } = parsePath(path);\r\n if (segments[0] === \"addons\" && segments.length === 2) {\r\n return convertAddOnCategoryToInstructions(segments[1]);\r\n }\r\n\r\n return null;\r\n }\r\n\r\n supportsDeviceFlow(): boolean {\r\n return false;\r\n }\r\n}\r\n","import { ContentProviderAuthData, ContentProviderConfig, DeviceAuthorizationResponse, DeviceFlowPollResult } from \"../../interfaces\";\r\n\r\nasync function generateCodeChallenge(verifier: string): Promise<string> {\r\n const encoder = new TextEncoder();\r\n const data = encoder.encode(verifier);\r\n const hashBuffer = await crypto.subtle.digest(\"SHA-256\", data);\r\n const hashArray = new Uint8Array(hashBuffer);\r\n\r\n let binary = \"\";\r\n for (let i = 0; i < hashArray.length; i++) {\r\n binary += String.fromCharCode(hashArray[i]);\r\n }\r\n const base64 = btoa(binary);\r\n return base64.replace(/\\+/g, \"-\").replace(/\\//g, \"_\").replace(/=+$/, \"\");\r\n}\r\n\r\nexport async function buildB1AuthUrl(config: ContentProviderConfig, appBase: string, redirectUri: string, codeVerifier: string, state?: string): Promise<{ url: string; challengeMethod: string }> {\r\n const codeChallenge = await generateCodeChallenge(codeVerifier);\r\n const oauthParams = new URLSearchParams({\r\n response_type: \"code\",\r\n client_id: config.clientId,\r\n redirect_uri: redirectUri,\r\n scope: config.scopes.join(\" \"),\r\n code_challenge: codeChallenge,\r\n code_challenge_method: \"S256\",\r\n state: state || \"\"\r\n });\r\n const url = `${appBase}/oauth?${oauthParams.toString()}`;\r\n return { url, challengeMethod: \"S256\" };\r\n}\r\n\r\nexport async function exchangeCodeForTokensWithPKCE(config: ContentProviderConfig, code: string, redirectUri: string, codeVerifier: string): Promise<ContentProviderAuthData | null> {\r\n try {\r\n const params = { grant_type: \"authorization_code\", code, client_id: config.clientId, code_verifier: codeVerifier, redirect_uri: redirectUri };\r\n\r\n const tokenUrl = `${config.oauthBase}/token`;\r\n const response = await fetch(tokenUrl, { method: \"POST\", headers: { \"Content-Type\": \"application/json\" }, body: JSON.stringify(params) });\r\n\r\n if (!response.ok) {\r\n return null;\r\n }\r\n\r\n const data = await response.json();\r\n return { access_token: data.access_token, refresh_token: data.refresh_token, token_type: data.token_type || \"Bearer\", created_at: Math.floor(Date.now() / 1000), expires_in: data.expires_in, scope: data.scope || config.scopes.join(\" \") };\r\n } catch {\r\n return null;\r\n }\r\n}\r\n\r\nexport async function exchangeCodeForTokensWithSecret(config: ContentProviderConfig, code: string, redirectUri: string, clientSecret: string): Promise<ContentProviderAuthData | null> {\r\n try {\r\n const params = { grant_type: \"authorization_code\", code, client_id: config.clientId, client_secret: clientSecret, redirect_uri: redirectUri };\r\n\r\n const tokenUrl = `${config.oauthBase}/token`;\r\n const response = await fetch(tokenUrl, { method: \"POST\", headers: { \"Content-Type\": \"application/json\" }, body: JSON.stringify(params) });\r\n\r\n if (!response.ok) {\r\n return null;\r\n }\r\n\r\n const data = await response.json();\r\n return { access_token: data.access_token, refresh_token: data.refresh_token, token_type: data.token_type || \"Bearer\", created_at: Math.floor(Date.now() / 1000), expires_in: data.expires_in, scope: data.scope || config.scopes.join(\" \") };\r\n } catch {\r\n return null;\r\n }\r\n}\r\n\r\nexport async function refreshTokenWithSecret(config: ContentProviderConfig, auth: ContentProviderAuthData, clientSecret: string): Promise<ContentProviderAuthData | null> {\r\n if (!auth.refresh_token) return null;\r\n\r\n try {\r\n const params = { grant_type: \"refresh_token\", refresh_token: auth.refresh_token, client_id: config.clientId, client_secret: clientSecret };\r\n const response = await fetch(`${config.oauthBase}/token`, { method: \"POST\", headers: { \"Content-Type\": \"application/json\" }, body: JSON.stringify(params) });\r\n if (!response.ok) return null;\r\n\r\n const data = await response.json();\r\n return { access_token: data.access_token, refresh_token: data.refresh_token || auth.refresh_token, token_type: data.token_type || \"Bearer\", created_at: Math.floor(Date.now() / 1000), expires_in: data.expires_in, scope: data.scope || auth.scope };\r\n } catch {\r\n return null;\r\n }\r\n}\r\n\r\nexport async function initiateDeviceFlow(config: ContentProviderConfig): Promise<DeviceAuthorizationResponse | null> {\r\n if (!config.supportsDeviceFlow || !config.deviceAuthEndpoint) return null;\r\n\r\n try {\r\n const response = await fetch(`${config.oauthBase}${config.deviceAuthEndpoint}`, { method: \"POST\", headers: { \"Content-Type\": \"application/json\" }, body: JSON.stringify({ client_id: config.clientId, scope: config.scopes.join(\" \") }) });\r\n\r\n if (!response.ok) {\r\n return null;\r\n }\r\n\r\n return await response.json();\r\n } catch {\r\n return null;\r\n }\r\n}\r\n\r\nexport async function pollDeviceFlowToken(config: ContentProviderConfig, deviceCode: string): Promise<DeviceFlowPollResult> {\r\n try {\r\n const response = await fetch(`${config.oauthBase}/token`, { method: \"POST\", headers: { \"Content-Type\": \"application/json\" }, body: JSON.stringify({ grant_type: \"urn:ietf:params:oauth:grant-type:device_code\", device_code: deviceCode, client_id: config.clientId }) });\r\n\r\n if (response.ok) {\r\n const data = await response.json();\r\n return { access_token: data.access_token, refresh_token: data.refresh_token, token_type: data.token_type || \"Bearer\", created_at: Math.floor(Date.now() / 1000), expires_in: data.expires_in, scope: data.scope || config.scopes.join(\" \") };\r\n }\r\n\r\n const errorData = await response.json();\r\n switch (errorData.error) {\r\n case \"authorization_pending\": return { error: \"authorization_pending\" };\r\n case \"slow_down\": return { error: \"slow_down\", shouldSlowDown: true };\r\n case \"expired_token\": return null;\r\n case \"access_denied\": return null;\r\n default: return null;\r\n }\r\n } catch {\r\n return { error: \"network_error\" };\r\n }\r\n}\r\n","import { ContentProviderAuthData, FeedVenueInterface, ContentItem, Plan, ContentFile, Instructions, VenueActionsResponseInterface } from \"../../interfaces\";\r\nimport { ArrangementKeyResponse, B1Ministry, B1PlanType, B1Plan } from \"./B1ChurchTypes\";\r\n\r\nexport const API_BASE = \"https://api.churchapps.org\";\r\n\r\nexport type ProxyMethod = \"browse\" | \"getPresentations\" | \"getPlaylist\" | \"getInstructions\";\r\n\r\nexport type ProxyResult<M extends ProxyMethod> =\r\n M extends \"browse\" ? ContentItem[] :\r\n M extends \"getPresentations\" ? Plan :\r\n M extends \"getPlaylist\" ? ContentFile[] :\r\n M extends \"getInstructions\" ? Instructions :\r\n never;\r\nexport const LESSONS_API_BASE = \"https://api.lessons.church\";\r\nexport const CONTENT_API_BASE = \"https://contentapi.churchapps.org\";\r\n\r\nasync function authFetch<T>(url: string, auth: ContentProviderAuthData | null | undefined): Promise<T | null> {\r\n try {\r\n const headers: Record<string, string> = { Accept: \"application/json\" };\r\n if (auth) {\r\n headers[\"Authorization\"] = `Bearer ${auth.access_token}`;\r\n }\r\n const response = await fetch(url, { method: \"GET\", headers });\r\n if (!response.ok) return null;\r\n return await response.json();\r\n } catch {\r\n return null;\r\n }\r\n}\r\n\r\nexport async function fetchMinistries(auth: ContentProviderAuthData | null | undefined): Promise<B1Ministry[]> {\r\n const result = await authFetch<B1Ministry[]>(`${API_BASE}/membership/groups/tag/ministry`, auth);\r\n return result || [];\r\n}\r\n\r\nexport async function fetchPlanTypes(ministryId: string, auth: ContentProviderAuthData | null | undefined): Promise<B1PlanType[]> {\r\n const result = await authFetch<B1PlanType[]>(`${API_BASE}/doing/planTypes/ministryId/${ministryId}`, auth);\r\n return result || [];\r\n}\r\n\r\nexport async function fetchPlans(planTypeId: string, auth: ContentProviderAuthData | null | undefined): Promise<B1Plan[]> {\r\n const result = await authFetch<B1Plan[]>(`${API_BASE}/doing/plans/types/${planTypeId}`, auth);\r\n return result || [];\r\n}\r\n\r\nexport async function fetchVenueFeed(venueId: string): Promise<FeedVenueInterface | null> {\r\n try {\r\n const url = `${LESSONS_API_BASE}/venues/public/feed/${venueId}`;\r\n const response = await fetch(url, { method: \"GET\", headers: { Accept: \"application/json\" } });\r\n if (!response.ok) return null;\r\n return await response.json();\r\n } catch {\r\n return null;\r\n }\r\n}\r\n\r\nexport async function fetchVenuePlanItems(venueId: string): Promise<{ venueName?: string; items?: Record<string, unknown>[] } | null> {\r\n try {\r\n const url = `${LESSONS_API_BASE}/venues/public/planItems/${venueId}`;\r\n const response = await fetch(url, { method: \"GET\", headers: { Accept: \"application/json\" } });\r\n if (!response.ok) return null;\r\n return await response.json();\r\n } catch {\r\n return null;\r\n }\r\n}\r\n\r\nexport async function fetchVenueActions(venueId: string): Promise<VenueActionsResponseInterface | null> {\r\n try {\r\n const url = `${LESSONS_API_BASE}/venues/public/actions/${venueId}`;\r\n const response = await fetch(url, { method: \"GET\", headers: { Accept: \"application/json\" } });\r\n if (!response.ok) return null;\r\n return await response.json();\r\n } catch {\r\n return null;\r\n }\r\n}\r\n\r\nexport async function fetchArrangementKey(churchId: string, arrangementId: string): Promise<ArrangementKeyResponse | null> {\r\n try {\r\n const url = `${CONTENT_API_BASE}/arrangementKeys/presenter/${churchId}/${arrangementId}`;\r\n const response = await fetch(url, { method: \"GET\", headers: { Accept: \"application/json\" } });\r\n if (!response.ok) return null;\r\n return await response.json();\r\n } catch {\r\n return null;\r\n }\r\n}\r\n\r\nexport async function fetchFromProviderProxy<M extends ProxyMethod>(\r\n method: M,\r\n ministryId: string,\r\n providerId: string,\r\n path: string,\r\n authData?: ContentProviderAuthData | null,\r\n resolution?: number\r\n): Promise<ProxyResult<M> | null> {\r\n try {\r\n const url = `${API_BASE}/doing/providerProxy/${method}`;\r\n const headers: Record<string, string> = {\r\n \"Content-Type\": \"application/json\",\r\n Accept: \"application/json\"\r\n };\r\n if (authData) {\r\n headers[\"Authorization\"] = `Bearer ${authData.access_token}`;\r\n }\r\n\r\n const body: Record<string, unknown> = { ministryId, providerId, path };\r\n if (resolution !== undefined) body.resolution = resolution;\r\n\r\n const response = await fetch(url, {\r\n method: \"POST\",\r\n headers,\r\n body: JSON.stringify(body)\r\n });\r\n\r\n if (!response.ok) return null;\r\n return await response.json();\r\n } catch {\r\n return null;\r\n }\r\n}\r\n","import { ContentItem, ContentFile, FeedVenueInterface, PlanPresentation, InstructionItem, VenueActionsResponseInterface } from \"../../interfaces\";\r\nimport { detectMediaType } from \"../../utils\";\r\nimport { B1Ministry, B1PlanType, B1Plan, B1PlanItem, ArrangementKeyResponse } from \"./B1ChurchTypes\";\r\nimport { fetchArrangementKey } from \"./B1ChurchApi\";\r\n\r\nexport function ministryToFolder(ministry: B1Ministry): ContentItem {\r\n return { type: \"folder\" as const, id: ministry.id, title: ministry.name, path: \"\", thumbnail: ministry.photoUrl };\r\n}\r\n\r\nexport function planTypeToFolder(planType: B1PlanType): ContentItem {\r\n return { type: \"folder\" as const, id: planType.id, title: planType.name, path: \"\" };\r\n}\r\n\r\nexport function planToFolder(plan: B1Plan): ContentItem {\r\n return { type: \"folder\" as const, id: plan.id, title: plan.name, path: \"\", isLeaf: true };\r\n}\r\n\r\nexport function sectionToFolder(section: B1PlanItem): ContentItem {\r\n return { type: \"folder\" as const, id: section.id, title: section.label || \"Section\", path: \"\" };\r\n}\r\n\r\nexport async function planItemToPresentation(item: B1PlanItem, venueFeed: FeedVenueInterface | null): Promise<PlanPresentation | null> {\r\n const itemType = item.itemType;\r\n\r\n if (itemType === \"arrangementKey\" && item.churchId && item.relatedId) {\r\n const songData = await fetchArrangementKey(item.churchId, item.relatedId);\r\n if (songData) return arrangementToPresentation(item, songData);\r\n }\r\n\r\n // Handle providerFile/providerPresentation items with a direct link\r\n if ((itemType === \"providerFile\" || itemType === \"providerPresentation\") && item.link) {\r\n const file: ContentFile = {\r\n type: \"file\",\r\n id: item.relatedId ?? item.id ?? \"unknown\",\r\n title: item.label || \"File\",\r\n mediaType: detectMediaType(item.link),\r\n url: item.link,\r\n seconds: item.seconds\r\n };\r\n return { id: item.id, name: item.label || \"File\", actionType: \"play\", files: [file] };\r\n }\r\n\r\n if ((itemType === \"lessonSection\" || itemType === \"section\" || itemType === \"providerSection\" || itemType === \"lessonAction\" || itemType === \"action\" || itemType === \"lessonAddOn\" || itemType === \"addon\") && venueFeed) {\r\n const files = getFilesFromVenueFeed(venueFeed, itemType, item.relatedId);\r\n if (files.length > 0) return { id: item.id, name: item.label || \"Lesson Content\", actionType: \"play\", files };\r\n }\r\n\r\n if (itemType === \"item\" || itemType === \"header\") {\r\n return { id: item.id, name: item.label || \"\", actionType: \"other\", files: [], providerData: { itemType, description: item.description, seconds: item.seconds } };\r\n }\r\n\r\n return null;\r\n}\r\n\r\nfunction arrangementToPresentation(item: B1PlanItem, songData: ArrangementKeyResponse): PlanPresentation {\r\n const title = songData.songDetail?.title || item.label || \"Song\";\r\n return { id: item.id, name: title, actionType: \"other\", files: [], providerData: { itemType: \"song\", title, artist: songData.songDetail?.artist, lyrics: songData.arrangement?.lyrics, keySignature: songData.arrangementKey?.keySignature, arrangementName: songData.arrangement?.name, seconds: songData.songDetail?.seconds || item.seconds } };\r\n}\r\n\r\nexport function getFilesFromVenueFeed(venueFeed: FeedVenueInterface, itemType: string, relatedId?: string): ContentFile[] {\r\n const files: ContentFile[] = [];\r\n\r\n if (!relatedId) return files;\r\n\r\n if (itemType === \"lessonSection\" || itemType === \"section\" || itemType === \"providerSection\") {\r\n for (const section of venueFeed.sections || []) {\r\n if (section.id === relatedId) {\r\n for (const action of section.actions || []) {\r\n const actionType = action.actionType?.toLowerCase();\r\n if (actionType === \"play\" || actionType === \"add-on\") {\r\n files.push(...convertFeedFiles(action.files || [], venueFeed.lessonImage));\r\n }\r\n }\r\n break;\r\n }\r\n }\r\n } else if (itemType === \"lessonAction\" || itemType === \"action\" || itemType === \"lessonAddOn\" || itemType === \"addon\") {\r\n for (const section of venueFeed.sections || []) {\r\n for (const action of section.actions || []) {\r\n if (action.id === relatedId) {\r\n files.push(...convertFeedFiles(action.files || [], venueFeed.lessonImage));\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n\r\n return files;\r\n}\r\n\r\nexport function convertFeedFiles(feedFiles: Array<{ id?: string; name?: string; url?: string; streamUrl?: string; seconds?: number; fileType?: string }>, thumbnailImage?: string): ContentFile[] {\r\n return feedFiles.filter(f => f.url).map(f => ({ type: \"file\" as const, id: f.id || \"\", title: f.name || \"\", mediaType: detectMediaType(f.url || \"\", f.fileType), thumbnail: thumbnailImage, url: f.url || \"\", seconds: f.seconds, streamUrl: f.streamUrl }));\r\n}\r\n\r\nexport function getFileFromProviderFileItem(item: B1PlanItem): ContentFile | null {\r\n // Handle both providerFile and providerPresentation items with direct links\r\n if ((item.itemType !== \"providerFile\" && item.itemType !== \"providerPresentation\") || !item.link) return null;\r\n return {\r\n type: \"file\",\r\n id: item.relatedId ?? item.id ?? \"unknown\",\r\n title: item.label || \"File\",\r\n mediaType: detectMediaType(item.link),\r\n url: item.link,\r\n seconds: item.seconds\r\n };\r\n}\r\n\r\nexport function planItemToInstruction(item: B1PlanItem, thumbnail?: string): InstructionItem {\r\n // Convert B1 API itemTypes to standardized short names\r\n let itemType: string | undefined = item.itemType;\r\n switch (item.itemType) {\r\n case \"lessonSection\": itemType = \"section\"; break;\r\n case \"lessonAction\": itemType = \"action\"; break;\r\n case \"lessonAddOn\": itemType = \"action\"; break;\r\n }\r\n\r\n const isFileType = itemType === \"file\" || (item.link && !item.children?.length);\r\n return {\r\n id: item.id,\n itemType,\n relatedId: item.relatedId,\n label: item.label,\r\n content: item.description,\n seconds: item.seconds,\n downloadUrl: item.link,\r\n thumbnail: isFileType ? thumbnail : undefined,\r\n children: item.children?.map(child => planItemToInstruction(child, thumbnail))\r\n };\r\n}\r\n\r\n/**\r\n * Generate default plan items from a venue feed when no plan items exist.\r\n * Creates a structure with one header containing all venue sections as children.\r\n */\r\nexport function venueFeedToDefaultPlanItems(venueFeed: FeedVenueInterface): B1PlanItem[] {\r\n const headerItem: B1PlanItem = {\r\n id: \"default-header\",\r\n label: venueFeed.lessonName || venueFeed.name || \"Lesson\",\r\n itemType: \"header\",\r\n children: []\r\n };\r\n\r\n for (const section of venueFeed.sections || []) {\r\n const sectionItem: B1PlanItem = {\r\n id: section.id || `section-${headerItem.children!.length}`,\r\n label: section.name || \"Section\",\r\n itemType: \"section\",\r\n relatedId: section.id,\r\n children: []\r\n };\r\n\r\n for (const action of section.actions || []) {\r\n const actionType = action.actionType?.toLowerCase();\r\n if (actionType === \"play\" || actionType === \"add-on\") {\r\n const actionItem: B1PlanItem = {\r\n id: action.id || `action-${sectionItem.children!.length}`,\r\n label: action.content || \"Action\",\r\n itemType: \"action\",\r\n relatedId: action.id\r\n };\r\n sectionItem.children!.push(actionItem);\r\n }\r\n }\r\n\r\n // Only add sections that have actions\r\n if (sectionItem.children!.length > 0) {\r\n headerItem.children!.push(sectionItem);\r\n }\r\n }\r\n\r\n return headerItem.children!.length > 0 ? [headerItem] : [];\r\n}\r\n\r\nfunction getEmbedUrl(apiType?: string, relatedId?: string): string | undefined {\r\n if (!relatedId) return undefined;\r\n const baseUrl = \"https://lessons.church\";\r\n switch (apiType) {\r\n case \"action\":\r\n case \"lessonAction\": return `${baseUrl}/embed/action/${relatedId}`;\r\n case \"addon\":\r\n case \"lessonAddOn\": return `${baseUrl}/embed/addon/${relatedId}`;\r\n case \"section\":\r\n case \"lessonSection\": return `${baseUrl}/embed/section/${relatedId}`;\r\n default: return undefined;\r\n }\r\n}\r\n\r\nexport function buildSectionActionsMap(actionsResponse: VenueActionsResponseInterface | null, thumbnail?: string): Map<string, InstructionItem[]> {\r\n const sectionActionsMap = new Map<string, InstructionItem[]>();\r\n if (actionsResponse?.sections) {\r\n for (const section of actionsResponse.sections) {\r\n if (section.id && section.actions) {\r\n sectionActionsMap.set(section.id, section.actions.map(action => {\r\n const downloadUrl = getEmbedUrl(\"action\", action.id);\r\n const seconds = action.seconds ?? 10;\r\n return {\r\n id: action.id,\r\n itemType: \"action\",\r\n relatedId: action.id,\r\n label: action.name,\r\n seconds,\r\n children: [\r\n {\r\n id: action.id + \"-file\",\r\n itemType: \"file\",\r\n label: action.name,\r\n seconds,\r\n downloadUrl,\r\n thumbnail\r\n }\r\n ]\r\n };\r\n }));\r\n }\r\n }\r\n }\r\n return sectionActionsMap;\r\n}\r\n\r\nexport function processVenueInstructionItem(item: Record<string, unknown>, sectionActionsMap: Map<string, InstructionItem[]>, thumbnail?: string): InstructionItem {\r\n const relatedId = item.relatedId as string | undefined;\r\n const rawItemType = item.itemType as string | undefined;\r\n\r\n // Normalize item types\r\n let itemType = rawItemType;\r\n if (itemType === \"lessonSection\") itemType = \"section\";\r\n if (itemType === \"lessonAction\") itemType = \"action\";\r\n if (itemType === \"lessonAddOn\") itemType = \"action\";\r\n\r\n const children = item.children as Record<string, unknown>[] | undefined;\r\n let processedChildren: InstructionItem[] | undefined;\r\n\r\n if (children) {\r\n processedChildren = children.map(child => {\r\n const childRelatedId = child.relatedId as string | undefined;\r\n const rawChildItemType = child.itemType as string | undefined;\r\n\r\n // Normalize child item types\r\n let childItemType = rawChildItemType;\r\n if (childItemType === \"lessonSection\") childItemType = \"section\";\r\n if (childItemType === \"lessonAction\") childItemType = \"action\";\r\n if (childItemType === \"lessonAddOn\") childItemType = \"action\";\r\n\r\n // If this child is a section with actions in the map, expand it\r\n if (childRelatedId && sectionActionsMap.has(childRelatedId)) {\r\n return {\r\n id: child.id as string | undefined,\r\n itemType: childItemType,\r\n relatedId: childRelatedId,\r\n label: child.label as string | undefined,\r\n content: child.description as string | undefined,\r\n seconds: child.seconds as number | undefined,\r\n children: sectionActionsMap.get(childRelatedId),\r\n downloadUrl: getEmbedUrl(rawChildItemType, childRelatedId)\r\n };\r\n }\r\n return processVenueInstructionItem(child, sectionActionsMap, thumbnail);\r\n });\r\n }\r\n\r\n const isFileType = itemType === \"file\" || (itemType === \"action\" && !children?.length);\r\n\r\n // Check if this item itself is a section that needs expansion\r\n let finalChildren = processedChildren;\r\n if (itemType === \"section\" && relatedId && sectionActionsMap.has(relatedId) && !processedChildren?.length) {\r\n finalChildren = sectionActionsMap.get(relatedId);\r\n }\r\n\r\n return {\r\n id: item.id as string | undefined,\r\n itemType,\r\n relatedId,\r\n label: item.label as string | undefined,\r\n content: item.description as string | undefined,\r\n seconds: item.seconds as number | undefined,\r\n children: finalChildren,\r\n downloadUrl: getEmbedUrl(rawItemType, relatedId),\r\n thumbnail: isFileType ? thumbnail : undefined\r\n };\r\n}\r\n","import { ContentProviderConfig, ContentProviderAuthData, ContentItem, ContentFile, ProviderLogos, Plan, PlanPresentation, Instructions, ProviderCapabilities, DeviceAuthorizationResponse, DeviceFlowPollResult, IProvider, AuthType, InstructionItem } from \"../../interfaces\";\r\nimport { parsePath } from \"../../pathUtils\";\r\nimport { navigateToPath } from \"../../instructionPathUtils\";\r\nimport { ApiHelper } from \"../../helpers\";\r\nimport { B1PlanItem } from \"./B1ChurchTypes\";\r\nimport * as B1ChurchAuth from \"./B1ChurchAuth\";\r\nimport { fetchMinistries, fetchPlanTypes, fetchPlans, fetchVenueFeed, fetchVenueActions, fetchFromProviderProxy, API_BASE } from \"./B1ChurchApi\";\r\nimport { ministryToFolder, planTypeToFolder, planToFolder, planItemToInstruction, getFilesFromVenueFeed, getFileFromProviderFileItem, buildSectionActionsMap } from \"./B1ChurchConverters\";\r\n\r\nfunction isExternalProviderItem(item: B1PlanItem): boolean {\r\n // An item is external if it has a non-b1church providerId and a providerPath\r\n if (!item.providerId || item.providerId === \"b1church\") return false;\r\n // If providerPath is set, it needs proxy expansion regardless of itemType\r\n if (item.providerPath) return true;\r\n // Otherwise check for provider-prefixed itemType (legacy support)\r\n const itemType = item.itemType || \"\";\r\n return itemType.startsWith(\"provider\");\r\n}\r\n\r\nexport class B1ChurchProvider implements IProvider {\r\n private readonly apiHelper = new ApiHelper();\r\n\r\n // Unified cache for external provider data to avoid duplicate calls across methods\r\n private readonly externalContentCache = {\r\n plans: new Map<string, Plan | null>(),\r\n instructions: new Map<string, Instructions | null>(),\r\n playlists: new Map<string, ContentFile[] | null>()\r\n };\r\n\r\n private async apiRequest<T>(path: string, authData?: ContentProviderAuthData | null): Promise<T | null> {\r\n return this.apiHelper.apiRequest<T>(this.config, this.id, path, authData);\r\n }\r\n readonly id = \"b1church\";\r\n readonly name = \"B1.Church\";\r\n\r\n readonly logos: ProviderLogos = { light: \"https://b1.church/b1-church-logo.png\", dark: \"https://b1.church/b1-church-logo.png\" };\r\n\r\n readonly config: ContentProviderConfig = { id: \"b1church\", name: \"B1.Church\", apiBase: `${API_BASE}/doing`, oauthBase: `${API_BASE}/membership/oauth`, clientId: \"nsowldn58dk\", scopes: [\"plans\"], supportsDeviceFlow: true, deviceAuthEndpoint: \"/device/authorize\", endpoints: { planItems: (churchId: string, planId: string) => `/planFeed/presenter/${churchId}/${planId}` } };\r\n\r\n private appBase = \"https://admin.b1.church\";\r\n\r\n readonly requiresAuth = true;\r\n readonly authTypes: AuthType[] = [\"oauth_pkce\", \"device_flow\"];\r\n readonly capabilities: ProviderCapabilities = { browse: true, presentations: true, playlist: true, instructions: true, mediaLicensing: false };\r\n\r\n async buildAuthUrl(codeVerifier: string, redirectUri: string, state?: string): Promise<{ url: string; challengeMethod: string }> {\r\n return B1ChurchAuth.buildB1AuthUrl(this.config, this.appBase, redirectUri, codeVerifier, state);\r\n }\r\n\r\n async exchangeCodeForTokensWithPKCE(code: string, redirectUri: string, codeVerifier: string): Promise<ContentProviderAuthData | null> {\r\n return B1ChurchAuth.exchangeCodeForTokensWithPKCE(this.config, code, redirectUri, codeVerifier);\r\n }\r\n\r\n async exchangeCodeForTokensWithSecret(code: string, redirectUri: string, clientSecret: string): Promise<ContentProviderAuthData | null> {\r\n return B1ChurchAuth.exchangeCodeForTokensWithSecret(this.config, code, redirectUri, clientSecret);\r\n }\r\n\r\n async refreshTokenWithSecret(authData: ContentProviderAuthData, clientSecret: string): Promise<ContentProviderAuthData | null> {\r\n return B1ChurchAuth.refreshTokenWithSecret(this.config, authData, clientSecret);\r\n }\r\n\r\n async initiateDeviceFlow(): Promise<DeviceAuthorizationResponse | null> {\r\n return B1ChurchAuth.initiateDeviceFlow(this.config);\r\n }\r\n\r\n async pollDeviceFlowToken(deviceCode: string): Promise<DeviceFlowPollResult> {\r\n return B1ChurchAuth.pollDeviceFlowToken(this.config, deviceCode);\r\n }\r\n\r\n async browse(path?: string | null, authData?: ContentProviderAuthData | null): Promise<ContentItem[]> {\r\n const { segments, depth } = parsePath(path);\r\n\r\n if (depth === 0) {\r\n return [\n {\r\n type: \"folder\" as const,\r\n id: \"ministries-root\",\r\n title: \"Ministries\",\r\n path: \"/ministries\"\r\n }\n ];\r\n }\r\n\r\n const root = segments[0];\r\n if (root !== \"ministries\") return [];\r\n\r\n // /ministries -> list all ministries\r\n if (depth === 1) {\r\n const ministries = await fetchMinistries(authData);\r\n return ministries.map(m => {\r\n const folder = ministryToFolder(m);\r\n return { ...folder, path: `/ministries/${m.id}` };\r\n });\r\n }\r\n\r\n // /ministries/{ministryId} -> list plan types\r\n if (depth === 2) {\r\n const ministryId = segments[1];\r\n const planTypes = await fetchPlanTypes(ministryId, authData);\r\n return planTypes.map(pt => {\r\n const folder = planTypeToFolder(pt);\r\n return { ...folder, path: `/ministries/${ministryId}/${pt.id}` };\r\n });\r\n }\r\n\r\n // /ministries/{ministryId}/{planTypeId} -> list plans\r\n if (depth === 3) {\r\n const ministryId = segments[1];\r\n const planTypeId = segments[2];\r\n const plans = await fetchPlans(planTypeId, authData);\r\n return plans.map(p => {\r\n const folder = planToFolder(p);\r\n return {\r\n ...folder,\r\n isLeaf: true,\r\n path: `/ministries/${ministryId}/${planTypeId}/${p.id}`\r\n };\r\n });\r\n }\r\n\r\n return [];\r\n }\r\n\r\n // async getPresentations(path: string, authData?: ContentProviderAuthData | null): Promise<Plan | null> {\r\n // const { segments, depth } = parsePath(path);\r\n\r\n // if (depth < 4 || segments[0] !== \"ministries\") return null;\r\n\r\n // const ministryId = segments[1];\r\n // const planId = segments[3];\r\n // const planTypeId = segments[2];\r\n\r\n // // Need to fetch plan details to get churchId and contentId\r\n // const plans = await fetchPlans(planTypeId, authData);\r\n // const planFolder = plans.find(p => p.id === planId);\r\n // if (!planFolder) return null;\r\n\r\n // const churchId = planFolder.churchId;\r\n // const venueId = planFolder.contentId;\r\n // const planTitle = planFolder.name || \"Plan\";\r\n\r\n // if (!churchId) {\r\n // console.warn(\"[B1Church getPresentations] planFolder missing churchId:\", planFolder.id);\r\n // return null;\r\n // }\r\n\r\n // const pathFn = this.config.endpoints.planItems as (churchId: string, planId: string) => string;\r\n // const planItems = await this.apiRequest<B1PlanItem[]>(pathFn(churchId, planId), authData);\r\n\r\n // // If no planItems but plan has associated provider content, fetch from that provider\r\n // if ((!planItems || planItems.length === 0) && planFolder.providerId && planFolder.providerPlanId) {\r\n // const externalPlan = await fetchFromProviderProxy(\r\n // \"getPresentations\",\r\n // ministryId,\r\n // planFolder.providerId,\r\n // planFolder.providerPlanId,\r\n // authData\r\n // );\r\n // if (externalPlan) {\r\n // return { id: planId, name: planTitle, sections: externalPlan.sections, allFiles: externalPlan.allFiles };\r\n // }\r\n // }\r\n\r\n // if (!planItems || !Array.isArray(planItems)) return null;\r\n\r\n // const venueFeed = venueId ? await fetchVenueFeed(venueId) : null;\r\n\r\n // const sections: PlanSection[] = [];\r\n // const allFiles: ContentFile[] = [];\r\n\r\n // for (const sectionItem of planItems) {\r\n // const presentations: PlanPresentation[] = [];\r\n\r\n // for (const child of sectionItem.children || []) {\r\n // // Try external provider resolution first (cached, uses providerContentPath)\r\n // if (isExternalProviderItem(child) && child.providerId && child.providerPath) {\r\n // const cacheKey = `${child.providerId}:${child.providerPath}`;\r\n\r\n // let externalPlan = this.externalContentCache.plans.get(cacheKey);\r\n // if (externalPlan === undefined) {\r\n // externalPlan = await fetchFromProviderProxy(\r\n // \"getPresentations\",\r\n // ministryId,\r\n // child.providerId,\r\n // child.providerPath,\r\n // authData\r\n // );\r\n // this.externalContentCache.plans.set(cacheKey, externalPlan);\r\n // }\r\n\r\n // if (externalPlan) {\r\n // if (child.providerContentPath) {\r\n // // Fetch instructions to enable path-based lookup (with caching)\r\n // let externalInstructions = this.externalContentCache.instructions.get(cacheKey);\r\n // if (externalInstructions === undefined) {\r\n // externalInstructions = await fetchFromProviderProxy(\r\n // \"getInstructions\",\r\n // ministryId,\r\n // child.providerId,\r\n // child.providerPath,\r\n // authData\r\n // );\r\n // this.externalContentCache.instructions.set(cacheKey, externalInstructions);\r\n // }\r\n // // Find and use only the specific presentation\r\n // const matchingPresentation = this.findPresentationByPath(externalPlan, externalInstructions, child.providerContentPath);\r\n // if (matchingPresentation) {\r\n // presentations.push(matchingPresentation);\r\n // if (Array.isArray(matchingPresentation.files)) {\r\n // allFiles.push(...matchingPresentation.files);\r\n // }\r\n // }\r\n // } else {\r\n // // Add all presentations from the external plan\r\n // for (const section of externalPlan.sections || []) {\r\n // if (Array.isArray(section.presentations)) {\r\n // presentations.push(...section.presentations);\r\n // }\r\n // }\r\n // if (Array.isArray(externalPlan.allFiles)) {\r\n // allFiles.push(...externalPlan.allFiles);\r\n // }\r\n // }\r\n // }\r\n // } else {\r\n // // Handle internal items (venue feed sections, link-based files, etc.)\r\n // const presentation = await planItemToPresentation(child, venueFeed);\r\n // if (presentation) {\r\n // presentations.push(presentation);\r\n // allFiles.push(...presentation.files);\r\n // }\r\n // }\r\n // }\r\n\r\n // if (presentations.length > 0 || sectionItem.label) {\r\n // sections.push({ id: sectionItem.id, name: sectionItem.label || \"Section\", presentations });\r\n // }\r\n // }\r\n\r\n // return { id: planId, name: planTitle, sections, allFiles };\r\n // }\r\n\r\n async getInstructions(path: string, authData?: ContentProviderAuthData | null): Promise<Instructions | null> {\r\n const { segments, depth } = parsePath(path);\r\n\r\n if (depth < 4 || segments[0] !== \"ministries\") return null;\r\n\r\n const ministryId = segments[1];\r\n const planId = segments[3];\r\n const planTypeId = segments[2];\r\n\r\n // Need to fetch plan details to get churchId and contentId\r\n const plans = await fetchPlans(planTypeId, authData);\r\n const planFolder = plans.find(p => p.id === planId);\r\n if (!planFolder) return null;\r\n\r\n const churchId = planFolder.churchId;\r\n const venueId = planFolder.contentId;\r\n const planTitle = planFolder.name || \"Plan\";\r\n\r\n if (!churchId) {\r\n console.warn(\"[B1Church getInstructions] planFolder missing churchId:\", planFolder.id);\r\n return null;\r\n }\r\n\r\n const pathFn = this.config.endpoints.planItems as (churchId: string, planId: string) => string;\r\n const planItems = await this.apiRequest<B1PlanItem[]>(pathFn(churchId, planId), authData);\r\n\r\n // If no planItems but plan has associated provider content, fetch from that provider\r\n if ((!planItems || planItems.length === 0) && planFolder.providerId && planFolder.providerPlanId) {\r\n const externalInstructions = await fetchFromProviderProxy(\r\n \"getInstructions\",\r\n ministryId,\r\n planFolder.providerId,\r\n planFolder.providerPlanId,\r\n authData\r\n );\r\n if (externalInstructions) {\r\n return { name: planTitle, items: externalInstructions.items };\r\n }\r\n }\r\n\r\n if (!planItems || !Array.isArray(planItems)) return null;\r\n\r\n // Fetch venue actions and feed to expand section items and get thumbnail\r\n let sectionActionsMap = new Map<string, import(\"../../interfaces\").InstructionItem[]>();\r\n let lessonImage: string | undefined;\r\n if (venueId) {\r\n const [venueActions, venueFeed] = await Promise.all([\r\n fetchVenueActions(venueId),\r\n fetchVenueFeed(venueId)\r\n ]);\r\n lessonImage = venueFeed?.lessonImage;\r\n sectionActionsMap = buildSectionActionsMap(venueActions, lessonImage);\r\n }\r\n\r\n // Process items, handling external providers\r\n const processedItems = await this.processInstructionItems(planItems, ministryId, authData, sectionActionsMap, lessonImage);\r\n return { name: planTitle, items: processedItems };\r\n }\r\n\r\n private async processInstructionItems(\r\n items: B1PlanItem[],\r\n ministryId: string,\r\n authData?: ContentProviderAuthData | null,\r\n sectionActionsMap?: Map<string, import(\"../../interfaces\").InstructionItem[]>,\r\n thumbnail?: string\r\n ): Promise<import(\"../../interfaces\").InstructionItem[]> {\r\n const result: import(\"../../interfaces\").InstructionItem[] = [];\r\n\r\n for (const item of items) {\r\n // Convert the item first\r\n const instructionItem = planItemToInstruction(item, thumbnail);\r\n\r\n // Check if this is a section that can be expanded from the local sectionActionsMap\r\n const itemType = item.itemType;\r\n const isSectionType = itemType === \"section\" || itemType === \"lessonSection\" || itemType === \"providerSection\";\r\n const canExpandLocally = isSectionType && sectionActionsMap && item.relatedId && sectionActionsMap.has(item.relatedId);\r\n\r\n // Check if children contain sections that can be expanded locally\r\n const hasLocallyExpandableChildren = item.children && item.children.length > 0 && sectionActionsMap && sectionActionsMap.size > 0 &&\r\n item.children.some(child => {\r\n const childType = child.itemType;\r\n return (childType === \"section\" || childType === \"lessonSection\" || childType === \"providerSection\") &&\r\n child.relatedId && sectionActionsMap.has(child.relatedId);\r\n });\r\n\r\n if (canExpandLocally && item.relatedId) {\r\n // Expand section items with actions from sectionActionsMap\r\n const sectionActions = sectionActionsMap!.get(item.relatedId);\r\n if (sectionActions) {\r\n instructionItem.children = sectionActions;\r\n }\r\n } else if ((itemType === \"providerFile\" || itemType === \"providerPresentation\") && item.link) {\r\n // providerFile/providerPresentation items with a link are already complete - use the link as embedUrl\r\n // The embedUrl is already set by planItemToInstruction, no children needed\r\n } else if (hasLocallyExpandableChildren) {\r\n // Recurse into children that can be expanded locally (don't fetch from external)\r\n instructionItem.children = await this.processInstructionItems(item.children!, ministryId, authData, sectionActionsMap, thumbnail);\r\n } else if (isExternalProviderItem(item) && item.providerId && item.providerPath) {\r\n // Fetch expanded instructions from external provider\r\n const externalInstructions = await fetchFromProviderProxy(\r\n \"getInstructions\",\r\n ministryId,\r\n item.providerId,\r\n item.providerPath,\r\n authData\r\n );\r\n if (externalInstructions) {\r\n // If providerContentPath is set, find and use only that specific item's children\r\n if (item.providerContentPath) {\r\n const matchingItem = this.findItemByPath(externalInstructions, item.providerContentPath);\r\n if (matchingItem?.children) {\r\n instructionItem.children = matchingItem.children;\r\n }\r\n } else {\r\n // Use all items from external provider as children\r\n instructionItem.children = externalInstructions.items;\r\n }\r\n }\r\n } else if (item.children && item.children.length > 0) {\r\n // Recursively process children for internal items\r\n instructionItem.children = await this.processInstructionItems(item.children, ministryId, authData, sectionActionsMap, thumbnail);\r\n }\r\n\r\n result.push(instructionItem);\r\n }\r\n\r\n return result;\r\n }\r\n\r\n private findItemByPath(instructions: Instructions | null, path?: string): InstructionItem | null {\r\n if (!path || !instructions) return null;\r\n return navigateToPath(instructions, path);\r\n }\r\n\r\n private findPresentationByPath(plan: Plan, instructions: Instructions | null, path?: string): PlanPresentation | null {\r\n if (!path || !instructions) return null;\r\n const item = navigateToPath(instructions, path);\r\n if (!item?.relatedId && !item?.id) return null;\r\n const presentationId = item.relatedId || item.id;\r\n for (const section of plan.sections) {\r\n for (const presentation of section.presentations) {\r\n if (presentation.id === presentationId) return presentation;\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n async getPlaylist(path: string, authData?: ContentProviderAuthData | null, resolution?: number): Promise<ContentFile[] | null> {\r\n const { segments, depth } = parsePath(path);\r\n\r\n if (depth < 4 || segments[0] !== \"ministries\") return null;\r\n\r\n const ministryId = segments[1];\r\n const planId = segments[3];\r\n const planTypeId = segments[2];\r\n\r\n // Need to fetch plan details to get churchId and contentId\r\n const plans = await fetchPlans(planTypeId, authData);\r\n const planFolder = plans.find(p => p.id === planId);\r\n if (!planFolder) return null;\r\n\r\n const churchId = planFolder.churchId;\r\n const venueId = planFolder.contentId;\r\n\r\n if (!churchId) {\r\n console.warn(\"[B1Church getPlaylist] planFolder missing churchId:\", planFolder.id);\r\n return null;\r\n }\r\n\r\n const pathFn = this.config.endpoints.planItems as (churchId: string, planId: string) => string;\r\n const planItems = await this.apiRequest<B1PlanItem[]>(pathFn(churchId, planId), authData);\r\n\r\n // If no planItems but plan has associated provider content, fetch from that provider\r\n if ((!planItems || planItems.length === 0) && planFolder.providerId && planFolder.providerPlanId) {\r\n const externalFiles = await fetchFromProviderProxy(\r\n \"getPlaylist\",\r\n ministryId,\r\n planFolder.providerId,\r\n planFolder.providerPlanId,\r\n authData,\r\n resolution\r\n );\r\n return externalFiles || null;\r\n }\r\n\r\n if (!planItems || !Array.isArray(planItems)) return null;\r\n\r\n const venueFeed = venueId ? await fetchVenueFeed(venueId) : null;\r\n const files: ContentFile[] = [];\r\n\r\n for (const sectionItem of planItems) {\r\n for (const child of sectionItem.children || []) {\r\n const childItemType = child.itemType;\r\n\r\n // Check if this is a section that can be expanded from the local venue feed\r\n const isSectionType = childItemType === \"section\" || childItemType === \"lessonSection\" || childItemType === \"providerSection\";\r\n const canExpandLocally = isSectionType && venueFeed && child.relatedId;\r\n\r\n // Try external provider resolution first (cached, uses providerContentPath)\r\n if (isExternalProviderItem(child) && child.providerId && child.providerPath) {\r\n const cacheKey = `${child.providerId}:${child.providerPath}`;\r\n\r\n if (child.providerContentPath) {\r\n // Fetch presentations and instructions for path-based lookup (with caching)\r\n let externalPlan = this.externalContentCache.plans.get(cacheKey);\r\n if (externalPlan === undefined) {\r\n externalPlan = await fetchFromProviderProxy(\r\n \"getPresentations\",\r\n ministryId,\r\n child.providerId,\r\n child.providerPath,\r\n authData\r\n );\r\n this.externalContentCache.plans.set(cacheKey, externalPlan);\r\n }\r\n\r\n let externalInstructions = this.externalContentCache.instructions.get(cacheKey);\r\n if (externalInstructions === undefined) {\r\n externalInstructions = await fetchFromProviderProxy(\r\n \"getInstructions\",\r\n ministryId,\r\n child.providerId,\r\n child.providerPath,\r\n authData\r\n );\r\n this.externalContentCache.instructions.set(cacheKey, externalInstructions);\r\n }\r\n\r\n if (externalPlan) {\r\n const matchingPresentation = this.findPresentationByPath(externalPlan, externalInstructions, child.providerContentPath);\r\n if (matchingPresentation?.files && Array.isArray(matchingPresentation.files)) {\r\n files.push(...matchingPresentation.files);\r\n }\r\n }\r\n } else {\r\n // No specific content path - get all files (with caching)\r\n let externalFiles = this.externalContentCache.playlists.get(cacheKey);\r\n if (externalFiles === undefined) {\r\n externalFiles = await fetchFromProviderProxy(\r\n \"getPlaylist\",\r\n ministryId,\r\n child.providerId,\r\n child.providerPath,\r\n authData,\r\n resolution\r\n );\r\n this.externalContentCache.playlists.set(cacheKey, externalFiles);\r\n }\r\n if (Array.isArray(externalFiles)) {\r\n files.push(...externalFiles);\r\n }\r\n }\r\n } else if (canExpandLocally) {\r\n // Get files from venue feed for section items\r\n const itemFiles = getFilesFromVenueFeed(venueFeed, childItemType!, child.relatedId);\r\n files.push(...itemFiles);\r\n } else if ((childItemType === \"providerFile\" || childItemType === \"providerPresentation\") && child.link) {\r\n // Fallback: use stored link when no provider info available\r\n const file = getFileFromProviderFileItem(child);\r\n if (file) files.push(file);\r\n } else if (venueFeed && (childItemType === \"lessonAction\" || childItemType === \"action\" ||\r\n childItemType === \"lessonAddOn\" || childItemType === \"addon\")) {\r\n // Handle action items from venue feed\r\n const itemFiles = getFilesFromVenueFeed(venueFeed, childItemType, child.relatedId);\r\n files.push(...itemFiles);\r\n }\r\n }\r\n }\r\n\r\n return files.length > 0 ? files : null;\r\n }\r\n\r\n supportsDeviceFlow(): boolean {\r\n return !!this.config.supportsDeviceFlow;\r\n }\r\n}\r\n","import { ContentFile, ContentFolder, Instructions, InstructionItem } from \"../../interfaces\";\r\nimport { DropboxEntry, DropboxFileEntry, DropboxFolderEntry } from \"./DropboxInterfaces\";\r\n\r\nconst VIDEO_EXTENSIONS = new Set([\".mp4\", \".mov\", \".avi\", \".mkv\", \".webm\", \".m4v\"]);\r\nconst IMAGE_EXTENSIONS = new Set([\".jpg\", \".jpeg\", \".png\", \".gif\", \".bmp\", \".svg\", \".webp\", \".tiff\", \".tif\"]);\r\nconst MEDIA_EXTENSIONS = new Set([...VIDEO_EXTENSIONS, ...IMAGE_EXTENSIONS]);\r\n\r\nexport function getFileExtension(filename: string): string {\r\n const lastDot = filename.lastIndexOf(\".\");\r\n if (lastDot === -1) return \"\";\r\n return filename.substring(lastDot).toLowerCase();\r\n}\r\n\r\nexport function isMediaFile(filename: string): boolean {\r\n return MEDIA_EXTENSIONS.has(getFileExtension(filename));\r\n}\r\n\r\nexport function getMediaType(filename: string): \"video\" | \"image\" {\r\n return VIDEO_EXTENSIONS.has(getFileExtension(filename)) ? \"video\" : \"image\";\r\n}\r\n\r\nexport function folderEntryToContentFolder(entry: DropboxFolderEntry, isLeaf?: boolean): ContentFolder {\r\n return { type: \"folder\", id: entry.id, title: entry.name, path: entry.path_lower, isLeaf };\r\n}\r\n\r\nexport function fileEntryToContentFile(entry: DropboxFileEntry, url: string, downloadUrl?: string | null): ContentFile {\r\n return {\r\n type: \"file\",\r\n id: entry.id,\r\n title: entry.name,\r\n mediaType: getMediaType(entry.name),\r\n url,\r\n downloadUrl: downloadUrl || url\r\n };\r\n}\r\n\r\nexport function filterMediaEntries(entries: DropboxEntry[]): { folders: DropboxFolderEntry[]; mediaFiles: DropboxFileEntry[] } {\r\n const folders: DropboxFolderEntry[] = [];\r\n const mediaFiles: DropboxFileEntry[] = [];\r\n for (const entry of entries) {\r\n if (entry[\".tag\"] === \"folder\") folders.push(entry);\r\n else if (entry[\".tag\"] === \"file\" && isMediaFile(entry.name)) mediaFiles.push(entry);\r\n }\r\n return { folders, mediaFiles };\r\n}\r\n\r\nexport function buildInstructionsFromFiles(files: ContentFile[], folderName: string): Instructions {\r\n const actionItems: InstructionItem[] = files.map(file => ({\r\n id: file.id + \"-action\",\r\n itemType: \"action\",\r\n label: file.title,\r\n actionType: \"play\",\r\n children: [{\r\n id: file.id,\r\n itemType: \"file\",\r\n label: file.title,\r\n seconds: file.seconds,\r\n downloadUrl: file.downloadUrl || file.url,\r\n thumbnail: file.thumbnail\r\n }]\r\n }));\r\n\r\n const sectionItem: InstructionItem = {\r\n id: \"dropbox-section\",\r\n itemType: \"section\",\r\n label: folderName,\r\n children: actionItems\r\n };\r\n\r\n return { name: folderName, items: [sectionItem] };\r\n}\r\n","import {\r\n ContentProviderConfig, ContentProviderAuthData, ContentItem,\r\n ContentFile, ProviderLogos, ProviderCapabilities, IProvider,\r\n AuthType, Instructions\r\n} from \"../../interfaces\";\r\nimport { OAuthHelper } from \"../../helpers\";\r\nimport {\r\n DropboxListFolderResponse, DropboxEntry,\r\n DropboxFileEntry, DropboxTemporaryLinkResponse, DropboxSharedLinkResponse\r\n} from \"./DropboxInterfaces\";\r\nimport {\r\n filterMediaEntries, folderEntryToContentFolder,\r\n fileEntryToContentFile, buildInstructionsFromFiles\r\n} from \"./DropboxConverters\";\r\n\r\nconst MAX_PAGINATION_CALLS = 50;\r\n\r\nexport class DropboxProvider implements IProvider {\r\n private readonly oauthHelper = new OAuthHelper();\r\n\r\n readonly id = \"dropbox\";\r\n readonly name = \"Dropbox\";\r\n\r\n readonly logos: ProviderLogos = {\r\n light: \"https://cfl.dropboxstatic.com/static/images/logo_catalog/dropbox_logo_glyph_2015_m1.svg\",\r\n dark: \"https://cfl.dropboxstatic.com/static/images/logo_catalog/dropbox_logo_glyph_2015_m1.svg\"\r\n };\r\n\r\n readonly config: ContentProviderConfig = {\r\n id: \"dropbox\",\r\n name: \"Dropbox\",\r\n apiBase: \"https://api.dropboxapi.com\",\r\n oauthBase: \"https://www.dropbox.com/oauth2\",\r\n clientId: \"edggy1jh5vvnxyd\",\r\n scopes: [],\r\n endpoints: {\r\n listFolder: \"/2/files/list_folder\",\r\n listFolderContinue: \"/2/files/list_folder/continue\",\r\n getTemporaryLink: \"/2/files/get_temporary_link\"\r\n }\r\n };\r\n\r\n readonly requiresAuth = true;\r\n readonly authTypes: AuthType[] = [\"oauth_pkce\"];\r\n readonly capabilities: ProviderCapabilities = {\r\n browse: true,\r\n presentations: false,\r\n playlist: true,\r\n instructions: true,\r\n mediaLicensing: false\r\n };\r\n\r\n // -- Pagination helper --\r\n\r\n private async dropboxPost<T>(endpoint: string, body: Record<string, unknown>, auth?: ContentProviderAuthData | null): Promise<T | null> {\r\n if (!auth) { console.error(\"[Dropbox] No auth token provided\"); return null; }\r\n try {\r\n const url = `${this.config.apiBase}${endpoint}`;\r\n const response = await fetch(url, {\r\n method: \"POST\",\r\n headers: {\r\n \"Authorization\": `Bearer ${auth.access_token}`,\r\n \"Content-Type\": \"application/json\"\r\n },\r\n body: JSON.stringify(body)\r\n });\r\n if (!response.ok) {\r\n const errorText = await response.text();\r\n console.error(`[Dropbox] API error ${response.status}: ${errorText}`);\r\n return null;\r\n }\r\n return await response.json();\r\n } catch (err) {\r\n console.error(\"[Dropbox] Fetch error:\", err);\r\n return null;\r\n }\r\n }\r\n\r\n private async listAllEntries(dropboxPath: string, auth?: ContentProviderAuthData | null): Promise<DropboxEntry[]> {\r\n const allEntries: DropboxEntry[] = [];\r\n\r\n const response = await this.dropboxPost<DropboxListFolderResponse>(\r\n this.config.endpoints.listFolder as string,\r\n { path: dropboxPath, recursive: false, include_media_info: false },\r\n auth\r\n );\r\n if (!response) return [];\r\n allEntries.push(...response.entries);\r\n\r\n let hasMore = response.has_more;\r\n let cursor = response.cursor;\r\n let calls = 0;\r\n while (hasMore && calls < MAX_PAGINATION_CALLS) {\r\n const cont = await this.dropboxPost<DropboxListFolderResponse>(\r\n this.config.endpoints.listFolderContinue as string,\r\n { cursor },\r\n auth\r\n );\r\n if (!cont) break;\r\n allEntries.push(...cont.entries);\r\n hasMore = cont.has_more;\r\n cursor = cont.cursor;\r\n calls++;\r\n }\r\n\r\n return allEntries;\r\n }\r\n\r\n // -- File link helpers --\r\n\r\n private async getSharedLink(filePath: string, auth?: ContentProviderAuthData | null): Promise<string | null> {\r\n if (!auth) return null;\r\n try {\r\n const url = `${this.config.apiBase}/2/sharing/create_shared_link_with_settings`;\r\n const response = await fetch(url, {\r\n method: \"POST\",\r\n headers: {\r\n \"Authorization\": `Bearer ${auth.access_token}`,\r\n \"Content-Type\": \"application/json\"\r\n },\r\n body: JSON.stringify({ path: filePath, settings: { requested_visibility: \"public\" } })\r\n });\r\n\r\n if (response.ok) {\r\n const data = await response.json() as DropboxSharedLinkResponse;\r\n return this.sharedLinkToRawUrl(data.url);\r\n }\r\n\r\n // 409 = shared link already exists, extract it from the error response\r\n if (response.status === 409) {\r\n const error = await response.json();\r\n const existingUrl = error?.error?.shared_link_already_exists?.metadata?.url;\r\n if (existingUrl) return this.sharedLinkToRawUrl(existingUrl);\r\n }\r\n\r\n const errorText = await response.text();\r\n console.warn(`[Dropbox] Shared link failed for ${filePath} (${response.status}): ${errorText}`);\r\n return null;\r\n } catch (err) {\r\n console.warn(\"[Dropbox] Shared link error:\", err);\r\n return null;\r\n }\r\n }\r\n\r\n private sharedLinkToRawUrl(sharedUrl: string): string {\r\n // Convert shared link to raw content URL: replace dl=0 with raw=1\r\n const url = new URL(sharedUrl);\r\n url.searchParams.delete(\"dl\");\r\n url.searchParams.set(\"raw\", \"1\");\r\n return url.toString();\r\n }\r\n\r\n private async getTemporaryLink(filePath: string, auth?: ContentProviderAuthData | null): Promise<string | null> {\r\n const response = await this.dropboxPost<DropboxTemporaryLinkResponse>(\r\n this.config.endpoints.getTemporaryLink as string,\r\n { path: filePath },\r\n auth\r\n );\r\n return response?.link || null;\r\n }\r\n\r\n private async resolveFileLinks(fileEntries: DropboxFileEntry[], auth?: ContentProviderAuthData | null): Promise<ContentFile[]> {\r\n const results = await Promise.all(\r\n fileEntries.map(async (entry) => {\r\n const [viewUrl, downloadUrl] = await Promise.all([\r\n this.getSharedLink(entry.path_lower, auth),\r\n this.getTemporaryLink(entry.path_lower, auth)\r\n ]);\r\n return { entry, viewUrl, downloadUrl };\r\n })\r\n );\r\n return results\r\n .filter((r) => r.viewUrl || r.downloadUrl)\r\n .map(r => fileEntryToContentFile(r.entry, r.viewUrl || r.downloadUrl!, r.downloadUrl));\r\n }\r\n\r\n // -- Leaf detection --\r\n\r\n private async checkIsLeaf(folderPath: string, auth?: ContentProviderAuthData | null): Promise<boolean> {\r\n const response = await this.dropboxPost<DropboxListFolderResponse>(\r\n this.config.endpoints.listFolder as string,\r\n { path: folderPath, recursive: false, include_media_info: false },\r\n auth\r\n );\r\n if (!response) return false;\r\n return !response.entries.some(e => e[\".tag\"] === \"folder\");\r\n }\r\n\r\n // -- IProvider methods --\r\n\r\n async browse(path?: string | null, auth?: ContentProviderAuthData | null): Promise<ContentItem[]> {\r\n // Root = \"\" for Dropbox API, subfolders use their path_lower directly\r\n const dropboxPath = (path && path !== \"/\") ? (path.startsWith(\"/\") ? path : \"/\" + path) : \"\";\r\n\r\n const allEntries = await this.listAllEntries(dropboxPath, auth);\r\n const { folders, mediaFiles } = filterMediaEntries(allEntries);\r\n\r\n // Check each subfolder for leaf status in parallel\r\n const leafChecks = await Promise.all(\r\n folders.map(f => this.checkIsLeaf(f.path_lower, auth).then(isLeaf => ({ folder: f, isLeaf })))\r\n );\r\n const folderItems: ContentItem[] = leafChecks.map(({ folder, isLeaf }) => folderEntryToContentFolder(folder, isLeaf));\r\n const fileItems = await this.resolveFileLinks(mediaFiles, auth);\r\n\r\n return [...folderItems, ...fileItems];\r\n }\r\n\r\n async getPlaylist(path: string, auth?: ContentProviderAuthData | null, _resolution?: number): Promise<ContentFile[] | null> {\r\n if (!path || path === \"/\") return null;\r\n const dropboxPath = path.startsWith(\"/\") ? path : \"/\" + path;\r\n\r\n const allEntries = await this.listAllEntries(dropboxPath, auth);\r\n const { mediaFiles } = filterMediaEntries(allEntries);\r\n if (mediaFiles.length === 0) return null;\r\n\r\n const files = await this.resolveFileLinks(mediaFiles, auth);\r\n return files.length > 0 ? files : null;\r\n }\r\n\r\n async getInstructions(path: string, auth?: ContentProviderAuthData | null): Promise<Instructions | null> {\r\n if (!path || path === \"/\") return null;\r\n const dropboxPath = path.startsWith(\"/\") ? path : \"/\" + path;\r\n\r\n const allEntries = await this.listAllEntries(dropboxPath, auth);\r\n const { mediaFiles } = filterMediaEntries(allEntries);\r\n if (mediaFiles.length === 0) return null;\r\n\r\n const files = await this.resolveFileLinks(mediaFiles, auth);\r\n if (files.length === 0) return null;\r\n\r\n const segments = dropboxPath.split(\"/\").filter(Boolean);\r\n const folderName = segments[segments.length - 1] || \"Dropbox\";\r\n return buildInstructionsFromFiles(files, folderName);\r\n }\r\n\r\n // -- Auth methods --\r\n\r\n supportsDeviceFlow(): boolean {\r\n return false;\r\n }\r\n\r\n generateCodeVerifier(): string {\r\n return this.oauthHelper.generateCodeVerifier();\r\n }\r\n\r\n async buildAuthUrl(codeVerifier: string, redirectUri: string, state?: string): Promise<{ url: string; challengeMethod: string }> {\r\n const result = await this.oauthHelper.buildAuthUrl(this.config, codeVerifier, redirectUri, state || this.id);\r\n const url = new URL(result.url);\r\n // Dropbox uses app-level permissions configured in the App Console, not URL scopes\r\n url.searchParams.delete(\"scope\");\r\n // Dropbox requires token_access_type=offline to return a refresh_token\r\n url.searchParams.set(\"token_access_type\", \"offline\");\r\n return { url: url.toString(), challengeMethod: result.challengeMethod };\r\n }\r\n\r\n async exchangeCodeForTokens(code: string, codeVerifier: string, redirectUri: string): Promise<ContentProviderAuthData | null> {\r\n // Custom implementation: Dropbox token endpoint is on api.dropboxapi.com,\r\n // not www.dropbox.com (which OAuthHelper would construct from oauthBase).\r\n try {\r\n const params = new URLSearchParams({\r\n grant_type: \"authorization_code\",\r\n code,\r\n redirect_uri: redirectUri,\r\n client_id: this.config.clientId,\r\n code_verifier: codeVerifier\r\n });\r\n\r\n const response = await fetch(\"https://api.dropboxapi.com/oauth2/token\", {\r\n method: \"POST\",\r\n headers: { \"Content-Type\": \"application/x-www-form-urlencoded\" },\r\n body: params.toString()\r\n });\r\n\r\n if (!response.ok) return null;\r\n\r\n const data = await response.json();\r\n return {\r\n access_token: data.access_token,\r\n refresh_token: data.refresh_token,\r\n token_type: data.token_type || \"Bearer\",\r\n created_at: Math.floor(Date.now() / 1000),\r\n expires_in: data.expires_in,\r\n scope: data.scope || \"\"\r\n };\r\n } catch {\r\n return null;\r\n }\r\n }\r\n}\r\n","import { ContentProviderConfig, ContentProviderAuthData, ContentFile, PlanPresentation, Instructions, InstructionItem, Plan } from \"../../interfaces\";\r\nimport { detectMediaType } from \"../../utils\";\r\nimport { ApiHelper } from \"../../helpers\";\r\nimport { PCOPlanItem, PCOSong, PCOArrangement, PCOSection, PCOAttachment } from \"./PlanningCenterInterfaces\";\r\n\r\nconst apiHelper = new ApiHelper();\r\n\r\nasync function apiRequest<T>(config: ContentProviderConfig, providerId: string, path: string, auth?: ContentProviderAuthData | null): Promise<T | null> {\r\n return apiHelper.apiRequest<T>(config, providerId, path, auth);\r\n}\r\n\r\nexport async function convertToPresentation(config: ContentProviderConfig, item: PCOPlanItem, auth?: ContentProviderAuthData | null): Promise<PlanPresentation | null> {\r\n const itemType = item.attributes.item_type;\r\n\r\n if (itemType === \"song\") {\r\n return convertSongToPresentation(config, item, auth);\r\n }\r\n\r\n if (itemType === \"media\") {\r\n return convertMediaToPresentation(config, item, auth);\r\n }\r\n\r\n if (itemType === \"item\") {\r\n return { id: item.id, name: item.attributes.title || \"\", actionType: \"other\", files: [], providerData: { itemType: \"item\", description: item.attributes.description, length: item.attributes.length } };\r\n }\r\n\r\n return null;\r\n}\r\n\r\nasync function convertSongToPresentation(config: ContentProviderConfig, item: PCOPlanItem, auth?: ContentProviderAuthData | null): Promise<PlanPresentation | null> {\r\n const songId = item.relationships?.song?.data?.id;\r\n const arrangementId = item.relationships?.arrangement?.data?.id;\r\n\r\n if (!songId) {\r\n return { id: item.id, name: item.attributes.title || \"Song\", actionType: \"other\", files: [], providerData: { itemType: \"song\" } };\r\n }\r\n\r\n const songFn = config.endpoints.song as (id: string) => string;\r\n const songResponse = await apiRequest<{ data: PCOSong }>(config, config.id, songFn(songId), auth);\r\n\r\n let arrangement: PCOArrangement | null = null;\r\n let sections: PCOSection[] = [];\r\n\r\n if (arrangementId) {\r\n const arrangementFn = config.endpoints.arrangement as (sId: string, aId: string) => string;\r\n const arrangementResponse = await apiRequest<{ data: PCOArrangement }>(\r\n config, config.id, arrangementFn(songId, arrangementId), auth\r\n );\r\n arrangement = arrangementResponse?.data || null;\r\n\r\n const sectionsFn = config.endpoints.arrangementSections as (sId: string, aId: string) => string;\r\n const sectionsResponse = await apiRequest<{ data: { attributes: { sections: PCOSection[] } }[] }>(\r\n config, config.id, sectionsFn(songId, arrangementId), auth\r\n );\r\n sections = sectionsResponse?.data?.[0]?.attributes?.sections || [];\r\n }\r\n\r\n const song = songResponse?.data;\r\n const title = song?.attributes?.title || item.attributes.title || \"Song\";\r\n\r\n return { id: item.id, name: title, actionType: \"other\", files: [], providerData: { itemType: \"song\", title, author: song?.attributes?.author, copyright: song?.attributes?.copyright, ccliNumber: song?.attributes?.ccli_number, arrangementName: arrangement?.attributes?.name, keySignature: arrangement?.attributes?.chord_chart_key, bpm: arrangement?.attributes?.bpm, sequence: arrangement?.attributes?.sequence, sections: sections.map(s => ({ label: s.label, lyrics: s.lyrics })), length: item.attributes.length } };\r\n}\r\n\r\nasync function convertMediaToPresentation(config: ContentProviderConfig, item: PCOPlanItem, auth?: ContentProviderAuthData | null): Promise<PlanPresentation | null> {\r\n const files: ContentFile[] = [];\r\n\r\n const mediaFn = config.endpoints.media as (id: string) => string;\r\n const mediaAttachmentsFn = config.endpoints.mediaAttachments as (id: string) => string;\r\n\r\n const mediaResponse = await apiRequest<{ data: { id: string; attributes: { title?: string; length?: number } } }>(\r\n config, config.id, mediaFn(item.id), auth\r\n );\r\n\r\n if (mediaResponse?.data) {\r\n const attachmentsResponse = await apiRequest<{ data: PCOAttachment[] }>(\r\n config, config.id, mediaAttachmentsFn(mediaResponse.data.id), auth\r\n );\r\n\r\n for (const attachment of attachmentsResponse?.data || []) {\r\n const url = attachment.attributes.url;\r\n if (!url) continue;\r\n\r\n const contentType = attachment.attributes.content_type;\r\n const explicitType = contentType?.startsWith(\"video/\") ? \"video\" : undefined;\r\n\r\n files.push({ type: \"file\", id: attachment.id, title: attachment.attributes.filename, mediaType: detectMediaType(url, explicitType), url });\r\n }\r\n }\r\n\r\n return { id: item.id, name: item.attributes.title || \"Media\", actionType: \"play\", files, providerData: { itemType: \"media\", length: item.attributes.length } };\r\n}\r\n\r\nexport function formatDate(dateString: string): string {\r\n const date = new Date(dateString);\r\n return date.toISOString().slice(0, 10);\r\n}\r\n\r\nexport function buildInstructionsFromPlan(plan: Plan): Instructions {\r\n const sectionItems: InstructionItem[] = plan.sections.map(section => {\r\n const actionItems: InstructionItem[] = section.presentations.map(pres => {\r\n const fileItems: InstructionItem[] = pres.files.map(file => ({\r\n id: file.id,\r\n itemType: \"file\",\r\n label: file.title,\r\n downloadUrl: file.url,\r\n thumbnail: file.thumbnail\r\n }));\r\n\r\n return {\r\n id: pres.id,\r\n itemType: \"action\",\r\n relatedId: pres.id,\r\n label: pres.name,\r\n actionType: pres.actionType,\r\n children: fileItems.length > 0 ? fileItems : undefined\r\n };\r\n });\r\n\r\n return {\r\n id: section.id,\r\n itemType: \"section\",\r\n label: section.name,\r\n children: actionItems\r\n };\r\n });\r\n\r\n return {\r\n name: plan.name,\r\n items: sectionItems\r\n };\r\n}\r\n","import { ContentProviderConfig, ContentProviderAuthData, ContentItem, ProviderLogos, ProviderCapabilities, IProvider, AuthType } from \"../../interfaces\";\r\nimport { parsePath } from \"../../pathUtils\";\r\nimport { ApiHelper } from \"../../helpers\";\r\nimport { PCOServiceType, PCOPlan, PCOPlanItem } from \"./PlanningCenterInterfaces\";\r\nimport { formatDate } from \"./PlanningCenterConverters\";\r\n\r\n/**\r\n * PlanningCenter Provider\r\n *\r\n * Path structure:\r\n * /serviceTypes -> list service types\r\n * /serviceTypes/{serviceTypeId} -> list plans\r\n * /serviceTypes/{serviceTypeId}/{planId} -> plan items (leaf)\r\n */\r\nexport class PlanningCenterProvider implements IProvider {\r\n private readonly apiHelper = new ApiHelper();\r\n\r\n private async apiRequest<T>(path: string, auth?: ContentProviderAuthData | null): Promise<T | null> {\r\n return this.apiHelper.apiRequest<T>(this.config, this.id, path, auth);\r\n }\r\n\r\n readonly id = \"planningcenter\";\r\n readonly name = \"Planning Center\";\r\n\r\n readonly logos: ProviderLogos = { light: \"https://www.planningcenter.com/icons/icon-512x512.png\", dark: \"https://www.planningcenter.com/icons/icon-512x512.png\" };\r\n\r\n readonly config: ContentProviderConfig = { id: \"planningcenter\", name: \"Planning Center\", apiBase: \"https://api.planningcenteronline.com\", oauthBase: \"https://api.planningcenteronline.com/oauth\", clientId: \"\", scopes: [\"services\"], endpoints: { serviceTypes: \"/services/v2/service_types\", plans: (serviceTypeId: string) => `/services/v2/service_types/${serviceTypeId}/plans`, planItems: (serviceTypeId: string, planId: string) => `/services/v2/service_types/${serviceTypeId}/plans/${planId}/items`, song: (itemId: string) => `/services/v2/songs/${itemId}`, arrangement: (songId: string, arrangementId: string) => `/services/v2/songs/${songId}/arrangements/${arrangementId}`, arrangementSections: (songId: string, arrangementId: string) => `/services/v2/songs/${songId}/arrangements/${arrangementId}/sections`, media: (mediaId: string) => `/services/v2/media/${mediaId}`, mediaAttachments: (mediaId: string) => `/services/v2/media/${mediaId}/attachments` } };\r\n\r\n private readonly ONE_WEEK_MS = 604800000;\r\n\r\n readonly requiresAuth = true;\r\n readonly authTypes: AuthType[] = [\"oauth_pkce\"];\r\n readonly capabilities: ProviderCapabilities = { browse: true, presentations: true, playlist: true, instructions: true, mediaLicensing: false };\r\n\r\n async browse(path?: string | null, auth?: ContentProviderAuthData | null): Promise<ContentItem[]> {\r\n const { segments, depth } = parsePath(path);\r\n\r\n if (depth === 0) {\r\n return [{ type: \"folder\" as const, id: \"serviceTypes-root\", title: \"Service Types\", path: \"/serviceTypes\" }];\r\n }\r\n\r\n const root = segments[0];\r\n if (root !== \"serviceTypes\") return [];\r\n\r\n if (depth === 1) return this.getServiceTypes(auth);\r\n if (depth === 2) return this.getPlans(segments[1], path!, auth);\r\n if (depth === 3) return this.getPlanItems(segments[1], segments[2], auth);\r\n\r\n return [];\r\n }\r\n\r\n private async getServiceTypes(auth?: ContentProviderAuthData | null): Promise<ContentItem[]> {\r\n const response = await this.apiRequest<{ data: PCOServiceType[] }>(\r\n this.config.endpoints.serviceTypes as string,\r\n auth\r\n );\r\n\r\n if (!response?.data) return [];\r\n\r\n return response.data.map((serviceType) => ({\r\n type: \"folder\" as const,\r\n id: serviceType.id,\r\n title: serviceType.attributes.name,\r\n path: `/serviceTypes/${serviceType.id}`\r\n }));\r\n }\r\n\r\n private async getPlans(serviceTypeId: string, currentPath: string, auth?: ContentProviderAuthData | null): Promise<ContentItem[]> {\r\n const pathFn = this.config.endpoints.plans as (id: string) => string;\r\n const response = await this.apiRequest<{ data: PCOPlan[] }>(\r\n `${pathFn(serviceTypeId)}?filter=future&order=sort_date`,\r\n auth\r\n );\r\n\r\n if (!response?.data) return [];\r\n\r\n const now = Date.now();\r\n const filteredPlans = response.data.filter((plan) => {\r\n if (plan.attributes.items_count === 0) return false;\r\n const planDate = new Date(plan.attributes.sort_date).getTime();\r\n return planDate < now + this.ONE_WEEK_MS;\r\n });\r\n\r\n return filteredPlans.map((plan) => ({\r\n type: \"folder\" as const,\r\n id: plan.id,\r\n title: plan.attributes.title || formatDate(plan.attributes.sort_date),\r\n isLeaf: true,\r\n path: `${currentPath}/${plan.id}`\r\n }));\r\n }\r\n\r\n private async getPlanItems(serviceTypeId: string, planId: string, auth?: ContentProviderAuthData | null): Promise<ContentItem[]> {\r\n const pathFn = this.config.endpoints.planItems as (stId: string, pId: string) => string;\r\n const response = await this.apiRequest<{ data: PCOPlanItem[] }>(\r\n `${pathFn(serviceTypeId, planId)}?per_page=100`,\r\n auth\r\n );\r\n\r\n if (!response?.data) return [];\r\n\r\n return response.data.map((item) => ({ type: \"file\" as const, id: item.id, title: item.attributes.title || \"\", mediaType: \"image\" as const, url: \"\" }));\r\n }\r\n\r\n // async getPresentations(path: string, auth?: ContentProviderAuthData | null): Promise<Plan | null> {\r\n // const { segments, depth } = parsePath(path);\r\n\r\n // if (depth < 3 || segments[0] !== \"serviceTypes\") return null;\r\n\r\n // const serviceTypeId = segments[1];\r\n // const planId = segments[2];\r\n\r\n // const pathFn = this.config.endpoints.planItems as (stId: string, pId: string) => string;\r\n // const response = await this.apiRequest<{ data: PCOPlanItem[] }>(\r\n // `${pathFn(serviceTypeId, planId)}?per_page=100`,\r\n // auth\r\n // );\r\n\r\n // if (!response?.data) return null;\r\n\r\n // const plans = await this.getPlans(serviceTypeId, `/serviceTypes/${serviceTypeId}`, auth);\r\n // const plan = plans.find(p => p.id === planId);\r\n // const planTitle = plan?.title || \"Plan\";\r\n\r\n // const sections: PlanSection[] = [];\r\n // const allFiles: ContentFile[] = [];\r\n // let currentSection: PlanSection | null = null;\r\n\r\n // for (const item of response.data) {\r\n // const itemType = item.attributes.item_type;\r\n\r\n // if (itemType === \"header\") {\r\n // if (currentSection && currentSection.presentations.length > 0) sections.push(currentSection);\r\n // currentSection = { id: item.id, name: item.attributes.title || \"Section\", presentations: [] };\r\n // continue;\r\n // }\r\n\r\n // if (!currentSection) {\r\n // currentSection = { id: `default-${planId}`, name: \"Service\", presentations: [] };\r\n // }\r\n\r\n // const presentation = await convertToPresentation(this.config, item, auth);\r\n // if (presentation) {\r\n // currentSection.presentations.push(presentation);\r\n // allFiles.push(...presentation.files);\r\n // }\r\n // }\r\n\r\n // if (currentSection && currentSection.presentations.length > 0) {\r\n // sections.push(currentSection);\r\n // }\r\n\r\n // return { id: planId, name: planTitle as string, sections, allFiles };\r\n // }\r\n\r\n // async getPlaylist(path: string, auth?: ContentProviderAuthData | null, _resolution?: number): Promise<ContentFile[] | null> {\r\n // const plan = await this.getPresentations(path, auth);\r\n // if (!plan) return null;\r\n // return plan.allFiles.length > 0 ? plan.allFiles : null;\r\n // }\r\n\r\n // async getInstructions(path: string, auth?: ContentProviderAuthData | null): Promise<Instructions | null> {\r\n // const plan = await this.getPresentations(path, auth);\r\n // if (!plan) return null;\r\n\r\n // return buildInstructionsFromPlan(plan);\r\n // }\r\n\r\n supportsDeviceFlow(): boolean {\r\n return false;\r\n }\r\n}\r\n","{\r\n \"collections\": [\r\n {\r\n \"name\": \"Old Testament Overviews\",\r\n \"image\": \"https://ik.imagekit.io/bpweb1/web/media/video-collection-images/old-testament-overviews/tr:q-65,w-300/ot-overviews_16.9.jpg\",\r\n \"videos\": [\r\n {\r\n \"id\": \"bp-6Lj53xd8\",\r\n \"title\": \"TaNaK / Old Testament\",\r\n \"filename\": \"tanak-old-testament\",\r\n \"muxPlaybackId\": \"6Lj53xd8H9NzgbpoKdSezAy7LTGmYEttA5h1xBHcgQw\",\r\n \"videoUrl\": \"https://stream.mux.com/6Lj53xd8H9NzgbpoKdSezAy7LTGmYEttA5h1xBHcgQw/high.mp4\",\r\n \"thumbnailUrl\": \"https://d1bsmz3sdihplr.cloudfront.net/media/Posters%20Download/TaNaKOTovw_FNL.jpg\"\r\n },\r\n {\r\n \"id\": \"bp-wqRoO23V\",\r\n \"title\": \"Genesis 1-11\",\r\n \"filename\": \"genesis-1-11\",\r\n \"muxPlaybackId\": \"wqRoO23V1icFCGIVSz13nEKs00760200UnXO9ueJl02iLgE\",\r\n \"videoUrl\": \"https://stream.mux.com/wqRoO23V1icFCGIVSz13nEKs00760200UnXO9ueJl02iLgE/high.mp4\",\r\n \"thumbnailUrl\": \"https://d1bsmz3sdihplr.cloudfront.net/media/Posters%20Download/01-02%20Genesis_FNL.jpg\"\r\n },\r\n {\r\n \"id\": \"bp-z15mG00w\",\r\n \"title\": \"Genesis 12-50\",\r\n \"filename\": \"genesis-12-50\",\r\n \"muxPlaybackId\": \"z15mG00wREQicM00azwBVwDGIvH7rXBZ1fjl9q6tTQGM00\",\r\n \"videoUrl\": \"https://stream.mux.com/z15mG00wREQicM00azwBVwDGIvH7rXBZ1fjl9q6tTQGM00/high.mp4\",\r\n \"thumbnailUrl\": \"https://d1bsmz3sdihplr.cloudfront.net/media/Posters%20Download/01-02%20Genesis_FNL.jpg\"\r\n },\r\n {\r\n \"id\": \"bp-LNqUHmhG\",\r\n \"title\": \"Exodus 1-18\",\r\n \"filename\": \"exodus-1-18\",\r\n \"muxPlaybackId\": \"LNqUHmhGOmCmqjQTZcIphfwS3eVJK00wieQ6aQMaGVxw\",\r\n \"videoUrl\": \"https://stream.mux.com/LNqUHmhGOmCmqjQTZcIphfwS3eVJK00wieQ6aQMaGVxw/high.mp4\",\r\n \"thumbnailUrl\": \"https://d1bsmz3sdihplr.cloudfront.net/media/Posters%20Download/03-04_Exodus_art_FNL.jpg\"\r\n },\r\n {\r\n \"id\": \"bp-HklRATIf\",\r\n \"title\": \"Exodus 19-40\",\r\n \"filename\": \"exodus-19-40\",\r\n \"muxPlaybackId\": \"HklRATIfa01ZdmDywyhA81r5q00XXNqU1HbwjUxM01mo01U\",\r\n \"videoUrl\": \"https://stream.mux.com/HklRATIfa01ZdmDywyhA81r5q00XXNqU1HbwjUxM01mo01U/high.mp4\",\r\n \"thumbnailUrl\": \"https://d1bsmz3sdihplr.cloudfront.net/media/Posters%20Download/03-04_Exodus_art_FNL.jpg\"\r\n },\r\n {\r\n \"id\": \"bp-7TNQ5NOp\",\r\n \"title\": \"Leviticus\",\r\n \"filename\": \"leviticus\",\r\n \"muxPlaybackId\": \"7TNQ5NOpg00rXMM3qJ6kJRGPS93daQEIp00w61Zt68Wns\",\r\n \"videoUrl\": \"https://stream.mux.com/7TNQ5NOpg00rXMM3qJ6kJRGPS93daQEIp00w61Zt68Wns/high.mp4\",\r\n \"thumbnailUrl\": \"https://d1bsmz3sdihplr.cloudfront.net/media/Posters%20Download/05-Leviticus-FNL-1.jpg\"\r\n },\r\n {\r\n \"id\": \"bp-n16pUwPU\",\r\n \"title\": \"Numbers\",\r\n \"filename\": \"numbers\",\r\n \"muxPlaybackId\": \"n16pUwPUNbwUikVezsGVWrS8JE7NbyYHX8gbb01f901IA\",\r\n \"videoUrl\": \"https://stream.mux.com/n16pUwPUNbwUikVezsGVWrS8JE7NbyYHX8gbb01f901IA/high.mp4\",\r\n \"thumbnailUrl\": \"https://d1bsmz3sdihplr.cloudfront.net/media/Posters%20Download/06-Numbers-FNL-1.jpg\"\r\n },\r\n {\r\n \"id\": \"bp-EHvrj2Mv\",\r\n \"title\": \"Deuteronomy\",\r\n \"filename\": \"deuteronomy\",\r\n \"muxPlaybackId\": \"EHvrj2Mv01jx38OtNfd01fAnsaRn1dGSDDSs74TPA14jY\",\r\n \"videoUrl\": \"https://stream.mux.com/EHvrj2Mv01jx38OtNfd01fAnsaRn1dGSDDSs74TPA14jY/high.mp4\",\r\n \"thumbnailUrl\": \"https://d1bsmz3sdihplr.cloudfront.net/media/Posters%20Download/07-Deuteronomy-FNL.jpg\"\r\n },\r\n {\r\n \"id\": \"bp-HujTkYPH\",\r\n \"title\": \"Joshua\",\r\n \"filename\": \"joshua\",\r\n \"muxPlaybackId\": \"HujTkYPHfobXrlyuGOU6Yh1VHUZo4xhXORgPH5SFd9g\",\r\n \"videoUrl\": \"https://stream.mux.com/HujTkYPHfobXrlyuGOU6Yh1VHUZo4xhXORgPH5SFd9g/high.mp4\",\r\n \"thumbnailUrl\": \"https://d1bsmz3sdihplr.cloudfront.net/media/Posters%20Download/08-Joshua-FNL.jpg\"\r\n },\r\n {\r\n \"id\": \"bp-Otbyel01\",\r\n \"title\": \"Judges\",\r\n \"filename\": \"judges\",\r\n \"muxPlaybackId\": \"Otbyel01cL7r8DeqXfQnl202QrZnqliftejHSB00wKAfXE\",\r\n \"videoUrl\": \"https://stream.mux.com/Otbyel01cL7r8DeqXfQnl202QrZnqliftejHSB00wKAfXE/high.mp4\",\r\n \"thumbnailUrl\": \"https://d1bsmz3sdihplr.cloudfront.net/media/Posters%20Download/09-Judges_FNL.jpg\"\r\n },\r\n {\r\n \"id\": \"bp-iqZx3WUm\",\r\n \"title\": \"Ruth\",\r\n \"filename\": \"ruth\",\r\n \"muxPlaybackId\": \"iqZx3WUmJn9b01DVAv8TEFmmCOkww01SLsQAinnLdTPSo\",\r\n \"videoUrl\": \"https://stream.mux.com/iqZx3WUmJn9b01DVAv8TEFmmCOkww01SLsQAinnLdTPSo/high.mp4\",\r\n \"thumbnailUrl\": \"https://d1bsmz3sdihplr.cloudfront.net/media/Posters%20Download/10%20Ruth%20FNL.jpg\"\r\n },\r\n {\r\n \"id\": \"bp-Zm6vrOXs\",\r\n \"title\": \"1 Samuel\",\r\n \"filename\": \"1-samuel\",\r\n \"muxPlaybackId\": \"Zm6vrOXsGg7deyrc00nCM4iF02BUFKii004ZtCcCjkSFY00\",\r\n \"videoUrl\": \"https://stream.mux.com/Zm6vrOXsGg7deyrc00nCM4iF02BUFKii004ZtCcCjkSFY00/high.mp4\",\r\n \"thumbnailUrl\": \"https://d1bsmz3sdihplr.cloudfront.net/media/Posters%20Download/11-12-Samuel-FNL.jpg\"\r\n },\r\n {\r\n \"id\": \"bp-T1AiFIWA\",\r\n \"title\": \"2 Samuel\",\r\n \"filename\": \"2-samuel\",\r\n \"muxPlaybackId\": \"T1AiFIWA7i8CaCt7ogx3XOxVarCvMtz1lwh8xGMFH01A\",\r\n \"videoUrl\": \"https://stream.mux.com/T1AiFIWA7i8CaCt7ogx3XOxVarCvMtz1lwh8xGMFH01A/high.mp4\",\r\n \"thumbnailUrl\": \"https://d1bsmz3sdihplr.cloudfront.net/media/Posters%20Download/11-12-Samuel-FNL.jpg\"\r\n },\r\n {\r\n \"id\": \"placeholder-12kings\",\r\n \"title\": \"1 & 2 Kings\",\r\n \"filename\": \"12kings\",\r\n \"muxPlaybackId\": \"\",\r\n \"videoUrl\": \"\",\r\n \"thumbnailUrl\": \"\"\r\n },\r\n {\r\n \"id\": \"bp-K5mL016L\",\r\n \"title\": \"Ezra-Nehemiah\",\r\n \"filename\": \"ezra-nehemiah\",\r\n \"muxPlaybackId\": \"K5mL016L7dWCYRjILrMYImIFbd8TgWRjrFFZ73Pfhd9E\",\r\n \"videoUrl\": \"https://stream.mux.com/K5mL016L7dWCYRjILrMYImIFbd8TgWRjrFFZ73Pfhd9E/high.mp4\",\r\n \"thumbnailUrl\": \"https://d1bsmz3sdihplr.cloudfront.net/media/Posters%20Download/15-Ezra-Nehemiah-FNL.jpg\"\r\n },\r\n {\r\n \"id\": \"bp-LfMTBfZz\",\r\n \"title\": \"Esther\",\r\n \"filename\": \"esther\",\r\n \"muxPlaybackId\": \"LfMTBfZzMmcCZFiRPCuDWc5gKFARKURCjqOpTkxufsg\",\r\n \"videoUrl\": \"https://stream.mux.com/LfMTBfZzMmcCZFiRPCuDWc5gKFARKURCjqOpTkxufsg/high.mp4\",\r\n \"thumbnailUrl\": \"https://d1bsmz3sdihplr.cloudfront.net/media/Posters%20Download/16-Esther-FNL.jpg\"\r\n },\r\n {\r\n \"id\": \"bp-V7uvmqQX\",\r\n \"title\": \"Job\",\r\n \"filename\": \"job\",\r\n \"muxPlaybackId\": \"V7uvmqQX9JJmMlibPrFQL4MXQnMFTlIOyrHPoGV4Eds\",\r\n \"videoUrl\": \"https://stream.mux.com/V7uvmqQX9JJmMlibPrFQL4MXQnMFTlIOyrHPoGV4Eds/high.mp4\",\r\n \"thumbnailUrl\": \"https://d1bsmz3sdihplr.cloudfront.net/media/Posters%20Download/17-Job-FNL.jpg\"\r\n },\r\n {\r\n \"id\": \"bp-WL00639k\",\r\n \"title\": \"Psalms\",\r\n \"filename\": \"psalms\",\r\n \"muxPlaybackId\": \"WL00639k024I00n8nVdrpd6GyyscWpuji02f1co4pph8vu00\",\r\n \"videoUrl\": \"https://stream.mux.com/WL00639k024I00n8nVdrpd6GyyscWpuji02f1co4pph8vu00/high.mp4\",\r\n \"thumbnailUrl\": \"https://d1bsmz3sdihplr.cloudfront.net/media/Posters%20Download/18-Psalms-FNL.jpg\"\r\n },\r\n {\r\n \"id\": \"bp-00FFIKKv\",\r\n \"title\": \"Proverbs\",\r\n \"filename\": \"proverbs\",\r\n \"muxPlaybackId\": \"00FFIKKvk8ijn02jkZCaRdVenh4MNYlg42Mb37qSLc6YQ\",\r\n \"videoUrl\": \"https://stream.mux.com/00FFIKKvk8ijn02jkZCaRdVenh4MNYlg42Mb37qSLc6YQ/high.mp4\",\r\n \"thumbnailUrl\": \"https://d1bsmz3sdihplr.cloudfront.net/media/Posters%20Download/19-Proverbs-FNL.jpg\"\r\n },\r\n {\r\n \"id\": \"bp-1IKsgT01\",\r\n \"title\": \"Ecclesiastes\",\r\n \"filename\": \"ecclesiastes\",\r\n \"muxPlaybackId\": \"1IKsgT01kgxw5kA4QunirAXk01hKMU02n1AX1J2YVbrQmA\",\r\n \"videoUrl\": \"https://stream.mux.com/1IKsgT01kgxw5kA4QunirAXk01hKMU02n1AX1J2YVbrQmA/high.mp4\",\r\n \"thumbnailUrl\": \"https://d1bsmz3sdihplr.cloudfront.net/media/Posters%20Download/20_Ecclesiastes.jpg\"\r\n },\r\n {\r\n \"id\": \"bp-fwB6nQFG\",\r\n \"title\": \"Song of Songs\",\r\n \"filename\": \"song-of-songs\",\r\n \"muxPlaybackId\": \"fwB6nQFG3YWwUU01fZ3SV572jYz1TcL102v75RuIJ00IHQ\",\r\n \"videoUrl\": \"https://stream.mux.com/fwB6nQFG3YWwUU01fZ3SV572jYz1TcL102v75RuIJ00IHQ/high.mp4\",\r\n \"thumbnailUrl\": \"https://d1bsmz3sdihplr.cloudfront.net/media/Posters%20Download/21-Song-of-Songs-FNL.jpg\"\r\n },\r\n {\r\n \"id\": \"bp-8eEAqV5u\",\r\n \"title\": \"Isaiah 1-39\",\r\n \"filename\": \"isaiah-1-39\",\r\n \"muxPlaybackId\": \"8eEAqV5uDN8HC00Ma4x4X1Qh91eqLY4ws00BAZ02cdFQ100\",\r\n \"videoUrl\": \"https://stream.mux.com/8eEAqV5uDN8HC00Ma4x4X1Qh91eqLY4ws00BAZ02cdFQ100/high.mp4\",\r\n \"thumbnailUrl\": \"https://d1bsmz3sdihplr.cloudfront.net/media/Posters%20Download/22-23-Isaiah-FNL.jpg\"\r\n },\r\n {\r\n \"id\": \"bp-4eHLEEp0\",\r\n \"title\": \"Isaiah 40-66\",\r\n \"filename\": \"isaiah-40-66\",\r\n \"muxPlaybackId\": \"4eHLEEp01WP2ZRZ502NXjBOZZP6BkrH5vEZgqvKIcV00IM\",\r\n \"videoUrl\": \"https://stream.mux.com/4eHLEEp01WP2ZRZ502NXjBOZZP6BkrH5vEZgqvKIcV00IM/high.mp4\",\r\n \"thumbnailUrl\": \"https://d1bsmz3sdihplr.cloudfront.net/media/Posters%20Download/22-23-Isaiah-FNL.jpg\"\r\n },\r\n {\r\n \"id\": \"bp-jz7SoAfl\",\r\n \"title\": \"Jeremiah\",\r\n \"filename\": \"jeremiah\",\r\n \"muxPlaybackId\": \"jz7SoAfl01jEdU3nojIh9FSgR5wxxYbjK3T6BhJgwTMU\",\r\n \"videoUrl\": \"https://stream.mux.com/jz7SoAfl01jEdU3nojIh9FSgR5wxxYbjK3T6BhJgwTMU/high.mp4\",\r\n \"thumbnailUrl\": \"https://d1bsmz3sdihplr.cloudfront.net/media/Posters%20Download/24_Jeremiah_hq.jpg\"\r\n },\r\n {\r\n \"id\": \"bp-23QyuBJV\",\r\n \"title\": \"Lamentations\",\r\n \"filename\": \"lamentations\",\r\n \"muxPlaybackId\": \"23QyuBJVJca17RnoITUJdLUEzwuISerAfOZiHEEyGD4\",\r\n \"videoUrl\": \"https://stream.mux.com/23QyuBJVJca17RnoITUJdLUEzwuISerAfOZiHEEyGD4/high.mp4\",\r\n \"thumbnailUrl\": \"https://d1bsmz3sdihplr.cloudfront.net/media/Posters%20Download/25-Lamentations-FNL.jpg\"\r\n },\r\n {\r\n \"id\": \"bp-S5xIHejl\",\r\n \"title\": \"Ezekiel 1-33\",\r\n \"filename\": \"ezekiel-1-33\",\r\n \"muxPlaybackId\": \"S5xIHejldSKMcnY3eyqlrozVjoZAhsIIdIxvHO701uWY\",\r\n \"videoUrl\": \"https://stream.mux.com/S5xIHejldSKMcnY3eyqlrozVjoZAhsIIdIxvHO701uWY/high.mp4\",\r\n \"thumbnailUrl\": \"https://d1bsmz3sdihplr.cloudfront.net/media/Posters%20Download/26-27-Ezekiel-FNL.jpg\"\r\n },\r\n {\r\n \"id\": \"bp-Js945Dhi\",\r\n \"title\": \"Ezekiel 34-48\",\r\n \"filename\": \"ezekiel-34-48\",\r\n \"muxPlaybackId\": \"Js945DhitoDwD2kF9VVBc69FWr02ZRPL4V8zSnBVUe34\",\r\n \"videoUrl\": \"https://stream.mux.com/Js945DhitoDwD2kF9VVBc69FWr02ZRPL4V8zSnBVUe34/high.mp4\",\r\n \"thumbnailUrl\": \"https://d1bsmz3sdihplr.cloudfront.net/media/Posters%20Download/26-27-Ezekiel-FNL.jpg\"\r\n },\r\n {\r\n \"id\": \"bp-O00snPn0\",\r\n \"title\": \"Daniel\",\r\n \"filename\": \"daniel\",\r\n \"muxPlaybackId\": \"O00snPn01lnnfWV01p019xE9NNUni6wD5wO8b1KwZNScJ5s\",\r\n \"videoUrl\": \"https://stream.mux.com/O00snPn01lnnfWV01p019xE9NNUni6wD5wO8b1KwZNScJ5s/high.mp4\",\r\n \"thumbnailUrl\": \"https://d1bsmz3sdihplr.cloudfront.net/media/Posters%20Download/28-Daniel-FNL.jpg\"\r\n },\r\n {\r\n \"id\": \"bp-F00pcpKl\",\r\n \"title\": \"Hosea\",\r\n \"filename\": \"hosea\",\r\n \"muxPlaybackId\": \"F00pcpKlLEtFAwunZDoTSZKc01oPlRNz7YgCSNrLwidVQ\",\r\n \"videoUrl\": \"https://stream.mux.com/F00pcpKlLEtFAwunZDoTSZKc01oPlRNz7YgCSNrLwidVQ/high.mp4\",\r\n \"thumbnailUrl\": \"https://d1bsmz3sdihplr.cloudfront.net/media/Posters%20Download/29-Hosea_FNL.jpg\"\r\n },\r\n {\r\n \"id\": \"bp-cnErnF3I\",\r\n \"title\": \"Joel\",\r\n \"filename\": \"joel\",\r\n \"muxPlaybackId\": \"cnErnF3I4ZBrO8hX54U55HC5Qbx7d01rfpPXYxEHi00lE\",\r\n \"videoUrl\": \"https://stream.mux.com/cnErnF3I4ZBrO8hX54U55HC5Qbx7d01rfpPXYxEHi00lE/high.mp4\",\r\n \"thumbnailUrl\": \"https://d1bsmz3sdihplr.cloudfront.net/media/Posters%20Download/30-Joel-FNL.jpg\"\r\n },\r\n {\r\n \"id\": \"bp-MntqpD8n\",\r\n \"title\": \"Amos\",\r\n \"filename\": \"amos\",\r\n \"muxPlaybackId\": \"MntqpD8nPSJPa9ggfjOoMcth2PoZzbcezAJNCqLSWKs\",\r\n \"videoUrl\": \"https://stream.mux.com/MntqpD8nPSJPa9ggfjOoMcth2PoZzbcezAJNCqLSWKs/high.mp4\",\r\n \"thumbnailUrl\": \"https://d1bsmz3sdihplr.cloudfront.net/media/Posters%20Download/31-Amos-FNL.jpg\"\r\n },\r\n {\r\n \"id\": \"bp-e54eYhAN\",\r\n \"title\": \"Obadiah\",\r\n \"filename\": \"obadiah\",\r\n \"muxPlaybackId\": \"e54eYhANW2he2lipAqw027I02Ag5LLh7lCMIfQbGBgdTQ\",\r\n \"videoUrl\": \"https://stream.mux.com/e54eYhANW2he2lipAqw027I02Ag5LLh7lCMIfQbGBgdTQ/high.mp4\",\r\n \"thumbnailUrl\": \"https://d1bsmz3sdihplr.cloudfront.net/media/Posters%20Download/32-Obadiah-FNL.jpg\"\r\n },\r\n {\r\n \"id\": \"bp-72VJz01n\",\r\n \"title\": \"Jonah\",\r\n \"filename\": \"jonah\",\r\n \"muxPlaybackId\": \"72VJz01n9FdX01Mq02GYfH8FWrCfwsTQ1rjZbFuXNdtAoM\",\r\n \"videoUrl\": \"https://stream.mux.com/72VJz01n9FdX01Mq02GYfH8FWrCfwsTQ1rjZbFuXNdtAoM/high.mp4\",\r\n \"thumbnailUrl\": \"https://d1bsmz3sdihplr.cloudfront.net/media/Posters%20Download/33-Jonah-FNL.jpg\"\r\n },\r\n {\r\n \"id\": \"bp-sQ4TgNlm\",\r\n \"title\": \"Micah\",\r\n \"filename\": \"micah\",\r\n \"muxPlaybackId\": \"sQ4TgNlm4nGKVrWvY00reKgjlqUM5f9S2BWIlUwv3hXM\",\r\n \"videoUrl\": \"https://stream.mux.com/sQ4TgNlm4nGKVrWvY00reKgjlqUM5f9S2BWIlUwv3hXM/high.mp4\",\r\n \"thumbnailUrl\": \"https://d1bsmz3sdihplr.cloudfront.net/media/Posters%20Download/34-Micah-FNL.jpg\"\r\n },\r\n {\r\n \"id\": \"bp-wbjRIFZB\",\r\n \"title\": \"Nahum\",\r\n \"filename\": \"nahum\",\r\n \"muxPlaybackId\": \"wbjRIFZBq58kWa42z01019dpc6LMdnCjsoKLLRMgwTNHM\",\r\n \"videoUrl\": \"https://stream.mux.com/wbjRIFZBq58kWa42z01019dpc6LMdnCjsoKLLRMgwTNHM/high.mp4\",\r\n \"thumbnailUrl\": \"https://d1bsmz3sdihplr.cloudfront.net/media/Posters%20Download/35-Nahum-FNL.jpg\"\r\n },\r\n {\r\n \"id\": \"bp-pTt2bB00\",\r\n \"title\": \"Habakkuk\",\r\n \"filename\": \"habakkuk\",\r\n \"muxPlaybackId\": \"pTt2bB00yyDfm5yxGJGWeVf727oKGDaGpUr1ejIgzgQ4\",\r\n \"videoUrl\": \"https://stream.mux.com/pTt2bB00yyDfm5yxGJGWeVf727oKGDaGpUr1ejIgzgQ4/high.mp4\",\r\n \"thumbnailUrl\": \"https://d1bsmz3sdihplr.cloudfront.net/media/Posters%20Download/36-Habakkuk-FNL.jpg\"\r\n },\r\n {\r\n \"id\": \"bp-kjAdtqF0\",\r\n \"title\": \"Zephaniah\",\r\n \"filename\": \"zephaniah\",\r\n \"muxPlaybackId\": \"kjAdtqF00isi8bDgSxUv2ddIzmjrUKY3u9mS4hCaPyd00\",\r\n \"videoUrl\": \"https://stream.mux.com/kjAdtqF00isi8bDgSxUv2ddIzmjrUKY3u9mS4hCaPyd00/high.mp4\",\r\n \"thumbnailUrl\": \"https://d1bsmz3sdihplr.cloudfront.net/media/Posters%20Download/37-Zephaniah-FNL.jpg\"\r\n },\r\n {\r\n \"id\": \"bp-pZRi77eK\",\r\n \"title\": \"Haggai\",\r\n \"filename\": \"haggai\",\r\n \"muxPlaybackId\": \"pZRi77eK9R8MdBGDyC02r7MHTCMMg00gKAcZfC6q7DtEs\",\r\n \"videoUrl\": \"https://stream.mux.com/pZRi77eK9R8MdBGDyC02r7MHTCMMg00gKAcZfC6q7DtEs/high.mp4\",\r\n \"thumbnailUrl\": \"https://d1bsmz3sdihplr.cloudfront.net/media/Posters%20Download/38-Haggai-FNL.jpg\"\r\n },\r\n {\r\n \"id\": \"bp-J2Vrrtht\",\r\n \"title\": \"Zechariah\",\r\n \"filename\": \"zechariah\",\r\n \"muxPlaybackId\": \"J2VrrthtfMUEhNLNWIvdst9ovEsCBoAwC00JbS01JCBC8\",\r\n \"videoUrl\": \"https://stream.mux.com/J2VrrthtfMUEhNLNWIvdst9ovEsCBoAwC00JbS01JCBC8/high.mp4\",\r\n \"thumbnailUrl\": \"https://d1bsmz3sdihplr.cloudfront.net/media/Posters%20Download/39-Zechariah-FNL.jpg\"\r\n },\r\n {\r\n \"id\": \"bp-qsffszig\",\r\n \"title\": \"Malachi\",\r\n \"filename\": \"malachi\",\r\n \"muxPlaybackId\": \"qsffsziguotrr00hG6fmDFt3qwbnhHny5GmQVKxtyc00I\",\r\n \"videoUrl\": \"https://stream.mux.com/qsffsziguotrr00hG6fmDFt3qwbnhHny5GmQVKxtyc00I/high.mp4\",\r\n \"thumbnailUrl\": \"https://d1bsmz3sdihplr.cloudfront.net/media/Posters%20Download/40-Malachi-FNL.jpg\"\r\n },\r\n {\r\n \"id\": \"placeholder-12chronicles\",\r\n \"title\": \"1 & 2 Chronicles\",\r\n \"filename\": \"12chronicles\",\r\n \"muxPlaybackId\": \"\",\r\n \"videoUrl\": \"\",\r\n \"thumbnailUrl\": \"\"\r\n }\r\n ]\r\n },\r\n {\r\n \"name\": \"New Testament Overviews\",\r\n \"image\": \"https://ik.imagekit.io/bpweb1/web/media/video-collection-images/new-testament-overviews/tr:q-65,w-300/nt-overviews_16.9.jpg\",\r\n \"videos\": [\r\n {\r\n \"id\": \"bp-Z023UIyq\",\r\n \"title\": \"New Testament Overview\",\r\n \"filename\": \"new-testament-overview\",\r\n \"muxPlaybackId\": \"Z023UIyqQF6RzvxYo02tMKBqlUrWdWpingO02VYDgWzQPY\",\r\n \"videoUrl\": \"https://stream.mux.com/Z023UIyqQF6RzvxYo02tMKBqlUrWdWpingO02VYDgWzQPY/high.mp4\",\r\n \"thumbnailUrl\": \"https://d1bsmz3sdihplr.cloudfront.net/media/Posters%20Download/NT%20Overview.jpg\"\r\n },\r\n {\r\n \"id\": \"bp-801erPO5\",\r\n \"title\": \"Matthew 1-13\",\r\n \"filename\": \"matthew-1-13\",\r\n \"muxPlaybackId\": \"801erPO5siagtLvyNYBB01nIS8GRD4ZQFUgLPEPb2Vc2Y\",\r\n \"videoUrl\": \"https://stream.mux.com/801erPO5siagtLvyNYBB01nIS8GRD4ZQFUgLPEPb2Vc2Y/high.mp4\",\r\n \"thumbnailUrl\": \"https://d1bsmz3sdihplr.cloudfront.net/media/Posters%20Download/42-Matthew-FNL-1.jpg\"\r\n },\r\n {\r\n \"id\": \"bp-l26rKhJa\",\r\n \"title\": \"Matthew 14-28\",\r\n \"filename\": \"matthew-14-28\",\r\n \"muxPlaybackId\": \"l26rKhJazSPaf0201RS8aLbe9bTF47R2yx021kYKHVzyVI\",\r\n \"videoUrl\": \"https://stream.mux.com/l26rKhJazSPaf0201RS8aLbe9bTF47R2yx021kYKHVzyVI/high.mp4\",\r\n \"thumbnailUrl\": \"https://d1bsmz3sdihplr.cloudfront.net/media/Posters%20Download/42-Matthew-FNL-1.jpg\"\r\n },\r\n {\r\n \"id\": \"bp-e9eTDZe5\",\r\n \"title\": \"Mark\",\r\n \"filename\": \"mark\",\r\n \"muxPlaybackId\": \"e9eTDZe5OFaz22dp2Llh8srfxP2unSimWnUIZVq202Os\",\r\n \"videoUrl\": \"https://stream.mux.com/e9eTDZe5OFaz22dp2Llh8srfxP2unSimWnUIZVq202Os/high.mp4\",\r\n \"thumbnailUrl\": \"https://d1bsmz3sdihplr.cloudfront.net/media/Posters%20Download/44-Mark-FNL.jpg\"\r\n },\r\n {\r\n \"id\": \"bp-sC6VzZQD\",\r\n \"title\": \"John 1-12\",\r\n \"filename\": \"john-1-12\",\r\n \"muxPlaybackId\": \"sC6VzZQDk3024mhE2n8csZLINmtu7Vew8sgEs2W01V01gg\",\r\n \"videoUrl\": \"https://stream.mux.com/sC6VzZQDk3024mhE2n8csZLINmtu7Vew8sgEs2W01V01gg/high.mp4\",\r\n \"thumbnailUrl\": \"https://d1bsmz3sdihplr.cloudfront.net/media/Posters%20Download/45-46-john-1.jpg\"\r\n },\r\n {\r\n \"id\": \"bp-THgfzaH0\",\r\n \"title\": \"John 13-21\",\r\n \"filename\": \"john-13-21\",\r\n \"muxPlaybackId\": \"THgfzaH02VR5sEqbks815HtAvqp02ecinrwLaQmw3b6LM\",\r\n \"videoUrl\": \"https://stream.mux.com/THgfzaH02VR5sEqbks815HtAvqp02ecinrwLaQmw3b6LM/high.mp4\",\r\n \"thumbnailUrl\": \"https://d1bsmz3sdihplr.cloudfront.net/media/Posters%20Download/45-46-john-1.jpg\"\r\n },\r\n {\r\n \"id\": \"bp-stejN00X\",\r\n \"title\": \"Luke 1-9\",\r\n \"filename\": \"luke-1-9\",\r\n \"muxPlaybackId\": \"stejN00X6iFAutx7foc902ijNyO11r7gch8gNMnzGVLBM\",\r\n \"videoUrl\": \"https://stream.mux.com/stejN00X6iFAutx7foc902ijNyO11r7gch8gNMnzGVLBM/high.mp4\",\r\n \"thumbnailUrl\": \"https://d1bsmz3sdihplr.cloudfront.net/media/Posters%20Download/47-48-Luke-FNL.jpg\"\r\n },\r\n {\r\n \"id\": \"bp-00zzJzUd\",\r\n \"title\": \"Luke 10-24\",\r\n \"filename\": \"luke-10-24\",\r\n \"muxPlaybackId\": \"00zzJzUdTCefLs01DFvfNKmW5f00YXkovQl01PHvJyTJjhY\",\r\n \"videoUrl\": \"https://stream.mux.com/00zzJzUdTCefLs01DFvfNKmW5f00YXkovQl01PHvJyTJjhY/high.mp4\",\r\n \"thumbnailUrl\": \"https://d1bsmz3sdihplr.cloudfront.net/media/Posters%20Download/47-48-Luke-FNL.jpg\"\r\n },\r\n {\r\n \"id\": \"bp-zEm8b16B\",\r\n \"title\": \"Acts 1-12\",\r\n \"filename\": \"acts-1-12\",\r\n \"muxPlaybackId\": \"zEm8b16B4p7NWXnDvS5nu25nSExRoI6EKP5GhHAWg2Q\",\r\n \"videoUrl\": \"https://stream.mux.com/zEm8b16B4p7NWXnDvS5nu25nSExRoI6EKP5GhHAWg2Q/high.mp4\",\r\n \"thumbnailUrl\": \"https://d1bsmz3sdihplr.cloudfront.net/media/Posters%20Download/49-Acts-FNL.jpg\"\r\n },\r\n {\r\n \"id\": \"bp-JGLOuBLC\",\r\n \"title\": \"Acts 13-28\",\r\n \"filename\": \"acts-13-28\",\r\n \"muxPlaybackId\": \"JGLOuBLC800dwIB2EWj027EN9e6K42poyigmI600moX00008\",\r\n \"videoUrl\": \"https://stream.mux.com/JGLOuBLC800dwIB2EWj027EN9e6K42poyigmI600moX00008/high.mp4\",\r\n \"thumbnailUrl\": \"https://d1bsmz3sdihplr.cloudfront.net/media/Posters%20Download/49-Acts-FNL.jpg\"\r\n },\r\n {\r\n \"id\": \"bp-JOwtd4wJ\",\r\n \"title\": \"Romans 1-4\",\r\n \"filename\": \"romans-1-4\",\r\n \"muxPlaybackId\": \"JOwtd4wJBaE4tNEpG29osk7YpsfJGd1hvFP9RL2nPWY\",\r\n \"videoUrl\": \"https://stream.mux.com/JOwtd4wJBaE4tNEpG29osk7YpsfJGd1hvFP9RL2nPWY/high.mp4\",\r\n \"thumbnailUrl\": \"https://d1bsmz3sdihplr.cloudfront.net/media/Posters%20Download/50_Romans.jpg\"\r\n },\r\n {\r\n \"id\": \"bp-01O8p00k\",\r\n \"title\": \"Romans 5-16\",\r\n \"filename\": \"romans-5-16\",\r\n \"muxPlaybackId\": \"01O8p00kAKeMNeSBelNy100lSoMoFcCZ01W6rU1McatNQ8w\",\r\n \"videoUrl\": \"https://stream.mux.com/01O8p00kAKeMNeSBelNy100lSoMoFcCZ01W6rU1McatNQ8w/high.mp4\",\r\n \"thumbnailUrl\": \"https://d1bsmz3sdihplr.cloudfront.net/media/Posters%20Download/50_Romans.jpg\"\r\n },\r\n {\r\n \"id\": \"bp-WieKKhX2\",\r\n \"title\": \"1 Corinthians\",\r\n \"filename\": \"1-corinthians\",\r\n \"muxPlaybackId\": \"WieKKhX26bqP4x9OKvQUmBKSHvk38EcEeTilyn5lXP4\",\r\n \"videoUrl\": \"https://stream.mux.com/WieKKhX26bqP4x9OKvQUmBKSHvk38EcEeTilyn5lXP4/high.mp4\",\r\n \"thumbnailUrl\": \"https://d1bsmz3sdihplr.cloudfront.net/media/Posters%20Download/52-53-Corinthians.jpg\"\r\n },\r\n {\r\n \"id\": \"bp-XoW027eY\",\r\n \"title\": \"2 Corinthians\",\r\n \"filename\": \"2-corinthians\",\r\n \"muxPlaybackId\": \"XoW027eYYCX1FQvly9RAOIeH02KL012t4n2L3B1IosUSyI\",\r\n \"videoUrl\": \"https://stream.mux.com/XoW027eYYCX1FQvly9RAOIeH02KL012t4n2L3B1IosUSyI/high.mp4\",\r\n \"thumbnailUrl\": \"https://d1bsmz3sdihplr.cloudfront.net/media/Posters%20Download/53-2-Corinthians-FNL2.jpg\"\r\n },\r\n {\r\n \"id\": \"bp-4IfSvOSl\",\r\n \"title\": \"Galatians\",\r\n \"filename\": \"galatians\",\r\n \"muxPlaybackId\": \"4IfSvOSllmXJrS81fhXR01HAs7zscrlEX9r4D9F9M4dg\",\r\n \"videoUrl\": \"https://stream.mux.com/4IfSvOSllmXJrS81fhXR01HAs7zscrlEX9r4D9F9M4dg/high.mp4\",\r\n \"thumbnailUrl\": \"https://d1bsmz3sdihplr.cloudfront.net/media/Posters%20Download/54-Galatians-FNL.jpg\"\r\n },\r\n {\r\n \"id\": \"bp-fBwEIh2Z\",\r\n \"title\": \"Ephesians\",\r\n \"filename\": \"ephesians\",\r\n \"muxPlaybackId\": \"fBwEIh2ZQL901mFJZAw7f02aRqFRHNdinm8w1T01m023I02M\",\r\n \"videoUrl\": \"https://stream.mux.com/fBwEIh2ZQL901mFJZAw7f02aRqFRHNdinm8w1T01m023I02M/high.mp4\",\r\n \"thumbnailUrl\": \"https://d1bsmz3sdihplr.cloudfront.net/media/Posters%20Download/55-Ephesians-FNL.jpg\"\r\n },\r\n {\r\n \"id\": \"bp-02ih3eMg\",\r\n \"title\": \"Philippians\",\r\n \"filename\": \"philippians\",\r\n \"muxPlaybackId\": \"02ih3eMgX8BhfWNCQvCAAx64o6tp702Y300pspD00KtyHqY\",\r\n \"videoUrl\": \"https://stream.mux.com/02ih3eMgX8BhfWNCQvCAAx64o6tp702Y300pspD00KtyHqY/high.mp4\",\r\n \"thumbnailUrl\": \"https://d1bsmz3sdihplr.cloudfront.net/media/Posters%20Download/56-Philippians-FNL.jpg\"\r\n },\r\n {\r\n \"id\": \"bp-V01bN4sE\",\r\n \"title\": \"Colossians\",\r\n \"filename\": \"colossians\",\r\n \"muxPlaybackId\": \"V01bN4sEe00pnK3q3dpeTcXb76puDljNGzQVXljgz8BZA\",\r\n \"videoUrl\": \"https://stream.mux.com/V01bN4sEe00pnK3q3dpeTcXb76puDljNGzQVXljgz8BZA/high.mp4\",\r\n \"thumbnailUrl\": \"https://d1bsmz3sdihplr.cloudfront.net/media/Posters%20Download/57%20Colossians%20PRF.jpg\"\r\n },\r\n {\r\n \"id\": \"bp-LX1qiBym\",\r\n \"title\": \"Philemon\",\r\n \"filename\": \"philemon\",\r\n \"muxPlaybackId\": \"LX1qiBymc001VKGvwvsYPVStla01c02cjs8gYr2XoJns01c\",\r\n \"videoUrl\": \"https://stream.mux.com/LX1qiBymc001VKGvwvsYPVStla01c02cjs8gYr2XoJns01c/high.mp4\",\r\n \"thumbnailUrl\": \"https://d1bsmz3sdihplr.cloudfront.net/media/Posters%20Download/58-Philemon-FNL-1.jpg\"\r\n },\r\n {\r\n \"id\": \"bp-fUgStG3N\",\r\n \"title\": \"1 Thessalonians\",\r\n \"filename\": \"1-thessalonians\",\r\n \"muxPlaybackId\": \"fUgStG3Nmi01m62gSgztdausKS186QWKC1ElQSrxHTPo\",\r\n \"videoUrl\": \"https://stream.mux.com/fUgStG3Nmi01m62gSgztdausKS186QWKC1ElQSrxHTPo/high.mp4\",\r\n \"thumbnailUrl\": \"https://d1bsmz3sdihplr.cloudfront.net/media/Posters%20Download/59a-1-Thessalonians-FNL.jpg\"\r\n },\r\n {\r\n \"id\": \"bp-s8xNyy92\",\r\n \"title\": \"2 Thessalonians\",\r\n \"filename\": \"2-thessalonians\",\r\n \"muxPlaybackId\": \"s8xNyy92ChSWhjehfSxREYKI5KsrGGZcnPTwVp8gKJ4\",\r\n \"videoUrl\": \"https://stream.mux.com/s8xNyy92ChSWhjehfSxREYKI5KsrGGZcnPTwVp8gKJ4/high.mp4\",\r\n \"thumbnailUrl\": \"https://d1bsmz3sdihplr.cloudfront.net/media/Posters%20Download/59b-2-Thessalonians-FNL.jpg\"\r\n },\r\n {\r\n \"id\": \"bp-vP00JOsZ\",\r\n \"title\": \"1 Timothy\",\r\n \"filename\": \"1-timothy\",\r\n \"muxPlaybackId\": \"vP00JOsZ45owxi02N7fGK8rN1J3BBRXND3RX7ucUMBjO00\",\r\n \"videoUrl\": \"https://stream.mux.com/vP00JOsZ45owxi02N7fGK8rN1J3BBRXND3RX7ucUMBjO00/high.mp4\",\r\n \"thumbnailUrl\": \"https://d1bsmz3sdihplr.cloudfront.net/media/Posters%20Download/60-1-Timothy-FNL.jpg\"\r\n },\r\n {\r\n \"id\": \"bp-CPH011Q2\",\r\n \"title\": \"2 Timothy\",\r\n \"filename\": \"2-timothy\",\r\n \"muxPlaybackId\": \"CPH011Q2nQ8jLVAKmU4n4fKWcP9lCbHLgT6pSsVlv5iw\",\r\n \"videoUrl\": \"https://stream.mux.com/CPH011Q2nQ8jLVAKmU4n4fKWcP9lCbHLgT6pSsVlv5iw/high.mp4\",\r\n \"thumbnailUrl\": \"https://d1bsmz3sdihplr.cloudfront.net/media/Posters%20Download/61-2-Timothy-FNL.jpg\"\r\n },\r\n {\r\n \"id\": \"bp-yS7D01Wg\",\r\n \"title\": \"Titus\",\r\n \"filename\": \"titus\",\r\n \"muxPlaybackId\": \"yS7D01WgY23OXviV6oFm01ds6XMB4Xh02fmPwMiuxUZq018\",\r\n \"videoUrl\": \"https://stream.mux.com/yS7D01WgY23OXviV6oFm01ds6XMB4Xh02fmPwMiuxUZq018/high.mp4\",\r\n \"thumbnailUrl\": \"https://d1bsmz3sdihplr.cloudfront.net/media/Posters%20Download/62%20Titus%20FNL.jpg\"\r\n },\r\n {\r\n \"id\": \"bp-8dq3itoi\",\r\n \"title\": \"Hebrews\",\r\n \"filename\": \"hebrews\",\r\n \"muxPlaybackId\": \"8dq3itoij1p9Uuydyk2joy9skBhO00N00SrPrL020001Q8i8\",\r\n \"videoUrl\": \"https://stream.mux.com/8dq3itoij1p9Uuydyk2joy9skBhO00N00SrPrL020001Q8i8/high.mp4\",\r\n \"thumbnailUrl\": \"https://d1bsmz3sdihplr.cloudfront.net/media/Posters%20Download/64-James_FNL.jpg\"\r\n },\r\n {\r\n \"id\": \"bp-qhwIsZal\",\r\n \"title\": \"James\",\r\n \"filename\": \"james\",\r\n \"muxPlaybackId\": \"qhwIsZal01vnXbXQUiLeY00LOdUML2HtPXMnH8PgRAZf00\",\r\n \"videoUrl\": \"https://stream.mux.com/qhwIsZal01vnXbXQUiLeY00LOdUML2HtPXMnH8PgRAZf00/high.mp4\",\r\n \"thumbnailUrl\": \"https://d1bsmz3sdihplr.cloudfront.net/media/Posters%20Download/64-James_FNL.jpg\"\r\n },\r\n {\r\n \"id\": \"bp-cgex91dC\",\r\n \"title\": \"1 Peter\",\r\n \"filename\": \"1-peter\",\r\n \"muxPlaybackId\": \"cgex91dCChkk6bl6oDZAT6KvJZREDYC1MSVKyTqLdKk\",\r\n \"videoUrl\": \"https://stream.mux.com/cgex91dCChkk6bl6oDZAT6KvJZREDYC1MSVKyTqLdKk/high.mp4\",\r\n \"thumbnailUrl\": \"https://d1bsmz3sdihplr.cloudfront.net/media/Posters%20Download/65-1-Peter-FNL.jpg\"\r\n },\r\n {\r\n \"id\": \"bp-mlymhw6h\",\r\n \"title\": \"2 Peter\",\r\n \"filename\": \"2-peter\",\r\n \"muxPlaybackId\": \"mlymhw6hBY2vK1ZYO00Dfwmnz0000G7KoCOPINAmMDDJzw\",\r\n \"videoUrl\": \"https://stream.mux.com/mlymhw6hBY2vK1ZYO00Dfwmnz0000G7KoCOPINAmMDDJzw/high.mp4\",\r\n \"thumbnailUrl\": \"https://d1bsmz3sdihplr.cloudfront.net/media/Posters%20Download/66-2-Peter-FNL.jpg\"\r\n },\r\n {\r\n \"id\": \"bp-3Kp22zNH\",\r\n \"title\": \"1-3 John\",\r\n \"filename\": \"1-3-john\",\r\n \"muxPlaybackId\": \"3Kp22zNH5QhX027LKFYSknh1fmOGtYkekaPFYY5hFg5c\",\r\n \"videoUrl\": \"https://stream.mux.com/3Kp22zNH5QhX027LKFYSknh1fmOGtYkekaPFYY5hFg5c/high.mp4\",\r\n \"thumbnailUrl\": \"https://d1bsmz3sdihplr.cloudfront.net/media/Posters%20Download/67-123-John.jpg\"\r\n },\r\n {\r\n \"id\": \"bp-W01i5s01\",\r\n \"title\": \"Jude\",\r\n \"filename\": \"jude\",\r\n \"muxPlaybackId\": \"W01i5s0102PiKfdLNO1E9zNThUN9N1FWyMCqVLSTYk7dnI\",\r\n \"videoUrl\": \"https://stream.mux.com/W01i5s0102PiKfdLNO1E9zNThUN9N1FWyMCqVLSTYk7dnI/high.mp4\",\r\n \"thumbnailUrl\": \"https://d1bsmz3sdihplr.cloudfront.net/media/Posters%20Download/68-Jude-FNL.jpg\"\r\n },\r\n {\r\n \"id\": \"bp-005Ha01v\",\r\n \"title\": \"Revelation 1-11\",\r\n \"filename\": \"revelation-1-11\",\r\n \"muxPlaybackId\": \"005Ha01v65P4LM02xcsTbyW902oAThsAtuSRaCHnNedC01Dk\",\r\n \"videoUrl\": \"https://stream.mux.com/005Ha01v65P4LM02xcsTbyW902oAThsAtuSRaCHnNedC01Dk/high.mp4\",\r\n \"thumbnailUrl\": \"https://d1bsmz3sdihplr.cloudfront.net/media/Posters%20Download/69-70-Revelation-FNL.jpg\"\r\n },\r\n {\r\n \"id\": \"bp-4hFy6Fg0\",\r\n \"title\": \"Revelation 12-22\",\r\n \"filename\": \"revelation-12-22\",\r\n \"muxPlaybackId\": \"4hFy6Fg00v5OZH7ThE8s4JSZ02i3bfCexbCCyXGybUTK00\",\r\n \"videoUrl\": \"https://stream.mux.com/4hFy6Fg00v5OZH7ThE8s4JSZ02i3bfCexbCCyXGybUTK00/high.mp4\",\r\n \"thumbnailUrl\": \"https://d1bsmz3sdihplr.cloudfront.net/media/Posters%20Download/69-70-Revelation-FNL.jpg\"\r\n }\r\n ]\r\n },\r\n {\r\n \"name\": \"Biblical Themes\",\r\n \"image\": \"https://ik.imagekit.io/bpweb1/web/media/video-collection-images/themes/tr:q-65,w-300/themes_16.9.jpg\",\r\n \"videos\": [\r\n {\r\n \"id\": \"bp-M7JxYGBi\",\r\n \"title\": \"The Wilderness\",\r\n \"filename\": \"the-wilderness\",\r\n \"muxPlaybackId\": \"M7JxYGBikgT2QKm8L6PJc3HoakR841ScaGO7P5DriWY\",\r\n \"videoUrl\": \"https://stream.mux.com/M7JxYGBikgT2QKm8L6PJc3HoakR841ScaGO7P5DriWY/high.mp4\"\r\n },\r\n {\r\n \"id\": \"bp-2Z8nzeFB\",\r\n \"title\": \"Redemption\",\r\n \"filename\": \"redemption\",\r\n \"muxPlaybackId\": \"2Z8nzeFBm007rxd3Rh4fPZxIKthdoSo1M5WLyyZy4pWk\",\r\n \"videoUrl\": \"https://stream.mux.com/2Z8nzeFBm007rxd3Rh4fPZxIKthdoSo1M5WLyyZy4pWk/high.mp4\"\r\n },\r\n {\r\n \"id\": \"placeholder-theexodusway\",\r\n \"title\": \"The Exodus Way\",\r\n \"filename\": \"theexodusway\",\r\n \"muxPlaybackId\": \"\",\r\n \"videoUrl\": \"\",\r\n \"thumbnailUrl\": \"\"\r\n },\r\n {\r\n \"id\": \"bp-XFrImxp1\",\r\n \"title\": \"The Mountain\",\r\n \"filename\": \"the-mountain\",\r\n \"muxPlaybackId\": \"XFrImxp1uIP02QT01cWyJuMUyOlhXmP7xwkkugDjz4sk4\",\r\n \"videoUrl\": \"https://stream.mux.com/XFrImxp1uIP02QT01cWyJuMUyOlhXmP7xwkkugDjz4sk4/high.mp4\"\r\n },\r\n {\r\n \"id\": \"placeholder-heavenearth\",\r\n \"title\": \"Heaven & Earth\",\r\n \"filename\": \"heavenearth\",\r\n \"muxPlaybackId\": \"\",\r\n \"videoUrl\": \"\",\r\n \"thumbnailUrl\": \"\"\r\n },\r\n {\r\n \"id\": \"bp-w1eN5wt0\",\r\n \"title\": \"The Messiah\",\r\n \"filename\": \"the-messiah\",\r\n \"muxPlaybackId\": \"w1eN5wt02j9fHB02DSxVrlNWbUP00pjEfnUaV2RY00FWo3E\",\r\n \"videoUrl\": \"https://stream.mux.com/w1eN5wt02j9fHB02DSxVrlNWbUP00pjEfnUaV2RY00FWo3E/high.mp4\"\r\n },\r\n {\r\n \"id\": \"bp-Qvh5JS2S\",\r\n \"title\": \"The Covenants\",\r\n \"filename\": \"the-covenants\",\r\n \"muxPlaybackId\": \"Qvh5JS2S01EI3y3pkZNGDKLP6Fwx1HlCz4Vkp5jH0071c\",\r\n \"videoUrl\": \"https://stream.mux.com/Qvh5JS2S01EI3y3pkZNGDKLP6Fwx1HlCz4Vkp5jH0071c/high.mp4\"\r\n },\r\n {\r\n \"id\": \"bp-gtPRhhK5\",\r\n \"title\": \"Holiness\",\r\n \"filename\": \"holiness\",\r\n \"muxPlaybackId\": \"gtPRhhK5ceBMz01KzpifRYfyc01IIO3LUxS02Zz9EZ7rAs\",\r\n \"videoUrl\": \"https://stream.mux.com/gtPRhhK5ceBMz01KzpifRYfyc01IIO3LUxS02Zz9EZ7rAs/high.mp4\"\r\n },\r\n {\r\n \"id\": \"bp-kjDODM02\",\r\n \"title\": \"Sacrifice and Atonement\",\r\n \"filename\": \"sacrifice-and-atonement\",\r\n \"muxPlaybackId\": \"kjDODM02a9ZuYcz5HDic01ulnf02t4SyWFav02SjydJxgqE\",\r\n \"videoUrl\": \"https://stream.mux.com/kjDODM02a9ZuYcz5HDic01ulnf02t4SyWFav02SjydJxgqE/high.mp4\"\r\n },\r\n {\r\n \"id\": \"placeholder-thelaw\",\r\n \"title\": \"The Law\",\r\n \"filename\": \"thelaw\",\r\n \"muxPlaybackId\": \"\",\r\n \"videoUrl\": \"\",\r\n \"thumbnailUrl\": \"\"\r\n },\r\n {\r\n \"id\": \"bp-mp3tjs02\",\r\n \"title\": \"Gospel of the Kingdom\",\r\n \"filename\": \"gospel-of-the-kingdom\",\r\n \"muxPlaybackId\": \"mp3tjs02X5scbwi8LqbWiAsST3I02ZgUo028PjMWSF1xRY\",\r\n \"videoUrl\": \"https://stream.mux.com/mp3tjs02X5scbwi8LqbWiAsST3I02ZgUo028PjMWSF1xRY/high.mp4\"\r\n },\r\n {\r\n \"id\": \"bp-besUIzra\",\r\n \"title\": \"Image of God\",\r\n \"filename\": \"god\",\r\n \"muxPlaybackId\": \"besUIzraM02kEUPHAGjHCuPwxBhiCST1eEtxFJRNmop8\",\r\n \"videoUrl\": \"https://stream.mux.com/besUIzraM02kEUPHAGjHCuPwxBhiCST1eEtxFJRNmop8/high.mp4\"\r\n },\r\n {\r\n \"id\": \"bp-QCLVg650\",\r\n \"title\": \"Day of the Lord\",\r\n \"filename\": \"day-of-the-lord\",\r\n \"muxPlaybackId\": \"QCLVg65005EHgvzkioxGmCYyS74NyPhTzFlNmyDUgRSY\",\r\n \"videoUrl\": \"https://stream.mux.com/QCLVg65005EHgvzkioxGmCYyS74NyPhTzFlNmyDUgRSY/high.mp4\"\r\n },\r\n {\r\n \"id\": \"bp-Ze02bzjj\",\r\n \"title\": \"Holy Spirit\",\r\n \"filename\": \"holy-spirit\",\r\n \"muxPlaybackId\": \"Ze02bzjje4rWeY3ANRlZNx00UbwM8TaUz2MdjPQLy7Avg\",\r\n \"videoUrl\": \"https://stream.mux.com/Ze02bzjje4rWeY3ANRlZNx00UbwM8TaUz2MdjPQLy7Avg/high.mp4\"\r\n },\r\n {\r\n \"id\": \"bp-Ol1xhn7l\",\r\n \"title\": \"Public Reading of Scripture\",\r\n \"filename\": \"public-reading-of-scripture\",\r\n \"muxPlaybackId\": \"Ol1xhn7lAfpO2l01vp3l9gsBswbI02MlKdxAiuoeI7OLM\",\r\n \"videoUrl\": \"https://stream.mux.com/Ol1xhn7lAfpO2l01vp3l9gsBswbI02MlKdxAiuoeI7OLM/high.mp4\"\r\n },\r\n {\r\n \"id\": \"bp-1V5ZkTXB\",\r\n \"title\": \"Justice\",\r\n \"filename\": \"justice\",\r\n \"muxPlaybackId\": \"1V5ZkTXBbm4s3w7CLcrUsYF2dO49si2cl800IC01chrKA\",\r\n \"videoUrl\": \"https://stream.mux.com/1V5ZkTXBbm4s3w7CLcrUsYF2dO49si2cl800IC01chrKA/high.mp4\"\r\n },\r\n {\r\n \"id\": \"bp-BucWzB7E\",\r\n \"title\": \"Exile\",\r\n \"filename\": \"exile\",\r\n \"muxPlaybackId\": \"BucWzB7EfewcTzArlX6ttdl00s402gBOqDEAQQ3vc3G2A\",\r\n \"videoUrl\": \"https://stream.mux.com/BucWzB7EfewcTzArlX6ttdl00s402gBOqDEAQQ3vc3G2A/high.mp4\"\r\n },\r\n {\r\n \"id\": \"bp-RuZt01Xh\",\r\n \"title\": \"The Way of the Exile\",\r\n \"filename\": \"the-way-of-the-exile\",\r\n \"muxPlaybackId\": \"RuZt01XhYaEAW7D602NITU9w1pYbucteXqQsBI2uw4n9s\",\r\n \"videoUrl\": \"https://stream.mux.com/RuZt01XhYaEAW7D602NITU9w1pYbucteXqQsBI2uw4n9s/high.mp4\"\r\n },\r\n {\r\n \"id\": \"bp-JiTNkrJp\",\r\n \"title\": \"Son of Man\",\r\n \"filename\": \"son-of-man\",\r\n \"muxPlaybackId\": \"JiTNkrJpp02MRrTnHXYZ6uTqT3u5M6izLr60248102RgmA\",\r\n \"videoUrl\": \"https://stream.mux.com/JiTNkrJpp02MRrTnHXYZ6uTqT3u5M6izLr60248102RgmA/high.mp4\"\r\n },\r\n {\r\n \"id\": \"placeholder-temple\",\r\n \"title\": \"Temple\",\r\n \"filename\": \"temple\",\r\n \"muxPlaybackId\": \"\",\r\n \"videoUrl\": \"\",\r\n \"thumbnailUrl\": \"\"\r\n },\r\n {\r\n \"id\": \"bp-SxFWP5bI\",\r\n \"title\": \"Generosity\",\r\n \"filename\": \"generosity\",\r\n \"muxPlaybackId\": \"SxFWP5bIJgAcZnRdGO0201rWzUhFsLduC5FDKA023ICwNc\",\r\n \"videoUrl\": \"https://stream.mux.com/SxFWP5bIJgAcZnRdGO0201rWzUhFsLduC5FDKA023ICwNc/high.mp4\"\r\n },\r\n {\r\n \"id\": \"bp-fJX5Tx2I\",\r\n \"title\": \"Sabbath\",\r\n \"filename\": \"sabbath\",\r\n \"muxPlaybackId\": \"fJX5Tx2IfUfQoV4hyMCjwlBj7v124Ny8HRzRvhRQb1A\",\r\n \"videoUrl\": \"https://stream.mux.com/fJX5Tx2IfUfQoV4hyMCjwlBj7v124Ny8HRzRvhRQb1A/high.mp4\"\r\n },\r\n {\r\n \"id\": \"placeholder-treeoflife\",\r\n \"title\": \"Tree of Life\",\r\n \"filename\": \"treeoflife\",\r\n \"muxPlaybackId\": \"\",\r\n \"videoUrl\": \"\",\r\n \"thumbnailUrl\": \"\"\r\n },\r\n {\r\n \"id\": \"bp-ZPLUAJxt\",\r\n \"title\": \"Water of Life\",\r\n \"filename\": \"water-of-life\",\r\n \"muxPlaybackId\": \"ZPLUAJxtrg2amMZGKVq3zRwKegV2xjqDyj2VYOjOGZ8\",\r\n \"videoUrl\": \"https://stream.mux.com/ZPLUAJxtrg2amMZGKVq3zRwKegV2xjqDyj2VYOjOGZ8/high.mp4\"\r\n },\r\n {\r\n \"id\": \"bp-CeZ7qqeH\",\r\n \"title\": \"The Test\",\r\n \"filename\": \"the-test\",\r\n \"muxPlaybackId\": \"CeZ7qqeH46EAciz93f7Ptsrz7kkeR2Cmg6BIkeDg02zU\",\r\n \"videoUrl\": \"https://stream.mux.com/CeZ7qqeH46EAciz93f7Ptsrz7kkeR2Cmg6BIkeDg02zU/high.mp4\"\r\n },\r\n {\r\n \"id\": \"bp-LpCn027I\",\r\n \"title\": \"Eternal Life\",\r\n \"filename\": \"eternal-life\",\r\n \"muxPlaybackId\": \"LpCn027Ipl8F73NwHdGgl7NmaR8vZlUG3rmDDzt58HYw\",\r\n \"videoUrl\": \"https://stream.mux.com/LpCn027Ipl8F73NwHdGgl7NmaR8vZlUG3rmDDzt58HYw/high.mp4\"\r\n },\r\n {\r\n \"id\": \"bp-eZyquSwI\",\r\n \"title\": \"Blessing and Curse\",\r\n \"filename\": \"blessing-and-curse\",\r\n \"muxPlaybackId\": \"eZyquSwIbH8Aw5vsqdWFxDQ3B3AlRhR02kLTp2sEdchE\",\r\n \"videoUrl\": \"https://stream.mux.com/eZyquSwIbH8Aw5vsqdWFxDQ3B3AlRhR02kLTp2sEdchE/high.mp4\"\r\n },\r\n {\r\n \"id\": \"bp-3hpzxSgY\",\r\n \"title\": \"The Last Will Be First\",\r\n \"filename\": \"the-last-will-be-first\",\r\n \"muxPlaybackId\": \"3hpzxSgYmRsJjgVB8oZavoV3y4S6sV48XUOQ6C02wNFg\",\r\n \"videoUrl\": \"https://stream.mux.com/3hpzxSgYmRsJjgVB8oZavoV3y4S6sV48XUOQ6C02wNFg/high.mp4\"\r\n },\r\n {\r\n \"id\": \"bp-6gCy4Wao\",\r\n \"title\": \"Anointing\",\r\n \"filename\": \"anointing\",\r\n \"muxPlaybackId\": \"6gCy4WaoAMwMDklh02EiCN4PFXRSmFzakfT4KI57UuJc\",\r\n \"videoUrl\": \"https://stream.mux.com/6gCy4WaoAMwMDklh02EiCN4PFXRSmFzakfT4KI57UuJc/high.mp4\"\r\n },\r\n {\r\n \"id\": \"bp-SzG1whFf\",\r\n \"title\": \"The City\",\r\n \"filename\": \"the-city\",\r\n \"muxPlaybackId\": \"SzG1whFfR3RzrjKrpRb1nS02RkjWFNaurimuW6SZeK02U\",\r\n \"videoUrl\": \"https://stream.mux.com/SzG1whFfR3RzrjKrpRb1nS02RkjWFNaurimuW6SZeK02U/high.mp4\"\r\n },\r\n {\r\n \"id\": \"bp-bVT6yHqs\",\r\n \"title\": \"Chaos Dragon\",\r\n \"filename\": \"chaos-dragon\",\r\n \"muxPlaybackId\": \"bVT6yHqsYk00bObQADiMsnaA01QM3sFHkbH8Cj300my7PY\",\r\n \"videoUrl\": \"https://stream.mux.com/bVT6yHqsYk00bObQADiMsnaA01QM3sFHkbH8Cj300my7PY/high.mp4\"\r\n }\r\n ]\r\n },\r\n {\r\n \"name\": \"Sermon on the Mount\",\r\n \"image\": \"https://ik.imagekit.io/bpweb1/web/media/video-collection-images/sermon-on-the-mount/tr:q-65,w-300/sotm_16.9.jpg\",\r\n \"videos\": [\r\n {\r\n \"id\": \"placeholder-introtothesermononthemount\",\r\n \"title\": \"Intro to the Sermon on the Mount\",\r\n \"filename\": \"introtothesermononthemount\",\r\n \"muxPlaybackId\": \"\",\r\n \"videoUrl\": \"\",\r\n \"thumbnailUrl\": \"\"\r\n },\r\n {\r\n \"id\": \"bp-Ikf7tTbh\",\r\n \"title\": \"The Beatitudes\",\r\n \"filename\": \"the-beatitudes\",\r\n \"muxPlaybackId\": \"Ikf7tTbhu7Nba75THD00kHPRPX0100aDAEUxHWgj8ozmI4\",\r\n \"videoUrl\": \"https://stream.mux.com/Ikf7tTbhu7Nba75THD00kHPRPX0100aDAEUxHWgj8ozmI4/high.mp4\"\r\n },\r\n {\r\n \"id\": \"placeholder-jesusfulfillsthelaw\",\r\n \"title\": \"Jesus Fulfills the Law\",\r\n \"filename\": \"jesusfulfillsthelaw\",\r\n \"muxPlaybackId\": \"\",\r\n \"videoUrl\": \"\",\r\n \"thumbnailUrl\": \"\"\r\n },\r\n {\r\n \"id\": \"placeholder-wisdomwithinlawsaboutmurderadulteryanddivorce\",\r\n \"title\": \"Wisdom Within Laws About Murder, Adultery, and Divorce\",\r\n \"filename\": \"wisdomwithinlawsaboutmurderadulteryanddivorce\",\r\n \"muxPlaybackId\": \"\",\r\n \"videoUrl\": \"\",\r\n \"thumbnailUrl\": \"\"\r\n },\r\n {\r\n \"id\": \"placeholder-wisdomwithinlawsaboutoathsretaliationandenemylove\",\r\n \"title\": \"Wisdom Within Laws About Oaths, Retaliation, and Enemy Love\",\r\n \"filename\": \"wisdomwithinlawsaboutoathsretaliationandenemylove\",\r\n \"muxPlaybackId\": \"\",\r\n \"videoUrl\": \"\",\r\n \"thumbnailUrl\": \"\"\r\n },\r\n {\r\n \"id\": \"bp-qfikVrPu\",\r\n \"title\": \"Warnings About Religious Practices\",\r\n \"filename\": \"warnings-about-religious-practices\",\r\n \"muxPlaybackId\": \"qfikVrPuNDqwDyNhAK01buX6KtmE9v6h1G1JCOc0201VNo\",\r\n \"videoUrl\": \"https://stream.mux.com/qfikVrPuNDqwDyNhAK01buX6KtmE9v6h1G1JCOc0201VNo/high.mp4\"\r\n },\r\n {\r\n \"id\": \"bp-Ok02b3Dg\",\r\n \"title\": \"The Lord's Prayer\",\r\n \"filename\": \"the-lords-prayer\",\r\n \"muxPlaybackId\": \"Ok02b3DgDhHj1pqIXldDtkGTMrkrygpUlJpxaCzqq6K4\",\r\n \"videoUrl\": \"https://stream.mux.com/Ok02b3DgDhHj1pqIXldDtkGTMrkrygpUlJpxaCzqq6K4/high.mp4\"\r\n },\r\n {\r\n \"id\": \"bp-U01wiDwh\",\r\n \"title\": \"Wealth and Worry\",\r\n \"filename\": \"wealth-and-worry\",\r\n \"muxPlaybackId\": \"U01wiDwhj602YJPtukuNGOYLYOiWeaTHwFkI3hhEz5CJE\",\r\n \"videoUrl\": \"https://stream.mux.com/U01wiDwhj602YJPtukuNGOYLYOiWeaTHwFkI3hhEz5CJE/high.mp4\"\r\n },\r\n {\r\n \"id\": \"placeholder-wisdominrelationships\",\r\n \"title\": \"Wisdom in Relationships\",\r\n \"filename\": \"wisdominrelationships\",\r\n \"muxPlaybackId\": \"\",\r\n \"videoUrl\": \"\",\r\n \"thumbnailUrl\": \"\"\r\n },\r\n {\r\n \"id\": \"placeholder-thechoice\",\r\n \"title\": \"The Choice\",\r\n \"filename\": \"thechoice\",\r\n \"muxPlaybackId\": \"\",\r\n \"videoUrl\": \"\",\r\n \"thumbnailUrl\": \"\"\r\n }\r\n ]\r\n },\r\n {\r\n \"name\": \"Sermon on the Mount Visual Commentaries\",\r\n \"image\": \"https://ik.imagekit.io/bpweb1/web/media/video-collection-images/sermon-on-the-mount-visual-commentaries/tr:q-65,w-300/sotm-vc_16.9.jpg\",\r\n \"videos\": [\r\n {\r\n \"id\": \"placeholder-matthew57sermon\",\r\n \"title\": \"Matthew 5-7: Sermon Overview\",\r\n \"filename\": \"matthew57sermon\",\r\n \"muxPlaybackId\": \"\",\r\n \"videoUrl\": \"\",\r\n \"thumbnailUrl\": \"\"\r\n },\r\n {\r\n \"id\": \"placeholder-matthew5316beatitudes\",\r\n \"title\": \"Matthew 5:3-16: Beatitudes\",\r\n \"filename\": \"matthew5316beatitudes\",\r\n \"muxPlaybackId\": \"\",\r\n \"videoUrl\": \"\",\r\n \"thumbnailUrl\": \"\"\r\n },\r\n {\r\n \"id\": \"placeholder-matthew51720righteousnessandjesusbible\",\r\n \"title\": \"Matthew 5:17-20: Righteousness and Jesus' Bible\",\r\n \"filename\": \"matthew51720righteousnessandjesusbible\",\r\n \"muxPlaybackId\": \"\",\r\n \"videoUrl\": \"\",\r\n \"thumbnailUrl\": \"\"\r\n },\r\n {\r\n \"id\": \"placeholder-matthew52122murderandcontempt\",\r\n \"title\": \"Matthew 5:21-22: Murder and Contempt\",\r\n \"filename\": \"matthew52122murderandcontempt\",\r\n \"muxPlaybackId\": \"\",\r\n \"videoUrl\": \"\",\r\n \"thumbnailUrl\": \"\"\r\n },\r\n {\r\n \"id\": \"placeholder-matthew52728adulteryandlust\",\r\n \"title\": \"Matthew 5:27-28: Adultery and Lust\",\r\n \"filename\": \"matthew52728adulteryandlust\",\r\n \"muxPlaybackId\": \"\",\r\n \"videoUrl\": \"\",\r\n \"thumbnailUrl\": \"\"\r\n },\r\n {\r\n \"id\": \"placeholder-matthew52930eyeandhandmutilation\",\r\n \"title\": \"Matthew 5:29-30: Eye and Hand Mutilation\",\r\n \"filename\": \"matthew52930eyeandhandmutilation\",\r\n \"muxPlaybackId\": \"\",\r\n \"videoUrl\": \"\",\r\n \"thumbnailUrl\": \"\"\r\n },\r\n {\r\n \"id\": \"placeholder-matthew53337oathsandtruthtelling\",\r\n \"title\": \"Matthew 5:33-37: Oaths and Truth-Telling\",\r\n \"filename\": \"matthew53337oathsandtruthtelling\",\r\n \"muxPlaybackId\": \"\",\r\n \"videoUrl\": \"\",\r\n \"thumbnailUrl\": \"\"\r\n },\r\n {\r\n \"id\": \"placeholder-matthew614generosityandthetruereward\",\r\n \"title\": \"Matthew 6:1-4: Generosity and the True Reward\",\r\n \"filename\": \"matthew614generosityandthetruereward\",\r\n \"muxPlaybackId\": \"\",\r\n \"videoUrl\": \"\",\r\n \"thumbnailUrl\": \"\"\r\n },\r\n {\r\n \"id\": \"placeholder-matthew6913theprayerofjesus\",\r\n \"title\": \"Matthew 6:9-13: The Prayer of Jesus\",\r\n \"filename\": \"matthew6913theprayerofjesus\",\r\n \"muxPlaybackId\": \"\",\r\n \"videoUrl\": \"\",\r\n \"thumbnailUrl\": \"\"\r\n },\r\n {\r\n \"id\": \"placeholder-matthew61923truewealthandgenerosity\",\r\n \"title\": \"Matthew 6:19-23: True Wealth and Generosity\",\r\n \"filename\": \"matthew61923truewealthandgenerosity\",\r\n \"muxPlaybackId\": \"\",\r\n \"videoUrl\": \"\",\r\n \"thumbnailUrl\": \"\"\r\n },\r\n {\r\n \"id\": \"placeholder-matthew712dontjudge\",\r\n \"title\": \"Matthew 7:1-2: Don't Judge\",\r\n \"filename\": \"matthew712dontjudge\",\r\n \"muxPlaybackId\": \"\",\r\n \"videoUrl\": \"\",\r\n \"thumbnailUrl\": \"\"\r\n },\r\n {\r\n \"id\": \"placeholder-matthew76pearlsbeforepigs\",\r\n \"title\": \"Matthew 7:6: Pearls Before Pigs\",\r\n \"filename\": \"matthew76pearlsbeforepigs\",\r\n \"muxPlaybackId\": \"\",\r\n \"videoUrl\": \"\",\r\n \"thumbnailUrl\": \"\"\r\n },\r\n {\r\n \"id\": \"placeholder-matthew712thegoldenrule\",\r\n \"title\": \"Matthew 7:12: The Golden Rule\",\r\n \"filename\": \"matthew712thegoldenrule\",\r\n \"muxPlaybackId\": \"\",\r\n \"videoUrl\": \"\",\r\n \"thumbnailUrl\": \"\"\r\n },\r\n {\r\n \"id\": \"placeholder-matthew72427thetwohouses\",\r\n \"title\": \"Matthew 7:24-27: The Two Houses\",\r\n \"filename\": \"matthew72427thetwohouses\",\r\n \"muxPlaybackId\": \"\",\r\n \"videoUrl\": \"\",\r\n \"thumbnailUrl\": \"\"\r\n }\r\n ]\r\n },\r\n {\r\n \"name\": \"How to Read the Bible\",\r\n \"image\": \"https://ik.imagekit.io/bpweb1/web/media/video-collection-images/how-to-read-the-bible/tr:q-65,w-300/how-to-read_16.9.jpg\",\r\n \"videos\": [\r\n {\r\n \"id\": \"bp-hRgtUaEh\",\r\n \"title\": \"What Is the Bible?\",\r\n \"filename\": \"what-is-the-bible\",\r\n \"muxPlaybackId\": \"hRgtUaEhBl97k3Y3j9GyVG794KP43ULDBu9gL6tGoa8\",\r\n \"videoUrl\": \"https://stream.mux.com/hRgtUaEhBl97k3Y3j9GyVG794KP43ULDBu9gL6tGoa8/high.mp4\"\r\n },\r\n {\r\n \"id\": \"bp-SPNOVb3w\",\r\n \"title\": \"The Story of the Bible\",\r\n \"filename\": \"the-story-of-the-bible\",\r\n \"muxPlaybackId\": \"SPNOVb3wBYm9x027k91yQrXN4RzVoufBU6fVB47Q9nI4\",\r\n \"videoUrl\": \"https://stream.mux.com/SPNOVb3wBYm9x027k91yQrXN4RzVoufBU6fVB47Q9nI4/high.mp4\"\r\n },\r\n {\r\n \"id\": \"bp-H00BPqi2\",\r\n \"title\": \"Literary Styles\",\r\n \"filename\": \"literary-styles\",\r\n \"muxPlaybackId\": \"H00BPqi2gPe7SzlrlqcAmXWSNI02Ofur02H02Gryhtpb594\",\r\n \"videoUrl\": \"https://stream.mux.com/H00BPqi2gPe7SzlrlqcAmXWSNI02Ofur02H02Gryhtpb594/high.mp4\"\r\n },\r\n {\r\n \"id\": \"bp-uDc7umNj\",\r\n \"title\": \"Ancient Jewish Meditation Literature\",\r\n \"filename\": \"ancient-jewish-meditation-literature\",\r\n \"muxPlaybackId\": \"uDc7umNjwX9ipf2DfB9Jy4x02PRAWnYKbZ6Eb02SMl00O8\",\r\n \"videoUrl\": \"https://stream.mux.com/uDc7umNjwX9ipf2DfB9Jy4x02PRAWnYKbZ6Eb02SMl00O8/high.mp4\"\r\n },\r\n {\r\n \"id\": \"bp-lbyTtmpg\",\r\n \"title\": \"Plot\",\r\n \"filename\": \"plot\",\r\n \"muxPlaybackId\": \"lbyTtmpgCaaB9VajL9jMCE457CZd8UmEzdasGntd4p8\",\r\n \"videoUrl\": \"https://stream.mux.com/lbyTtmpgCaaB9VajL9jMCE457CZd8UmEzdasGntd4p8/high.mp4\"\r\n },\r\n {\r\n \"id\": \"placeholder-character\",\r\n \"title\": \"Character\",\r\n \"filename\": \"character\",\r\n \"muxPlaybackId\": \"\",\r\n \"videoUrl\": \"\",\r\n \"thumbnailUrl\": \"\"\r\n },\r\n {\r\n \"id\": \"bp-UABvu9l0\",\r\n \"title\": \"Setting\",\r\n \"filename\": \"setting\",\r\n \"muxPlaybackId\": \"UABvu9l01T327INE12Bcy022k89nqraIWUKiMIAXkP01ow\",\r\n \"videoUrl\": \"https://stream.mux.com/UABvu9l01T327INE12Bcy022k89nqraIWUKiMIAXkP01ow/high.mp4\"\r\n },\r\n {\r\n \"id\": \"bp-73YpsKrz\",\r\n \"title\": \"Design Patterns\",\r\n \"filename\": \"design-patterns\",\r\n \"muxPlaybackId\": \"73YpsKrzNVwA7UXIW1z5evRPPssQVwZFZulpoXdCDNw\",\r\n \"videoUrl\": \"https://stream.mux.com/73YpsKrzNVwA7UXIW1z5evRPPssQVwZFZulpoXdCDNw/high.mp4\"\r\n },\r\n {\r\n \"id\": \"bp-H1Jf9btm\",\r\n \"title\": \"Poetry\",\r\n \"filename\": \"poetry\",\r\n \"muxPlaybackId\": \"H1Jf9btmzRYbrgwLGd9A7iMSMCJCxGUQkHWt202Sq7Zs\",\r\n \"videoUrl\": \"https://stream.mux.com/H1Jf9btmzRYbrgwLGd9A7iMSMCJCxGUQkHWt202Sq7Zs/high.mp4\"\r\n },\r\n {\r\n \"id\": \"bp-Os00tKl0\",\r\n \"title\": \"Poetic Metaphor\",\r\n \"filename\": \"poetic-metaphor\",\r\n \"muxPlaybackId\": \"Os00tKl02FxKZ00j0000b4NQjipQeJF01FdfZVstNez8mPJGs\",\r\n \"videoUrl\": \"https://stream.mux.com/Os00tKl02FxKZ00j0000b4NQjipQeJF01FdfZVstNez8mPJGs/high.mp4\"\r\n },\r\n {\r\n \"id\": \"placeholder-thebookofpsalms\",\r\n \"title\": \"The Book of Psalms\",\r\n \"filename\": \"thebookofpsalms\",\r\n \"muxPlaybackId\": \"\",\r\n \"videoUrl\": \"\",\r\n \"thumbnailUrl\": \"\"\r\n },\r\n {\r\n \"id\": \"bp-ivpK101T\",\r\n \"title\": \"The Prophets\",\r\n \"filename\": \"the-prophets\",\r\n \"muxPlaybackId\": \"ivpK101TcDCxH016vFvNYP01xoz8qvRMg2pBnwJUD5NoWM\",\r\n \"videoUrl\": \"https://stream.mux.com/ivpK101TcDCxH016vFvNYP01xoz8qvRMg2pBnwJUD5NoWM/high.mp4\"\r\n },\r\n {\r\n \"id\": \"placeholder-biblicallaw\",\r\n \"title\": \"Biblical Law\",\r\n \"filename\": \"biblicallaw\",\r\n \"muxPlaybackId\": \"\",\r\n \"videoUrl\": \"\",\r\n \"thumbnailUrl\": \"\"\r\n },\r\n {\r\n \"id\": \"bp-00rkXk5l\",\r\n \"title\": \"The Books of Solomon\",\r\n \"filename\": \"the-books-of-solomon\",\r\n \"muxPlaybackId\": \"00rkXk5lXIqEKMAvjYLiF1nnGivbKUFbDam5oLYRaw0100\",\r\n \"videoUrl\": \"https://stream.mux.com/00rkXk5lXIqEKMAvjYLiF1nnGivbKUFbDam5oLYRaw0100/high.mp4\"\r\n },\r\n {\r\n \"id\": \"bp-nG2ya1Vl\",\r\n \"title\": \"The Gospel\",\r\n \"filename\": \"the-gospel\",\r\n \"muxPlaybackId\": \"nG2ya1Vlm8wktajESzKIH743Uf8lqRxdN400qlVXTknU\",\r\n \"videoUrl\": \"https://stream.mux.com/nG2ya1Vlm8wktajESzKIH743Uf8lqRxdN400qlVXTknU/high.mp4\"\r\n },\r\n {\r\n \"id\": \"bp-1Mzy6Mq7\",\r\n \"title\": \"The Parables of Jesus\",\r\n \"filename\": \"the-parables-of-jesus\",\r\n \"muxPlaybackId\": \"1Mzy6Mq7JU3582ylmmsneAK01ebiGVOxRu01029zhPCD7I\",\r\n \"videoUrl\": \"https://stream.mux.com/1Mzy6Mq7JU3582ylmmsneAK01ebiGVOxRu01029zhPCD7I/high.mp4\"\r\n },\r\n {\r\n \"id\": \"placeholder-newtestamentlettershistoricalcontext\",\r\n \"title\": \"New Testament Letters: Historical Context\",\r\n \"filename\": \"newtestamentlettershistoricalcontext\",\r\n \"muxPlaybackId\": \"\",\r\n \"videoUrl\": \"\",\r\n \"thumbnailUrl\": \"\"\r\n },\r\n {\r\n \"id\": \"placeholder-newtestamentlettersliterarycontext\",\r\n \"title\": \"New Testament Letters: Literary Context\",\r\n \"filename\": \"newtestamentlettersliterarycontext\",\r\n \"muxPlaybackId\": \"\",\r\n \"videoUrl\": \"\",\r\n \"thumbnailUrl\": \"\"\r\n },\r\n {\r\n \"id\": \"bp-tUFH502z\",\r\n \"title\": \"Apocalyptic Literature\",\r\n \"filename\": \"apocalyptic-literature\",\r\n \"muxPlaybackId\": \"tUFH502znU6ShKPHoNXJBTwC01ffh5zMpMBsCNOmbY7uI\",\r\n \"videoUrl\": \"https://stream.mux.com/tUFH502znU6ShKPHoNXJBTwC01ffh5zMpMBsCNOmbY7uI/high.mp4\"\r\n }\r\n ]\r\n },\r\n {\r\n \"name\": \"Insights\",\r\n \"image\": \"https://ik.imagekit.io/bpweb1/web/media/video-collection-images/insights/tr:q-65,w-300/insights_16.9.jpg\",\r\n \"videos\": [\r\n {\r\n \"id\": \"bp-qLPJWQy1\",\r\n \"title\": \"Vocab Insight: Nissah / Test\",\r\n \"filename\": \"vocab-insight-nissah-test\",\r\n \"muxPlaybackId\": \"qLPJWQy1eCn7eVWxrbKnQPkhGtVTZGugWqCbAR01SO4Q\",\r\n \"videoUrl\": \"https://stream.mux.com/qLPJWQy1eCn7eVWxrbKnQPkhGtVTZGugWqCbAR01SO4Q/high.mp4\"\r\n },\r\n {\r\n \"id\": \"bp-zUef523s\",\r\n \"title\": \"Vocab Insight: Midbar / Wilderness\",\r\n \"filename\": \"vocab-insight-midbar-wilderness\",\r\n \"muxPlaybackId\": \"zUef523sJdXC01QoyBwgZy2c8hLIFkcW101TP9TYhZgpQ\",\r\n \"videoUrl\": \"https://stream.mux.com/zUef523sJdXC01QoyBwgZy2c8hLIFkcW101TP9TYhZgpQ/high.mp4\"\r\n },\r\n {\r\n \"id\": \"bp-lY7ItKIL\",\r\n \"title\": \"Vocab Insight: Kopher / Ransom\",\r\n \"filename\": \"vocab-insight-kopher-ransom\",\r\n \"muxPlaybackId\": \"lY7ItKILwU3KFlGy3zslkP3fwhq6GafoFbJ7AU00oDNE\",\r\n \"videoUrl\": \"https://stream.mux.com/lY7ItKILwU3KFlGy3zslkP3fwhq6GafoFbJ7AU00oDNE/high.mp4\"\r\n },\r\n {\r\n \"id\": \"bp-rTamJf4n\",\r\n \"title\": \"Vocab Insight: Ga'al / Redeem\",\r\n \"filename\": \"vocab-insight-gaal-redeem\",\r\n \"muxPlaybackId\": \"rTamJf4nGsYZMBM1Whw5ezt402Hg2LjsPol49r6lyxaM\",\r\n \"videoUrl\": \"https://stream.mux.com/rTamJf4nGsYZMBM1Whw5ezt402Hg2LjsPol49r6lyxaM/high.mp4\"\r\n },\r\n {\r\n \"id\": \"bp-n2cv00EX\",\r\n \"title\": \"Vocab Insight: 'Avad / Serve, Work\",\r\n \"filename\": \"vocab-insight-avad-serve-work\",\r\n \"muxPlaybackId\": \"n2cv00EX3SbtyvI5UsYQGHVe006wYz3q7f00ZG5uObyVc4\",\r\n \"videoUrl\": \"https://stream.mux.com/n2cv00EX3SbtyvI5UsYQGHVe006wYz3q7f00ZG5uObyVc4/high.mp4\"\r\n },\r\n {\r\n \"id\": \"bp-02nm3YWi\",\r\n \"title\": \"Vocab Insight: Zakar / Remember\",\r\n \"filename\": \"vocab-insight-zakar-remember\",\r\n \"muxPlaybackId\": \"02nm3YWiwfE01i94sus1n01qUJ8WcDzyty9ZLKUDnUPYko\",\r\n \"videoUrl\": \"https://stream.mux.com/02nm3YWiwfE01i94sus1n01qUJ8WcDzyty9ZLKUDnUPYko/high.mp4\"\r\n },\r\n {\r\n \"id\": \"bp-zml25vSh\",\r\n \"title\": \"Vocab Insight: 'Ot / Sign\",\r\n \"filename\": \"vocab-insight-ot-sign\",\r\n \"muxPlaybackId\": \"zml25vSh02FE02gxOKkH6CuHhWeApRyiJe0002Cr2fMc01g00\",\r\n \"videoUrl\": \"https://stream.mux.com/zml25vSh02FE02gxOKkH6CuHhWeApRyiJe0002Cr2fMc01g00/high.mp4\"\r\n },\r\n {\r\n \"id\": \"bp-YVnkHZNb\",\r\n \"title\": \"Vocab Insight: Tse'aqah / Outcry\",\r\n \"filename\": \"vocab-insight-tseaqah-outcry\",\r\n \"muxPlaybackId\": \"YVnkHZNb01HZq5yj2aYz6INP02N7jJ48MvxWchuLizCpc\",\r\n \"videoUrl\": \"https://stream.mux.com/YVnkHZNb01HZq5yj2aYz6INP02N7jJ48MvxWchuLizCpc/high.mp4\"\r\n },\r\n {\r\n \"id\": \"bp-yTwajq00\",\r\n \"title\": \"Passage Insight: Good Tree vs. Bad Tree\",\r\n \"filename\": \"passage-insight-good-tree-vs-bad-tree\",\r\n \"muxPlaybackId\": \"yTwajq00UB2zbSEtYljMj3dsGu7mqA7byiaHtDPy1fJM\",\r\n \"videoUrl\": \"https://stream.mux.com/yTwajq00UB2zbSEtYljMj3dsGu7mqA7byiaHtDPy1fJM/high.mp4\"\r\n },\r\n {\r\n \"id\": \"bp-JNKuG7jo\",\r\n \"title\": \"Passage Insight: Speck in the Eye\",\r\n \"filename\": \"passage-insight-speck-in-the-eye\",\r\n \"muxPlaybackId\": \"JNKuG7jo9dHTDtWtgiNThuld2JS6G83DQmxGxCrcVFQ\",\r\n \"videoUrl\": \"https://stream.mux.com/JNKuG7jo9dHTDtWtgiNThuld2JS6G83DQmxGxCrcVFQ/high.mp4\"\r\n },\r\n {\r\n \"id\": \"bp-gtHI9Fse\",\r\n \"title\": \"Vocab Insight: Basileia / Kingdom\",\r\n \"filename\": \"vocab-insight-basileia-kingdom\",\r\n \"muxPlaybackId\": \"gtHI9FseS88blMMuiYOVdnpLwmn1d02f302n6mAZdMd2w\",\r\n \"videoUrl\": \"https://stream.mux.com/gtHI9FseS88blMMuiYOVdnpLwmn1d02f302n6mAZdMd2w/high.mp4\"\r\n },\r\n {\r\n \"id\": \"bp-ffOmi02v\",\r\n \"title\": \"Passage Insight: Do Not Worry\",\r\n \"filename\": \"passage-insight-do-not-worry\",\r\n \"muxPlaybackId\": \"ffOmi02vVF00m53JRcNi97hBXE01HkhiPLg2f501L1Wr4UM\",\r\n \"videoUrl\": \"https://stream.mux.com/ffOmi02vVF00m53JRcNi97hBXE01HkhiPLg2f501L1Wr4UM/high.mp4\"\r\n },\r\n {\r\n \"id\": \"bp-DS02VBpQ\",\r\n \"title\": \"Vocab Insight: Mammon / Wealth\",\r\n \"filename\": \"vocab-insight-mammon-wealth\",\r\n \"muxPlaybackId\": \"DS02VBpQtv8rHRN4JIC3UoF00sOf0200yX2TPwny3tOOaKY\",\r\n \"videoUrl\": \"https://stream.mux.com/DS02VBpQtv8rHRN4JIC3UoF00sOf0200yX2TPwny3tOOaKY/high.mp4\"\r\n },\r\n {\r\n \"id\": \"bp-00fLzm15\",\r\n \"title\": \"Passage Insight: Purpose of Fasting\",\r\n \"filename\": \"passage-insight-purpose-of-fasting\",\r\n \"muxPlaybackId\": \"00fLzm156kyv94Wj017gCjrcGLUk3GBJC4ATboAVl02pJY\",\r\n \"videoUrl\": \"https://stream.mux.com/00fLzm156kyv94Wj017gCjrcGLUk3GBJC4ATboAVl02pJY/high.mp4\"\r\n },\r\n {\r\n \"id\": \"bp-dqmY1s8x\",\r\n \"title\": \"Vocab Insight: Teleios / Whole\",\r\n \"filename\": \"vocab-insight-teleios-whole\",\r\n \"muxPlaybackId\": \"dqmY1s8xTmPu4FR43G5bLqqRSG6dHaEEVZ45Xxuwt2o\",\r\n \"videoUrl\": \"https://stream.mux.com/dqmY1s8xTmPu4FR43G5bLqqRSG6dHaEEVZ45Xxuwt2o/high.mp4\"\r\n },\r\n {\r\n \"id\": \"bp-8HmUbdzV\",\r\n \"title\": \"Passage Insight: Creative Nonviolence\",\r\n \"filename\": \"passage-insight-creative-nonviolence\",\r\n \"muxPlaybackId\": \"8HmUbdzVV2vMhPYs1a7ZTFXQwjNRGSzzPmNCUW1SbLU\",\r\n \"videoUrl\": \"https://stream.mux.com/8HmUbdzVV2vMhPYs1a7ZTFXQwjNRGSzzPmNCUW1SbLU/high.mp4\"\r\n },\r\n {\r\n \"id\": \"bp-MJdn1lzb\",\r\n \"title\": \"Vocab Insight: Gehenna / Valley of Wailing\",\r\n \"filename\": \"vocab-insight-gehenna-valley-of-wailing\",\r\n \"muxPlaybackId\": \"MJdn1lzbsTyqAX5ja9jmtqRbRGtdj11Bhbm2B1OGvAg\",\r\n \"videoUrl\": \"https://stream.mux.com/MJdn1lzbsTyqAX5ja9jmtqRbRGtdj11Bhbm2B1OGvAg/high.mp4\"\r\n },\r\n {\r\n \"id\": \"bp-ulIlrXkH\",\r\n \"title\": \"Vocab Insight: Dikaiosune / Righteousness\",\r\n \"filename\": \"vocab-insight-dikaiosune-righteousness\",\r\n \"muxPlaybackId\": \"ulIlrXkH02M7bZb2NzOFDyzb9SoWDbI02iJthGS6oFWSs\",\r\n \"videoUrl\": \"https://stream.mux.com/ulIlrXkH02M7bZb2NzOFDyzb9SoWDbI02iJthGS6oFWSs/high.mp4\"\r\n },\r\n {\r\n \"id\": \"bp-VcInXXv6\",\r\n \"title\": \"Vocab Insight: Torah / Instruction\",\r\n \"filename\": \"vocab-insight-torah-instruction\",\r\n \"muxPlaybackId\": \"VcInXXv6p01XRTPbG01HHKW901Eqio2er1eWZYTwcAUBOA\",\r\n \"videoUrl\": \"https://stream.mux.com/VcInXXv6p01XRTPbG01HHKW901Eqio2er1eWZYTwcAUBOA/high.mp4\"\r\n },\r\n {\r\n \"id\": \"bp-tkL3bVdM\",\r\n \"title\": \"Vocab Insight: Dam / Blood\",\r\n \"filename\": \"vocab-insight-dam-blood\",\r\n \"muxPlaybackId\": \"tkL3bVdMKNYKKmtyDZRRWttU8m8JUtuKQa3yDCvf7d8\",\r\n \"videoUrl\": \"https://stream.mux.com/tkL3bVdMKNYKKmtyDZRRWttU8m8JUtuKQa3yDCvf7d8/high.mp4\"\r\n },\r\n {\r\n \"id\": \"placeholder-characterinsightjohnthebaptizer\",\r\n \"title\": \"Character Insight: John the Baptizer\",\r\n \"filename\": \"characterinsightjohnthebaptizer\",\r\n \"muxPlaybackId\": \"\",\r\n \"videoUrl\": \"\",\r\n \"thumbnailUrl\": \"\"\r\n },\r\n {\r\n \"id\": \"bp-p6sgzpA7\",\r\n \"title\": \"Vocab Insight: Erets / Land\",\r\n \"filename\": \"vocab-insight-erets-land\",\r\n \"muxPlaybackId\": \"p6sgzpA7blvqk3DgK58R00YCWFSNYxREh02YvSLpxgO6U\",\r\n \"videoUrl\": \"https://stream.mux.com/p6sgzpA7blvqk3DgK58R00YCWFSNYxREh02YvSLpxgO6U/high.mp4\"\r\n },\r\n {\r\n \"id\": \"bp-G802Wy6R\",\r\n \"title\": \"Vocab Insight: Tannin / Dragon\",\r\n \"filename\": \"vocab-insight-tannin-dragon\",\r\n \"muxPlaybackId\": \"G802Wy6Rk02joQ8j00QzgKvguABbdPd538feAKi5JY8OQQ\",\r\n \"videoUrl\": \"https://stream.mux.com/G802Wy6Rk02joQ8j00QzgKvguABbdPd538feAKi5JY8OQQ/high.mp4\"\r\n },\r\n {\r\n \"id\": \"bp-02DXqA4X\",\r\n \"title\": \"Vocab Insight: Tov / Good\",\r\n \"filename\": \"vocab-insight-tov-good\",\r\n \"muxPlaybackId\": \"02DXqA4Xg9ZCDfnfDObYpfxPLYNrtjfunEHMJhrkDixk\",\r\n \"videoUrl\": \"https://stream.mux.com/02DXqA4Xg9ZCDfnfDObYpfxPLYNrtjfunEHMJhrkDixk/high.mp4\"\r\n },\r\n {\r\n \"id\": \"bp-DiauTXFs\",\r\n \"title\": \"Vocab Insight: Ets / Tree\",\r\n \"filename\": \"vocab-insight-ets-tree\",\r\n \"muxPlaybackId\": \"DiauTXFsa944h6KNpRkVebE008VhfMAY5dLqM02nVtU01g\",\r\n \"videoUrl\": \"https://stream.mux.com/DiauTXFsa944h6KNpRkVebE008VhfMAY5dLqM02nVtU01g/high.mp4\"\r\n },\r\n {\r\n \"id\": \"placeholder-characterinsightelijah\",\r\n \"title\": \"Character Insight: Elijah\",\r\n \"filename\": \"characterinsightelijah\",\r\n \"muxPlaybackId\": \"\",\r\n \"videoUrl\": \"\",\r\n \"thumbnailUrl\": \"\"\r\n },\r\n {\r\n \"id\": \"bp-beP4J00O\",\r\n \"title\": \"Vocab Insight: Shamayim / Skies\",\r\n \"filename\": \"vocab-insight-shamayim-skies\",\r\n \"muxPlaybackId\": \"beP4J00OrIRXYpBImN1onbbF003jHoqrhZPwL5Xs02kXU8\",\r\n \"videoUrl\": \"https://stream.mux.com/beP4J00OrIRXYpBImN1onbbF003jHoqrhZPwL5Xs02kXU8/high.mp4\"\r\n },\r\n {\r\n \"id\": \"placeholder-biblebasicschoosingatranslation\",\r\n \"title\": \"Bible Basics: Choosing a Translation\",\r\n \"filename\": \"biblebasicschoosingatranslation\",\r\n \"muxPlaybackId\": \"\",\r\n \"videoUrl\": \"\",\r\n \"thumbnailUrl\": \"\"\r\n },\r\n {\r\n \"id\": \"placeholder-biblebasicshistoryofbibletranslations\",\r\n \"title\": \"Bible Basics: History of Bible Translations\",\r\n \"filename\": \"biblebasicshistoryofbibletranslations\",\r\n \"muxPlaybackId\": \"\",\r\n \"videoUrl\": \"\",\r\n \"thumbnailUrl\": \"\"\r\n },\r\n {\r\n \"id\": \"placeholder-biblebasicsjesusofnazareth\",\r\n \"title\": \"Bible Basics: Jesus of Nazareth\",\r\n \"filename\": \"biblebasicsjesusofnazareth\",\r\n \"muxPlaybackId\": \"\",\r\n \"videoUrl\": \"\",\r\n \"thumbnailUrl\": \"\"\r\n }\r\n ]\r\n },\r\n {\r\n \"name\": \"God and Spiritual Beings\",\r\n \"image\": \"https://ik.imagekit.io/bpweb1/web/media/video-collection-images/spiritual-beings/tr:q-65,w-300/spiritual-beings_16.9.jpg\",\r\n \"videos\": [\r\n {\r\n \"id\": \"placeholder-god\",\r\n \"title\": \"God\",\r\n \"filename\": \"god\",\r\n \"muxPlaybackId\": \"\",\r\n \"videoUrl\": \"\",\r\n \"thumbnailUrl\": \"\"\r\n },\r\n {\r\n \"id\": \"bp-PTRGt1Vg\",\r\n \"title\": \"Intro to Spiritual Beings\",\r\n \"filename\": \"intro-to-spiritual-beings\",\r\n \"muxPlaybackId\": \"PTRGt1VgegLyZHYTaOcXu003Q3BkJZ2Uqh01cOCrzn02pQ\",\r\n \"videoUrl\": \"https://stream.mux.com/PTRGt1VgegLyZHYTaOcXu003Q3BkJZ2Uqh01cOCrzn02pQ/high.mp4\"\r\n },\r\n {\r\n \"id\": \"placeholder-elohim\",\r\n \"title\": \"Elohim\",\r\n \"filename\": \"elohim\",\r\n \"muxPlaybackId\": \"\",\r\n \"videoUrl\": \"\",\r\n \"thumbnailUrl\": \"\"\r\n },\r\n {\r\n \"id\": \"bp-BcTDDkHz\",\r\n \"title\": \"Divine Council\",\r\n \"filename\": \"divine-council\",\r\n \"muxPlaybackId\": \"BcTDDkHzOh02jaiw01DPeT69Py01UZdQAA02bH7W00Q880000E\",\r\n \"videoUrl\": \"https://stream.mux.com/BcTDDkHzOh02jaiw01DPeT69Py01UZdQAA02bH7W00Q880000E/high.mp4\"\r\n },\r\n {\r\n \"id\": \"bp-4008X7dC\",\r\n \"title\": \"Angels and Cherubim\",\r\n \"filename\": \"angels-and-cherubim\",\r\n \"muxPlaybackId\": \"4008X7dCVeYqNkjqlHBfCBqje9YzILCud7r00JG6QIIwI\",\r\n \"videoUrl\": \"https://stream.mux.com/4008X7dCVeYqNkjqlHBfCBqje9YzILCud7r00JG6QIIwI/high.mp4\"\r\n },\r\n {\r\n \"id\": \"bp-5BHVFSzj\",\r\n \"title\": \"Angel of the Lord\",\r\n \"filename\": \"angel-of-the-lord\",\r\n \"muxPlaybackId\": \"5BHVFSzjj1qGw7eFFiPFnz202p5PSkTghh3LWOi4dvsk\",\r\n \"videoUrl\": \"https://stream.mux.com/5BHVFSzjj1qGw7eFFiPFnz202p5PSkTghh3LWOi4dvsk/high.mp4\"\r\n },\r\n {\r\n \"id\": \"bp-wfNFTuM9\",\r\n \"title\": \"The Satan and Demons\",\r\n \"filename\": \"the-satan-and-demons\",\r\n \"muxPlaybackId\": \"wfNFTuM9dhzOfOk8UJmSEBgQcHXXLvATzKw402Fhskik\",\r\n \"videoUrl\": \"https://stream.mux.com/wfNFTuM9dhzOfOk8UJmSEBgQcHXXLvATzKw402Fhskik/high.mp4\"\r\n },\r\n {\r\n \"id\": \"placeholder-thenewhumanity\",\r\n \"title\": \"The New Humanity\",\r\n \"filename\": \"thenewhumanity\",\r\n \"muxPlaybackId\": \"\",\r\n \"videoUrl\": \"\",\r\n \"thumbnailUrl\": \"\"\r\n }\r\n ]\r\n },\r\n {\r\n \"name\": \"Royal Priesthood\",\r\n \"image\": \"https://ik.imagekit.io/bpweb1/web/media/video-collection-images/royal-priesthood/tr:q-65,w-300/royal-priesthood_16.9.jpg\",\r\n \"videos\": [\r\n {\r\n \"id\": \"bp-8p4il00W\",\r\n \"title\": \"Royal Priests of Eden\",\r\n \"filename\": \"royal-priests-of-eden\",\r\n \"muxPlaybackId\": \"8p4il00WolHQf5K3RsK71Y2Q5Pk5VO7XIA3RfjnD6VPc\",\r\n \"videoUrl\": \"https://stream.mux.com/8p4il00WolHQf5K3RsK71Y2Q5Pk5VO7XIA3RfjnD6VPc/high.mp4\"\r\n },\r\n {\r\n \"id\": \"bp-l00sx7Hz\",\r\n \"title\": \"Abraham and Melchizedek\",\r\n \"filename\": \"abraham-and-melchizedek\",\r\n \"muxPlaybackId\": \"l00sx7HzULLLbB3lpC4TO2VbhjMH8uvR01isJSZKsWSXo\",\r\n \"videoUrl\": \"https://stream.mux.com/l00sx7HzULLLbB3lpC4TO2VbhjMH8uvR01isJSZKsWSXo/high.mp4\"\r\n },\r\n {\r\n \"id\": \"bp-vjuLLWtw\",\r\n \"title\": \"Moses and Aaron\",\r\n \"filename\": \"moses-and-aaron\",\r\n \"muxPlaybackId\": \"vjuLLWtwtDuA01Tr00H8Ift3tkA7gFnFvfB6R4005IyPus\",\r\n \"videoUrl\": \"https://stream.mux.com/vjuLLWtwtDuA01Tr00H8Ift3tkA7gFnFvfB6R4005IyPus/high.mp4\"\r\n },\r\n {\r\n \"id\": \"bp-cXHWwLIP\",\r\n \"title\": \"David the Priestly King\",\r\n \"filename\": \"david-the-priestly-king\",\r\n \"muxPlaybackId\": \"cXHWwLIPnwMS8zA1xDjWiuvKBGCQdupU01mCrl84QDV8\",\r\n \"videoUrl\": \"https://stream.mux.com/cXHWwLIPnwMS8zA1xDjWiuvKBGCQdupU01mCrl84QDV8/high.mp4\"\r\n },\r\n {\r\n \"id\": \"bp-deZeEuI2\",\r\n \"title\": \"Jesus the Royal Priest\",\r\n \"filename\": \"jesus-the-royal-priest\",\r\n \"muxPlaybackId\": \"deZeEuI2k9Os8V015BOttqLQIqskWtXmj3xUv01E02MgPA\",\r\n \"videoUrl\": \"https://stream.mux.com/deZeEuI2k9Os8V015BOttqLQIqskWtXmj3xUv01E02MgPA/high.mp4\"\r\n },\r\n {\r\n \"id\": \"bp-JdITfnZv\",\r\n \"title\": \"The Royal Priesthood\",\r\n \"filename\": \"the-royal-priesthood\",\r\n \"muxPlaybackId\": \"JdITfnZvu5s3YuSUUWByULbnlsitIBk6701oDuFGg023c\",\r\n \"videoUrl\": \"https://stream.mux.com/JdITfnZvu5s3YuSUUWByULbnlsitIBk6701oDuFGg023c/high.mp4\"\r\n }\r\n ]\r\n },\r\n {\r\n \"name\": \"Creation\",\r\n \"image\": \"https://ik.imagekit.io/bpweb1/web/media/video-collection-images/creation/tr:q-65,w-300/creation_16.9.jpg\",\r\n \"videos\": [\r\n {\r\n \"id\": \"placeholder-genesis1\",\r\n \"title\": \"Genesis 1\",\r\n \"filename\": \"genesis1\",\r\n \"muxPlaybackId\": \"\",\r\n \"videoUrl\": \"\",\r\n \"thumbnailUrl\": \"\"\r\n },\r\n {\r\n \"id\": \"placeholder-psalm8\",\r\n \"title\": \"Psalm 8\",\r\n \"filename\": \"psalm8\",\r\n \"muxPlaybackId\": \"\",\r\n \"videoUrl\": \"\",\r\n \"thumbnailUrl\": \"\"\r\n },\r\n {\r\n \"id\": \"placeholder-proverbs8\",\r\n \"title\": \"Proverbs 8\",\r\n \"filename\": \"proverbs8\",\r\n \"muxPlaybackId\": \"\",\r\n \"videoUrl\": \"\",\r\n \"thumbnailUrl\": \"\"\r\n },\r\n {\r\n \"id\": \"placeholder-psalm148\",\r\n \"title\": \"Psalm 148\",\r\n \"filename\": \"psalm148\",\r\n \"muxPlaybackId\": \"\",\r\n \"videoUrl\": \"\",\r\n \"thumbnailUrl\": \"\"\r\n },\r\n {\r\n \"id\": \"placeholder-john1\",\r\n \"title\": \"John 1\",\r\n \"filename\": \"john1\",\r\n \"muxPlaybackId\": \"\",\r\n \"videoUrl\": \"\",\r\n \"thumbnailUrl\": \"\"\r\n }\r\n ]\r\n },\r\n {\r\n \"name\": \"Character of God Word Studies\",\r\n \"image\": \"https://ik.imagekit.io/bpweb1/web/media/video-collection-images/character-of-god/tr:q-65,w-300/character-of-god_16.9.jpg\",\r\n \"videos\": [\r\n {\r\n \"id\": \"placeholder-visualcommentaryexodus3467\",\r\n \"title\": \"Visual Commentary: Exodus 34:6-7\",\r\n \"filename\": \"visualcommentaryexodus3467\",\r\n \"muxPlaybackId\": \"\",\r\n \"videoUrl\": \"\",\r\n \"thumbnailUrl\": \"\"\r\n },\r\n {\r\n \"id\": \"bp-JpuAhWoj\",\r\n \"title\": \"Compassion\",\r\n \"filename\": \"compassion\",\r\n \"muxPlaybackId\": \"JpuAhWojl2jdvdmGRvMrUnS9NDB1JA8RuoVNw1z4xJk\",\r\n \"videoUrl\": \"https://stream.mux.com/JpuAhWojl2jdvdmGRvMrUnS9NDB1JA8RuoVNw1z4xJk/high.mp4\"\r\n },\r\n {\r\n \"id\": \"bp-Tkl7o1Xs\",\r\n \"title\": \"Grace\",\r\n \"filename\": \"grace\",\r\n \"muxPlaybackId\": \"Tkl7o1XsC5oPuOUD4eXjzBCkh6KwagG9XQJsjM01300eo\",\r\n \"videoUrl\": \"https://stream.mux.com/Tkl7o1XsC5oPuOUD4eXjzBCkh6KwagG9XQJsjM01300eo/high.mp4\"\r\n },\r\n {\r\n \"id\": \"bp-2kAHepEr\",\r\n \"title\": \"Slow to Anger\",\r\n \"filename\": \"slow-to-anger\",\r\n \"muxPlaybackId\": \"2kAHepEr200X6njitmKW6uhKRaAvZL3m4CqvEGq6F3nU\",\r\n \"videoUrl\": \"https://stream.mux.com/2kAHepEr200X6njitmKW6uhKRaAvZL3m4CqvEGq6F3nU/high.mp4\"\r\n },\r\n {\r\n \"id\": \"bp-hpLwKf00\",\r\n \"title\": \"Loyal Love\",\r\n \"filename\": \"loyal-love\",\r\n \"muxPlaybackId\": \"hpLwKf00Sdlgv01Nwk4pjdoq9BLYOlKTXAjD7J1Cbn8AE\",\r\n \"videoUrl\": \"https://stream.mux.com/hpLwKf00Sdlgv01Nwk4pjdoq9BLYOlKTXAjD7J1Cbn8AE/high.mp4\"\r\n },\r\n {\r\n \"id\": \"bp-gmD02AQL\",\r\n \"title\": \"Faithful\",\r\n \"filename\": \"faithful\",\r\n \"muxPlaybackId\": \"gmD02AQLqIQ008hWiZiSn5p00teQKSEWtz5E01myRidVEjY\",\r\n \"videoUrl\": \"https://stream.mux.com/gmD02AQLqIQ008hWiZiSn5p00teQKSEWtz5E01myRidVEjY/high.mp4\"\r\n }\r\n ]\r\n },\r\n {\r\n \"name\": \"Word Studies\",\r\n \"image\": \"https://ik.imagekit.io/bpweb1/web/media/video-collection-images/word-studies/tr:q-65,w-300/word-studies_16.9.jpg\",\r\n \"videos\": [\r\n {\r\n \"id\": \"bp-sBUvn02T\",\r\n \"title\": \"Euangelion / Gospel\",\r\n \"filename\": \"euangelion-gospel\",\r\n \"muxPlaybackId\": \"sBUvn02TuCwrwreRj2SyRV6RVCX33SUkKteJL7ABolj8\",\r\n \"videoUrl\": \"https://stream.mux.com/sBUvn02TuCwrwreRj2SyRV6RVCX33SUkKteJL7ABolj8/high.mp4\",\r\n \"thumbnailUrl\": \"https://d1bsmz3sdihplr.cloudfront.net/media/Posters%20Download/WS_Gospel_Poster.jpg\"\r\n },\r\n {\r\n \"id\": \"bp-W00Hpd1T\",\r\n \"title\": \"Martus / Witness\",\r\n \"filename\": \"martus-witness\",\r\n \"muxPlaybackId\": \"W00Hpd1TIzozLLJhuNuHBas6CSvWuMErET9e6OmcWORo\",\r\n \"videoUrl\": \"https://stream.mux.com/W00Hpd1TIzozLLJhuNuHBas6CSvWuMErET9e6OmcWORo/high.mp4\"\r\n },\r\n {\r\n \"id\": \"placeholder-whatispassover\",\r\n \"title\": \"What Is Passover?\",\r\n \"filename\": \"whatispassover\",\r\n \"muxPlaybackId\": \"\",\r\n \"videoUrl\": \"\",\r\n \"thumbnailUrl\": \"\"\r\n }\r\n ]\r\n },\r\n {\r\n \"name\": \"Bad Words\",\r\n \"image\": \"https://ik.imagekit.io/bpweb1/web/media/video-collection-images/bad-words/tr:q-65,w-300/bad-words_16.9.jpg\",\r\n \"videos\": [\r\n {\r\n \"id\": \"placeholder-sinkhata\",\r\n \"title\": \"Sin (Khata)\",\r\n \"filename\": \"sinkhata\",\r\n \"muxPlaybackId\": \"\",\r\n \"videoUrl\": \"\",\r\n \"thumbnailUrl\": \"\"\r\n },\r\n {\r\n \"id\": \"placeholder-transgressionpesha\",\r\n \"title\": \"Transgression (Pesha)\",\r\n \"filename\": \"transgressionpesha\",\r\n \"muxPlaybackId\": \"\",\r\n \"videoUrl\": \"\",\r\n \"thumbnailUrl\": \"\"\r\n },\r\n {\r\n \"id\": \"placeholder-iniquityavon\",\r\n \"title\": \"Iniquity (Avon)\",\r\n \"filename\": \"iniquityavon\",\r\n \"muxPlaybackId\": \"\",\r\n \"videoUrl\": \"\",\r\n \"thumbnailUrl\": \"\"\r\n }\r\n ]\r\n },\r\n {\r\n \"name\": \"Advent\",\r\n \"image\": \"https://ik.imagekit.io/bpweb1/web/media/video-collection-images/advent/tr:q-65,w-300/advent_16.9.jpg\",\r\n \"videos\": [\r\n {\r\n \"id\": \"placeholder-yakhalhope\",\r\n \"title\": \"Yakhal / Hope\",\r\n \"filename\": \"yakhalhope\",\r\n \"muxPlaybackId\": \"\",\r\n \"videoUrl\": \"\",\r\n \"thumbnailUrl\": \"\"\r\n },\r\n {\r\n \"id\": \"placeholder-shalompeace\",\r\n \"title\": \"Shalom / Peace\",\r\n \"filename\": \"shalompeace\",\r\n \"muxPlaybackId\": \"\",\r\n \"videoUrl\": \"\",\r\n \"thumbnailUrl\": \"\"\r\n },\r\n {\r\n \"id\": \"placeholder-charajoy\",\r\n \"title\": \"Chara / Joy\",\r\n \"filename\": \"charajoy\",\r\n \"muxPlaybackId\": \"\",\r\n \"videoUrl\": \"\",\r\n \"thumbnailUrl\": \"\"\r\n },\r\n {\r\n \"id\": \"placeholder-agapelove\",\r\n \"title\": \"Agape / Love\",\r\n \"filename\": \"agapelove\",\r\n \"muxPlaybackId\": \"\",\r\n \"videoUrl\": \"\",\r\n \"thumbnailUrl\": \"\"\r\n }\r\n ]\r\n },\r\n {\r\n \"name\": \"Luke-Acts\",\r\n \"image\": \"https://ik.imagekit.io/bpweb1/web/media/video-collection-images/luke-acts/tr:q-65,w-300/luke-acts_16.9.jpg\",\r\n \"videos\": [\r\n {\r\n \"id\": \"placeholder-thebirthofjesusluke12\",\r\n \"title\": \"The Birth of Jesus: Luke 1-2\",\r\n \"filename\": \"thebirthofjesusluke12\",\r\n \"muxPlaybackId\": \"\",\r\n \"videoUrl\": \"\",\r\n \"thumbnailUrl\": \"\"\r\n },\r\n {\r\n \"id\": \"placeholder-thebaptismofjesusluke39\",\r\n \"title\": \"The Baptism of Jesus: Luke 3-9\",\r\n \"filename\": \"thebaptismofjesusluke39\",\r\n \"muxPlaybackId\": \"\",\r\n \"videoUrl\": \"\",\r\n \"thumbnailUrl\": \"\"\r\n },\r\n {\r\n \"id\": \"placeholder-theprodigalsonluke919\",\r\n \"title\": \"The Prodigal Son: Luke 9-19\",\r\n \"filename\": \"theprodigalsonluke919\",\r\n \"muxPlaybackId\": \"\",\r\n \"videoUrl\": \"\",\r\n \"thumbnailUrl\": \"\"\r\n },\r\n {\r\n \"id\": \"placeholder-thecrucifixionofjesusluke1923\",\r\n \"title\": \"The Crucifixion of Jesus: Luke 19-23\",\r\n \"filename\": \"thecrucifixionofjesusluke1923\",\r\n \"muxPlaybackId\": \"\",\r\n \"videoUrl\": \"\",\r\n \"thumbnailUrl\": \"\"\r\n },\r\n {\r\n \"id\": \"placeholder-theresurrectionofjesusluke24\",\r\n \"title\": \"The Resurrection of Jesus: Luke 24\",\r\n \"filename\": \"theresurrectionofjesusluke24\",\r\n \"muxPlaybackId\": \"\",\r\n \"videoUrl\": \"\",\r\n \"thumbnailUrl\": \"\"\r\n },\r\n {\r\n \"id\": \"placeholder-pentecostacts17\",\r\n \"title\": \"Pentecost: Acts 1-7\",\r\n \"filename\": \"pentecostacts17\",\r\n \"muxPlaybackId\": \"\",\r\n \"videoUrl\": \"\",\r\n \"thumbnailUrl\": \"\"\r\n },\r\n {\r\n \"id\": \"placeholder-theapostlepaulacts812\",\r\n \"title\": \"The Apostle Paul: Acts 8-12\",\r\n \"filename\": \"theapostlepaulacts812\",\r\n \"muxPlaybackId\": \"\",\r\n \"videoUrl\": \"\",\r\n \"thumbnailUrl\": \"\"\r\n },\r\n {\r\n \"id\": \"placeholder-paulsmissionaryjourneysacts1320\",\r\n \"title\": \"Paul's Missionary Journeys: Acts 13-20\",\r\n \"filename\": \"paulsmissionaryjourneysacts1320\",\r\n \"muxPlaybackId\": \"\",\r\n \"videoUrl\": \"\",\r\n \"thumbnailUrl\": \"\"\r\n },\r\n {\r\n \"id\": \"placeholder-boundforromeacts2128\",\r\n \"title\": \"Bound for Rome: Acts 21-28\",\r\n \"filename\": \"boundforromeacts2128\",\r\n \"muxPlaybackId\": \"\",\r\n \"videoUrl\": \"\",\r\n \"thumbnailUrl\": \"\"\r\n }\r\n ]\r\n },\r\n {\r\n \"name\": \"Wisdom\",\r\n \"image\": \"https://ik.imagekit.io/bpweb1/web/media/video-collection-images/wisdom/tr:q-65,w-300/wisdom_16.9.jpg\",\r\n \"videos\": [\r\n {\r\n \"id\": \"placeholder-proverbs\",\r\n \"title\": \"Proverbs\",\r\n \"filename\": \"proverbs\",\r\n \"muxPlaybackId\": \"\",\r\n \"videoUrl\": \"\",\r\n \"thumbnailUrl\": \"\"\r\n },\r\n {\r\n \"id\": \"placeholder-ecclesiastes\",\r\n \"title\": \"Ecclesiastes\",\r\n \"filename\": \"ecclesiastes\",\r\n \"muxPlaybackId\": \"\",\r\n \"videoUrl\": \"\",\r\n \"thumbnailUrl\": \"\"\r\n },\r\n {\r\n \"id\": \"placeholder-job\",\r\n \"title\": \"Job\",\r\n \"filename\": \"job\",\r\n \"muxPlaybackId\": \"\",\r\n \"videoUrl\": \"\",\r\n \"thumbnailUrl\": \"\"\r\n }\r\n ]\r\n },\r\n {\r\n \"name\": \"The Shema\",\r\n \"image\": \"https://ik.imagekit.io/bpweb1/web/media/video-collection-images/shema/tr:q-65,w-300/shema_16.9.jpg\",\r\n \"videos\": [\r\n {\r\n \"id\": \"bp-Ks1uOCtY\",\r\n \"title\": \"Shema / Listen\",\r\n \"filename\": \"shema-listen\",\r\n \"muxPlaybackId\": \"Ks1uOCtYwhtXi02vF4PmkzIQNOv9csiTFp0166cM2Zjks\",\r\n \"videoUrl\": \"https://stream.mux.com/Ks1uOCtYwhtXi02vF4PmkzIQNOv9csiTFp0166cM2Zjks/high.mp4\",\r\n \"thumbnailUrl\": \"https://d1bsmz3sdihplr.cloudfront.net/media/Posters%20Download/WS01_Poster01_UPDATED.jpg\"\r\n },\r\n {\r\n \"id\": \"placeholder-yhwhlord\",\r\n \"title\": \"YHWH / LORD\",\r\n \"filename\": \"yhwhlord\",\r\n \"muxPlaybackId\": \"\",\r\n \"videoUrl\": \"\",\r\n \"thumbnailUrl\": \"\"\r\n },\r\n {\r\n \"id\": \"placeholder-ahavahlove\",\r\n \"title\": \"Ahavah / Love\",\r\n \"filename\": \"ahavahlove\",\r\n \"muxPlaybackId\": \"\",\r\n \"videoUrl\": \"\",\r\n \"thumbnailUrl\": \"\"\r\n },\r\n {\r\n \"id\": \"placeholder-levheart\",\r\n \"title\": \"Lev / Heart\",\r\n \"filename\": \"levheart\",\r\n \"muxPlaybackId\": \"\",\r\n \"videoUrl\": \"\",\r\n \"thumbnailUrl\": \"\"\r\n },\r\n {\r\n \"id\": \"placeholder-nepheshsoul\",\r\n \"title\": \"Nephesh / Soul\",\r\n \"filename\": \"nepheshsoul\",\r\n \"muxPlaybackId\": \"\",\r\n \"videoUrl\": \"\",\r\n \"thumbnailUrl\": \"\"\r\n },\r\n {\r\n \"id\": \"placeholder-meodstrength\",\r\n \"title\": \"Me'od / Strength\",\r\n \"filename\": \"meodstrength\",\r\n \"muxPlaybackId\": \"\",\r\n \"videoUrl\": \"\",\r\n \"thumbnailUrl\": \"\"\r\n }\r\n ]\r\n },\r\n {\r\n \"name\": \"The Deuterocanon / Apocrypha\",\r\n \"image\": \"https://ik.imagekit.io/bpweb1/web/media/video-collection-images/deuterocanon-apocrypha/tr:q-65,w-300/deutorocanon_16.9_v2.jpg\",\r\n \"videos\": [\r\n {\r\n \"id\": \"bp-3WAGrzrB\",\r\n \"title\": \"The Deuterocanon / Apocrypha Overview\",\r\n \"filename\": \"the-deuterocanon-apocrypha-overview\",\r\n \"muxPlaybackId\": \"3WAGrzrB4r101iN7XyfvaaYxFV027gp91kWfcDIn01cQHg\",\r\n \"videoUrl\": \"https://stream.mux.com/3WAGrzrB4r101iN7XyfvaaYxFV027gp91kWfcDIn01cQHg/high.mp4\"\r\n },\r\n {\r\n \"id\": \"bp-qSQvWGWU\",\r\n \"title\": \"Tobit\",\r\n \"filename\": \"tobit\",\r\n \"muxPlaybackId\": \"qSQvWGWU5pWd13Bhvlup5g1KC01ZkolK7101xR01jtfFcY\",\r\n \"videoUrl\": \"https://stream.mux.com/qSQvWGWU5pWd13Bhvlup5g1KC01ZkolK7101xR01jtfFcY/high.mp4\"\r\n },\r\n {\r\n \"id\": \"bp-JOlO4O01\",\r\n \"title\": \"Judith\",\r\n \"filename\": \"judith\",\r\n \"muxPlaybackId\": \"JOlO4O01pByVV4J3018vyWOcJiBSKODl5YpGKLTJm924U\",\r\n \"videoUrl\": \"https://stream.mux.com/JOlO4O01pByVV4J3018vyWOcJiBSKODl5YpGKLTJm924U/high.mp4\"\r\n },\r\n {\r\n \"id\": \"placeholder-esthersecondedition\",\r\n \"title\": \"Esther Second Edition\",\r\n \"filename\": \"esthersecondedition\",\r\n \"muxPlaybackId\": \"\",\r\n \"videoUrl\": \"\",\r\n \"thumbnailUrl\": \"\"\r\n },\r\n {\r\n \"id\": \"bp-py8CVk4E\",\r\n \"title\": \"1 Maccabees\",\r\n \"filename\": \"1-maccabees\",\r\n \"muxPlaybackId\": \"py8CVk4EblqO2N9q3CUiktYosM1ZxZymX9symLZI00Yc\",\r\n \"videoUrl\": \"https://stream.mux.com/py8CVk4EblqO2N9q3CUiktYosM1ZxZymX9symLZI00Yc/high.mp4\"\r\n },\r\n {\r\n \"id\": \"bp-YwbgY1wK\",\r\n \"title\": \"2 Maccabees\",\r\n \"filename\": \"2-maccabees\",\r\n \"muxPlaybackId\": \"YwbgY1wKWIP4GGZdTsITtpquMHTj01FGy5nEwFNzUdOI\",\r\n \"videoUrl\": \"https://stream.mux.com/YwbgY1wKWIP4GGZdTsITtpquMHTj01FGy5nEwFNzUdOI/high.mp4\"\r\n },\r\n {\r\n \"id\": \"bp-vrW8bnYF\",\r\n \"title\": \"The Wisdom of Solomon\",\r\n \"filename\": \"the-wisdom-of-solomon\",\r\n \"muxPlaybackId\": \"vrW8bnYFUL5Lp601aEs6MQVXS3nBZUAWnXqIZSMEPjvo\",\r\n \"videoUrl\": \"https://stream.mux.com/vrW8bnYFUL5Lp601aEs6MQVXS3nBZUAWnXqIZSMEPjvo/high.mp4\"\r\n },\r\n {\r\n \"id\": \"placeholder-thewisdomofbensira\",\r\n \"title\": \"The Wisdom of Ben Sira\",\r\n \"filename\": \"thewisdomofbensira\",\r\n \"muxPlaybackId\": \"\",\r\n \"videoUrl\": \"\",\r\n \"thumbnailUrl\": \"\"\r\n },\r\n {\r\n \"id\": \"bp-yyqbf4nb\",\r\n \"title\": \"Baruch and The Letter of Jeremiah\",\r\n \"filename\": \"baruch-and-the-letter-of-jeremiah\",\r\n \"muxPlaybackId\": \"yyqbf4nbOu7fZnIjjsHKQEZdpyRy2hyrC2XXpIbb2S4\",\r\n \"videoUrl\": \"https://stream.mux.com/yyqbf4nbOu7fZnIjjsHKQEZdpyRy2hyrC2XXpIbb2S4/high.mp4\"\r\n },\r\n {\r\n \"id\": \"placeholder-danielsecondedition\",\r\n \"title\": \"Daniel Second Edition\",\r\n \"filename\": \"danielsecondedition\",\r\n \"muxPlaybackId\": \"\",\r\n \"videoUrl\": \"\",\r\n \"thumbnailUrl\": \"\"\r\n }\r\n ]\r\n },\r\n {\r\n \"name\": \"Torah\",\r\n \"image\": \"https://ik.imagekit.io/bpweb1/web/media/video-collection-images/torah/tr:q-65,w-300/torah_16.9.jpg\",\r\n \"videos\": [\r\n {\r\n \"id\": \"placeholder-genesis111\",\r\n \"title\": \"Genesis 1-11\",\r\n \"filename\": \"genesis111\",\r\n \"muxPlaybackId\": \"\",\r\n \"videoUrl\": \"\",\r\n \"thumbnailUrl\": \"\"\r\n },\r\n {\r\n \"id\": \"placeholder-genesis1250\",\r\n \"title\": \"Genesis 12-50\",\r\n \"filename\": \"genesis1250\",\r\n \"muxPlaybackId\": \"\",\r\n \"videoUrl\": \"\",\r\n \"thumbnailUrl\": \"\"\r\n },\r\n {\r\n \"id\": \"placeholder-exodus118\",\r\n \"title\": \"Exodus 1-18\",\r\n \"filename\": \"exodus118\",\r\n \"muxPlaybackId\": \"\",\r\n \"videoUrl\": \"\",\r\n \"thumbnailUrl\": \"\"\r\n },\r\n {\r\n \"id\": \"placeholder-exodus1940\",\r\n \"title\": \"Exodus 19-40\",\r\n \"filename\": \"exodus1940\",\r\n \"muxPlaybackId\": \"\",\r\n \"videoUrl\": \"\",\r\n \"thumbnailUrl\": \"\"\r\n },\r\n {\r\n \"id\": \"placeholder-leviticus\",\r\n \"title\": \"Leviticus\",\r\n \"filename\": \"leviticus\",\r\n \"muxPlaybackId\": \"\",\r\n \"videoUrl\": \"\",\r\n \"thumbnailUrl\": \"\"\r\n },\r\n {\r\n \"id\": \"placeholder-numbers\",\r\n \"title\": \"Numbers\",\r\n \"filename\": \"numbers\",\r\n \"muxPlaybackId\": \"\",\r\n \"videoUrl\": \"\",\r\n \"thumbnailUrl\": \"\"\r\n },\r\n {\r\n \"id\": \"placeholder-deuteronomy\",\r\n \"title\": \"Deuteronomy\",\r\n \"filename\": \"deuteronomy\",\r\n \"muxPlaybackId\": \"\",\r\n \"videoUrl\": \"\",\r\n \"thumbnailUrl\": \"\"\r\n }\r\n ]\r\n },\r\n {\r\n \"name\": \"Streetlights Remix\",\r\n \"image\": \"https://ik.imagekit.io/bpweb1/web/media/Streetlights%20Remix/tr:q-65,w-300/streetlights-collection_16.9.jpg\",\r\n \"videos\": [\r\n {\r\n \"id\": \"bp-ZP01aRPI\",\r\n \"title\": \"John Overview Explainer: Streetlights Remix\",\r\n \"filename\": \"1-3-john-overview-explainer-streetlights-remix\",\r\n \"muxPlaybackId\": \"ZP01aRPIySSK3zsPABtAu7VV01cCvT3yFtVnLDcB1WgsI\",\r\n \"videoUrl\": \"https://stream.mux.com/ZP01aRPIySSK3zsPABtAu7VV01cCvT3yFtVnLDcB1WgsI/high.mp4\"\r\n },\r\n {\r\n \"id\": \"bp-UQLt012L\",\r\n \"title\": \"1 Corinthians Overview Explainer: Streetlights Remix\",\r\n \"filename\": \"1-corinthians-overview-explainer-streetlights-remix\",\r\n \"muxPlaybackId\": \"UQLt012LDROSr2IM2qsrgxPPowFTzdi024zcmkWratviY\",\r\n \"videoUrl\": \"https://stream.mux.com/UQLt012LDROSr2IM2qsrgxPPowFTzdi024zcmkWratviY/high.mp4\"\r\n },\r\n {\r\n \"id\": \"bp-cMQAU3nx\",\r\n \"title\": \"1 Peter Overview Explainer: Streetlights Remix\",\r\n \"filename\": \"1-peter-overview-explainer-streetlights-remix\",\r\n \"muxPlaybackId\": \"cMQAU3nxEJemKbLnSFMGvbc1UG700o76cqy2tCTIuOiQ\",\r\n \"videoUrl\": \"https://stream.mux.com/cMQAU3nxEJemKbLnSFMGvbc1UG700o76cqy2tCTIuOiQ/high.mp4\"\r\n },\r\n {\r\n \"id\": \"bp-Y01wNu7G\",\r\n \"title\": \"1 Thessalonians Overview Explainer: Streetlights Remix\",\r\n \"filename\": \"1-thessalonians-overview-explainer-streetlights-remix\",\r\n \"muxPlaybackId\": \"Y01wNu7GHv9dFTuOOYChmYIpxtiu9JiIRsBafIBDxAr4\",\r\n \"videoUrl\": \"https://stream.mux.com/Y01wNu7GHv9dFTuOOYChmYIpxtiu9JiIRsBafIBDxAr4/high.mp4\"\r\n },\r\n {\r\n \"id\": \"bp-B5jsgt5l\",\r\n \"title\": \"1 Timothy Overview Explainer: Streetlights Remix\",\r\n \"filename\": \"1-timothy-overview-explainer-streetlights-remix\",\r\n \"muxPlaybackId\": \"B5jsgt5lbQb42Y02FCe00UrXlg41bh6bPqCHjCC3bqKas\",\r\n \"videoUrl\": \"https://stream.mux.com/B5jsgt5lbQb42Y02FCe00UrXlg41bh6bPqCHjCC3bqKas/high.mp4\"\r\n },\r\n {\r\n \"id\": \"bp-uk02dMSV\",\r\n \"title\": \"2 Corinthians Overview Explainer: Streetlights Remix\",\r\n \"filename\": \"2-corinthians-overview-explainer-streetlights-remix\",\r\n \"muxPlaybackId\": \"uk02dMSVxeY53gvbAauGvhvFa2r01zCDsNA003ud493vBc\",\r\n \"videoUrl\": \"https://stream.mux.com/uk02dMSVxeY53gvbAauGvhvFa2r01zCDsNA003ud493vBc/high.mp4\"\r\n },\r\n {\r\n \"id\": \"bp-uNXW5bf2\",\r\n \"title\": \"2 Peter Overview Explainer: Streetlights Remix\",\r\n \"filename\": \"2-peter-overview-explainer-streetlights-remix\",\r\n \"muxPlaybackId\": \"uNXW5bf2UC82H9FkAbvltysJ6HIQYb4n3sVkLDOFQnk\",\r\n \"videoUrl\": \"https://stream.mux.com/uNXW5bf2UC82H9FkAbvltysJ6HIQYb4n3sVkLDOFQnk/high.mp4\"\r\n },\r\n {\r\n \"id\": \"bp-00eLtmUL\",\r\n \"title\": \"2 Thessalonians Overview Explainer: Streetlights Remix\",\r\n \"filename\": \"2-thessalonians-overview-explainer-streetlights-remix\",\r\n \"muxPlaybackId\": \"00eLtmULNvBlU2P29uWBl3axPEEDM75y8LV1H0143o1sM\",\r\n \"videoUrl\": \"https://stream.mux.com/00eLtmULNvBlU2P29uWBl3axPEEDM75y8LV1H0143o1sM/high.mp4\"\r\n },\r\n {\r\n \"id\": \"bp-oJNgJecO\",\r\n \"title\": \"2 Timothy Overview Explainer: Streetlights Remix\",\r\n \"filename\": \"2-timothy-overview-explainer-streetlights-remix\",\r\n \"muxPlaybackId\": \"oJNgJecOHjye2u400SdFJkZAlZjhnLm8lgYVsiwnkz8I\",\r\n \"videoUrl\": \"https://stream.mux.com/oJNgJecOHjye2u400SdFJkZAlZjhnLm8lgYVsiwnkz8I/high.mp4\"\r\n },\r\n {\r\n \"id\": \"bp-DYtXWjeU\",\r\n \"title\": \"Acts Overview Explainer: Streetlights Remix\",\r\n \"filename\": \"acts-overview-explainer-streetlights-remix\",\r\n \"muxPlaybackId\": \"DYtXWjeUqCmfpdtbEUWkkvm4qJ6y5V16CpoNg73vXWc\",\r\n \"videoUrl\": \"https://stream.mux.com/DYtXWjeUqCmfpdtbEUWkkvm4qJ6y5V16CpoNg73vXWc/high.mp4\"\r\n },\r\n {\r\n \"id\": \"bp-t53uR01z\",\r\n \"title\": \"Colossians Overview Explainer: Streetlights Remix\",\r\n \"filename\": \"colossians-overview-explainer-streetlights-remix\",\r\n \"muxPlaybackId\": \"t53uR01z5RH02yvjnlGAzt2HBmaAm3yUeCOrc5T01ntbDk\",\r\n \"videoUrl\": \"https://stream.mux.com/t53uR01z5RH02yvjnlGAzt2HBmaAm3yUeCOrc5T01ntbDk/high.mp4\"\r\n },\r\n {\r\n \"id\": \"bp-8wLjghYG\",\r\n \"title\": \"Ephesians Overview Explainer: Streetlights Remix\",\r\n \"filename\": \"ephesians-overview-explainer-streetlights-remix\",\r\n \"muxPlaybackId\": \"8wLjghYGujHDvLiKtZhNnD7ae56dBdYlzDyeiE8CciQ\",\r\n \"videoUrl\": \"https://stream.mux.com/8wLjghYGujHDvLiKtZhNnD7ae56dBdYlzDyeiE8CciQ/high.mp4\"\r\n },\r\n {\r\n \"id\": \"bp-oo00PYmh\",\r\n \"title\": \"Galatians Overview Explainer: Streetlights Remix\",\r\n \"filename\": \"galatians-overview-explainer-streetlights-remix\",\r\n \"muxPlaybackId\": \"oo00PYmhnp4zRm02Kl01Vn8aybCMQYx6007H1qX6CB02jsiM\",\r\n \"videoUrl\": \"https://stream.mux.com/oo00PYmhnp4zRm02Kl01Vn8aybCMQYx6007H1qX6CB02jsiM/high.mp4\"\r\n },\r\n {\r\n \"id\": \"bp-S01PfFSk\",\r\n \"title\": \"James Overview Explainer: Streetlights Remix\",\r\n \"filename\": \"james-overview-explainer-streetlights-remix\",\r\n \"muxPlaybackId\": \"S01PfFSkbejUAdg4x02ku3ITbz18zuJ3EiqjIowYKO01UQ\",\r\n \"videoUrl\": \"https://stream.mux.com/S01PfFSkbejUAdg4x02ku3ITbz18zuJ3EiqjIowYKO01UQ/high.mp4\"\r\n },\r\n {\r\n \"id\": \"bp-sqvltIy1\",\r\n \"title\": \"Jude Overview Explainer: Streetlights Remix\",\r\n \"filename\": \"jude-overview-explainer-streetlights-remix\",\r\n \"muxPlaybackId\": \"sqvltIy1NE4sj00yvFdScEoHcsLpXym00TxpHmv4qca5E\",\r\n \"videoUrl\": \"https://stream.mux.com/sqvltIy1NE4sj00yvFdScEoHcsLpXym00TxpHmv4qca5E/high.mp4\"\r\n },\r\n {\r\n \"id\": \"bp-unQU4sNR\",\r\n \"title\": \"Matthew Overview Explainer: Streetlights Remix\",\r\n \"filename\": \"matthew-overview-explainer-streetlights-remix\",\r\n \"muxPlaybackId\": \"unQU4sNR2c1nBB01j023kXWCev7cJkyFaJ3JGcQfdVmYY\",\r\n \"videoUrl\": \"https://stream.mux.com/unQU4sNR2c1nBB01j023kXWCev7cJkyFaJ3JGcQfdVmYY/high.mp4\"\r\n },\r\n {\r\n \"id\": \"bp-sFIHJbzM\",\r\n \"title\": \"Philemon Overview Explainer: Streetlights Remix\",\r\n \"filename\": \"philemon-overview-explainer-streetlights-remix\",\r\n \"muxPlaybackId\": \"sFIHJbzMPeWg00Kjqib6PhaJPWR3qFZ8kTye3j57dvRw\",\r\n \"videoUrl\": \"https://stream.mux.com/sFIHJbzMPeWg00Kjqib6PhaJPWR3qFZ8kTye3j57dvRw/high.mp4\"\r\n },\r\n {\r\n \"id\": \"bp-kkdx8aw1\",\r\n \"title\": \"Philippians Overview Explainer: Streetlights Remix\",\r\n \"filename\": \"philippians-overview-explainer-streetlights-remix\",\r\n \"muxPlaybackId\": \"kkdx8aw1BUYb01o6LFQ700E01rAkMPJ7F399oyfiPgoodk\",\r\n \"videoUrl\": \"https://stream.mux.com/kkdx8aw1BUYb01o6LFQ700E01rAkMPJ7F399oyfiPgoodk/high.mp4\"\r\n },\r\n {\r\n \"id\": \"bp-02rNlFiV\",\r\n \"title\": \"Titus Overview Explainer: Streetlights Remix\",\r\n \"filename\": \"titus-overview-explainer-streetlights-remix\",\r\n \"muxPlaybackId\": \"02rNlFiViJi3U5z00VVl02KSEH3YlIZuuhuXFQkKeKti2E\",\r\n \"videoUrl\": \"https://stream.mux.com/02rNlFiViJi3U5z00VVl02KSEH3YlIZuuhuXFQkKeKti2E/high.mp4\"\r\n },\r\n {\r\n \"id\": \"bp-9wHhK34D\",\r\n \"title\": \"Mark Overview Explainer: Streetlights Remix\",\r\n \"filename\": \"mark-overview-explainer-streetlights-remix\",\r\n \"muxPlaybackId\": \"9wHhK34D2JUubGeaCcHHRSna38O006Crx8bKWNO8Q02Jw\",\r\n \"videoUrl\": \"https://stream.mux.com/9wHhK34D2JUubGeaCcHHRSna38O006Crx8bKWNO8Q02Jw/high.mp4\"\r\n },\r\n {\r\n \"id\": \"bp-GO9g1dxh\",\r\n \"title\": \"Revelation Overview Explainer: Streetlights Remix\",\r\n \"filename\": \"revelation-overview-explainer-streetlights-remix\",\r\n \"muxPlaybackId\": \"GO9g1dxh8sEoAm9Nv2nOBQZONHBNy3b02Di7W7XR5W00M\",\r\n \"videoUrl\": \"https://stream.mux.com/GO9g1dxh8sEoAm9Nv2nOBQZONHBNy3b02Di7W7XR5W00M/high.mp4\"\r\n },\r\n {\r\n \"id\": \"bp-Sfx8M6Md\",\r\n \"title\": \"Romans Overview Explainer: Streetlights Remix\",\r\n \"filename\": \"romans-overview-explainer-streetlights-remix\",\r\n \"muxPlaybackId\": \"Sfx8M6MdNdQ2wce4xp02JZi3xbCvP1pkc1n8PfsArW28\",\r\n \"videoUrl\": \"https://stream.mux.com/Sfx8M6MdNdQ2wce4xp02JZi3xbCvP1pkc1n8PfsArW28/high.mp4\"\r\n },\r\n {\r\n \"id\": \"bp-nVZQcS9Z\",\r\n \"title\": \"Hebrews Overview Explainer: Streetlights Remix\",\r\n \"filename\": \"hebrews-overview-explainer-streetlights-remix\",\r\n \"muxPlaybackId\": \"nVZQcS9ZRJkfQAfn75VDFjEmotU8Q8K001bPqQUj1OdM\",\r\n \"videoUrl\": \"https://stream.mux.com/nVZQcS9ZRJkfQAfn75VDFjEmotU8Q8K001bPqQUj1OdM/high.mp4\"\r\n },\r\n {\r\n \"id\": \"bp-eWbZcpQU\",\r\n \"title\": \"The City Theme Video: Streetlights Remix\",\r\n \"filename\": \"the-city-theme-video-streetlights-remix\",\r\n \"muxPlaybackId\": \"eWbZcpQUKejlXbAwhEYCdKRdN18hdbQB6JWqXMwBhJ8\",\r\n \"videoUrl\": \"https://stream.mux.com/eWbZcpQUKejlXbAwhEYCdKRdN18hdbQB6JWqXMwBhJ8/high.mp4\"\r\n },\r\n {\r\n \"id\": \"bp-oPGXm01U\",\r\n \"title\": \"Luke Overview Explainer: Streetlights Remix\",\r\n \"filename\": \"luke-overview-explainer-streetlights-remix\",\r\n \"muxPlaybackId\": \"oPGXm01Un1tyvhaPVUnAuUQUfV6c00nnetExSB00ZXeVnE\",\r\n \"videoUrl\": \"https://stream.mux.com/oPGXm01Un1tyvhaPVUnAuUQUfV6c00nnetExSB00ZXeVnE/high.mp4\"\r\n },\r\n {\r\n \"id\": \"bp-ZP01aRPI\",\r\n \"title\": \"John Overview Explainer: Streetlights Remix\",\r\n \"filename\": \"1-3-john-overview-explainer-streetlights-remix\",\r\n \"muxPlaybackId\": \"ZP01aRPIySSK3zsPABtAu7VV01cCvT3yFtVnLDcB1WgsI\",\r\n \"videoUrl\": \"https://stream.mux.com/ZP01aRPIySSK3zsPABtAu7VV01cCvT3yFtVnLDcB1WgsI/high.mp4\"\r\n },\r\n {\r\n \"id\": \"bp-4BwYj5Yg\",\r\n \"title\": \"Public Reading of Scripture Theme Video: Streetlights Remix\",\r\n \"filename\": \"public-reading-of-scripture-theme-video-streetlights-remix\",\r\n \"muxPlaybackId\": \"4BwYj5YgbboiRjYsZFj3NV3739GPDywXbhVXZ0201S6FE\",\r\n \"videoUrl\": \"https://stream.mux.com/4BwYj5YgbboiRjYsZFj3NV3739GPDywXbhVXZ0201S6FE/high.mp4\"\r\n }\r\n ]\r\n }\r\n ]\r\n}","import { ContentProviderConfig, ContentProviderAuthData, ContentItem, ContentFile, ProviderLogos, ProviderCapabilities, IProvider, AuthType, Instructions, InstructionItem } from \"../../interfaces\";\r\nimport { createFile, slugify } from \"../../utils\";\r\nimport { parsePath } from \"../../pathUtils\";\r\nimport bibleProjectData from \"./data.json\";\r\nimport { BibleProjectData } from \"./BibleProjectInterfaces\";\r\n\r\n/**\r\n * BibleProject Provider\r\n *\r\n * Path structure:\r\n * / -> list collections\r\n * /{collectionSlug} -> list videos in collection\r\n * /{collectionSlug}/{videoId} -> single video\r\n */\r\nexport class BibleProjectProvider implements IProvider {\r\n readonly id = \"bibleproject\";\r\n readonly name = \"The Bible Project\";\r\n\r\n readonly logos: ProviderLogos = {\r\n light: \"https://static.bibleproject.com/bp-web-components/v0.25.0/bibleproject-logo-mark.svg\",\r\n dark: \"https://static.bibleproject.com/bp-web-components/v0.25.0/bibleproject-logo-mark.svg\"\r\n };\r\n\r\n readonly config: ContentProviderConfig = {\r\n id: \"bibleproject\",\r\n name: \"The Bible Project\",\r\n apiBase: \"https://bibleproject.com\",\r\n oauthBase: \"\",\r\n clientId: \"\",\r\n scopes: [],\r\n endpoints: { downloads: \"/downloads/\" }\r\n };\r\n\r\n private data: BibleProjectData = bibleProjectData;\r\n\r\n readonly requiresAuth = false;\r\n readonly authTypes: AuthType[] = [\"none\"];\r\n readonly capabilities: ProviderCapabilities = {\r\n browse: true,\r\n presentations: true,\r\n playlist: true,\r\n instructions: true,\r\n mediaLicensing: false\r\n };\r\n\r\n async browse(path?: string | null, _auth?: ContentProviderAuthData | null): Promise<ContentItem[]> {\r\n const { segments, depth } = parsePath(path);\r\n\r\n // / -> list all collections\r\n if (depth === 0) {\r\n return this.getCollections();\r\n }\r\n\r\n // /{collectionSlug} -> list videos in collection\r\n if (depth === 1) {\r\n const collectionSlug = segments[0];\r\n return this.getLessonFolders(collectionSlug, path!);\r\n }\r\n\r\n // /{collectionSlug}/{videoId} -> single video file\r\n if (depth === 2) {\r\n const collectionSlug = segments[0];\r\n const videoId = segments[1];\r\n return this.getVideoFile(collectionSlug, videoId);\r\n }\r\n\r\n return [];\r\n }\r\n\r\n private getCollections(): ContentItem[] {\r\n return this.data.collections\r\n .filter(collection => collection.videos.length > 0)\r\n .map(collection => ({\r\n type: \"folder\" as const,\r\n id: slugify(collection.name),\r\n title: collection.name,\r\n thumbnail: collection.image || undefined,\r\n path: `/${slugify(collection.name)}`\r\n }));\r\n }\r\n\r\n private getLessonFolders(collectionSlug: string, currentPath: string): ContentItem[] {\r\n const collection = this.data.collections.find(c => slugify(c.name) === collectionSlug);\r\n if (!collection) return [];\r\n\r\n return collection.videos.map(video => ({\r\n type: \"folder\" as const,\r\n id: video.id,\r\n title: video.title,\r\n thumbnail: video.thumbnailUrl,\r\n isLeaf: true,\r\n path: `${currentPath}/${video.id}`\r\n }));\r\n }\r\n\r\n private getVideoFile(collectionSlug: string, videoId: string): ContentItem[] {\r\n const collection = this.data.collections.find(c => slugify(c.name) === collectionSlug);\r\n if (!collection) return [];\r\n\r\n const video = collection.videos.find(v => v.id === videoId);\r\n if (!video) return [];\r\n\r\n return [createFile(video.id, video.title, video.videoUrl, { mediaType: \"video\", muxPlaybackId: video.muxPlaybackId, seconds: 0 })];\r\n }\r\n\r\n // async getPresentations(path: string, _auth?: ContentProviderAuthData | null): Promise<Plan | null> {\r\n // const { segments, depth } = parsePath(path);\r\n\r\n // if (depth < 1) return null;\r\n\r\n // const collectionSlug = segments[0];\r\n // const collection = this.data.collections.find(c => slugify(c.name) === collectionSlug);\r\n // if (!collection) return null;\r\n\r\n // // For collection level (depth 1), create a plan with all videos\r\n // if (depth === 1) {\r\n // const allFiles: ContentFile[] = [];\r\n // const presentations: PlanPresentation[] = collection.videos.map(video => {\r\n // const file: ContentFile = { type: \"file\", id: video.id, title: video.title, mediaType: \"video\", url: video.videoUrl, thumbnail: video.thumbnailUrl, muxPlaybackId: video.muxPlaybackId, seconds: 0 };\r\n // allFiles.push(file);\r\n // return { id: video.id, name: video.title, actionType: \"play\" as const, files: [file] };\r\n // });\r\n\r\n // return { id: slugify(collection.name), name: collection.name, thumbnail: collection.image || undefined, sections: [{ id: \"videos\", name: \"Videos\", presentations }], allFiles };\r\n // }\r\n\r\n // // For video level (depth 2, single video), create a simple plan\r\n // if (depth === 2) {\r\n // const videoId = segments[1];\r\n // const video = collection.videos.find(v => v.id === videoId);\r\n // if (!video) return null;\r\n\r\n // const file: ContentFile = { type: \"file\", id: video.id, title: video.title, mediaType: \"video\", url: video.videoUrl, thumbnail: video.thumbnailUrl, muxPlaybackId: video.muxPlaybackId, seconds: 0 };\r\n // return { id: video.id, name: video.title, thumbnail: video.thumbnailUrl, sections: [{ id: \"main\", name: \"Content\", presentations: [{ id: video.id, name: video.title, actionType: \"play\", files: [file] }] }], allFiles: [file] };\r\n // }\r\n\r\n // return null;\r\n // }\r\n\r\n async getPlaylist(path: string, _auth?: ContentProviderAuthData | null, _resolution?: number): Promise<ContentFile[] | null> {\r\n const { segments, depth } = parsePath(path);\r\n\r\n if (depth < 1) return null;\r\n\r\n const collectionSlug = segments[0];\r\n const collection = this.data.collections.find(c => slugify(c.name) === collectionSlug);\r\n if (!collection) return null;\r\n\r\n // For collection level, return all videos\r\n if (depth === 1) {\r\n const files = collection.videos.map(video => ({ type: \"file\" as const, id: video.id, title: video.title, mediaType: \"video\" as const, url: video.videoUrl, thumbnail: video.thumbnailUrl, muxPlaybackId: video.muxPlaybackId, seconds: 0 }));\r\n return files.length > 0 ? files : null;\r\n }\r\n\r\n // For video level, return the single video\r\n if (depth === 2) {\r\n const videoId = segments[1];\r\n const video = collection.videos.find(v => v.id === videoId);\r\n if (!video) return null;\r\n return [{ type: \"file\", id: video.id, title: video.title, mediaType: \"video\", url: video.videoUrl, thumbnail: video.thumbnailUrl, muxPlaybackId: video.muxPlaybackId, seconds: 0 }];\r\n }\r\n\r\n return null;\r\n }\r\n\r\n async getInstructions(path: string, _auth?: ContentProviderAuthData | null): Promise<Instructions | null> {\r\n const { segments, depth } = parsePath(path);\r\n\r\n if (depth < 1) return null;\r\n\r\n const collectionSlug = segments[0];\r\n const collection = this.data.collections.find(c => slugify(c.name) === collectionSlug);\r\n if (!collection) return null;\r\n\r\n // For collection level (depth 1), create instructions with all videos wrapped in a section\r\n if (depth === 1) {\r\n const actionItems: InstructionItem[] = collection.videos.map(video => ({\r\n id: video.id + \"-action\",\r\n itemType: \"action\",\r\n label: video.title,\r\n actionType: \"play\",\r\n children: [\n {\r\n id: video.id,\r\n itemType: \"file\",\r\n label: video.title,\r\n downloadUrl: video.videoUrl,\r\n thumbnail: video.thumbnailUrl\r\n }\n ]\r\n }));\r\n\r\n // Wrap actions in a section using the collection name\r\n const sectionItem: InstructionItem = {\r\n id: slugify(collection.name) + \"-section\",\r\n itemType: \"section\",\r\n label: collection.name,\r\n children: actionItems\r\n };\r\n\r\n return { name: collection.name, items: [sectionItem] };\r\n }\r\n\r\n // For video level (depth 2), create instructions for single video wrapped in a section\r\n if (depth === 2) {\r\n const videoId = segments[1];\r\n const video = collection.videos.find(v => v.id === videoId);\r\n if (!video) return null;\r\n\r\n const actionItem: InstructionItem = {\r\n id: video.id + \"-action\",\r\n itemType: \"action\",\r\n label: video.title,\r\n actionType: \"play\",\r\n children: [\n {\r\n id: video.id,\r\n itemType: \"file\",\r\n label: video.title,\r\n downloadUrl: video.videoUrl,\r\n thumbnail: video.thumbnailUrl\r\n }\n ]\r\n };\r\n\r\n // Wrap in a section using the collection name\r\n const sectionItem: InstructionItem = {\r\n id: slugify(collection.name) + \"-section\",\r\n itemType: \"section\",\r\n label: collection.name,\r\n children: [actionItem]\r\n };\r\n\r\n return { name: video.title, items: [sectionItem] };\r\n }\r\n\r\n return null;\r\n }\r\n\r\n supportsDeviceFlow(): boolean {\r\n return false;\r\n }\r\n}\r\n","{\n \"collections\": [\n {\n \"name\": \"Elementary\",\n \"folders\": [\n {\n \"id\": \"camp-wilderness-elementary\",\n \"name\": \"Camp Wilderness\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2026/01/Camp-Wilderness-Elementary.png\",\n \"description\": \"6 Elementary Lessons From The Israelites\",\n \"url\": \"https://highvoltagekids.com/downloads/camp-wilderness-elementary/\",\n \"lessonCount\": 6,\n \"lessons\": [\n {\n \"id\": \"camp-wilderness-elementary-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2026/01/Camp-Wilderness-Elementary.png\",\n \"files\": []\n },\n {\n \"id\": \"camp-wilderness-elementary-lesson-2\",\n \"name\": \"Lesson 2\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2026/01/Camp-Wilderness-Elementary.png\",\n \"files\": []\n },\n {\n \"id\": \"camp-wilderness-elementary-lesson-3\",\n \"name\": \"Lesson 3\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2026/01/Camp-Wilderness-Elementary.png\",\n \"files\": []\n },\n {\n \"id\": \"camp-wilderness-elementary-lesson-4\",\n \"name\": \"Lesson 4\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2026/01/Camp-Wilderness-Elementary.png\",\n \"files\": []\n },\n {\n \"id\": \"camp-wilderness-elementary-lesson-5\",\n \"name\": \"Lesson 5\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2026/01/Camp-Wilderness-Elementary.png\",\n \"files\": []\n },\n {\n \"id\": \"camp-wilderness-elementary-lesson-6\",\n \"name\": \"Lesson 6\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2026/01/Camp-Wilderness-Elementary.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"hey-god-elementary\",\n \"name\": \"Hey, God!\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2025/11/Hey-God-Elementary.png\",\n \"description\": \"6 Elementary Questions From The Life Of Moses\",\n \"url\": \"https://highvoltagekids.com/downloads/hey-god-elementary/\",\n \"lessonCount\": 6,\n \"lessons\": [\n {\n \"id\": \"hey-god-elementary-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2025/11/Hey-God-Elementary.png\",\n \"files\": [\n {\n \"type\": \"file\",\n \"id\": \"hey-god-el-1-intro\",\n \"title\": \"Intro Video\",\n \"mediaType\": \"video\",\n \"url\": \"https://files.churchpdf.com/files/hv/Hey%2BGod%2B-%2BLessons%2B1-3%2B%28EL%29/Lesson%201/Lesson%201%20Videos/Hey%20God%20-%20Lesson%201%20-%20Intro%20Video%20%28EL%29.mp4\"\n },\n {\n \"type\": \"file\",\n \"id\": \"hey-god-el-1-wgk-teaching\",\n \"title\": \"WGK - Teaching\",\n \"mediaType\": \"video\",\n \"url\": \"https://files.churchpdf.com/files/hv/Hey%2BGod%2B-%2BLessons%2B1-3%2B%28EL%29/Lesson%201/Lesson%201%20Videos/Hey%20God%20-%20Lesson%201%20-%20WGK%20-%20Teaching%20%28EL%29.mp4\"\n },\n {\n \"type\": \"file\",\n \"id\": \"hey-god-el-1-whatchagaddaknow\",\n \"title\": \"Whatchagaddaknow\",\n \"mediaType\": \"image\",\n \"url\": \"https://files.churchpdf.com/files/hv/Hey%2BGod%2B-%2BLessons%2B1-3%2B%28EL%29/Lesson%201/Lesson%201%20JPGs/Hey%20God%20-%20Lesson%201%20-%20Whatchagaddaknow%20%28EL%29.jpg\"\n },\n {\n \"type\": \"file\",\n \"id\": \"hey-god-el-1-wgk-trigger\",\n \"title\": \"WGK - Trigger\",\n \"mediaType\": \"video\",\n \"url\": \"https://files.churchpdf.com/files/hv/Hey%2BGod%2B-%2BLessons%2B1-3%2B%28EL%29/Lesson%201/Lesson%201%20Videos/Hey%20God%20-%20Lesson%201%20-%20WGK%20-%20Trigger%20%28EL%29.mp4\"\n },\n {\n \"type\": \"file\",\n \"id\": \"hey-god-el-1-game\",\n \"title\": \"Game - M&M Mix-Up\",\n \"mediaType\": \"image\",\n \"url\": \"https://files.churchpdf.com/files/hv/Hey%2BGod%2B-%2BLessons%2B1-3%2B%28EL%29/Lesson%201/Lesson%201%20JPGs/Game%20-%20M%26M%20Mix-Up.png\"\n },\n {\n \"type\": \"file\",\n \"id\": \"hey-god-el-1-bible-story-1\",\n \"title\": \"Bible Story 1\",\n \"mediaType\": \"image\",\n \"url\": \"https://files.churchpdf.com/files/hv/Hey%2BGod%2B-%2BLessons%2B1-3%2B%28EL%29/Lesson%201/Lesson%201%20JPGs/Bible%20Story/Hey%20God%20-%20Lesson%201%20-%20Bible%20Story%201%20%28EL%29.jpg\"\n },\n {\n \"type\": \"file\",\n \"id\": \"hey-god-el-1-bible-story-2\",\n \"title\": \"Bible Story 2\",\n \"mediaType\": \"image\",\n \"url\": \"https://files.churchpdf.com/files/hv/Hey%2BGod%2B-%2BLessons%2B1-3%2B%28EL%29/Lesson%201/Lesson%201%20JPGs/Bible%20Story/Hey%20God%20-%20Lesson%201%20-%20Bible%20Story%202%20%28EL%29.jpg\"\n },\n {\n \"type\": \"file\",\n \"id\": \"hey-god-el-1-bible-story-3\",\n \"title\": \"Bible Story 3\",\n \"mediaType\": \"image\",\n \"url\": \"https://files.churchpdf.com/files/hv/Hey%2BGod%2B-%2BLessons%2B1-3%2B%28EL%29/Lesson%201/Lesson%201%20JPGs/Bible%20Story/Hey%20God%20-%20Lesson%201%20-%20Bible%20Story%203%20%28EL%29.jpg\"\n },\n {\n \"type\": \"file\",\n \"id\": \"hey-god-el-1-bible-story-4\",\n \"title\": \"Bible Story 4\",\n \"mediaType\": \"image\",\n \"url\": \"https://files.churchpdf.com/files/hv/Hey%2BGod%2B-%2BLessons%2B1-3%2B%28EL%29/Lesson%201/Lesson%201%20JPGs/Bible%20Story/Hey%20God%20-%20Lesson%201%20-%20Bible%20Story%204%20%28EL%29.jpg\"\n },\n {\n \"type\": \"file\",\n \"id\": \"hey-god-el-1-bible-story-5\",\n \"title\": \"Bible Story 5\",\n \"mediaType\": \"image\",\n \"url\": \"https://files.churchpdf.com/files/hv/Hey%2BGod%2B-%2BLessons%2B1-3%2B%28EL%29/Lesson%201/Lesson%201%20JPGs/Bible%20Story/Hey%20God%20-%20Lesson%201%20-%20Bible%20Story%205%20%28EL%29.jpg\"\n },\n {\n \"type\": \"file\",\n \"id\": \"hey-god-el-1-power-verse-video\",\n \"title\": \"Power Verse Video\",\n \"mediaType\": \"video\",\n \"url\": \"https://files.churchpdf.com/files/hv/Hey%2BGod%2B-%2BLessons%2B1-3%2B%28EL%29/Lesson%201/Lesson%201%20Videos/Hey%20God%20-%20Lesson%201%20-%20Power%20Verse%20%28EL%29.mp4\"\n },\n {\n \"type\": \"file\",\n \"id\": \"hey-god-el-1-power-verse-image\",\n \"title\": \"Power Verse Image\",\n \"mediaType\": \"image\",\n \"url\": \"https://files.churchpdf.com/files/hv/Hey%2BGod%2B-%2BLessons%2B1-3%2B%28EL%29/Lesson%201/Lesson%201%20JPGs/Hey%20God%20-%20Lesson%201%20-%20Power%20Verse%20%28EL%29.jpg\"\n },\n {\n \"type\": \"file\",\n \"id\": \"hey-god-el-1-cta-title\",\n \"title\": \"Call To Action - Title\",\n \"mediaType\": \"image\",\n \"url\": \"https://files.churchpdf.com/files/hv/Hey%2BGod%2B-%2BLessons%2B1-3%2B%28EL%29/Lesson%201/Lesson%201%20JPGs/Call%20To%20Action/Hey%20God%20-%20Lesson%201%20-%20CTA%20-%20Title%20%28EL%29.jpg\"\n },\n {\n \"type\": \"file\",\n \"id\": \"hey-god-el-1-cta-point-1\",\n \"title\": \"Call To Action - Point 1\",\n \"mediaType\": \"image\",\n \"url\": \"https://files.churchpdf.com/files/hv/Hey%2BGod%2B-%2BLessons%2B1-3%2B%28EL%29/Lesson%201/Lesson%201%20JPGs/Call%20To%20Action/Hey%20God%20-%20Lesson%201%20-%20CTA%20-%20Point%201%20%28EL%29.jpg\"\n },\n {\n \"type\": \"file\",\n \"id\": \"hey-god-el-1-cta-point-2\",\n \"title\": \"Call To Action - Point 2\",\n \"mediaType\": \"image\",\n \"url\": \"https://files.churchpdf.com/files/hv/Hey%2BGod%2B-%2BLessons%2B1-3%2B%28EL%29/Lesson%201/Lesson%201%20JPGs/Call%20To%20Action/Hey%20God%20-%20Lesson%201%20-%20CTA%20-%20Point%202%20%28EL%29.jpg\"\n },\n {\n \"type\": \"file\",\n \"id\": \"hey-god-el-1-cta-point-3\",\n \"title\": \"Call To Action - Point 3\",\n \"mediaType\": \"image\",\n \"url\": \"https://files.churchpdf.com/files/hv/Hey%2BGod%2B-%2BLessons%2B1-3%2B%28EL%29/Lesson%201/Lesson%201%20JPGs/Call%20To%20Action/Hey%20God%20-%20Lesson%201%20-%20CTA%20-%20Point%203%20%28EL%29.jpg\"\n },\n {\n \"type\": \"file\",\n \"id\": \"hey-god-el-1-rewind-title\",\n \"title\": \"REWIND - Title\",\n \"mediaType\": \"image\",\n \"url\": \"https://files.churchpdf.com/files/hv/Hey%2BGod%2B-%2BLessons%2B1-3%2B%28EL%29/Lesson%201/Lesson%201%20JPGs/REWIND/Title.jpeg\"\n },\n {\n \"type\": \"file\",\n \"id\": \"hey-god-el-1-rewind-q1\",\n \"title\": \"REWIND - Question 1\",\n \"mediaType\": \"image\",\n \"url\": \"https://files.churchpdf.com/files/hv/Hey%2BGod%2B-%2BLessons%2B1-3%2B%28EL%29/Lesson%201/Lesson%201%20JPGs/REWIND/1.jpeg\"\n },\n {\n \"type\": \"file\",\n \"id\": \"hey-god-el-1-rewind-a1\",\n \"title\": \"REWIND - Answer 1\",\n \"mediaType\": \"image\",\n \"url\": \"https://files.churchpdf.com/files/hv/Hey%2BGod%2B-%2BLessons%2B1-3%2B%28EL%29/Lesson%201/Lesson%201%20JPGs/REWIND/1a.jpeg\"\n },\n {\n \"type\": \"file\",\n \"id\": \"hey-god-el-1-rewind-q2\",\n \"title\": \"REWIND - Question 2\",\n \"mediaType\": \"image\",\n \"url\": \"https://files.churchpdf.com/files/hv/Hey%2BGod%2B-%2BLessons%2B1-3%2B%28EL%29/Lesson%201/Lesson%201%20JPGs/REWIND/2.jpeg\"\n },\n {\n \"type\": \"file\",\n \"id\": \"hey-god-el-1-rewind-a2\",\n \"title\": \"REWIND - Answer 2\",\n \"mediaType\": \"image\",\n \"url\": \"https://files.churchpdf.com/files/hv/Hey%2BGod%2B-%2BLessons%2B1-3%2B%28EL%29/Lesson%201/Lesson%201%20JPGs/REWIND/2a.jpeg\"\n },\n {\n \"type\": \"file\",\n \"id\": \"hey-god-el-1-rewind-q3\",\n \"title\": \"REWIND - Question 3\",\n \"mediaType\": \"image\",\n \"url\": \"https://files.churchpdf.com/files/hv/Hey%2BGod%2B-%2BLessons%2B1-3%2B%28EL%29/Lesson%201/Lesson%201%20JPGs/REWIND/3.jpeg\"\n },\n {\n \"type\": \"file\",\n \"id\": \"hey-god-el-1-rewind-a3\",\n \"title\": \"REWIND - Answer 3\",\n \"mediaType\": \"image\",\n \"url\": \"https://files.churchpdf.com/files/hv/Hey%2BGod%2B-%2BLessons%2B1-3%2B%28EL%29/Lesson%201/Lesson%201%20JPGs/REWIND/3a.jpeg\"\n },\n {\n \"type\": \"file\",\n \"id\": \"hey-god-el-1-rewind-q4\",\n \"title\": \"REWIND - Question 4\",\n \"mediaType\": \"image\",\n \"url\": \"https://files.churchpdf.com/files/hv/Hey%2BGod%2B-%2BLessons%2B1-3%2B%28EL%29/Lesson%201/Lesson%201%20JPGs/REWIND/4.jpeg\"\n },\n {\n \"type\": \"file\",\n \"id\": \"hey-god-el-1-rewind-a4\",\n \"title\": \"REWIND - Answer 4\",\n \"mediaType\": \"image\",\n \"url\": \"https://files.churchpdf.com/files/hv/Hey%2BGod%2B-%2BLessons%2B1-3%2B%28EL%29/Lesson%201/Lesson%201%20JPGs/REWIND/4a.jpeg\"\n },\n {\n \"type\": \"file\",\n \"id\": \"hey-god-el-1-rewind-q5\",\n \"title\": \"REWIND - Question 5\",\n \"mediaType\": \"image\",\n \"url\": \"https://files.churchpdf.com/files/hv/Hey%2BGod%2B-%2BLessons%2B1-3%2B%28EL%29/Lesson%201/Lesson%201%20JPGs/REWIND/5.jpeg\"\n },\n {\n \"type\": \"file\",\n \"id\": \"hey-god-el-1-rewind-a5\",\n \"title\": \"REWIND - Answer 5\",\n \"mediaType\": \"image\",\n \"url\": \"https://files.churchpdf.com/files/hv/Hey%2BGod%2B-%2BLessons%2B1-3%2B%28EL%29/Lesson%201/Lesson%201%20JPGs/REWIND/5a.jpeg\"\n },\n {\n \"type\": \"file\",\n \"id\": \"hey-god-el-1-rewind-q6\",\n \"title\": \"REWIND - Question 6\",\n \"mediaType\": \"image\",\n \"url\": \"https://files.churchpdf.com/files/hv/Hey%2BGod%2B-%2BLessons%2B1-3%2B%28EL%29/Lesson%201/Lesson%201%20JPGs/REWIND/6.jpeg\"\n },\n {\n \"type\": \"file\",\n \"id\": \"hey-god-el-1-rewind-a6\",\n \"title\": \"REWIND - Answer 6\",\n \"mediaType\": \"image\",\n \"url\": \"https://files.churchpdf.com/files/hv/Hey%2BGod%2B-%2BLessons%2B1-3%2B%28EL%29/Lesson%201/Lesson%201%20JPGs/REWIND/6a.jpeg\"\n },\n {\n \"type\": \"file\",\n \"id\": \"hey-god-el-1-rewind-q7\",\n \"title\": \"REWIND - Question 7\",\n \"mediaType\": \"image\",\n \"url\": \"https://files.churchpdf.com/files/hv/Hey%2BGod%2B-%2BLessons%2B1-3%2B%28EL%29/Lesson%201/Lesson%201%20JPGs/REWIND/7.jpeg\"\n },\n {\n \"type\": \"file\",\n \"id\": \"hey-god-el-1-rewind-a7\",\n \"title\": \"REWIND - Answer 7\",\n \"mediaType\": \"image\",\n \"url\": \"https://files.churchpdf.com/files/hv/Hey%2BGod%2B-%2BLessons%2B1-3%2B%28EL%29/Lesson%201/Lesson%201%20JPGs/REWIND/7a.jpeg\"\n },\n {\n \"type\": \"file\",\n \"id\": \"hey-god-el-1-rewind-q8\",\n \"title\": \"REWIND - Question 8\",\n \"mediaType\": \"image\",\n \"url\": \"https://files.churchpdf.com/files/hv/Hey%2BGod%2B-%2BLessons%2B1-3%2B%28EL%29/Lesson%201/Lesson%201%20JPGs/REWIND/8.jpeg\"\n },\n {\n \"type\": \"file\",\n \"id\": \"hey-god-el-1-rewind-a8\",\n \"title\": \"REWIND - Answer 8\",\n \"mediaType\": \"image\",\n \"url\": \"https://files.churchpdf.com/files/hv/Hey%2BGod%2B-%2BLessons%2B1-3%2B%28EL%29/Lesson%201/Lesson%201%20JPGs/REWIND/8a.jpeg\"\n },\n {\n \"type\": \"file\",\n \"id\": \"hey-god-el-1-rewind-q9\",\n \"title\": \"REWIND - Question 9\",\n \"mediaType\": \"image\",\n \"url\": \"https://files.churchpdf.com/files/hv/Hey%2BGod%2B-%2BLessons%2B1-3%2B%28EL%29/Lesson%201/Lesson%201%20JPGs/REWIND/9.jpeg\"\n },\n {\n \"type\": \"file\",\n \"id\": \"hey-god-el-1-rewind-a9\",\n \"title\": \"REWIND - Answer 9\",\n \"mediaType\": \"image\",\n \"url\": \"https://files.churchpdf.com/files/hv/Hey%2BGod%2B-%2BLessons%2B1-3%2B%28EL%29/Lesson%201/Lesson%201%20JPGs/REWIND/9a.jpeg\"\n },\n {\n \"type\": \"file\",\n \"id\": \"hey-god-el-1-rewind-q10\",\n \"title\": \"REWIND - Question 10\",\n \"mediaType\": \"image\",\n \"url\": \"https://files.churchpdf.com/files/hv/Hey%2BGod%2B-%2BLessons%2B1-3%2B%28EL%29/Lesson%201/Lesson%201%20JPGs/REWIND/10.jpeg\"\n },\n {\n \"type\": \"file\",\n \"id\": \"hey-god-el-1-rewind-a10\",\n \"title\": \"REWIND - Answer 10\",\n \"mediaType\": \"image\",\n \"url\": \"https://files.churchpdf.com/files/hv/Hey%2BGod%2B-%2BLessons%2B1-3%2B%28EL%29/Lesson%201/Lesson%201%20JPGs/REWIND/10a.jpeg\"\n }\n ]\n },\n {\n \"id\": \"hey-god-elementary-lesson-2\",\n \"name\": \"Lesson 2\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2025/11/Hey-God-Elementary.png\",\n \"files\": []\n },\n {\n \"id\": \"hey-god-elementary-lesson-3\",\n \"name\": \"Lesson 3\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2025/11/Hey-God-Elementary.png\",\n \"files\": []\n },\n {\n \"id\": \"hey-god-elementary-lesson-4\",\n \"name\": \"Lesson 4\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2025/11/Hey-God-Elementary.png\",\n \"files\": []\n },\n {\n \"id\": \"hey-god-elementary-lesson-5\",\n \"name\": \"Lesson 5\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2025/11/Hey-God-Elementary.png\",\n \"files\": []\n },\n {\n \"id\": \"hey-god-elementary-lesson-6\",\n \"name\": \"Lesson 6\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2025/11/Hey-God-Elementary.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"family-mechanics-2\",\n \"name\": \"Family Mechanics\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2025/10/Family-Mechanics-Elementary.png\",\n \"description\": \"4 Elementary Lessons On Healthy Families\",\n \"url\": \"https://highvoltagekids.com/downloads/family-mechanics-2/\",\n \"lessonCount\": 4,\n \"lessons\": [\n {\n \"id\": \"family-mechanics-2-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2025/10/Family-Mechanics-Elementary.png\",\n \"files\": []\n },\n {\n \"id\": \"family-mechanics-2-lesson-2\",\n \"name\": \"Lesson 2\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2025/10/Family-Mechanics-Elementary.png\",\n \"files\": []\n },\n {\n \"id\": \"family-mechanics-2-lesson-3\",\n \"name\": \"Lesson 3\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2025/10/Family-Mechanics-Elementary.png\",\n \"files\": []\n },\n {\n \"id\": \"family-mechanics-2-lesson-4\",\n \"name\": \"Lesson 4\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2025/10/Family-Mechanics-Elementary.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"epic-elementary\",\n \"name\": \"EPIC\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2025/09/Epic-Elementary-1.png\",\n \"description\": \"6 Elementary Bible Stories That Will Blow Your Mind\",\n \"url\": \"https://highvoltagekids.com/downloads/epic-elementary/\",\n \"lessonCount\": 1,\n \"lessons\": [\n {\n \"id\": \"epic-elementary-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2025/09/Epic-Elementary-1.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"the-perfect-present-elementary\",\n \"name\": \"The Perfect Present\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2025/09/the-perfect-present.png\",\n \"description\": \"Single Elementary Lesson For Christmas\",\n \"url\": \"https://highvoltagekids.com/downloads/the-perfect-present-elementary/\",\n \"lessonCount\": 1,\n \"lessons\": [\n {\n \"id\": \"the-perfect-present-elementary-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2025/09/the-perfect-present.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"what-is-water-baptism-elementary\",\n \"name\": \"What Is Water Baptism?\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2025/09/what-is-water-baptism.png\",\n \"description\": \"Single Elementary Lesson On Baptism\",\n \"url\": \"https://highvoltagekids.com/downloads/what-is-water-baptism-elementary/\",\n \"lessonCount\": 1,\n \"lessons\": [\n {\n \"id\": \"what-is-water-baptism-elementary-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2025/09/what-is-water-baptism.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"be-different-elementary\",\n \"name\": \"Be Different\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2025/07/be-different-elementary-transparent.png\",\n \"description\": \"7 Elementary Lessons from Romans 12\",\n \"url\": \"https://highvoltagekids.com/downloads/be-different-elementary/\",\n \"lessonCount\": 7,\n \"lessons\": [\n {\n \"id\": \"be-different-elementary-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2025/07/be-different-elementary-transparent.png\",\n \"files\": []\n },\n {\n \"id\": \"be-different-elementary-lesson-2\",\n \"name\": \"Lesson 2\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2025/07/be-different-elementary-transparent.png\",\n \"files\": []\n },\n {\n \"id\": \"be-different-elementary-lesson-3\",\n \"name\": \"Lesson 3\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2025/07/be-different-elementary-transparent.png\",\n \"files\": []\n },\n {\n \"id\": \"be-different-elementary-lesson-4\",\n \"name\": \"Lesson 4\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2025/07/be-different-elementary-transparent.png\",\n \"files\": []\n },\n {\n \"id\": \"be-different-elementary-lesson-5\",\n \"name\": \"Lesson 5\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2025/07/be-different-elementary-transparent.png\",\n \"files\": []\n },\n {\n \"id\": \"be-different-elementary-lesson-6\",\n \"name\": \"Lesson 6\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2025/07/be-different-elementary-transparent.png\",\n \"files\": []\n },\n {\n \"id\": \"be-different-elementary-lesson-7\",\n \"name\": \"Lesson 7\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2025/07/be-different-elementary-transparent.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"the-night-the-jailhouse-rocked-elementary\",\n \"name\": \"The Night The Jailhouse Rocked\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2025/06/The-Night-The-Jailhouse-Rocked-Elementary-1.png\",\n \"description\": \"3 Elementary Lessons From Paul &amp; Silas’ Night In Prison\",\n \"url\": \"https://highvoltagekids.com/downloads/the-night-the-jailhouse-rocked-elementary/\",\n \"lessonCount\": 3,\n \"lessons\": [\n {\n \"id\": \"the-night-the-jailhouse-rocked-elementary-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2025/06/The-Night-The-Jailhouse-Rocked-Elementary-1.png\",\n \"files\": []\n },\n {\n \"id\": \"the-night-the-jailhouse-rocked-elementary-lesson-2\",\n \"name\": \"Lesson 2\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2025/06/The-Night-The-Jailhouse-Rocked-Elementary-1.png\",\n \"files\": []\n },\n {\n \"id\": \"the-night-the-jailhouse-rocked-elementary-lesson-3\",\n \"name\": \"Lesson 3\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2025/06/The-Night-The-Jailhouse-Rocked-Elementary-1.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"windows-elementary\",\n \"name\": \"WINDOWS\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2025/06/windows.png\",\n \"description\": \"3 Elementary Lessons on Missions\",\n \"url\": \"https://highvoltagekids.com/downloads/windows-elementary/\",\n \"lessonCount\": 3,\n \"lessons\": [\n {\n \"id\": \"windows-elementary-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2025/06/windows.png\",\n \"files\": []\n },\n {\n \"id\": \"windows-elementary-lesson-2\",\n \"name\": \"Lesson 2\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2025/06/windows.png\",\n \"files\": []\n },\n {\n \"id\": \"windows-elementary-lesson-3\",\n \"name\": \"Lesson 3\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2025/06/windows.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"what-is-a-true-friend-elementary\",\n \"name\": \"What Is A True Friend?\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2025/05/what-is-a-true-friend-3.png\",\n \"description\": \"Elementary Single Lesson on Friendship\",\n \"url\": \"https://highvoltagekids.com/downloads/what-is-a-true-friend-elementary/\",\n \"lessonCount\": 1,\n \"lessons\": [\n {\n \"id\": \"what-is-a-true-friend-elementary-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2025/05/what-is-a-true-friend-3.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"livin-the-sheep-life\",\n \"name\": \"Livin' The Sheep Life\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2025/04/sheep-life-elem.png\",\n \"description\": \"6 Elementary Lessons on the 23rd Psalm\",\n \"url\": \"https://highvoltagekids.com/downloads/livin-the-sheep-life/\",\n \"lessonCount\": 6,\n \"lessons\": [\n {\n \"id\": \"livin-the-sheep-life-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2025/04/sheep-life-elem.png\",\n \"files\": []\n },\n {\n \"id\": \"livin-the-sheep-life-lesson-2\",\n \"name\": \"Lesson 2\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2025/04/sheep-life-elem.png\",\n \"files\": []\n },\n {\n \"id\": \"livin-the-sheep-life-lesson-3\",\n \"name\": \"Lesson 3\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2025/04/sheep-life-elem.png\",\n \"files\": []\n },\n {\n \"id\": \"livin-the-sheep-life-lesson-4\",\n \"name\": \"Lesson 4\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2025/04/sheep-life-elem.png\",\n \"files\": []\n },\n {\n \"id\": \"livin-the-sheep-life-lesson-5\",\n \"name\": \"Lesson 5\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2025/04/sheep-life-elem.png\",\n \"files\": []\n },\n {\n \"id\": \"livin-the-sheep-life-lesson-6\",\n \"name\": \"Lesson 6\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2025/04/sheep-life-elem.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"a-mothers-love-elementary\",\n \"name\": \"A Mother's Love\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2025/03/a-mothers-love-elementary.png\",\n \"description\": \"Single Elementary Lesson for Mother’s Day\",\n \"url\": \"https://highvoltagekids.com/downloads/a-mothers-love-elementary/\",\n \"lessonCount\": 1,\n \"lessons\": [\n {\n \"id\": \"a-mothers-love-elementary-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2025/03/a-mothers-love-elementary.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"t-h-i-n-k-before-you-speak-elementary\",\n \"name\": \"T.H.I.N.K. Before You Speak\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2025/02/THINK-3D-Box-EL.png\",\n \"description\": \"6 Lessons on the power of words\",\n \"url\": \"https://highvoltagekids.com/downloads/t-h-i-n-k-before-you-speak-elementary/\",\n \"lessonCount\": 6,\n \"lessons\": [\n {\n \"id\": \"t-h-i-n-k-before-you-speak-elementary-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2025/02/THINK-3D-Box-EL.png\",\n \"files\": []\n },\n {\n \"id\": \"t-h-i-n-k-before-you-speak-elementary-lesson-2\",\n \"name\": \"Lesson 2\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2025/02/THINK-3D-Box-EL.png\",\n \"files\": []\n },\n {\n \"id\": \"t-h-i-n-k-before-you-speak-elementary-lesson-3\",\n \"name\": \"Lesson 3\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2025/02/THINK-3D-Box-EL.png\",\n \"files\": []\n },\n {\n \"id\": \"t-h-i-n-k-before-you-speak-elementary-lesson-4\",\n \"name\": \"Lesson 4\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2025/02/THINK-3D-Box-EL.png\",\n \"files\": []\n },\n {\n \"id\": \"t-h-i-n-k-before-you-speak-elementary-lesson-5\",\n \"name\": \"Lesson 5\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2025/02/THINK-3D-Box-EL.png\",\n \"files\": []\n },\n {\n \"id\": \"t-h-i-n-k-before-you-speak-elementary-lesson-6\",\n \"name\": \"Lesson 6\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2025/02/THINK-3D-Box-EL.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"closed-elementary\",\n \"name\": \"Closed\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2025/03/Closed-3D-Box.png\",\n \"description\": \"Elementary Lesson for Easter\",\n \"url\": \"https://highvoltagekids.com/downloads/closed-elementary/\",\n \"lessonCount\": 1,\n \"lessons\": [\n {\n \"id\": \"closed-elementary-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2025/03/Closed-3D-Box.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"remember-me-elementary\",\n \"name\": \"Remember Me\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2025/03/Remember-Me-Elementary.png\",\n \"description\": \"Elementary Lesson on Communion\",\n \"url\": \"https://highvoltagekids.com/downloads/remember-me-elementary/\",\n \"lessonCount\": 1,\n \"lessons\": [\n {\n \"id\": \"remember-me-elementary-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2025/03/Remember-Me-Elementary.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"love-god-love-people-elementary\",\n \"name\": \"Love God, Love People\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2025/03/love-god-love-people.png\",\n \"description\": \"Elementary Lesson on The Good Samaritan\",\n \"url\": \"https://highvoltagekids.com/downloads/love-god-love-people-elementary/\",\n \"lessonCount\": 1,\n \"lessons\": [\n {\n \"id\": \"love-god-love-people-elementary-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2025/03/love-god-love-people.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"rock-solid-elementary\",\n \"name\": \"Rock Solid\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/12/Rock-Solid-ele.png\",\n \"description\": \"6 Foundational Truths Every Kid Should Know\",\n \"url\": \"https://highvoltagekids.com/downloads/rock-solid-elementary/\",\n \"lessonCount\": 1,\n \"lessons\": [\n {\n \"id\": \"rock-solid-elementary-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/12/Rock-Solid-ele.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"dream-big-2\",\n \"name\": \"Dream BIG\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/10/Dream-Big-PRE.png\",\n \"description\": \"10 Lessons From Joseph\",\n \"url\": \"https://highvoltagekids.com/downloads/dream-big-2/\",\n \"lessonCount\": 10,\n \"lessons\": [\n {\n \"id\": \"dream-big-2-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/10/Dream-Big-PRE.png\",\n \"files\": []\n },\n {\n \"id\": \"dream-big-2-lesson-2\",\n \"name\": \"Lesson 2\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/10/Dream-Big-PRE.png\",\n \"files\": []\n },\n {\n \"id\": \"dream-big-2-lesson-3\",\n \"name\": \"Lesson 3\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/10/Dream-Big-PRE.png\",\n \"files\": []\n },\n {\n \"id\": \"dream-big-2-lesson-4\",\n \"name\": \"Lesson 4\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/10/Dream-Big-PRE.png\",\n \"files\": []\n },\n {\n \"id\": \"dream-big-2-lesson-5\",\n \"name\": \"Lesson 5\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/10/Dream-Big-PRE.png\",\n \"files\": []\n },\n {\n \"id\": \"dream-big-2-lesson-6\",\n \"name\": \"Lesson 6\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/10/Dream-Big-PRE.png\",\n \"files\": []\n },\n {\n \"id\": \"dream-big-2-lesson-7\",\n \"name\": \"Lesson 7\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/10/Dream-Big-PRE.png\",\n \"files\": []\n },\n {\n \"id\": \"dream-big-2-lesson-8\",\n \"name\": \"Lesson 8\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/10/Dream-Big-PRE.png\",\n \"files\": []\n },\n {\n \"id\": \"dream-big-2-lesson-9\",\n \"name\": \"Lesson 9\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/10/Dream-Big-PRE.png\",\n \"files\": []\n },\n {\n \"id\": \"dream-big-2-lesson-10\",\n \"name\": \"Lesson 10\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/10/Dream-Big-PRE.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"a-way-in-a-manger-elementary\",\n \"name\": \"A Way In A Manger\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/09/AWIAM-Ele-1.png\",\n \"description\": \"A Single Christmas Lesson\",\n \"url\": \"https://highvoltagekids.com/downloads/a-way-in-a-manger-elementary/\",\n \"lessonCount\": 1,\n \"lessons\": [\n {\n \"id\": \"a-way-in-a-manger-elementary-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/09/AWIAM-Ele-1.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"level-up-elementary\",\n \"name\": \"Level Up\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/08/Level-Up-ELE.png\",\n \"description\": \"4 Lessons to elevate our Stewardship\",\n \"url\": \"https://highvoltagekids.com/downloads/level-up-elementary/\",\n \"lessonCount\": 4,\n \"lessons\": [\n {\n \"id\": \"level-up-elementary-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/08/Level-Up-ELE.png\",\n \"files\": []\n },\n {\n \"id\": \"level-up-elementary-lesson-2\",\n \"name\": \"Lesson 2\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/08/Level-Up-ELE.png\",\n \"files\": []\n },\n {\n \"id\": \"level-up-elementary-lesson-3\",\n \"name\": \"Lesson 3\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/08/Level-Up-ELE.png\",\n \"files\": []\n },\n {\n \"id\": \"level-up-elementary-lesson-4\",\n \"name\": \"Lesson 4\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/08/Level-Up-ELE.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"no-name-elementary\",\n \"name\": \"No Name\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/07/No-Name-ELE-1.png\",\n \"description\": \"6 Lessons from Unnamed Bible Characters\",\n \"url\": \"https://highvoltagekids.com/downloads/no-name-elementary/\",\n \"lessonCount\": 6,\n \"lessons\": [\n {\n \"id\": \"no-name-elementary-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/07/No-Name-ELE-1.png\",\n \"files\": []\n },\n {\n \"id\": \"no-name-elementary-lesson-2\",\n \"name\": \"Lesson 2\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/07/No-Name-ELE-1.png\",\n \"files\": []\n },\n {\n \"id\": \"no-name-elementary-lesson-3\",\n \"name\": \"Lesson 3\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/07/No-Name-ELE-1.png\",\n \"files\": []\n },\n {\n \"id\": \"no-name-elementary-lesson-4\",\n \"name\": \"Lesson 4\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/07/No-Name-ELE-1.png\",\n \"files\": []\n },\n {\n \"id\": \"no-name-elementary-lesson-5\",\n \"name\": \"Lesson 5\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/07/No-Name-ELE-1.png\",\n \"files\": []\n },\n {\n \"id\": \"no-name-elementary-lesson-6\",\n \"name\": \"Lesson 6\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/07/No-Name-ELE-1.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"forgive-u-elementary\",\n \"name\": \"Forgive U\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/05/Forgive-U-ELE.png\",\n \"description\": \"5 Lessons on Forgiveness\",\n \"url\": \"https://highvoltagekids.com/downloads/forgive-u-elementary/\",\n \"lessonCount\": 5,\n \"lessons\": [\n {\n \"id\": \"forgive-u-elementary-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/05/Forgive-U-ELE.png\",\n \"files\": []\n },\n {\n \"id\": \"forgive-u-elementary-lesson-2\",\n \"name\": \"Lesson 2\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/05/Forgive-U-ELE.png\",\n \"files\": []\n },\n {\n \"id\": \"forgive-u-elementary-lesson-3\",\n \"name\": \"Lesson 3\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/05/Forgive-U-ELE.png\",\n \"files\": []\n },\n {\n \"id\": \"forgive-u-elementary-lesson-4\",\n \"name\": \"Lesson 4\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/05/Forgive-U-ELE.png\",\n \"files\": []\n },\n {\n \"id\": \"forgive-u-elementary-lesson-5\",\n \"name\": \"Lesson 5\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/05/Forgive-U-ELE.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"deal-with-it-elementary\",\n \"name\": \"Deal With It\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/04/Deal-With-It-EL.png\",\n \"description\": \"6 Lessons on Handling Life’s Difficulties\",\n \"url\": \"https://highvoltagekids.com/downloads/deal-with-it-elementary/\",\n \"lessonCount\": 6,\n \"lessons\": [\n {\n \"id\": \"deal-with-it-elementary-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/04/Deal-With-It-EL.png\",\n \"files\": []\n },\n {\n \"id\": \"deal-with-it-elementary-lesson-2\",\n \"name\": \"Lesson 2\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/04/Deal-With-It-EL.png\",\n \"files\": []\n },\n {\n \"id\": \"deal-with-it-elementary-lesson-3\",\n \"name\": \"Lesson 3\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/04/Deal-With-It-EL.png\",\n \"files\": []\n },\n {\n \"id\": \"deal-with-it-elementary-lesson-4\",\n \"name\": \"Lesson 4\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/04/Deal-With-It-EL.png\",\n \"files\": []\n },\n {\n \"id\": \"deal-with-it-elementary-lesson-5\",\n \"name\": \"Lesson 5\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/04/Deal-With-It-EL.png\",\n \"files\": []\n },\n {\n \"id\": \"deal-with-it-elementary-lesson-6\",\n \"name\": \"Lesson 6\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/04/Deal-With-It-EL.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"get-in-the-game-elementary\",\n \"name\": \"Get In The Game\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/04/Get-in-the-Game-EL.png\",\n \"description\": \"Elementary Lesson on Serving\",\n \"url\": \"https://highvoltagekids.com/downloads/get-in-the-game-elementary/\",\n \"lessonCount\": 1,\n \"lessons\": [\n {\n \"id\": \"get-in-the-game-elementary-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/04/Get-in-the-Game-EL.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"limitless-elementary\",\n \"name\": \"Limitless\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/03/Limtless-Elementary.png\",\n \"description\": \"3 Lessons on the Nature of God\",\n \"url\": \"https://highvoltagekids.com/downloads/limitless-elementary/\",\n \"lessonCount\": 3,\n \"lessons\": [\n {\n \"id\": \"limitless-elementary-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/03/Limtless-Elementary.png\",\n \"files\": []\n },\n {\n \"id\": \"limitless-elementary-lesson-2\",\n \"name\": \"Lesson 2\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/03/Limtless-Elementary.png\",\n \"files\": []\n },\n {\n \"id\": \"limitless-elementary-lesson-3\",\n \"name\": \"Lesson 3\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/03/Limtless-Elementary.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"transformed-elementary\",\n \"name\": \"Transformed\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/01/Transformed.png\",\n \"description\": \"9 Lessons on the Transforming Power of God\",\n \"url\": \"https://highvoltagekids.com/downloads/transformed-elementary/\",\n \"lessonCount\": 9,\n \"lessons\": [\n {\n \"id\": \"transformed-elementary-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/01/Transformed.png\",\n \"files\": []\n },\n {\n \"id\": \"transformed-elementary-lesson-2\",\n \"name\": \"Lesson 2\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/01/Transformed.png\",\n \"files\": []\n },\n {\n \"id\": \"transformed-elementary-lesson-3\",\n \"name\": \"Lesson 3\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/01/Transformed.png\",\n \"files\": []\n },\n {\n \"id\": \"transformed-elementary-lesson-4\",\n \"name\": \"Lesson 4\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/01/Transformed.png\",\n \"files\": []\n },\n {\n \"id\": \"transformed-elementary-lesson-5\",\n \"name\": \"Lesson 5\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/01/Transformed.png\",\n \"files\": []\n },\n {\n \"id\": \"transformed-elementary-lesson-6\",\n \"name\": \"Lesson 6\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/01/Transformed.png\",\n \"files\": []\n },\n {\n \"id\": \"transformed-elementary-lesson-7\",\n \"name\": \"Lesson 7\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/01/Transformed.png\",\n \"files\": []\n },\n {\n \"id\": \"transformed-elementary-lesson-8\",\n \"name\": \"Lesson 8\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/01/Transformed.png\",\n \"files\": []\n },\n {\n \"id\": \"transformed-elementary-lesson-9\",\n \"name\": \"Lesson 9\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/01/Transformed.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"the-price-is-right-elementary\",\n \"name\": \"The Price Is Right\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2023/12/price-is-right-elementary.png\",\n \"description\": \"Elementary Lesson for Easter\",\n \"url\": \"https://highvoltagekids.com/downloads/the-price-is-right-elementary/\",\n \"lessonCount\": 1,\n \"lessons\": [\n {\n \"id\": \"the-price-is-right-elementary-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2023/12/price-is-right-elementary.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"upside-down-elementary\",\n \"name\": \"Upside Down\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/01/Up-side-down-.png\",\n \"description\": \"6 Lessons on Spiritual Paradoxes\",\n \"url\": \"https://highvoltagekids.com/downloads/upside-down-elementary/\",\n \"lessonCount\": 6,\n \"lessons\": [\n {\n \"id\": \"upside-down-elementary-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/01/Up-side-down-.png\",\n \"files\": []\n },\n {\n \"id\": \"upside-down-elementary-lesson-2\",\n \"name\": \"Lesson 2\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/01/Up-side-down-.png\",\n \"files\": []\n },\n {\n \"id\": \"upside-down-elementary-lesson-3\",\n \"name\": \"Lesson 3\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/01/Up-side-down-.png\",\n \"files\": []\n },\n {\n \"id\": \"upside-down-elementary-lesson-4\",\n \"name\": \"Lesson 4\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/01/Up-side-down-.png\",\n \"files\": []\n },\n {\n \"id\": \"upside-down-elementary-lesson-5\",\n \"name\": \"Lesson 5\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/01/Up-side-down-.png\",\n \"files\": []\n },\n {\n \"id\": \"upside-down-elementary-lesson-6\",\n \"name\": \"Lesson 6\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/01/Up-side-down-.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"christmas-gifts-elementary\",\n \"name\": \"Christmas Gifts\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/01/Christmas-Gifts-Elementary.png\",\n \"description\": \"3 Lessons for Christmas\",\n \"url\": \"https://highvoltagekids.com/downloads/christmas-gifts-elementary/\",\n \"lessonCount\": 3,\n \"lessons\": [\n {\n \"id\": \"christmas-gifts-elementary-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/01/Christmas-Gifts-Elementary.png\",\n \"files\": []\n },\n {\n \"id\": \"christmas-gifts-elementary-lesson-2\",\n \"name\": \"Lesson 2\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/01/Christmas-Gifts-Elementary.png\",\n \"files\": []\n },\n {\n \"id\": \"christmas-gifts-elementary-lesson-3\",\n \"name\": \"Lesson 3\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/01/Christmas-Gifts-Elementary.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"forgiveness-elementary\",\n \"name\": \"Forgiveness\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2023/10/Forgiveness-3D-Box-EL.png\",\n \"description\": \"5 Lessons on Forgiveness\",\n \"url\": \"https://highvoltagekids.com/downloads/forgiveness-elementary/\",\n \"lessonCount\": 5,\n \"lessons\": [\n {\n \"id\": \"forgiveness-elementary-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2023/10/Forgiveness-3D-Box-EL.png\",\n \"files\": []\n },\n {\n \"id\": \"forgiveness-elementary-lesson-2\",\n \"name\": \"Lesson 2\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2023/10/Forgiveness-3D-Box-EL.png\",\n \"files\": []\n },\n {\n \"id\": \"forgiveness-elementary-lesson-3\",\n \"name\": \"Lesson 3\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2023/10/Forgiveness-3D-Box-EL.png\",\n \"files\": []\n },\n {\n \"id\": \"forgiveness-elementary-lesson-4\",\n \"name\": \"Lesson 4\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2023/10/Forgiveness-3D-Box-EL.png\",\n \"files\": []\n },\n {\n \"id\": \"forgiveness-elementary-lesson-5\",\n \"name\": \"Lesson 5\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2023/10/Forgiveness-3D-Box-EL.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"running-for-your-life-elementary\",\n \"name\": \"Running For Your Life\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/01/Running-for-Life-Elementary.png\",\n \"description\": \"6 Lessons from the Life of David\",\n \"url\": \"https://highvoltagekids.com/downloads/running-for-your-life-elementary/\",\n \"lessonCount\": 6,\n \"lessons\": [\n {\n \"id\": \"running-for-your-life-elementary-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/01/Running-for-Life-Elementary.png\",\n \"files\": []\n },\n {\n \"id\": \"running-for-your-life-elementary-lesson-2\",\n \"name\": \"Lesson 2\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/01/Running-for-Life-Elementary.png\",\n \"files\": []\n },\n {\n \"id\": \"running-for-your-life-elementary-lesson-3\",\n \"name\": \"Lesson 3\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/01/Running-for-Life-Elementary.png\",\n \"files\": []\n },\n {\n \"id\": \"running-for-your-life-elementary-lesson-4\",\n \"name\": \"Lesson 4\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/01/Running-for-Life-Elementary.png\",\n \"files\": []\n },\n {\n \"id\": \"running-for-your-life-elementary-lesson-5\",\n \"name\": \"Lesson 5\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/01/Running-for-Life-Elementary.png\",\n \"files\": []\n },\n {\n \"id\": \"running-for-your-life-elementary-lesson-6\",\n \"name\": \"Lesson 6\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/01/Running-for-Life-Elementary.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"songs-of-christmas-elementary\",\n \"name\": \"Songs of Christmas\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/01/Songs-Of-Christmas-3D-Box-ELE.png\",\n \"description\": \"4 Lessons on the Meaning of Christmas\",\n \"url\": \"https://highvoltagekids.com/downloads/songs-of-christmas-elementary/\",\n \"lessonCount\": 4,\n \"lessons\": [\n {\n \"id\": \"songs-of-christmas-elementary-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/01/Songs-Of-Christmas-3D-Box-ELE.png\",\n \"files\": []\n },\n {\n \"id\": \"songs-of-christmas-elementary-lesson-2\",\n \"name\": \"Lesson 2\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/01/Songs-Of-Christmas-3D-Box-ELE.png\",\n \"files\": []\n },\n {\n \"id\": \"songs-of-christmas-elementary-lesson-3\",\n \"name\": \"Lesson 3\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/01/Songs-Of-Christmas-3D-Box-ELE.png\",\n \"files\": []\n },\n {\n \"id\": \"songs-of-christmas-elementary-lesson-4\",\n \"name\": \"Lesson 4\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/01/Songs-Of-Christmas-3D-Box-ELE.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"all-elementary\",\n \"name\": \"All\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2016/04/ALL-3D-Box-EL.png\",\n \"description\": \"3 Lessons on Missions/Evangelism\",\n \"url\": \"https://highvoltagekids.com/downloads/all-elementary/\",\n \"lessonCount\": 3,\n \"lessons\": [\n {\n \"id\": \"all-elementary-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2016/04/ALL-3D-Box-EL.png\",\n \"files\": []\n },\n {\n \"id\": \"all-elementary-lesson-2\",\n \"name\": \"Lesson 2\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2016/04/ALL-3D-Box-EL.png\",\n \"files\": []\n },\n {\n \"id\": \"all-elementary-lesson-3\",\n \"name\": \"Lesson 3\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2016/04/ALL-3D-Box-EL.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"famous-last-words-elementary\",\n \"name\": \"Famous Last Words\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/01/Famous-Last-Words.png\",\n \"description\": \"4 Lessons on Jesus’ Last Teachings\",\n \"url\": \"https://highvoltagekids.com/downloads/famous-last-words-elementary/\",\n \"lessonCount\": 4,\n \"lessons\": [\n {\n \"id\": \"famous-last-words-elementary-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/01/Famous-Last-Words.png\",\n \"files\": []\n },\n {\n \"id\": \"famous-last-words-elementary-lesson-2\",\n \"name\": \"Lesson 2\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/01/Famous-Last-Words.png\",\n \"files\": []\n },\n {\n \"id\": \"famous-last-words-elementary-lesson-3\",\n \"name\": \"Lesson 3\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/01/Famous-Last-Words.png\",\n \"files\": []\n },\n {\n \"id\": \"famous-last-words-elementary-lesson-4\",\n \"name\": \"Lesson 4\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/01/Famous-Last-Words.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"dont-worry-about-it-elementary\",\n \"name\": \"Don’t Worry About It\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2016/04/DWAI-3D-Box-EL.png\",\n \"description\": \"5 Lessons about anxiety\",\n \"url\": \"https://highvoltagekids.com/downloads/dont-worry-about-it-elementary/\",\n \"lessonCount\": 5,\n \"lessons\": [\n {\n \"id\": \"dont-worry-about-it-elementary-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2016/04/DWAI-3D-Box-EL.png\",\n \"files\": []\n },\n {\n \"id\": \"dont-worry-about-it-elementary-lesson-2\",\n \"name\": \"Lesson 2\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2016/04/DWAI-3D-Box-EL.png\",\n \"files\": []\n },\n {\n \"id\": \"dont-worry-about-it-elementary-lesson-3\",\n \"name\": \"Lesson 3\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2016/04/DWAI-3D-Box-EL.png\",\n \"files\": []\n },\n {\n \"id\": \"dont-worry-about-it-elementary-lesson-4\",\n \"name\": \"Lesson 4\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2016/04/DWAI-3D-Box-EL.png\",\n \"files\": []\n },\n {\n \"id\": \"dont-worry-about-it-elementary-lesson-5\",\n \"name\": \"Lesson 5\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2016/04/DWAI-3D-Box-EL.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"wonderfully-made-elementary\",\n \"name\": \"Wonderfully Made\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2023/07/Wonderfully-Made-3D-Box-EL.png\",\n \"description\": \"Elementary Lesson on Gender Identity\",\n \"url\": \"https://highvoltagekids.com/downloads/wonderfully-made-elementary/\",\n \"lessonCount\": 1,\n \"lessons\": [\n {\n \"id\": \"wonderfully-made-elementary-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2023/07/Wonderfully-Made-3D-Box-EL.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"holy-spirit-elementary\",\n \"name\": \"Holy Spirit\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2023/06/Holy-SPirti-Elementary.png\",\n \"description\": \"4 Elementary Lessons on the Holy Spirit\",\n \"url\": \"https://highvoltagekids.com/downloads/holy-spirit-elementary/\",\n \"lessonCount\": 4,\n \"lessons\": [\n {\n \"id\": \"holy-spirit-elementary-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2023/06/Holy-SPirti-Elementary.png\",\n \"files\": []\n },\n {\n \"id\": \"holy-spirit-elementary-lesson-2\",\n \"name\": \"Lesson 2\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2023/06/Holy-SPirti-Elementary.png\",\n \"files\": []\n },\n {\n \"id\": \"holy-spirit-elementary-lesson-3\",\n \"name\": \"Lesson 3\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2023/06/Holy-SPirti-Elementary.png\",\n \"files\": []\n },\n {\n \"id\": \"holy-spirit-elementary-lesson-4\",\n \"name\": \"Lesson 4\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2023/06/Holy-SPirti-Elementary.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"teach-us-to-pray-elementary\",\n \"name\": \"Teach Us to Pray\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2023/05/TUTP-3D-Box-EL.png\",\n \"description\": \"6 Lessons On The Lord’s Prayer\",\n \"url\": \"https://highvoltagekids.com/downloads/teach-us-to-pray-elementary/\",\n \"lessonCount\": 6,\n \"lessons\": [\n {\n \"id\": \"teach-us-to-pray-elementary-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2023/05/TUTP-3D-Box-EL.png\",\n \"files\": []\n },\n {\n \"id\": \"teach-us-to-pray-elementary-lesson-2\",\n \"name\": \"Lesson 2\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2023/05/TUTP-3D-Box-EL.png\",\n \"files\": []\n },\n {\n \"id\": \"teach-us-to-pray-elementary-lesson-3\",\n \"name\": \"Lesson 3\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2023/05/TUTP-3D-Box-EL.png\",\n \"files\": []\n },\n {\n \"id\": \"teach-us-to-pray-elementary-lesson-4\",\n \"name\": \"Lesson 4\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2023/05/TUTP-3D-Box-EL.png\",\n \"files\": []\n },\n {\n \"id\": \"teach-us-to-pray-elementary-lesson-5\",\n \"name\": \"Lesson 5\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2023/05/TUTP-3D-Box-EL.png\",\n \"files\": []\n },\n {\n \"id\": \"teach-us-to-pray-elementary-lesson-6\",\n \"name\": \"Lesson 6\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2023/05/TUTP-3D-Box-EL.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"broken-elementary\",\n \"name\": \"Broken\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/01/Broken-3D-Box-ELE.png\",\n \"description\": \"4 Lessons on God’s power to heal\",\n \"url\": \"https://highvoltagekids.com/downloads/broken-elementary/\",\n \"lessonCount\": 4,\n \"lessons\": [\n {\n \"id\": \"broken-elementary-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/01/Broken-3D-Box-ELE.png\",\n \"files\": []\n },\n {\n \"id\": \"broken-elementary-lesson-2\",\n \"name\": \"Lesson 2\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/01/Broken-3D-Box-ELE.png\",\n \"files\": []\n },\n {\n \"id\": \"broken-elementary-lesson-3\",\n \"name\": \"Lesson 3\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/01/Broken-3D-Box-ELE.png\",\n \"files\": []\n },\n {\n \"id\": \"broken-elementary-lesson-4\",\n \"name\": \"Lesson 4\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/01/Broken-3D-Box-ELE.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"turn-the-page-elementary\",\n \"name\": \"Turn the Page\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2023/05/Turn-the-page-Preschool.png\",\n \"description\": \"Single lesson on overcoming the past\",\n \"url\": \"https://highvoltagekids.com/downloads/turn-the-page-elementary/\",\n \"lessonCount\": 1,\n \"lessons\": [\n {\n \"id\": \"turn-the-page-elementary-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2023/05/Turn-the-page-Preschool.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"healing-2\",\n \"name\": \"Healing\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2023/05/Healing-Preschool.png\",\n \"description\": \"5 lessons on the Healing Power of God\",\n \"url\": \"https://highvoltagekids.com/downloads/healing-2/\",\n \"lessonCount\": 5,\n \"lessons\": [\n {\n \"id\": \"healing-2-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2023/05/Healing-Preschool.png\",\n \"files\": []\n },\n {\n \"id\": \"healing-2-lesson-2\",\n \"name\": \"Lesson 2\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2023/05/Healing-Preschool.png\",\n \"files\": []\n },\n {\n \"id\": \"healing-2-lesson-3\",\n \"name\": \"Lesson 3\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2023/05/Healing-Preschool.png\",\n \"files\": []\n },\n {\n \"id\": \"healing-2-lesson-4\",\n \"name\": \"Lesson 4\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2023/05/Healing-Preschool.png\",\n \"files\": []\n },\n {\n \"id\": \"healing-2-lesson-5\",\n \"name\": \"Lesson 5\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2023/05/Healing-Preschool.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"listen-up-elementary\",\n \"name\": \"Listen Up\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/01/Listen-Up-3D-Box-PS.png\",\n \"description\": \"Three Lessons on Listening to the Right Voices\",\n \"url\": \"https://highvoltagekids.com/downloads/listen-up-elementary/\",\n \"lessonCount\": 1,\n \"lessons\": [\n {\n \"id\": \"listen-up-elementary-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/01/Listen-Up-3D-Box-PS.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"dollars-and-sense-elementary\",\n \"name\": \"Dollars And Sense\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2016/04/Dollars-and-Sense-3D-Box-EL.png\",\n \"description\": \"Three Lessons on Stewardship\",\n \"url\": \"https://highvoltagekids.com/downloads/dollars-and-sense-elementary/\",\n \"lessonCount\": 1,\n \"lessons\": [\n {\n \"id\": \"dollars-and-sense-elementary-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2016/04/Dollars-and-Sense-3D-Box-EL.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"epic-fail-elementary\",\n \"name\": \"Epic Fail\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/01/Epic-Fail-3D-Box-ELE.png\",\n \"description\": \"Four Lessons from King Saul\",\n \"url\": \"https://highvoltagekids.com/downloads/epic-fail-elementary/\",\n \"lessonCount\": 1,\n \"lessons\": [\n {\n \"id\": \"epic-fail-elementary-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/01/Epic-Fail-3D-Box-ELE.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"priceless-elementary\",\n \"name\": \"Priceless\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/01/Priceless-3D-Box-ELE.png\",\n \"description\": \"Four Lessons from King Saul\",\n \"url\": \"https://highvoltagekids.com/downloads/priceless-elementary/\",\n \"lessonCount\": 1,\n \"lessons\": [\n {\n \"id\": \"priceless-elementary-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/01/Priceless-3D-Box-ELE.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"fruit-of-the-spirit-elementary\",\n \"name\": \"Fruit of the Spirit\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2023/03/FOTS-3D-Box-EL.png\",\n \"description\": \"9 Lessons on the Fruit of the Spirit\",\n \"url\": \"https://highvoltagekids.com/downloads/fruit-of-the-spirit-elementary/\",\n \"lessonCount\": 9,\n \"lessons\": [\n {\n \"id\": \"fruit-of-the-spirit-elementary-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2023/03/FOTS-3D-Box-EL.png\",\n \"files\": []\n },\n {\n \"id\": \"fruit-of-the-spirit-elementary-lesson-2\",\n \"name\": \"Lesson 2\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2023/03/FOTS-3D-Box-EL.png\",\n \"files\": []\n },\n {\n \"id\": \"fruit-of-the-spirit-elementary-lesson-3\",\n \"name\": \"Lesson 3\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2023/03/FOTS-3D-Box-EL.png\",\n \"files\": []\n },\n {\n \"id\": \"fruit-of-the-spirit-elementary-lesson-4\",\n \"name\": \"Lesson 4\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2023/03/FOTS-3D-Box-EL.png\",\n \"files\": []\n },\n {\n \"id\": \"fruit-of-the-spirit-elementary-lesson-5\",\n \"name\": \"Lesson 5\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2023/03/FOTS-3D-Box-EL.png\",\n \"files\": []\n },\n {\n \"id\": \"fruit-of-the-spirit-elementary-lesson-6\",\n \"name\": \"Lesson 6\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2023/03/FOTS-3D-Box-EL.png\",\n \"files\": []\n },\n {\n \"id\": \"fruit-of-the-spirit-elementary-lesson-7\",\n \"name\": \"Lesson 7\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2023/03/FOTS-3D-Box-EL.png\",\n \"files\": []\n },\n {\n \"id\": \"fruit-of-the-spirit-elementary-lesson-8\",\n \"name\": \"Lesson 8\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2023/03/FOTS-3D-Box-EL.png\",\n \"files\": []\n },\n {\n \"id\": \"fruit-of-the-spirit-elementary-lesson-9\",\n \"name\": \"Lesson 9\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2023/03/FOTS-3D-Box-EL.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"finish-elementary\",\n \"name\": \"Finish\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2021/03/Finish-Easter-3D-Box-EL.png\",\n \"description\": \"Elementary Lesson for EASTER\",\n \"url\": \"https://highvoltagekids.com/downloads/finish-elementary/\",\n \"lessonCount\": 1,\n \"lessons\": [\n {\n \"id\": \"finish-elementary-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2021/03/Finish-Easter-3D-Box-EL.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"who-elementary\",\n \"name\": \"Who\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2023/01/Who-Elementary.png\",\n \"description\": \"5 Lessons On the Most Important People In Your Life With God\",\n \"url\": \"https://highvoltagekids.com/downloads/who-elementary/\",\n \"lessonCount\": 5,\n \"lessons\": [\n {\n \"id\": \"who-elementary-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2023/01/Who-Elementary.png\",\n \"files\": []\n },\n {\n \"id\": \"who-elementary-lesson-2\",\n \"name\": \"Lesson 2\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2023/01/Who-Elementary.png\",\n \"files\": []\n },\n {\n \"id\": \"who-elementary-lesson-3\",\n \"name\": \"Lesson 3\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2023/01/Who-Elementary.png\",\n \"files\": []\n },\n {\n \"id\": \"who-elementary-lesson-4\",\n \"name\": \"Lesson 4\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2023/01/Who-Elementary.png\",\n \"files\": []\n },\n {\n \"id\": \"who-elementary-lesson-5\",\n \"name\": \"Lesson 5\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2023/01/Who-Elementary.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"love-elementary\",\n \"name\": \"Love\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2023/01/Love-Elementary.png\",\n \"description\": \"Elementary Lesson for Easter\",\n \"url\": \"https://highvoltagekids.com/downloads/love-elementary/\",\n \"lessonCount\": 1,\n \"lessons\": [\n {\n \"id\": \"love-elementary-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2023/01/Love-Elementary.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"promises-promises-elementary\",\n \"name\": \"Promises, Promises\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2023/07/Promises-Promises-3D-Box-EL.png\",\n \"description\": \"Elementary Lesson On God’s Faithfulness\",\n \"url\": \"https://highvoltagekids.com/downloads/promises-promises-elementary/\",\n \"lessonCount\": 1,\n \"lessons\": [\n {\n \"id\": \"promises-promises-elementary-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2023/07/Promises-Promises-3D-Box-EL.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"fresh-start-elementary\",\n \"name\": \"Fresh Start\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2022/12/Fresh-Start-3D-Box-EL.png\",\n \"description\": \"Elementary Lesson For New Year’s Day\",\n \"url\": \"https://highvoltagekids.com/downloads/fresh-start-elementary/\",\n \"lessonCount\": 1,\n \"lessons\": [\n {\n \"id\": \"fresh-start-elementary-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2022/12/Fresh-Start-3D-Box-EL.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"church-elementary\",\n \"name\": \"Church\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2022/12/Church-Elementary.png\",\n \"description\": \"Six Lessons About the Family of God\",\n \"url\": \"https://highvoltagekids.com/downloads/church-elementary/\",\n \"lessonCount\": 1,\n \"lessons\": [\n {\n \"id\": \"church-elementary-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2022/12/Church-Elementary.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"mine-elementary\",\n \"name\": \"Mine!\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2022/11/Mine-Elementary.png\",\n \"description\": \"Elementary Lesson on Sharing\",\n \"url\": \"https://highvoltagekids.com/downloads/mine-elementary/\",\n \"lessonCount\": 1,\n \"lessons\": [\n {\n \"id\": \"mine-elementary-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2022/11/Mine-Elementary.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"christmas-stars-elementary\",\n \"name\": \"Christmas Stars\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2022/10/Christmas-Stars-Elementary-1.png\",\n \"description\": \"Five Lessons for Christmas\",\n \"url\": \"https://highvoltagekids.com/downloads/christmas-stars-elementary/\",\n \"lessonCount\": 1,\n \"lessons\": [\n {\n \"id\": \"christmas-stars-elementary-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2022/10/Christmas-Stars-Elementary-1.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"give-thanks-elementary\",\n \"name\": \"Give Thanks\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2022/09/Give-Thansk-Elementary.png\",\n \"description\": \"Elementary Lesson perfect for Thanksgiving\",\n \"url\": \"https://highvoltagekids.com/downloads/give-thanks-elementary/\",\n \"lessonCount\": 1,\n \"lessons\": [\n {\n \"id\": \"give-thanks-elementary-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2022/09/Give-Thansk-Elementary.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"family-farm-elementary\",\n \"name\": \"Family Farm\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2022/09/Family-Farm.png\",\n \"description\": \"4 Lessons on Planting Healthy Seeds in the Family\",\n \"url\": \"https://highvoltagekids.com/downloads/family-farm-elementary/\",\n \"lessonCount\": 4,\n \"lessons\": [\n {\n \"id\": \"family-farm-elementary-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2022/09/Family-Farm.png\",\n \"files\": []\n },\n {\n \"id\": \"family-farm-elementary-lesson-2\",\n \"name\": \"Lesson 2\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2022/09/Family-Farm.png\",\n \"files\": []\n },\n {\n \"id\": \"family-farm-elementary-lesson-3\",\n \"name\": \"Lesson 3\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2022/09/Family-Farm.png\",\n \"files\": []\n },\n {\n \"id\": \"family-farm-elementary-lesson-4\",\n \"name\": \"Lesson 4\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2022/09/Family-Farm.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"just-do-it-elementary\",\n \"name\": \"Just Do It!\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/01/Just-DO-it.png\",\n \"description\": \"6 Lessons from the Commands of Jesus\",\n \"url\": \"https://highvoltagekids.com/downloads/just-do-it-elementary/\",\n \"lessonCount\": 6,\n \"lessons\": [\n {\n \"id\": \"just-do-it-elementary-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/01/Just-DO-it.png\",\n \"files\": []\n },\n {\n \"id\": \"just-do-it-elementary-lesson-2\",\n \"name\": \"Lesson 2\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/01/Just-DO-it.png\",\n \"files\": []\n },\n {\n \"id\": \"just-do-it-elementary-lesson-3\",\n \"name\": \"Lesson 3\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/01/Just-DO-it.png\",\n \"files\": []\n },\n {\n \"id\": \"just-do-it-elementary-lesson-4\",\n \"name\": \"Lesson 4\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/01/Just-DO-it.png\",\n \"files\": []\n },\n {\n \"id\": \"just-do-it-elementary-lesson-5\",\n \"name\": \"Lesson 5\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/01/Just-DO-it.png\",\n \"files\": []\n },\n {\n \"id\": \"just-do-it-elementary-lesson-6\",\n \"name\": \"Lesson 6\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/01/Just-DO-it.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"every-soul-matters-to-god-elementary\",\n \"name\": \"Every Soul Matters to God\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2016/04/ESMTG-3D-Box-EL.png\",\n \"description\": \"3 Lessons On Evangelism And Missions\",\n \"url\": \"https://highvoltagekids.com/downloads/every-soul-matters-to-god-elementary/\",\n \"lessonCount\": 3,\n \"lessons\": [\n {\n \"id\": \"every-soul-matters-to-god-elementary-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2016/04/ESMTG-3D-Box-EL.png\",\n \"files\": []\n },\n {\n \"id\": \"every-soul-matters-to-god-elementary-lesson-2\",\n \"name\": \"Lesson 2\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2016/04/ESMTG-3D-Box-EL.png\",\n \"files\": []\n },\n {\n \"id\": \"every-soul-matters-to-god-elementary-lesson-3\",\n \"name\": \"Lesson 3\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2016/04/ESMTG-3D-Box-EL.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"battle-zone-elementary\",\n \"name\": \"Battle Zone\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2016/04/Battle-Zone-3D-Box-EL.png\",\n \"description\": \"8 Lessons from the Biggest Battles of the Bible\",\n \"url\": \"https://highvoltagekids.com/downloads/battle-zone-elementary/\",\n \"lessonCount\": 8,\n \"lessons\": [\n {\n \"id\": \"battle-zone-elementary-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2016/04/Battle-Zone-3D-Box-EL.png\",\n \"files\": []\n },\n {\n \"id\": \"battle-zone-elementary-lesson-2\",\n \"name\": \"Lesson 2\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2016/04/Battle-Zone-3D-Box-EL.png\",\n \"files\": []\n },\n {\n \"id\": \"battle-zone-elementary-lesson-3\",\n \"name\": \"Lesson 3\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2016/04/Battle-Zone-3D-Box-EL.png\",\n \"files\": []\n },\n {\n \"id\": \"battle-zone-elementary-lesson-4\",\n \"name\": \"Lesson 4\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2016/04/Battle-Zone-3D-Box-EL.png\",\n \"files\": []\n },\n {\n \"id\": \"battle-zone-elementary-lesson-5\",\n \"name\": \"Lesson 5\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2016/04/Battle-Zone-3D-Box-EL.png\",\n \"files\": []\n },\n {\n \"id\": \"battle-zone-elementary-lesson-6\",\n \"name\": \"Lesson 6\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2016/04/Battle-Zone-3D-Box-EL.png\",\n \"files\": []\n },\n {\n \"id\": \"battle-zone-elementary-lesson-7\",\n \"name\": \"Lesson 7\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2016/04/Battle-Zone-3D-Box-EL.png\",\n \"files\": []\n },\n {\n \"id\": \"battle-zone-elementary-lesson-8\",\n \"name\": \"Lesson 8\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2016/04/Battle-Zone-3D-Box-EL.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"game-plan-elementary\",\n \"name\": \"Game Plan\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2022/06/Game-Plan-3D-Box-EL.png\",\n \"description\": \"8 Lessons On Following God’s Plans\",\n \"url\": \"https://highvoltagekids.com/downloads/game-plan-elementary/\",\n \"lessonCount\": 8,\n \"lessons\": [\n {\n \"id\": \"game-plan-elementary-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2022/06/Game-Plan-3D-Box-EL.png\",\n \"files\": []\n },\n {\n \"id\": \"game-plan-elementary-lesson-2\",\n \"name\": \"Lesson 2\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2022/06/Game-Plan-3D-Box-EL.png\",\n \"files\": []\n },\n {\n \"id\": \"game-plan-elementary-lesson-3\",\n \"name\": \"Lesson 3\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2022/06/Game-Plan-3D-Box-EL.png\",\n \"files\": []\n },\n {\n \"id\": \"game-plan-elementary-lesson-4\",\n \"name\": \"Lesson 4\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2022/06/Game-Plan-3D-Box-EL.png\",\n \"files\": []\n },\n {\n \"id\": \"game-plan-elementary-lesson-5\",\n \"name\": \"Lesson 5\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2022/06/Game-Plan-3D-Box-EL.png\",\n \"files\": []\n },\n {\n \"id\": \"game-plan-elementary-lesson-6\",\n \"name\": \"Lesson 6\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2022/06/Game-Plan-3D-Box-EL.png\",\n \"files\": []\n },\n {\n \"id\": \"game-plan-elementary-lesson-7\",\n \"name\": \"Lesson 7\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2022/06/Game-Plan-3D-Box-EL.png\",\n \"files\": []\n },\n {\n \"id\": \"game-plan-elementary-lesson-8\",\n \"name\": \"Lesson 8\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2022/06/Game-Plan-3D-Box-EL.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"lets-get-real-elementary\",\n \"name\": \"Let's Get Real!\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2022/05/Lets-get-real-elementary.png\",\n \"description\": \"10 Lessons from Ephesians\",\n \"url\": \"https://highvoltagekids.com/downloads/lets-get-real-elementary/\",\n \"lessonCount\": 10,\n \"lessons\": [\n {\n \"id\": \"lets-get-real-elementary-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2022/05/Lets-get-real-elementary.png\",\n \"files\": []\n },\n {\n \"id\": \"lets-get-real-elementary-lesson-2\",\n \"name\": \"Lesson 2\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2022/05/Lets-get-real-elementary.png\",\n \"files\": []\n },\n {\n \"id\": \"lets-get-real-elementary-lesson-3\",\n \"name\": \"Lesson 3\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2022/05/Lets-get-real-elementary.png\",\n \"files\": []\n },\n {\n \"id\": \"lets-get-real-elementary-lesson-4\",\n \"name\": \"Lesson 4\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2022/05/Lets-get-real-elementary.png\",\n \"files\": []\n },\n {\n \"id\": \"lets-get-real-elementary-lesson-5\",\n \"name\": \"Lesson 5\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2022/05/Lets-get-real-elementary.png\",\n \"files\": []\n },\n {\n \"id\": \"lets-get-real-elementary-lesson-6\",\n \"name\": \"Lesson 6\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2022/05/Lets-get-real-elementary.png\",\n \"files\": []\n },\n {\n \"id\": \"lets-get-real-elementary-lesson-7\",\n \"name\": \"Lesson 7\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2022/05/Lets-get-real-elementary.png\",\n \"files\": []\n },\n {\n \"id\": \"lets-get-real-elementary-lesson-8\",\n \"name\": \"Lesson 8\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2022/05/Lets-get-real-elementary.png\",\n \"files\": []\n },\n {\n \"id\": \"lets-get-real-elementary-lesson-9\",\n \"name\": \"Lesson 9\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2022/05/Lets-get-real-elementary.png\",\n \"files\": []\n },\n {\n \"id\": \"lets-get-real-elementary-lesson-10\",\n \"name\": \"Lesson 10\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2022/05/Lets-get-real-elementary.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"money-talk-elementary\",\n \"name\": \"Money Talk$\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/01/Money-Talks.png\",\n \"description\": \"3 Lessons on Stewardship\",\n \"url\": \"https://highvoltagekids.com/downloads/money-talk-elementary/\",\n \"lessonCount\": 3,\n \"lessons\": [\n {\n \"id\": \"money-talk-elementary-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/01/Money-Talks.png\",\n \"files\": []\n },\n {\n \"id\": \"money-talk-elementary-lesson-2\",\n \"name\": \"Lesson 2\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/01/Money-Talks.png\",\n \"files\": []\n },\n {\n \"id\": \"money-talk-elementary-lesson-3\",\n \"name\": \"Lesson 3\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/01/Money-Talks.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"rescue-elementary\",\n \"name\": \"Rescue\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/01/Rescue-Ele.png\",\n \"description\": \"3 Lessons on Missions/Evangelism\",\n \"url\": \"https://highvoltagekids.com/downloads/rescue-elementary/\",\n \"lessonCount\": 3,\n \"lessons\": [\n {\n \"id\": \"rescue-elementary-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/01/Rescue-Ele.png\",\n \"files\": []\n },\n {\n \"id\": \"rescue-elementary-lesson-2\",\n \"name\": \"Lesson 2\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/01/Rescue-Ele.png\",\n \"files\": []\n },\n {\n \"id\": \"rescue-elementary-lesson-3\",\n \"name\": \"Lesson 3\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/01/Rescue-Ele.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"joshua-extreme-hero-elementary\",\n \"name\": \"JOSHUA – Extreme Hero\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/09/Josh-Hero-ELE.png\",\n \"description\": \"9 Lessons on the Life of Joshua\",\n \"url\": \"https://highvoltagekids.com/downloads/joshua-extreme-hero-elementary/\",\n \"lessonCount\": 9,\n \"lessons\": [\n {\n \"id\": \"joshua-extreme-hero-elementary-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/09/Josh-Hero-ELE.png\",\n \"files\": []\n },\n {\n \"id\": \"joshua-extreme-hero-elementary-lesson-2\",\n \"name\": \"Lesson 2\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/09/Josh-Hero-ELE.png\",\n \"files\": []\n },\n {\n \"id\": \"joshua-extreme-hero-elementary-lesson-3\",\n \"name\": \"Lesson 3\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/09/Josh-Hero-ELE.png\",\n \"files\": []\n },\n {\n \"id\": \"joshua-extreme-hero-elementary-lesson-4\",\n \"name\": \"Lesson 4\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/09/Josh-Hero-ELE.png\",\n \"files\": []\n },\n {\n \"id\": \"joshua-extreme-hero-elementary-lesson-5\",\n \"name\": \"Lesson 5\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/09/Josh-Hero-ELE.png\",\n \"files\": []\n },\n {\n \"id\": \"joshua-extreme-hero-elementary-lesson-6\",\n \"name\": \"Lesson 6\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/09/Josh-Hero-ELE.png\",\n \"files\": []\n },\n {\n \"id\": \"joshua-extreme-hero-elementary-lesson-7\",\n \"name\": \"Lesson 7\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/09/Josh-Hero-ELE.png\",\n \"files\": []\n },\n {\n \"id\": \"joshua-extreme-hero-elementary-lesson-8\",\n \"name\": \"Lesson 8\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/09/Josh-Hero-ELE.png\",\n \"files\": []\n },\n {\n \"id\": \"joshua-extreme-hero-elementary-lesson-9\",\n \"name\": \"Lesson 9\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/09/Josh-Hero-ELE.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"game-over-elementary-easter\",\n \"name\": \"Game Over\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2022/03/Game-Over-3D-Box-EL.png\",\n \"description\": \"Single Lesson for EASTER\",\n \"url\": \"https://highvoltagekids.com/downloads/game-over-elementary-easter/\",\n \"lessonCount\": 1,\n \"lessons\": [\n {\n \"id\": \"game-over-elementary-easter-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2022/03/Game-Over-3D-Box-EL.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"hey-can-i-ask-you-a-question-elementary\",\n \"name\": \"Hey! Can I Ask You A Question?\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/01/HCIAYAQ-3D-Box-EL.png\",\n \"description\": \"4 Lessons from Kids’ Biggest Questions\",\n \"url\": \"https://highvoltagekids.com/downloads/hey-can-i-ask-you-a-question-elementary/\",\n \"lessonCount\": 4,\n \"lessons\": [\n {\n \"id\": \"hey-can-i-ask-you-a-question-elementary-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/01/HCIAYAQ-3D-Box-EL.png\",\n \"files\": []\n },\n {\n \"id\": \"hey-can-i-ask-you-a-question-elementary-lesson-2\",\n \"name\": \"Lesson 2\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/01/HCIAYAQ-3D-Box-EL.png\",\n \"files\": []\n },\n {\n \"id\": \"hey-can-i-ask-you-a-question-elementary-lesson-3\",\n \"name\": \"Lesson 3\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/01/HCIAYAQ-3D-Box-EL.png\",\n \"files\": []\n },\n {\n \"id\": \"hey-can-i-ask-you-a-question-elementary-lesson-4\",\n \"name\": \"Lesson 4\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/01/HCIAYAQ-3D-Box-EL.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"the-table-elementary\",\n \"name\": \"The Table\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2018/06/The-Table.png\",\n \"description\": \"6 Lessons From Tables In The Bible\",\n \"url\": \"https://highvoltagekids.com/downloads/the-table-elementary/\",\n \"lessonCount\": 6,\n \"lessons\": [\n {\n \"id\": \"the-table-elementary-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2018/06/The-Table.png\",\n \"files\": []\n },\n {\n \"id\": \"the-table-elementary-lesson-2\",\n \"name\": \"Lesson 2\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2018/06/The-Table.png\",\n \"files\": []\n },\n {\n \"id\": \"the-table-elementary-lesson-3\",\n \"name\": \"Lesson 3\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2018/06/The-Table.png\",\n \"files\": []\n },\n {\n \"id\": \"the-table-elementary-lesson-4\",\n \"name\": \"Lesson 4\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2018/06/The-Table.png\",\n \"files\": []\n },\n {\n \"id\": \"the-table-elementary-lesson-5\",\n \"name\": \"Lesson 5\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2018/06/The-Table.png\",\n \"files\": []\n },\n {\n \"id\": \"the-table-elementary-lesson-6\",\n \"name\": \"Lesson 6\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2018/06/The-Table.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"game-over-elementary\",\n \"name\": \"Game Over\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2022/03/Game-Over-3D-Box-EL.png\",\n \"description\": \"8 Lessons From the Bible’s Greatest Comebacks\",\n \"url\": \"https://highvoltagekids.com/downloads/game-over-elementary/\",\n \"lessonCount\": 8,\n \"lessons\": [\n {\n \"id\": \"game-over-elementary-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2022/03/Game-Over-3D-Box-EL.png\",\n \"files\": []\n },\n {\n \"id\": \"game-over-elementary-lesson-2\",\n \"name\": \"Lesson 2\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2022/03/Game-Over-3D-Box-EL.png\",\n \"files\": []\n },\n {\n \"id\": \"game-over-elementary-lesson-3\",\n \"name\": \"Lesson 3\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2022/03/Game-Over-3D-Box-EL.png\",\n \"files\": []\n },\n {\n \"id\": \"game-over-elementary-lesson-4\",\n \"name\": \"Lesson 4\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2022/03/Game-Over-3D-Box-EL.png\",\n \"files\": []\n },\n {\n \"id\": \"game-over-elementary-lesson-5\",\n \"name\": \"Lesson 5\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2022/03/Game-Over-3D-Box-EL.png\",\n \"files\": []\n },\n {\n \"id\": \"game-over-elementary-lesson-6\",\n \"name\": \"Lesson 6\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2022/03/Game-Over-3D-Box-EL.png\",\n \"files\": []\n },\n {\n \"id\": \"game-over-elementary-lesson-7\",\n \"name\": \"Lesson 7\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2022/03/Game-Over-3D-Box-EL.png\",\n \"files\": []\n },\n {\n \"id\": \"game-over-elementary-lesson-8\",\n \"name\": \"Lesson 8\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2022/03/Game-Over-3D-Box-EL.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"jonah-a-whale-of-a-tale-elementary\",\n \"name\": \"Jonah – A Whale of a Tale\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2018/06/Jonah.png\",\n \"description\": \"3 Lessons from the book of Jonah\",\n \"url\": \"https://highvoltagekids.com/downloads/jonah-a-whale-of-a-tale-elementary/\",\n \"lessonCount\": 3,\n \"lessons\": [\n {\n \"id\": \"jonah-a-whale-of-a-tale-elementary-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2018/06/Jonah.png\",\n \"files\": []\n },\n {\n \"id\": \"jonah-a-whale-of-a-tale-elementary-lesson-2\",\n \"name\": \"Lesson 2\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2018/06/Jonah.png\",\n \"files\": []\n },\n {\n \"id\": \"jonah-a-whale-of-a-tale-elementary-lesson-3\",\n \"name\": \"Lesson 3\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2018/06/Jonah.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"the-rock-elementary\",\n \"name\": \"The Rock\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2018/06/Rock.png\",\n \"description\": \"9 Lessons from the life of Peter\",\n \"url\": \"https://highvoltagekids.com/downloads/the-rock-elementary/\",\n \"lessonCount\": 9,\n \"lessons\": [\n {\n \"id\": \"the-rock-elementary-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2018/06/Rock.png\",\n \"files\": []\n },\n {\n \"id\": \"the-rock-elementary-lesson-2\",\n \"name\": \"Lesson 2\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2018/06/Rock.png\",\n \"files\": []\n },\n {\n \"id\": \"the-rock-elementary-lesson-3\",\n \"name\": \"Lesson 3\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2018/06/Rock.png\",\n \"files\": []\n },\n {\n \"id\": \"the-rock-elementary-lesson-4\",\n \"name\": \"Lesson 4\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2018/06/Rock.png\",\n \"files\": []\n },\n {\n \"id\": \"the-rock-elementary-lesson-5\",\n \"name\": \"Lesson 5\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2018/06/Rock.png\",\n \"files\": []\n },\n {\n \"id\": \"the-rock-elementary-lesson-6\",\n \"name\": \"Lesson 6\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2018/06/Rock.png\",\n \"files\": []\n },\n {\n \"id\": \"the-rock-elementary-lesson-7\",\n \"name\": \"Lesson 7\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2018/06/Rock.png\",\n \"files\": []\n },\n {\n \"id\": \"the-rock-elementary-lesson-8\",\n \"name\": \"Lesson 8\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2018/06/Rock.png\",\n \"files\": []\n },\n {\n \"id\": \"the-rock-elementary-lesson-9\",\n \"name\": \"Lesson 9\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2018/06/Rock.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"three-in-one-elementary-single\",\n \"name\": \"Three in One\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/01/Three-In-One-Elementary.png\",\n \"description\": \"Elementary Lesson on “The Trinity”\",\n \"url\": \"https://highvoltagekids.com/downloads/three-in-one-elementary-single/\",\n \"lessonCount\": 1,\n \"lessons\": [\n {\n \"id\": \"three-in-one-elementary-single-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/01/Three-In-One-Elementary.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"blessed-elementary\",\n \"name\": \"Blessed\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2016/04/Blessed-3D-Box-EL.png\",\n \"description\": \"6 Lessons about God’s blessings\",\n \"url\": \"https://highvoltagekids.com/downloads/blessed-elementary/\",\n \"lessonCount\": 6,\n \"lessons\": [\n {\n \"id\": \"blessed-elementary-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2016/04/Blessed-3D-Box-EL.png\",\n \"files\": []\n },\n {\n \"id\": \"blessed-elementary-lesson-2\",\n \"name\": \"Lesson 2\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2016/04/Blessed-3D-Box-EL.png\",\n \"files\": []\n },\n {\n \"id\": \"blessed-elementary-lesson-3\",\n \"name\": \"Lesson 3\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2016/04/Blessed-3D-Box-EL.png\",\n \"files\": []\n },\n {\n \"id\": \"blessed-elementary-lesson-4\",\n \"name\": \"Lesson 4\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2016/04/Blessed-3D-Box-EL.png\",\n \"files\": []\n },\n {\n \"id\": \"blessed-elementary-lesson-5\",\n \"name\": \"Lesson 5\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2016/04/Blessed-3D-Box-EL.png\",\n \"files\": []\n },\n {\n \"id\": \"blessed-elementary-lesson-6\",\n \"name\": \"Lesson 6\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2016/04/Blessed-3D-Box-EL.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"power-promises-elementary\",\n \"name\": \"Power Promises\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2023/05/Power-Promises-3D-Box-EL.png\",\n \"description\": \"6 Lessons from some of God’s most powerful promises\",\n \"url\": \"https://highvoltagekids.com/downloads/power-promises-elementary/\",\n \"lessonCount\": 6,\n \"lessons\": [\n {\n \"id\": \"power-promises-elementary-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2023/05/Power-Promises-3D-Box-EL.png\",\n \"files\": []\n },\n {\n \"id\": \"power-promises-elementary-lesson-2\",\n \"name\": \"Lesson 2\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2023/05/Power-Promises-3D-Box-EL.png\",\n \"files\": []\n },\n {\n \"id\": \"power-promises-elementary-lesson-3\",\n \"name\": \"Lesson 3\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2023/05/Power-Promises-3D-Box-EL.png\",\n \"files\": []\n },\n {\n \"id\": \"power-promises-elementary-lesson-4\",\n \"name\": \"Lesson 4\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2023/05/Power-Promises-3D-Box-EL.png\",\n \"files\": []\n },\n {\n \"id\": \"power-promises-elementary-lesson-5\",\n \"name\": \"Lesson 5\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2023/05/Power-Promises-3D-Box-EL.png\",\n \"files\": []\n },\n {\n \"id\": \"power-promises-elementary-lesson-6\",\n \"name\": \"Lesson 6\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2023/05/Power-Promises-3D-Box-EL.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"im-in-trouble-elementary\",\n \"name\": \"I’m In Trouble\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2023/05/Im-In-Trouble-3D-Box-EL.png\",\n \"description\": \"8 Lessons About Dealing With Difficulty\",\n \"url\": \"https://highvoltagekids.com/downloads/im-in-trouble-elementary/\",\n \"lessonCount\": 8,\n \"lessons\": [\n {\n \"id\": \"im-in-trouble-elementary-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2023/05/Im-In-Trouble-3D-Box-EL.png\",\n \"files\": []\n },\n {\n \"id\": \"im-in-trouble-elementary-lesson-2\",\n \"name\": \"Lesson 2\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2023/05/Im-In-Trouble-3D-Box-EL.png\",\n \"files\": []\n },\n {\n \"id\": \"im-in-trouble-elementary-lesson-3\",\n \"name\": \"Lesson 3\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2023/05/Im-In-Trouble-3D-Box-EL.png\",\n \"files\": []\n },\n {\n \"id\": \"im-in-trouble-elementary-lesson-4\",\n \"name\": \"Lesson 4\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2023/05/Im-In-Trouble-3D-Box-EL.png\",\n \"files\": []\n },\n {\n \"id\": \"im-in-trouble-elementary-lesson-5\",\n \"name\": \"Lesson 5\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2023/05/Im-In-Trouble-3D-Box-EL.png\",\n \"files\": []\n },\n {\n \"id\": \"im-in-trouble-elementary-lesson-6\",\n \"name\": \"Lesson 6\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2023/05/Im-In-Trouble-3D-Box-EL.png\",\n \"files\": []\n },\n {\n \"id\": \"im-in-trouble-elementary-lesson-7\",\n \"name\": \"Lesson 7\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2023/05/Im-In-Trouble-3D-Box-EL.png\",\n \"files\": []\n },\n {\n \"id\": \"im-in-trouble-elementary-lesson-8\",\n \"name\": \"Lesson 8\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2023/05/Im-In-Trouble-3D-Box-EL.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"what-if-elementary-christmas\",\n \"name\": \"What if?\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2023/07/WhatIf-3D-Box-EL.png\",\n \"description\": \"Elementary lesson for Christmas\",\n \"url\": \"https://highvoltagekids.com/downloads/what-if-elementary-christmas/\",\n \"lessonCount\": 1,\n \"lessons\": [\n {\n \"id\": \"what-if-elementary-christmas-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2023/07/WhatIf-3D-Box-EL.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"the-amazing-god-diet-elementary-single\",\n \"name\": \"The Amazing GOD Diet\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2023/07/TAGD-3D-Box-EL.png\",\n \"description\": \"Elementary Lesson on Putting Good Things In Our Lives\",\n \"url\": \"https://highvoltagekids.com/downloads/the-amazing-god-diet-elementary-single/\",\n \"lessonCount\": 1,\n \"lessons\": [\n {\n \"id\": \"the-amazing-god-diet-elementary-single-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2023/07/TAGD-3D-Box-EL.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"ikisc2-elementary\",\n \"name\": \"IKISC2\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2023/05/IKISC2-3D-Box-EL.png\",\n \"description\": \"Ten Lessons on the craziest stories in the Bible\",\n \"url\": \"https://highvoltagekids.com/downloads/ikisc2-elementary/\",\n \"lessonCount\": 1,\n \"lessons\": [\n {\n \"id\": \"ikisc2-elementary-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2023/05/IKISC2-3D-Box-EL.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"the-missing-piece-elementary-easter\",\n \"name\": \"The Missing Piece\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2023/07/Missing-Piece-3D-Box-EL.png\",\n \"description\": \"A Single Lesson for EASTER\",\n \"url\": \"https://highvoltagekids.com/downloads/the-missing-piece-elementary-easter/\",\n \"lessonCount\": 1,\n \"lessons\": [\n {\n \"id\": \"the-missing-piece-elementary-easter-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2023/07/Missing-Piece-3D-Box-EL.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"worship-elementary\",\n \"name\": \"Worship\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2023/05/Worship-3D-Box-EL.png\",\n \"description\": \"3 Lessons On Experiencing God’s Presence\",\n \"url\": \"https://highvoltagekids.com/downloads/worship-elementary/\",\n \"lessonCount\": 3,\n \"lessons\": [\n {\n \"id\": \"worship-elementary-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2023/05/Worship-3D-Box-EL.png\",\n \"files\": []\n },\n {\n \"id\": \"worship-elementary-lesson-2\",\n \"name\": \"Lesson 2\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2023/05/Worship-3D-Box-EL.png\",\n \"files\": []\n },\n {\n \"id\": \"worship-elementary-lesson-3\",\n \"name\": \"Lesson 3\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2023/05/Worship-3D-Box-EL.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"tell-me-a-story-elementary-bonus\",\n \"name\": \"Tell Me A Story\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2023/05/Tell-Me-A-Story-3D-Box-EL.png\",\n \"description\": \"Elementary Curriculum Bonus\",\n \"url\": \"https://highvoltagekids.com/downloads/tell-me-a-story-elementary-bonus/\",\n \"lessonCount\": 1,\n \"lessons\": [\n {\n \"id\": \"tell-me-a-story-elementary-bonus-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2023/05/Tell-Me-A-Story-3D-Box-EL.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"tell-me-a-story-elementary\",\n \"name\": \"Tell Me A Story\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2023/05/Tell-Me-A-Story-3D-Box-EL.png\",\n \"description\": \"Elementary: 6 Lessons on the Parables of Jesus\",\n \"url\": \"https://highvoltagekids.com/downloads/tell-me-a-story-elementary/\",\n \"lessonCount\": 6,\n \"lessons\": [\n {\n \"id\": \"tell-me-a-story-elementary-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2023/05/Tell-Me-A-Story-3D-Box-EL.png\",\n \"files\": []\n },\n {\n \"id\": \"tell-me-a-story-elementary-lesson-2\",\n \"name\": \"Lesson 2\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2023/05/Tell-Me-A-Story-3D-Box-EL.png\",\n \"files\": []\n },\n {\n \"id\": \"tell-me-a-story-elementary-lesson-3\",\n \"name\": \"Lesson 3\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2023/05/Tell-Me-A-Story-3D-Box-EL.png\",\n \"files\": []\n },\n {\n \"id\": \"tell-me-a-story-elementary-lesson-4\",\n \"name\": \"Lesson 4\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2023/05/Tell-Me-A-Story-3D-Box-EL.png\",\n \"files\": []\n },\n {\n \"id\": \"tell-me-a-story-elementary-lesson-5\",\n \"name\": \"Lesson 5\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2023/05/Tell-Me-A-Story-3D-Box-EL.png\",\n \"files\": []\n },\n {\n \"id\": \"tell-me-a-story-elementary-lesson-6\",\n \"name\": \"Lesson 6\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2023/05/Tell-Me-A-Story-3D-Box-EL.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"spy-kids-elementary-bonus\",\n \"name\": \"Spy Kids\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2021/03/spy-kids.png\",\n \"description\": \"Elementary Curriculum Bonus\",\n \"url\": \"https://highvoltagekids.com/downloads/spy-kids-elementary-bonus/\",\n \"lessonCount\": 1,\n \"lessons\": [\n {\n \"id\": \"spy-kids-elementary-bonus-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2021/03/spy-kids.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"dont-be-a-downer-elementary-single\",\n \"name\": \"Don’t Be A Downer\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2019/11/6.png\",\n \"description\": \"Single Lesson On Being An Encourager\",\n \"url\": \"https://highvoltagekids.com/downloads/dont-be-a-downer-elementary-single/\",\n \"lessonCount\": 1,\n \"lessons\": [\n {\n \"id\": \"dont-be-a-downer-elementary-single-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2019/11/6.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"live-like-a-king-elementary\",\n \"name\": \"Live Like A King\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2021/04/Live-Like-A-Thing-3D-Box.png\",\n \"description\": \"4 Lessons on Mephibosheth\",\n \"url\": \"https://highvoltagekids.com/downloads/live-like-a-king-elementary/\",\n \"lessonCount\": 4,\n \"lessons\": [\n {\n \"id\": \"live-like-a-king-elementary-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2021/04/Live-Like-A-Thing-3D-Box.png\",\n \"files\": []\n },\n {\n \"id\": \"live-like-a-king-elementary-lesson-2\",\n \"name\": \"Lesson 2\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2021/04/Live-Like-A-Thing-3D-Box.png\",\n \"files\": []\n },\n {\n \"id\": \"live-like-a-king-elementary-lesson-3\",\n \"name\": \"Lesson 3\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2021/04/Live-Like-A-Thing-3D-Box.png\",\n \"files\": []\n },\n {\n \"id\": \"live-like-a-king-elementary-lesson-4\",\n \"name\": \"Lesson 4\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2021/04/Live-Like-A-Thing-3D-Box.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"the-forgotten-elementary\",\n \"name\": \"The Forgotten\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2021/07/the-forgotten.png\",\n \"description\": \"3 Lessons on Missions\",\n \"url\": \"https://highvoltagekids.com/downloads/the-forgotten-elementary/\",\n \"lessonCount\": 3,\n \"lessons\": [\n {\n \"id\": \"the-forgotten-elementary-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2021/07/the-forgotten.png\",\n \"files\": []\n },\n {\n \"id\": \"the-forgotten-elementary-lesson-2\",\n \"name\": \"Lesson 2\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2021/07/the-forgotten.png\",\n \"files\": []\n },\n {\n \"id\": \"the-forgotten-elementary-lesson-3\",\n \"name\": \"Lesson 3\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2021/07/the-forgotten.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"the-big-ten-elementary\",\n \"name\": \"The Big Ten\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2020/12/the-big-ten-1.png\",\n \"description\": \"10 Weeks on The Ten Commandments.\",\n \"url\": \"https://highvoltagekids.com/downloads/the-big-ten-elementary/\",\n \"lessonCount\": 1,\n \"lessons\": [\n {\n \"id\": \"the-big-ten-elementary-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2020/12/the-big-ten-1.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"come-home-elementary\",\n \"name\": \"Come Home\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2023/10/come-home.png\",\n \"description\": \"4 Lessons from The Prodigal Son\",\n \"url\": \"https://highvoltagekids.com/downloads/come-home-elementary/\",\n \"lessonCount\": 4,\n \"lessons\": [\n {\n \"id\": \"come-home-elementary-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2023/10/come-home.png\",\n \"files\": []\n },\n {\n \"id\": \"come-home-elementary-lesson-2\",\n \"name\": \"Lesson 2\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2023/10/come-home.png\",\n \"files\": []\n },\n {\n \"id\": \"come-home-elementary-lesson-3\",\n \"name\": \"Lesson 3\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2023/10/come-home.png\",\n \"files\": []\n },\n {\n \"id\": \"come-home-elementary-lesson-4\",\n \"name\": \"Lesson 4\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2023/10/come-home.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"you-matter-elementary-single\",\n \"name\": \"You Matter\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2019/11/You-Matter-3D-Box.png\",\n \"description\": \"Single Lesson on Self-Esteem\",\n \"url\": \"https://highvoltagekids.com/downloads/you-matter-elementary-single/\",\n \"lessonCount\": 1,\n \"lessons\": [\n {\n \"id\": \"you-matter-elementary-single-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2019/11/You-Matter-3D-Box.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"surprise-elementary-single\",\n \"name\": \"Surprise!\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2019/02/7.png\",\n \"description\": \"Single lesson for Easter\",\n \"url\": \"https://highvoltagekids.com/downloads/surprise-elementary-single/\",\n \"lessonCount\": 1,\n \"lessons\": [\n {\n \"id\": \"surprise-elementary-single-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2019/02/7.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"spy-kids-elementary\",\n \"name\": \"Spy Kids\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2022/01/Spy-Kids-3D-Box.png\",\n \"description\": \"6 Lessons on the Book of Daniel\",\n \"url\": \"https://highvoltagekids.com/downloads/spy-kids-elementary/\",\n \"lessonCount\": 6,\n \"lessons\": [\n {\n \"id\": \"spy-kids-elementary-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2022/01/Spy-Kids-3D-Box.png\",\n \"files\": []\n },\n {\n \"id\": \"spy-kids-elementary-lesson-2\",\n \"name\": \"Lesson 2\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2022/01/Spy-Kids-3D-Box.png\",\n \"files\": []\n },\n {\n \"id\": \"spy-kids-elementary-lesson-3\",\n \"name\": \"Lesson 3\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2022/01/Spy-Kids-3D-Box.png\",\n \"files\": []\n },\n {\n \"id\": \"spy-kids-elementary-lesson-4\",\n \"name\": \"Lesson 4\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2022/01/Spy-Kids-3D-Box.png\",\n \"files\": []\n },\n {\n \"id\": \"spy-kids-elementary-lesson-5\",\n \"name\": \"Lesson 5\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2022/01/Spy-Kids-3D-Box.png\",\n \"files\": []\n },\n {\n \"id\": \"spy-kids-elementary-lesson-6\",\n \"name\": \"Lesson 6\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2022/01/Spy-Kids-3D-Box.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"life-is-a-highway-elementary\",\n \"name\": \"Life is A Highway\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2017/02/Life-Is-A-Highway-3D-Box.png\",\n \"description\": \"6 Lessons\",\n \"url\": \"https://highvoltagekids.com/downloads/life-is-a-highway-elementary/\",\n \"lessonCount\": 6,\n \"lessons\": [\n {\n \"id\": \"life-is-a-highway-elementary-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2017/02/Life-Is-A-Highway-3D-Box.png\",\n \"files\": []\n },\n {\n \"id\": \"life-is-a-highway-elementary-lesson-2\",\n \"name\": \"Lesson 2\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2017/02/Life-Is-A-Highway-3D-Box.png\",\n \"files\": []\n },\n {\n \"id\": \"life-is-a-highway-elementary-lesson-3\",\n \"name\": \"Lesson 3\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2017/02/Life-Is-A-Highway-3D-Box.png\",\n \"files\": []\n },\n {\n \"id\": \"life-is-a-highway-elementary-lesson-4\",\n \"name\": \"Lesson 4\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2017/02/Life-Is-A-Highway-3D-Box.png\",\n \"files\": []\n },\n {\n \"id\": \"life-is-a-highway-elementary-lesson-5\",\n \"name\": \"Lesson 5\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2017/02/Life-Is-A-Highway-3D-Box.png\",\n \"files\": []\n },\n {\n \"id\": \"life-is-a-highway-elementary-lesson-6\",\n \"name\": \"Lesson 6\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2017/02/Life-Is-A-Highway-3D-Box.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"jesus-is-worth-it-elementary\",\n \"name\": \"Jesus Is Worth It\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2018/10/Jesus-worth-it.png\",\n \"description\": \"3 Lessons on Missions\",\n \"url\": \"https://highvoltagekids.com/downloads/jesus-is-worth-it-elementary/\",\n \"lessonCount\": 3,\n \"lessons\": [\n {\n \"id\": \"jesus-is-worth-it-elementary-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2018/10/Jesus-worth-it.png\",\n \"files\": []\n },\n {\n \"id\": \"jesus-is-worth-it-elementary-lesson-2\",\n \"name\": \"Lesson 2\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2018/10/Jesus-worth-it.png\",\n \"files\": []\n },\n {\n \"id\": \"jesus-is-worth-it-elementary-lesson-3\",\n \"name\": \"Lesson 3\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2018/10/Jesus-worth-it.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"noah-elementary\",\n \"name\": \"Noah\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2018/06/Noah.png\",\n \"description\": \"3 Lessons\",\n \"url\": \"https://highvoltagekids.com/downloads/noah-elementary/\",\n \"lessonCount\": 3,\n \"lessons\": [\n {\n \"id\": \"noah-elementary-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2018/06/Noah.png\",\n \"files\": []\n },\n {\n \"id\": \"noah-elementary-lesson-2\",\n \"name\": \"Lesson 2\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2018/06/Noah.png\",\n \"files\": []\n },\n {\n \"id\": \"noah-elementary-lesson-3\",\n \"name\": \"Lesson 3\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2018/06/Noah.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"living-large-elementary\",\n \"name\": \"Living Large\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2018/06/Living-Large.png\",\n \"description\": \"4 Lessons on Stewardship\",\n \"url\": \"https://highvoltagekids.com/downloads/living-large-elementary/\",\n \"lessonCount\": 4,\n \"lessons\": [\n {\n \"id\": \"living-large-elementary-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2018/06/Living-Large.png\",\n \"files\": []\n },\n {\n \"id\": \"living-large-elementary-lesson-2\",\n \"name\": \"Lesson 2\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2018/06/Living-Large.png\",\n \"files\": []\n },\n {\n \"id\": \"living-large-elementary-lesson-3\",\n \"name\": \"Lesson 3\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2018/06/Living-Large.png\",\n \"files\": []\n },\n {\n \"id\": \"living-large-elementary-lesson-4\",\n \"name\": \"Lesson 4\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2018/06/Living-Large.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"no-fear-elementary-single\",\n \"name\": \"No Fear\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2023/07/No-Fear-3D-Box-EL.png\",\n \"description\": \"Single Lesson on Fear\",\n \"url\": \"https://highvoltagekids.com/downloads/no-fear-elementary-single/\",\n \"lessonCount\": 1,\n \"lessons\": [\n {\n \"id\": \"no-fear-elementary-single-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2023/07/No-Fear-3D-Box-EL.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"the-garden-elementary\",\n \"name\": \"The Garden\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2021/12/the-garden-1.png\",\n \"description\": \"4 Lessons on Adam &amp; Eve\",\n \"url\": \"https://highvoltagekids.com/downloads/the-garden-elementary/\",\n \"lessonCount\": 4,\n \"lessons\": [\n {\n \"id\": \"the-garden-elementary-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2021/12/the-garden-1.png\",\n \"files\": []\n },\n {\n \"id\": \"the-garden-elementary-lesson-2\",\n \"name\": \"Lesson 2\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2021/12/the-garden-1.png\",\n \"files\": []\n },\n {\n \"id\": \"the-garden-elementary-lesson-3\",\n \"name\": \"Lesson 3\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2021/12/the-garden-1.png\",\n \"files\": []\n },\n {\n \"id\": \"the-garden-elementary-lesson-4\",\n \"name\": \"Lesson 4\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2021/12/the-garden-1.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"money-matters-elementary-single\",\n \"name\": \"Money Matters\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2019/11/Money-Matters-3D-Box.png\",\n \"description\": \"Single Lesson on Stewardship\",\n \"url\": \"https://highvoltagekids.com/downloads/money-matters-elementary-single/\",\n \"lessonCount\": 1,\n \"lessons\": [\n {\n \"id\": \"money-matters-elementary-single-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2019/11/Money-Matters-3D-Box.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"jesus-is-elementary-christmas\",\n \"name\": \"Jesus Is...\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2018/10/Jesus-Is-3D-Box.png\",\n \"description\": \"6 Lessons For Christmas\",\n \"url\": \"https://highvoltagekids.com/downloads/jesus-is-elementary-christmas/\",\n \"lessonCount\": 6,\n \"lessons\": [\n {\n \"id\": \"jesus-is-elementary-christmas-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2018/10/Jesus-Is-3D-Box.png\",\n \"files\": []\n },\n {\n \"id\": \"jesus-is-elementary-christmas-lesson-2\",\n \"name\": \"Lesson 2\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2018/10/Jesus-Is-3D-Box.png\",\n \"files\": []\n },\n {\n \"id\": \"jesus-is-elementary-christmas-lesson-3\",\n \"name\": \"Lesson 3\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2018/10/Jesus-Is-3D-Box.png\",\n \"files\": []\n },\n {\n \"id\": \"jesus-is-elementary-christmas-lesson-4\",\n \"name\": \"Lesson 4\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2018/10/Jesus-Is-3D-Box.png\",\n \"files\": []\n },\n {\n \"id\": \"jesus-is-elementary-christmas-lesson-5\",\n \"name\": \"Lesson 5\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2018/10/Jesus-Is-3D-Box.png\",\n \"files\": []\n },\n {\n \"id\": \"jesus-is-elementary-christmas-lesson-6\",\n \"name\": \"Lesson 6\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2018/10/Jesus-Is-3D-Box.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"giant-elementary\",\n \"name\": \"Giant\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2019/01/GIANT-3D-Box.png\",\n \"description\": \"6 Lessons on David &amp; Goliath\",\n \"url\": \"https://highvoltagekids.com/downloads/giant-elementary/\",\n \"lessonCount\": 6,\n \"lessons\": [\n {\n \"id\": \"giant-elementary-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2019/01/GIANT-3D-Box.png\",\n \"files\": []\n },\n {\n \"id\": \"giant-elementary-lesson-2\",\n \"name\": \"Lesson 2\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2019/01/GIANT-3D-Box.png\",\n \"files\": []\n },\n {\n \"id\": \"giant-elementary-lesson-3\",\n \"name\": \"Lesson 3\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2019/01/GIANT-3D-Box.png\",\n \"files\": []\n },\n {\n \"id\": \"giant-elementary-lesson-4\",\n \"name\": \"Lesson 4\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2019/01/GIANT-3D-Box.png\",\n \"files\": []\n },\n {\n \"id\": \"giant-elementary-lesson-5\",\n \"name\": \"Lesson 5\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2019/01/GIANT-3D-Box.png\",\n \"files\": []\n },\n {\n \"id\": \"giant-elementary-lesson-6\",\n \"name\": \"Lesson 6\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2019/01/GIANT-3D-Box.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"stand-out-elementary\",\n \"name\": \"Stand Out\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2021/06/Stand-Out-3D-Box.png\",\n \"description\": \"3 Lessons on the Book of Titus\",\n \"url\": \"https://highvoltagekids.com/downloads/stand-out-elementary/\",\n \"lessonCount\": 3,\n \"lessons\": [\n {\n \"id\": \"stand-out-elementary-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2021/06/Stand-Out-3D-Box.png\",\n \"files\": []\n },\n {\n \"id\": \"stand-out-elementary-lesson-2\",\n \"name\": \"Lesson 2\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2021/06/Stand-Out-3D-Box.png\",\n \"files\": []\n },\n {\n \"id\": \"stand-out-elementary-lesson-3\",\n \"name\": \"Lesson 3\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2021/06/Stand-Out-3D-Box.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"easter-believe-it-or-not-elementary-easter\",\n \"name\": \"Easter - Believe It or Not\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2018/02/22Believe-It-or-Not22-Easter-Lesson-1.png\",\n \"description\": \"Single Lesson\",\n \"url\": \"https://highvoltagekids.com/downloads/easter-believe-it-or-not-elementary-easter/\",\n \"lessonCount\": 1,\n \"lessons\": [\n {\n \"id\": \"easter-believe-it-or-not-elementary-easter-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2018/02/22Believe-It-or-Not22-Easter-Lesson-1.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"the-god-father-elementary-single-fathers-day\",\n \"name\": \"The GOD-Father\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2019/01/Godfather-3D-Box.png\",\n \"description\": \"Single Lesson For Father's Day\",\n \"url\": \"https://highvoltagekids.com/downloads/the-god-father-elementary-single-fathers-day/\",\n \"lessonCount\": 1,\n \"lessons\": [\n {\n \"id\": \"the-god-father-elementary-single-fathers-day-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2019/01/Godfather-3D-Box.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"yolo-elementary\",\n \"name\": \"Y.O.L.O.\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/01/Yolo.png\",\n \"description\": \"5 Lessons on the Life of Esther\",\n \"url\": \"https://highvoltagekids.com/downloads/yolo-elementary/\",\n \"lessonCount\": 5,\n \"lessons\": [\n {\n \"id\": \"yolo-elementary-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/01/Yolo.png\",\n \"files\": []\n },\n {\n \"id\": \"yolo-elementary-lesson-2\",\n \"name\": \"Lesson 2\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/01/Yolo.png\",\n \"files\": []\n },\n {\n \"id\": \"yolo-elementary-lesson-3\",\n \"name\": \"Lesson 3\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/01/Yolo.png\",\n \"files\": []\n },\n {\n \"id\": \"yolo-elementary-lesson-4\",\n \"name\": \"Lesson 4\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/01/Yolo.png\",\n \"files\": []\n },\n {\n \"id\": \"yolo-elementary-lesson-5\",\n \"name\": \"Lesson 5\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/01/Yolo.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"never-forget-elementary\",\n \"name\": \"Never Forget\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2019/09/Never-Forget-3D-Box.png\",\n \"description\": \"8 Lessons\",\n \"url\": \"https://highvoltagekids.com/downloads/never-forget-elementary/\",\n \"lessonCount\": 8,\n \"lessons\": [\n {\n \"id\": \"never-forget-elementary-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2019/09/Never-Forget-3D-Box.png\",\n \"files\": []\n },\n {\n \"id\": \"never-forget-elementary-lesson-2\",\n \"name\": \"Lesson 2\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2019/09/Never-Forget-3D-Box.png\",\n \"files\": []\n },\n {\n \"id\": \"never-forget-elementary-lesson-3\",\n \"name\": \"Lesson 3\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2019/09/Never-Forget-3D-Box.png\",\n \"files\": []\n },\n {\n \"id\": \"never-forget-elementary-lesson-4\",\n \"name\": \"Lesson 4\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2019/09/Never-Forget-3D-Box.png\",\n \"files\": []\n },\n {\n \"id\": \"never-forget-elementary-lesson-5\",\n \"name\": \"Lesson 5\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2019/09/Never-Forget-3D-Box.png\",\n \"files\": []\n },\n {\n \"id\": \"never-forget-elementary-lesson-6\",\n \"name\": \"Lesson 6\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2019/09/Never-Forget-3D-Box.png\",\n \"files\": []\n },\n {\n \"id\": \"never-forget-elementary-lesson-7\",\n \"name\": \"Lesson 7\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2019/09/Never-Forget-3D-Box.png\",\n \"files\": []\n },\n {\n \"id\": \"never-forget-elementary-lesson-8\",\n \"name\": \"Lesson 8\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2019/09/Never-Forget-3D-Box.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"dangerous-road-ahead-elementary\",\n \"name\": \"Dangerous Road Ahead\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2018/06/Dangerous-Road.png\",\n \"description\": \"3 Lessons on Missions\",\n \"url\": \"https://highvoltagekids.com/downloads/dangerous-road-ahead-elementary/\",\n \"lessonCount\": 3,\n \"lessons\": [\n {\n \"id\": \"dangerous-road-ahead-elementary-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2018/06/Dangerous-Road.png\",\n \"files\": []\n },\n {\n \"id\": \"dangerous-road-ahead-elementary-lesson-2\",\n \"name\": \"Lesson 2\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2018/06/Dangerous-Road.png\",\n \"files\": []\n },\n {\n \"id\": \"dangerous-road-ahead-elementary-lesson-3\",\n \"name\": \"Lesson 3\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2018/06/Dangerous-Road.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"give-thanks-elementary-thanksgiving\",\n \"name\": \"Give Thanks\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2016/04/Old-Give-Thanks-3D-Box-EL.png\",\n \"description\": \"Single Lesson For Thanksgiving\",\n \"url\": \"https://highvoltagekids.com/downloads/give-thanks-elementary-thanksgiving/\",\n \"lessonCount\": 1,\n \"lessons\": [\n {\n \"id\": \"give-thanks-elementary-thanksgiving-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2016/04/Old-Give-Thanks-3D-Box-EL.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"watch-your-mouth-elementary-single\",\n \"name\": \"Watch Your Mouth\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2019/11/Watch-Your-Mouth-3D-Box.png\",\n \"description\": \"Single Lesson\",\n \"url\": \"https://highvoltagekids.com/downloads/watch-your-mouth-elementary-single/\",\n \"lessonCount\": 1,\n \"lessons\": [\n {\n \"id\": \"watch-your-mouth-elementary-single-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2019/11/Watch-Your-Mouth-3D-Box.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"ouch-elementary\",\n \"name\": \"Ouch\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2018/06/Ouch.png\",\n \"description\": \"6 Lessons from the Sermon on the Mount\",\n \"url\": \"https://highvoltagekids.com/downloads/ouch-elementary/\",\n \"lessonCount\": 6,\n \"lessons\": [\n {\n \"id\": \"ouch-elementary-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2018/06/Ouch.png\",\n \"files\": []\n },\n {\n \"id\": \"ouch-elementary-lesson-2\",\n \"name\": \"Lesson 2\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2018/06/Ouch.png\",\n \"files\": []\n },\n {\n \"id\": \"ouch-elementary-lesson-3\",\n \"name\": \"Lesson 3\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2018/06/Ouch.png\",\n \"files\": []\n },\n {\n \"id\": \"ouch-elementary-lesson-4\",\n \"name\": \"Lesson 4\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2018/06/Ouch.png\",\n \"files\": []\n },\n {\n \"id\": \"ouch-elementary-lesson-5\",\n \"name\": \"Lesson 5\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2018/06/Ouch.png\",\n \"files\": []\n },\n {\n \"id\": \"ouch-elementary-lesson-6\",\n \"name\": \"Lesson 6\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2018/06/Ouch.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"bugs-elementary\",\n \"name\": \"Bugs\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2019/11/3.png\",\n \"description\": \"6 Lessons\",\n \"url\": \"https://highvoltagekids.com/downloads/bugs-elementary/\",\n \"lessonCount\": 6,\n \"lessons\": [\n {\n \"id\": \"bugs-elementary-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2019/11/3.png\",\n \"files\": []\n },\n {\n \"id\": \"bugs-elementary-lesson-2\",\n \"name\": \"Lesson 2\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2019/11/3.png\",\n \"files\": []\n },\n {\n \"id\": \"bugs-elementary-lesson-3\",\n \"name\": \"Lesson 3\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2019/11/3.png\",\n \"files\": []\n },\n {\n \"id\": \"bugs-elementary-lesson-4\",\n \"name\": \"Lesson 4\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2019/11/3.png\",\n \"files\": []\n },\n {\n \"id\": \"bugs-elementary-lesson-5\",\n \"name\": \"Lesson 5\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2019/11/3.png\",\n \"files\": []\n },\n {\n \"id\": \"bugs-elementary-lesson-6\",\n \"name\": \"Lesson 6\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2019/11/3.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"emotions-elementary\",\n \"name\": \"Emotions\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2019/01/Emotions-3D-Box.png\",\n \"description\": \"6 Lessons From the Life of David\",\n \"url\": \"https://highvoltagekids.com/downloads/emotions-elementary/\",\n \"lessonCount\": 6,\n \"lessons\": [\n {\n \"id\": \"emotions-elementary-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2019/01/Emotions-3D-Box.png\",\n \"files\": []\n },\n {\n \"id\": \"emotions-elementary-lesson-2\",\n \"name\": \"Lesson 2\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2019/01/Emotions-3D-Box.png\",\n \"files\": []\n },\n {\n \"id\": \"emotions-elementary-lesson-3\",\n \"name\": \"Lesson 3\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2019/01/Emotions-3D-Box.png\",\n \"files\": []\n },\n {\n \"id\": \"emotions-elementary-lesson-4\",\n \"name\": \"Lesson 4\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2019/01/Emotions-3D-Box.png\",\n \"files\": []\n },\n {\n \"id\": \"emotions-elementary-lesson-5\",\n \"name\": \"Lesson 5\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2019/01/Emotions-3D-Box.png\",\n \"files\": []\n },\n {\n \"id\": \"emotions-elementary-lesson-6\",\n \"name\": \"Lesson 6\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2019/01/Emotions-3D-Box.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"elisha-elementary\",\n \"name\": \"Elisha\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2019/01/ELISHA-3D-Box.png\",\n \"description\": \"8 Lessons\",\n \"url\": \"https://highvoltagekids.com/downloads/elisha-elementary/\",\n \"lessonCount\": 8,\n \"lessons\": [\n {\n \"id\": \"elisha-elementary-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2019/01/ELISHA-3D-Box.png\",\n \"files\": []\n },\n {\n \"id\": \"elisha-elementary-lesson-2\",\n \"name\": \"Lesson 2\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2019/01/ELISHA-3D-Box.png\",\n \"files\": []\n },\n {\n \"id\": \"elisha-elementary-lesson-3\",\n \"name\": \"Lesson 3\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2019/01/ELISHA-3D-Box.png\",\n \"files\": []\n },\n {\n \"id\": \"elisha-elementary-lesson-4\",\n \"name\": \"Lesson 4\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2019/01/ELISHA-3D-Box.png\",\n \"files\": []\n },\n {\n \"id\": \"elisha-elementary-lesson-5\",\n \"name\": \"Lesson 5\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2019/01/ELISHA-3D-Box.png\",\n \"files\": []\n },\n {\n \"id\": \"elisha-elementary-lesson-6\",\n \"name\": \"Lesson 6\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2019/01/ELISHA-3D-Box.png\",\n \"files\": []\n },\n {\n \"id\": \"elisha-elementary-lesson-7\",\n \"name\": \"Lesson 7\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2019/01/ELISHA-3D-Box.png\",\n \"files\": []\n },\n {\n \"id\": \"elisha-elementary-lesson-8\",\n \"name\": \"Lesson 8\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2019/01/ELISHA-3D-Box.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"prison-break-elementary\",\n \"name\": \"Prison Break\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2018/07/Prison-Break-3D-Box-2.png\",\n \"description\": \"5 Lessons on Jailbreaks From the Bible\",\n \"url\": \"https://highvoltagekids.com/downloads/prison-break-elementary/\",\n \"lessonCount\": 5,\n \"lessons\": [\n {\n \"id\": \"prison-break-elementary-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2018/07/Prison-Break-3D-Box-2.png\",\n \"files\": []\n },\n {\n \"id\": \"prison-break-elementary-lesson-2\",\n \"name\": \"Lesson 2\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2018/07/Prison-Break-3D-Box-2.png\",\n \"files\": []\n },\n {\n \"id\": \"prison-break-elementary-lesson-3\",\n \"name\": \"Lesson 3\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2018/07/Prison-Break-3D-Box-2.png\",\n \"files\": []\n },\n {\n \"id\": \"prison-break-elementary-lesson-4\",\n \"name\": \"Lesson 4\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2018/07/Prison-Break-3D-Box-2.png\",\n \"files\": []\n },\n {\n \"id\": \"prison-break-elementary-lesson-5\",\n \"name\": \"Lesson 5\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2018/07/Prison-Break-3D-Box-2.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"soul-food-elementary\",\n \"name\": \"Soul Food\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2018/04/Soul-Food-3D-Box.png\",\n \"description\": \"7 Lessons for a Healthy Christian Life\",\n \"url\": \"https://highvoltagekids.com/downloads/soul-food-elementary/\",\n \"lessonCount\": 7,\n \"lessons\": [\n {\n \"id\": \"soul-food-elementary-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2018/04/Soul-Food-3D-Box.png\",\n \"files\": []\n },\n {\n \"id\": \"soul-food-elementary-lesson-2\",\n \"name\": \"Lesson 2\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2018/04/Soul-Food-3D-Box.png\",\n \"files\": []\n },\n {\n \"id\": \"soul-food-elementary-lesson-3\",\n \"name\": \"Lesson 3\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2018/04/Soul-Food-3D-Box.png\",\n \"files\": []\n },\n {\n \"id\": \"soul-food-elementary-lesson-4\",\n \"name\": \"Lesson 4\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2018/04/Soul-Food-3D-Box.png\",\n \"files\": []\n },\n {\n \"id\": \"soul-food-elementary-lesson-5\",\n \"name\": \"Lesson 5\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2018/04/Soul-Food-3D-Box.png\",\n \"files\": []\n },\n {\n \"id\": \"soul-food-elementary-lesson-6\",\n \"name\": \"Lesson 6\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2018/04/Soul-Food-3D-Box.png\",\n \"files\": []\n },\n {\n \"id\": \"soul-food-elementary-lesson-7\",\n \"name\": \"Lesson 7\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2018/04/Soul-Food-3D-Box.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"how-2-elementary\",\n \"name\": \"How 2\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2017/11/How-2-3D-Box.png\",\n \"description\": \"8 Lessons From Apostle Paul\",\n \"url\": \"https://highvoltagekids.com/downloads/how-2-elementary/\",\n \"lessonCount\": 8,\n \"lessons\": [\n {\n \"id\": \"how-2-elementary-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2017/11/How-2-3D-Box.png\",\n \"files\": []\n },\n {\n \"id\": \"how-2-elementary-lesson-2\",\n \"name\": \"Lesson 2\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2017/11/How-2-3D-Box.png\",\n \"files\": []\n },\n {\n \"id\": \"how-2-elementary-lesson-3\",\n \"name\": \"Lesson 3\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2017/11/How-2-3D-Box.png\",\n \"files\": []\n },\n {\n \"id\": \"how-2-elementary-lesson-4\",\n \"name\": \"Lesson 4\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2017/11/How-2-3D-Box.png\",\n \"files\": []\n },\n {\n \"id\": \"how-2-elementary-lesson-5\",\n \"name\": \"Lesson 5\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2017/11/How-2-3D-Box.png\",\n \"files\": []\n },\n {\n \"id\": \"how-2-elementary-lesson-6\",\n \"name\": \"Lesson 6\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2017/11/How-2-3D-Box.png\",\n \"files\": []\n },\n {\n \"id\": \"how-2-elementary-lesson-7\",\n \"name\": \"Lesson 7\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2017/11/How-2-3D-Box.png\",\n \"files\": []\n },\n {\n \"id\": \"how-2-elementary-lesson-8\",\n \"name\": \"Lesson 8\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2017/11/How-2-3D-Box.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"instant-elementary-easter\",\n \"name\": \"Instant\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2018/07/Instant-3D-Box.png\",\n \"description\": \"Single Lesson for Easter\",\n \"url\": \"https://highvoltagekids.com/downloads/instant-elementary-easter/\",\n \"lessonCount\": 1,\n \"lessons\": [\n {\n \"id\": \"instant-elementary-easter-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2018/07/Instant-3D-Box.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"animal-tales-elementary\",\n \"name\": \"Animal Tales\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2017/11/5-1.png\",\n \"description\": \"6 Lessons From Animals in the Bible\",\n \"url\": \"https://highvoltagekids.com/downloads/animal-tales-elementary/\",\n \"lessonCount\": 6,\n \"lessons\": [\n {\n \"id\": \"animal-tales-elementary-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2017/11/5-1.png\",\n \"files\": []\n },\n {\n \"id\": \"animal-tales-elementary-lesson-2\",\n \"name\": \"Lesson 2\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2017/11/5-1.png\",\n \"files\": []\n },\n {\n \"id\": \"animal-tales-elementary-lesson-3\",\n \"name\": \"Lesson 3\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2017/11/5-1.png\",\n \"files\": []\n },\n {\n \"id\": \"animal-tales-elementary-lesson-4\",\n \"name\": \"Lesson 4\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2017/11/5-1.png\",\n \"files\": []\n },\n {\n \"id\": \"animal-tales-elementary-lesson-5\",\n \"name\": \"Lesson 5\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2017/11/5-1.png\",\n \"files\": []\n },\n {\n \"id\": \"animal-tales-elementary-lesson-6\",\n \"name\": \"Lesson 6\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2017/11/5-1.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"joseph-living-the-dream-elementary\",\n \"name\": \"Joseph, Living The Dream\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2017/02/JOSEPH-Living-The-Dream-3D-Box.png\",\n \"description\": \"10 Lessons\",\n \"url\": \"https://highvoltagekids.com/downloads/joseph-living-the-dream-elementary/\",\n \"lessonCount\": 10,\n \"lessons\": [\n {\n \"id\": \"joseph-living-the-dream-elementary-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2017/02/JOSEPH-Living-The-Dream-3D-Box.png\",\n \"files\": []\n },\n {\n \"id\": \"joseph-living-the-dream-elementary-lesson-2\",\n \"name\": \"Lesson 2\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2017/02/JOSEPH-Living-The-Dream-3D-Box.png\",\n \"files\": []\n },\n {\n \"id\": \"joseph-living-the-dream-elementary-lesson-3\",\n \"name\": \"Lesson 3\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2017/02/JOSEPH-Living-The-Dream-3D-Box.png\",\n \"files\": []\n },\n {\n \"id\": \"joseph-living-the-dream-elementary-lesson-4\",\n \"name\": \"Lesson 4\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2017/02/JOSEPH-Living-The-Dream-3D-Box.png\",\n \"files\": []\n },\n {\n \"id\": \"joseph-living-the-dream-elementary-lesson-5\",\n \"name\": \"Lesson 5\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2017/02/JOSEPH-Living-The-Dream-3D-Box.png\",\n \"files\": []\n },\n {\n \"id\": \"joseph-living-the-dream-elementary-lesson-6\",\n \"name\": \"Lesson 6\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2017/02/JOSEPH-Living-The-Dream-3D-Box.png\",\n \"files\": []\n },\n {\n \"id\": \"joseph-living-the-dream-elementary-lesson-7\",\n \"name\": \"Lesson 7\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2017/02/JOSEPH-Living-The-Dream-3D-Box.png\",\n \"files\": []\n },\n {\n \"id\": \"joseph-living-the-dream-elementary-lesson-8\",\n \"name\": \"Lesson 8\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2017/02/JOSEPH-Living-The-Dream-3D-Box.png\",\n \"files\": []\n },\n {\n \"id\": \"joseph-living-the-dream-elementary-lesson-9\",\n \"name\": \"Lesson 9\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2017/02/JOSEPH-Living-The-Dream-3D-Box.png\",\n \"files\": []\n },\n {\n \"id\": \"joseph-living-the-dream-elementary-lesson-10\",\n \"name\": \"Lesson 10\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2017/02/JOSEPH-Living-The-Dream-3D-Box.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"the-real-christmas-story-elementary\",\n \"name\": \"The REAL Christmas Story\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2017/11/REAL-Christmas-Story-3D-Box.png\",\n \"description\": \"6 Lessons\",\n \"url\": \"https://highvoltagekids.com/downloads/the-real-christmas-story-elementary/\",\n \"lessonCount\": 6,\n \"lessons\": [\n {\n \"id\": \"the-real-christmas-story-elementary-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2017/11/REAL-Christmas-Story-3D-Box.png\",\n \"files\": []\n },\n {\n \"id\": \"the-real-christmas-story-elementary-lesson-2\",\n \"name\": \"Lesson 2\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2017/11/REAL-Christmas-Story-3D-Box.png\",\n \"files\": []\n },\n {\n \"id\": \"the-real-christmas-story-elementary-lesson-3\",\n \"name\": \"Lesson 3\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2017/11/REAL-Christmas-Story-3D-Box.png\",\n \"files\": []\n },\n {\n \"id\": \"the-real-christmas-story-elementary-lesson-4\",\n \"name\": \"Lesson 4\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2017/11/REAL-Christmas-Story-3D-Box.png\",\n \"files\": []\n },\n {\n \"id\": \"the-real-christmas-story-elementary-lesson-5\",\n \"name\": \"Lesson 5\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2017/11/REAL-Christmas-Story-3D-Box.png\",\n \"files\": []\n },\n {\n \"id\": \"the-real-christmas-story-elementary-lesson-6\",\n \"name\": \"Lesson 6\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2017/11/REAL-Christmas-Story-3D-Box.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"open-the-door-elementary\",\n \"name\": \"Open The Door\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2017/11/Open-The-Door-3D-Box.png\",\n \"description\": \"3 Lessons on Missions\",\n \"url\": \"https://highvoltagekids.com/downloads/open-the-door-elementary/\",\n \"lessonCount\": 3,\n \"lessons\": [\n {\n \"id\": \"open-the-door-elementary-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2017/11/Open-The-Door-3D-Box.png\",\n \"files\": []\n },\n {\n \"id\": \"open-the-door-elementary-lesson-2\",\n \"name\": \"Lesson 2\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2017/11/Open-The-Door-3D-Box.png\",\n \"files\": []\n },\n {\n \"id\": \"open-the-door-elementary-lesson-3\",\n \"name\": \"Lesson 3\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2017/11/Open-The-Door-3D-Box.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"its-a-miracle-elementary\",\n \"name\": \"It's A Miracle\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2017/11/Its-A-Miracle-3D-Box.png\",\n \"description\": \"6 Lessons on Miracles of Jesus\",\n \"url\": \"https://highvoltagekids.com/downloads/its-a-miracle-elementary/\",\n \"lessonCount\": 6,\n \"lessons\": [\n {\n \"id\": \"its-a-miracle-elementary-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2017/11/Its-A-Miracle-3D-Box.png\",\n \"files\": []\n },\n {\n \"id\": \"its-a-miracle-elementary-lesson-2\",\n \"name\": \"Lesson 2\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2017/11/Its-A-Miracle-3D-Box.png\",\n \"files\": []\n },\n {\n \"id\": \"its-a-miracle-elementary-lesson-3\",\n \"name\": \"Lesson 3\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2017/11/Its-A-Miracle-3D-Box.png\",\n \"files\": []\n },\n {\n \"id\": \"its-a-miracle-elementary-lesson-4\",\n \"name\": \"Lesson 4\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2017/11/Its-A-Miracle-3D-Box.png\",\n \"files\": []\n },\n {\n \"id\": \"its-a-miracle-elementary-lesson-5\",\n \"name\": \"Lesson 5\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2017/11/Its-A-Miracle-3D-Box.png\",\n \"files\": []\n },\n {\n \"id\": \"its-a-miracle-elementary-lesson-6\",\n \"name\": \"Lesson 6\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2017/11/Its-A-Miracle-3D-Box.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"on-a-mission-elementary\",\n \"name\": \"On A Mission\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2017/11/On-A-Mission-3D-BOX.png\",\n \"description\": \"5 Lessons on Jesus' Mission\",\n \"url\": \"https://highvoltagekids.com/downloads/on-a-mission-elementary/\",\n \"lessonCount\": 5,\n \"lessons\": [\n {\n \"id\": \"on-a-mission-elementary-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2017/11/On-A-Mission-3D-BOX.png\",\n \"files\": []\n },\n {\n \"id\": \"on-a-mission-elementary-lesson-2\",\n \"name\": \"Lesson 2\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2017/11/On-A-Mission-3D-BOX.png\",\n \"files\": []\n },\n {\n \"id\": \"on-a-mission-elementary-lesson-3\",\n \"name\": \"Lesson 3\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2017/11/On-A-Mission-3D-BOX.png\",\n \"files\": []\n },\n {\n \"id\": \"on-a-mission-elementary-lesson-4\",\n \"name\": \"Lesson 4\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2017/11/On-A-Mission-3D-BOX.png\",\n \"files\": []\n },\n {\n \"id\": \"on-a-mission-elementary-lesson-5\",\n \"name\": \"Lesson 5\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2017/11/On-A-Mission-3D-BOX.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"say-whaaaat-elementary\",\n \"name\": \"Say Whaaaat?\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2017/11/Say-Whaaat-3D-BOX.png\",\n \"description\": \"6 Lessons on the Radical Statements of Jesus\",\n \"url\": \"https://highvoltagekids.com/downloads/say-whaaaat-elementary/\",\n \"lessonCount\": 6,\n \"lessons\": [\n {\n \"id\": \"say-whaaaat-elementary-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2017/11/Say-Whaaat-3D-BOX.png\",\n \"files\": []\n },\n {\n \"id\": \"say-whaaaat-elementary-lesson-2\",\n \"name\": \"Lesson 2\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2017/11/Say-Whaaat-3D-BOX.png\",\n \"files\": []\n },\n {\n \"id\": \"say-whaaaat-elementary-lesson-3\",\n \"name\": \"Lesson 3\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2017/11/Say-Whaaat-3D-BOX.png\",\n \"files\": []\n },\n {\n \"id\": \"say-whaaaat-elementary-lesson-4\",\n \"name\": \"Lesson 4\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2017/11/Say-Whaaat-3D-BOX.png\",\n \"files\": []\n },\n {\n \"id\": \"say-whaaaat-elementary-lesson-5\",\n \"name\": \"Lesson 5\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2017/11/Say-Whaaat-3D-BOX.png\",\n \"files\": []\n },\n {\n \"id\": \"say-whaaaat-elementary-lesson-6\",\n \"name\": \"Lesson 6\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2017/11/Say-Whaaat-3D-BOX.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"picture-this-elementary-easter\",\n \"name\": \"Picture This!\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2018/07/Picture-This-3D-Box.png\",\n \"description\": \"Single Lesson for Easter\",\n \"url\": \"https://highvoltagekids.com/downloads/picture-this-elementary-easter/\",\n \"lessonCount\": 1,\n \"lessons\": [\n {\n \"id\": \"picture-this-elementary-easter-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2018/07/Picture-This-3D-Box.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"jesus-is-for-everyone-elementary\",\n \"name\": \"Jesus Is For Everyone\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2017/02/Jesus-Is-For-Everyone-3D-BOX.png\",\n \"description\": \"6 Lessons\",\n \"url\": \"https://highvoltagekids.com/downloads/jesus-is-for-everyone-elementary/\",\n \"lessonCount\": 6,\n \"lessons\": [\n {\n \"id\": \"jesus-is-for-everyone-elementary-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2017/02/Jesus-Is-For-Everyone-3D-BOX.png\",\n \"files\": []\n },\n {\n \"id\": \"jesus-is-for-everyone-elementary-lesson-2\",\n \"name\": \"Lesson 2\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2017/02/Jesus-Is-For-Everyone-3D-BOX.png\",\n \"files\": []\n },\n {\n \"id\": \"jesus-is-for-everyone-elementary-lesson-3\",\n \"name\": \"Lesson 3\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2017/02/Jesus-Is-For-Everyone-3D-BOX.png\",\n \"files\": []\n },\n {\n \"id\": \"jesus-is-for-everyone-elementary-lesson-4\",\n \"name\": \"Lesson 4\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2017/02/Jesus-Is-For-Everyone-3D-BOX.png\",\n \"files\": []\n },\n {\n \"id\": \"jesus-is-for-everyone-elementary-lesson-5\",\n \"name\": \"Lesson 5\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2017/02/Jesus-Is-For-Everyone-3D-BOX.png\",\n \"files\": []\n },\n {\n \"id\": \"jesus-is-for-everyone-elementary-lesson-6\",\n \"name\": \"Lesson 6\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2017/02/Jesus-Is-For-Everyone-3D-BOX.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"24-a-day-that-saved-the-world-elementary\",\n \"name\": \"24: A Day That Saved The World\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2017/11/3-1.png\",\n \"description\": \"6 Lesson Easter Series\",\n \"url\": \"https://highvoltagekids.com/downloads/24-a-day-that-saved-the-world-elementary/\",\n \"lessonCount\": 6,\n \"lessons\": [\n {\n \"id\": \"24-a-day-that-saved-the-world-elementary-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2017/11/3-1.png\",\n \"files\": []\n },\n {\n \"id\": \"24-a-day-that-saved-the-world-elementary-lesson-2\",\n \"name\": \"Lesson 2\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2017/11/3-1.png\",\n \"files\": []\n },\n {\n \"id\": \"24-a-day-that-saved-the-world-elementary-lesson-3\",\n \"name\": \"Lesson 3\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2017/11/3-1.png\",\n \"files\": []\n },\n {\n \"id\": \"24-a-day-that-saved-the-world-elementary-lesson-4\",\n \"name\": \"Lesson 4\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2017/11/3-1.png\",\n \"files\": []\n },\n {\n \"id\": \"24-a-day-that-saved-the-world-elementary-lesson-5\",\n \"name\": \"Lesson 5\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2017/11/3-1.png\",\n \"files\": []\n },\n {\n \"id\": \"24-a-day-that-saved-the-world-elementary-lesson-6\",\n \"name\": \"Lesson 6\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2017/11/3-1.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"questions-questions-questions-elementary\",\n \"name\": \"Questions, Questions, Questions\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2016/11/QQQ-3D-BOX.png\",\n \"description\": \"6 Lessons on Questions Jesus Asked\",\n \"url\": \"https://highvoltagekids.com/downloads/questions-questions-questions-elementary/\",\n \"lessonCount\": 6,\n \"lessons\": [\n {\n \"id\": \"questions-questions-questions-elementary-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2016/11/QQQ-3D-BOX.png\",\n \"files\": []\n },\n {\n \"id\": \"questions-questions-questions-elementary-lesson-2\",\n \"name\": \"Lesson 2\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2016/11/QQQ-3D-BOX.png\",\n \"files\": []\n },\n {\n \"id\": \"questions-questions-questions-elementary-lesson-3\",\n \"name\": \"Lesson 3\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2016/11/QQQ-3D-BOX.png\",\n \"files\": []\n },\n {\n \"id\": \"questions-questions-questions-elementary-lesson-4\",\n \"name\": \"Lesson 4\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2016/11/QQQ-3D-BOX.png\",\n \"files\": []\n },\n {\n \"id\": \"questions-questions-questions-elementary-lesson-5\",\n \"name\": \"Lesson 5\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2016/11/QQQ-3D-BOX.png\",\n \"files\": []\n },\n {\n \"id\": \"questions-questions-questions-elementary-lesson-6\",\n \"name\": \"Lesson 6\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2016/11/QQQ-3D-BOX.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"alien-kids-elementary\",\n \"name\": \"Alien Kids\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2017/11/4-1.png\",\n \"description\": \"6 Lessons on Living Out of This World\",\n \"url\": \"https://highvoltagekids.com/downloads/alien-kids-elementary/\",\n \"lessonCount\": 6,\n \"lessons\": [\n {\n \"id\": \"alien-kids-elementary-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2017/11/4-1.png\",\n \"files\": []\n },\n {\n \"id\": \"alien-kids-elementary-lesson-2\",\n \"name\": \"Lesson 2\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2017/11/4-1.png\",\n \"files\": []\n },\n {\n \"id\": \"alien-kids-elementary-lesson-3\",\n \"name\": \"Lesson 3\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2017/11/4-1.png\",\n \"files\": []\n },\n {\n \"id\": \"alien-kids-elementary-lesson-4\",\n \"name\": \"Lesson 4\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2017/11/4-1.png\",\n \"files\": []\n },\n {\n \"id\": \"alien-kids-elementary-lesson-5\",\n \"name\": \"Lesson 5\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2017/11/4-1.png\",\n \"files\": []\n },\n {\n \"id\": \"alien-kids-elementary-lesson-6\",\n \"name\": \"Lesson 6\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2017/11/4-1.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"the-bridge-elementary\",\n \"name\": \"The Bridge\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2018/06/Bridge.png\",\n \"description\": \"3 Lessons on Evangelism\",\n \"url\": \"https://highvoltagekids.com/downloads/the-bridge-elementary/\",\n \"lessonCount\": 3,\n \"lessons\": [\n {\n \"id\": \"the-bridge-elementary-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2018/06/Bridge.png\",\n \"files\": []\n },\n {\n \"id\": \"the-bridge-elementary-lesson-2\",\n \"name\": \"Lesson 2\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2018/06/Bridge.png\",\n \"files\": []\n },\n {\n \"id\": \"the-bridge-elementary-lesson-3\",\n \"name\": \"Lesson 3\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2018/06/Bridge.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"3-questions-elementary\",\n \"name\": \"3 Questions\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2017/11/2-1.png\",\n \"description\": \"3 Lessons from Galatians\",\n \"url\": \"https://highvoltagekids.com/downloads/3-questions-elementary/\",\n \"lessonCount\": 3,\n \"lessons\": [\n {\n \"id\": \"3-questions-elementary-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2017/11/2-1.png\",\n \"files\": []\n },\n {\n \"id\": \"3-questions-elementary-lesson-2\",\n \"name\": \"Lesson 2\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2017/11/2-1.png\",\n \"files\": []\n },\n {\n \"id\": \"3-questions-elementary-lesson-3\",\n \"name\": \"Lesson 3\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2017/11/2-1.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"moses-ordinary-hero-elementary\",\n \"name\": \"MOSES, Ordinary Hero\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2016/12/MOSES-Ordinary-Hero-3D-Box.png\",\n \"description\": \"12 Lessons\",\n \"url\": \"https://highvoltagekids.com/downloads/moses-ordinary-hero-elementary/\",\n \"lessonCount\": 12,\n \"lessons\": [\n {\n \"id\": \"moses-ordinary-hero-elementary-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2016/12/MOSES-Ordinary-Hero-3D-Box.png\",\n \"files\": []\n },\n {\n \"id\": \"moses-ordinary-hero-elementary-lesson-2\",\n \"name\": \"Lesson 2\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2016/12/MOSES-Ordinary-Hero-3D-Box.png\",\n \"files\": []\n },\n {\n \"id\": \"moses-ordinary-hero-elementary-lesson-3\",\n \"name\": \"Lesson 3\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2016/12/MOSES-Ordinary-Hero-3D-Box.png\",\n \"files\": []\n },\n {\n \"id\": \"moses-ordinary-hero-elementary-lesson-4\",\n \"name\": \"Lesson 4\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2016/12/MOSES-Ordinary-Hero-3D-Box.png\",\n \"files\": []\n },\n {\n \"id\": \"moses-ordinary-hero-elementary-lesson-5\",\n \"name\": \"Lesson 5\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2016/12/MOSES-Ordinary-Hero-3D-Box.png\",\n \"files\": []\n },\n {\n \"id\": \"moses-ordinary-hero-elementary-lesson-6\",\n \"name\": \"Lesson 6\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2016/12/MOSES-Ordinary-Hero-3D-Box.png\",\n \"files\": []\n },\n {\n \"id\": \"moses-ordinary-hero-elementary-lesson-7\",\n \"name\": \"Lesson 7\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2016/12/MOSES-Ordinary-Hero-3D-Box.png\",\n \"files\": []\n },\n {\n \"id\": \"moses-ordinary-hero-elementary-lesson-8\",\n \"name\": \"Lesson 8\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2016/12/MOSES-Ordinary-Hero-3D-Box.png\",\n \"files\": []\n },\n {\n \"id\": \"moses-ordinary-hero-elementary-lesson-9\",\n \"name\": \"Lesson 9\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2016/12/MOSES-Ordinary-Hero-3D-Box.png\",\n \"files\": []\n },\n {\n \"id\": \"moses-ordinary-hero-elementary-lesson-10\",\n \"name\": \"Lesson 10\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2016/12/MOSES-Ordinary-Hero-3D-Box.png\",\n \"files\": []\n },\n {\n \"id\": \"moses-ordinary-hero-elementary-lesson-11\",\n \"name\": \"Lesson 11\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2016/12/MOSES-Ordinary-Hero-3D-Box.png\",\n \"files\": []\n },\n {\n \"id\": \"moses-ordinary-hero-elementary-lesson-12\",\n \"name\": \"Lesson 12\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2016/12/MOSES-Ordinary-Hero-3D-Box.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"the-stewardship-pyramid-elementary\",\n \"name\": \"The Stewardship Pyramid\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2018/06/Steward.png\",\n \"description\": \"4 Lessons\",\n \"url\": \"https://highvoltagekids.com/downloads/the-stewardship-pyramid-elementary/\",\n \"lessonCount\": 4,\n \"lessons\": [\n {\n \"id\": \"the-stewardship-pyramid-elementary-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2018/06/Steward.png\",\n \"files\": []\n },\n {\n \"id\": \"the-stewardship-pyramid-elementary-lesson-2\",\n \"name\": \"Lesson 2\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2018/06/Steward.png\",\n \"files\": []\n },\n {\n \"id\": \"the-stewardship-pyramid-elementary-lesson-3\",\n \"name\": \"Lesson 3\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2018/06/Steward.png\",\n \"files\": []\n },\n {\n \"id\": \"the-stewardship-pyramid-elementary-lesson-4\",\n \"name\": \"Lesson 4\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2018/06/Steward.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"crazy-little-thing-called-love-elementary\",\n \"name\": \"Crazy Little Thing Called Love\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2019/11/4.png\",\n \"description\": \"6 Lessons From First John\",\n \"url\": \"https://highvoltagekids.com/downloads/crazy-little-thing-called-love-elementary/\",\n \"lessonCount\": 6,\n \"lessons\": [\n {\n \"id\": \"crazy-little-thing-called-love-elementary-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2019/11/4.png\",\n \"files\": []\n },\n {\n \"id\": \"crazy-little-thing-called-love-elementary-lesson-2\",\n \"name\": \"Lesson 2\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2019/11/4.png\",\n \"files\": []\n },\n {\n \"id\": \"crazy-little-thing-called-love-elementary-lesson-3\",\n \"name\": \"Lesson 3\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2019/11/4.png\",\n \"files\": []\n },\n {\n \"id\": \"crazy-little-thing-called-love-elementary-lesson-4\",\n \"name\": \"Lesson 4\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2019/11/4.png\",\n \"files\": []\n },\n {\n \"id\": \"crazy-little-thing-called-love-elementary-lesson-5\",\n \"name\": \"Lesson 5\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2019/11/4.png\",\n \"files\": []\n },\n {\n \"id\": \"crazy-little-thing-called-love-elementary-lesson-6\",\n \"name\": \"Lesson 6\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2019/11/4.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"the-lord-is-my-shepherd-elementary\",\n \"name\": \"The Lord Is My Shepherd\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2016/12/The-Lord-Is-My-Shepherd-3D-Box.png\",\n \"description\": \"6 Lessons From Psalm 23\",\n \"url\": \"https://highvoltagekids.com/downloads/the-lord-is-my-shepherd-elementary/\",\n \"lessonCount\": 6,\n \"lessons\": [\n {\n \"id\": \"the-lord-is-my-shepherd-elementary-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2016/12/The-Lord-Is-My-Shepherd-3D-Box.png\",\n \"files\": []\n },\n {\n \"id\": \"the-lord-is-my-shepherd-elementary-lesson-2\",\n \"name\": \"Lesson 2\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2016/12/The-Lord-Is-My-Shepherd-3D-Box.png\",\n \"files\": []\n },\n {\n \"id\": \"the-lord-is-my-shepherd-elementary-lesson-3\",\n \"name\": \"Lesson 3\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2016/12/The-Lord-Is-My-Shepherd-3D-Box.png\",\n \"files\": []\n },\n {\n \"id\": \"the-lord-is-my-shepherd-elementary-lesson-4\",\n \"name\": \"Lesson 4\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2016/12/The-Lord-Is-My-Shepherd-3D-Box.png\",\n \"files\": []\n },\n {\n \"id\": \"the-lord-is-my-shepherd-elementary-lesson-5\",\n \"name\": \"Lesson 5\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2016/12/The-Lord-Is-My-Shepherd-3D-Box.png\",\n \"files\": []\n },\n {\n \"id\": \"the-lord-is-my-shepherd-elementary-lesson-6\",\n \"name\": \"Lesson 6\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2016/12/The-Lord-Is-My-Shepherd-3D-Box.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"how-to-ruin-your-life-elementary\",\n \"name\": \"How To Ruin Your Life\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2017/11/How-to-Ruin-Your-Life-3D-Box.png\",\n \"description\": \"6 Lessons on Avoiding Mistakes\",\n \"url\": \"https://highvoltagekids.com/downloads/how-to-ruin-your-life-elementary/\",\n \"lessonCount\": 6,\n \"lessons\": [\n {\n \"id\": \"how-to-ruin-your-life-elementary-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2017/11/How-to-Ruin-Your-Life-3D-Box.png\",\n \"files\": []\n },\n {\n \"id\": \"how-to-ruin-your-life-elementary-lesson-2\",\n \"name\": \"Lesson 2\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2017/11/How-to-Ruin-Your-Life-3D-Box.png\",\n \"files\": []\n },\n {\n \"id\": \"how-to-ruin-your-life-elementary-lesson-3\",\n \"name\": \"Lesson 3\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2017/11/How-to-Ruin-Your-Life-3D-Box.png\",\n \"files\": []\n },\n {\n \"id\": \"how-to-ruin-your-life-elementary-lesson-4\",\n \"name\": \"Lesson 4\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2017/11/How-to-Ruin-Your-Life-3D-Box.png\",\n \"files\": []\n },\n {\n \"id\": \"how-to-ruin-your-life-elementary-lesson-5\",\n \"name\": \"Lesson 5\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2017/11/How-to-Ruin-Your-Life-3D-Box.png\",\n \"files\": []\n },\n {\n \"id\": \"how-to-ruin-your-life-elementary-lesson-6\",\n \"name\": \"Lesson 6\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2017/11/How-to-Ruin-Your-Life-3D-Box.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"i-know-it-sounds-crazy-but-its-true-elementary\",\n \"name\": \"I Know It Sounds Crazy, But It's True!\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2017/11/IKISC-1-3D-Box.png\",\n \"description\": \"6 Lessons on the Wildest Bible Stories\",\n \"url\": \"https://highvoltagekids.com/downloads/i-know-it-sounds-crazy-but-its-true-elementary/\",\n \"lessonCount\": 6,\n \"lessons\": [\n {\n \"id\": \"i-know-it-sounds-crazy-but-its-true-elementary-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2017/11/IKISC-1-3D-Box.png\",\n \"files\": []\n },\n {\n \"id\": \"i-know-it-sounds-crazy-but-its-true-elementary-lesson-2\",\n \"name\": \"Lesson 2\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2017/11/IKISC-1-3D-Box.png\",\n \"files\": []\n },\n {\n \"id\": \"i-know-it-sounds-crazy-but-its-true-elementary-lesson-3\",\n \"name\": \"Lesson 3\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2017/11/IKISC-1-3D-Box.png\",\n \"files\": []\n },\n {\n \"id\": \"i-know-it-sounds-crazy-but-its-true-elementary-lesson-4\",\n \"name\": \"Lesson 4\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2017/11/IKISC-1-3D-Box.png\",\n \"files\": []\n },\n {\n \"id\": \"i-know-it-sounds-crazy-but-its-true-elementary-lesson-5\",\n \"name\": \"Lesson 5\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2017/11/IKISC-1-3D-Box.png\",\n \"files\": []\n },\n {\n \"id\": \"i-know-it-sounds-crazy-but-its-true-elementary-lesson-6\",\n \"name\": \"Lesson 6\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2017/11/IKISC-1-3D-Box.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"the-new-normal-elementary\",\n \"name\": \"The New Normal\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2016/12/New-Normal-3D-Box.png\",\n \"description\": \"6 Lessons on the Book of Ephesians\",\n \"url\": \"https://highvoltagekids.com/downloads/the-new-normal-elementary/\",\n \"lessonCount\": 6,\n \"lessons\": [\n {\n \"id\": \"the-new-normal-elementary-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2016/12/New-Normal-3D-Box.png\",\n \"files\": []\n },\n {\n \"id\": \"the-new-normal-elementary-lesson-2\",\n \"name\": \"Lesson 2\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2016/12/New-Normal-3D-Box.png\",\n \"files\": []\n },\n {\n \"id\": \"the-new-normal-elementary-lesson-3\",\n \"name\": \"Lesson 3\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2016/12/New-Normal-3D-Box.png\",\n \"files\": []\n },\n {\n \"id\": \"the-new-normal-elementary-lesson-4\",\n \"name\": \"Lesson 4\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2016/12/New-Normal-3D-Box.png\",\n \"files\": []\n },\n {\n \"id\": \"the-new-normal-elementary-lesson-5\",\n \"name\": \"Lesson 5\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2016/12/New-Normal-3D-Box.png\",\n \"files\": []\n },\n {\n \"id\": \"the-new-normal-elementary-lesson-6\",\n \"name\": \"Lesson 6\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2016/12/New-Normal-3D-Box.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"god-speaks-elementary\",\n \"name\": \"God Speaks\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2019/01/God-Speaks-3D-Box.png\",\n \"description\": \"6 Lessons on Hearing God's Voice\",\n \"url\": \"https://highvoltagekids.com/downloads/god-speaks-elementary/\",\n \"lessonCount\": 6,\n \"lessons\": [\n {\n \"id\": \"god-speaks-elementary-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2019/01/God-Speaks-3D-Box.png\",\n \"files\": []\n },\n {\n \"id\": \"god-speaks-elementary-lesson-2\",\n \"name\": \"Lesson 2\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2019/01/God-Speaks-3D-Box.png\",\n \"files\": []\n },\n {\n \"id\": \"god-speaks-elementary-lesson-3\",\n \"name\": \"Lesson 3\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2019/01/God-Speaks-3D-Box.png\",\n \"files\": []\n },\n {\n \"id\": \"god-speaks-elementary-lesson-4\",\n \"name\": \"Lesson 4\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2019/01/God-Speaks-3D-Box.png\",\n \"files\": []\n },\n {\n \"id\": \"god-speaks-elementary-lesson-5\",\n \"name\": \"Lesson 5\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2019/01/God-Speaks-3D-Box.png\",\n \"files\": []\n },\n {\n \"id\": \"god-speaks-elementary-lesson-6\",\n \"name\": \"Lesson 6\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2019/01/God-Speaks-3D-Box.png\",\n \"files\": []\n }\n ]\n }\n ]\n },\n {\n \"name\": \"Preschool\",\n \"folders\": [\n {\n \"id\": \"camp-wilderness-preschool\",\n \"name\": \"Camp Wilderness\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2026/01/Camp-Wilderness-Preschool.png\",\n \"description\": \"6 Preschool Lessons From The Israelites\",\n \"url\": \"https://highvoltagekids.com/downloads/camp-wilderness-preschool/\",\n \"lessonCount\": 6,\n \"lessons\": [\n {\n \"id\": \"camp-wilderness-preschool-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2026/01/Camp-Wilderness-Preschool.png\",\n \"files\": []\n },\n {\n \"id\": \"camp-wilderness-preschool-lesson-2\",\n \"name\": \"Lesson 2\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2026/01/Camp-Wilderness-Preschool.png\",\n \"files\": []\n },\n {\n \"id\": \"camp-wilderness-preschool-lesson-3\",\n \"name\": \"Lesson 3\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2026/01/Camp-Wilderness-Preschool.png\",\n \"files\": []\n },\n {\n \"id\": \"camp-wilderness-preschool-lesson-4\",\n \"name\": \"Lesson 4\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2026/01/Camp-Wilderness-Preschool.png\",\n \"files\": []\n },\n {\n \"id\": \"camp-wilderness-preschool-lesson-5\",\n \"name\": \"Lesson 5\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2026/01/Camp-Wilderness-Preschool.png\",\n \"files\": []\n },\n {\n \"id\": \"camp-wilderness-preschool-lesson-6\",\n \"name\": \"Lesson 6\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2026/01/Camp-Wilderness-Preschool.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"hey-god-preschool\",\n \"name\": \"Hey, God!\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2025/11/Hey-God-Preschool.png\",\n \"description\": \"6 Preschool Questions From The Life Of Moses\",\n \"url\": \"https://highvoltagekids.com/downloads/hey-god-preschool/\",\n \"lessonCount\": 1,\n \"lessons\": [\n {\n \"id\": \"hey-god-preschool-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2025/11/Hey-God-Preschool.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"family-mechanics\",\n \"name\": \"Family Mechanics\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2025/10/Family-Mechanics-Preschool.png\",\n \"description\": \"4 Preschool Lessons On Healthy Families\",\n \"url\": \"https://highvoltagekids.com/downloads/family-mechanics/\",\n \"lessonCount\": 4,\n \"lessons\": [\n {\n \"id\": \"family-mechanics-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2025/10/Family-Mechanics-Preschool.png\",\n \"files\": []\n },\n {\n \"id\": \"family-mechanics-lesson-2\",\n \"name\": \"Lesson 2\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2025/10/Family-Mechanics-Preschool.png\",\n \"files\": []\n },\n {\n \"id\": \"family-mechanics-lesson-3\",\n \"name\": \"Lesson 3\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2025/10/Family-Mechanics-Preschool.png\",\n \"files\": []\n },\n {\n \"id\": \"family-mechanics-lesson-4\",\n \"name\": \"Lesson 4\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2025/10/Family-Mechanics-Preschool.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"epic-preschool\",\n \"name\": \"EPIC\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2025/09/Epic-Preschool-1-1.png\",\n \"description\": \"6 Preschool Bible Stories That Will Blow Your Mind\",\n \"url\": \"https://highvoltagekids.com/downloads/epic-preschool/\",\n \"lessonCount\": 1,\n \"lessons\": [\n {\n \"id\": \"epic-preschool-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2025/09/Epic-Preschool-1-1.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"the-perfect-present-preschool\",\n \"name\": \"The Perfect Present\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2025/09/the-perfect-present.png\",\n \"description\": \"Single Preschool Lesson For Christmas\",\n \"url\": \"https://highvoltagekids.com/downloads/the-perfect-present-preschool/\",\n \"lessonCount\": 1,\n \"lessons\": [\n {\n \"id\": \"the-perfect-present-preschool-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2025/09/the-perfect-present.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"what-is-water-baptism-preschool\",\n \"name\": \"What Is Water Baptism?\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2025/09/what-is-water-baptism.png\",\n \"description\": \"Single Preschool Lesson On Baptism\",\n \"url\": \"https://highvoltagekids.com/downloads/what-is-water-baptism-preschool/\",\n \"lessonCount\": 1,\n \"lessons\": [\n {\n \"id\": \"what-is-water-baptism-preschool-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2025/09/what-is-water-baptism.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"be-different-preschool\",\n \"name\": \"Be Different\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2025/07/be-different.png\",\n \"description\": \"7 Preschool Lessons from Romans 12\",\n \"url\": \"https://highvoltagekids.com/downloads/be-different-preschool/\",\n \"lessonCount\": 7,\n \"lessons\": [\n {\n \"id\": \"be-different-preschool-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2025/07/be-different.png\",\n \"files\": []\n },\n {\n \"id\": \"be-different-preschool-lesson-2\",\n \"name\": \"Lesson 2\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2025/07/be-different.png\",\n \"files\": []\n },\n {\n \"id\": \"be-different-preschool-lesson-3\",\n \"name\": \"Lesson 3\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2025/07/be-different.png\",\n \"files\": []\n },\n {\n \"id\": \"be-different-preschool-lesson-4\",\n \"name\": \"Lesson 4\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2025/07/be-different.png\",\n \"files\": []\n },\n {\n \"id\": \"be-different-preschool-lesson-5\",\n \"name\": \"Lesson 5\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2025/07/be-different.png\",\n \"files\": []\n },\n {\n \"id\": \"be-different-preschool-lesson-6\",\n \"name\": \"Lesson 6\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2025/07/be-different.png\",\n \"files\": []\n },\n {\n \"id\": \"be-different-preschool-lesson-7\",\n \"name\": \"Lesson 7\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2025/07/be-different.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"the-night-the-jailhouse-rocked-preschool\",\n \"name\": \"The Night The Jailhouse Rocked\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2025/06/The-Night-The-Jailhouse-Rocked-Preschool.png\",\n \"description\": \"3 Preschool Lessons From Paul &amp; Silas’ Night In Prison\",\n \"url\": \"https://highvoltagekids.com/downloads/the-night-the-jailhouse-rocked-preschool/\",\n \"lessonCount\": 3,\n \"lessons\": [\n {\n \"id\": \"the-night-the-jailhouse-rocked-preschool-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2025/06/The-Night-The-Jailhouse-Rocked-Preschool.png\",\n \"files\": []\n },\n {\n \"id\": \"the-night-the-jailhouse-rocked-preschool-lesson-2\",\n \"name\": \"Lesson 2\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2025/06/The-Night-The-Jailhouse-Rocked-Preschool.png\",\n \"files\": []\n },\n {\n \"id\": \"the-night-the-jailhouse-rocked-preschool-lesson-3\",\n \"name\": \"Lesson 3\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2025/06/The-Night-The-Jailhouse-Rocked-Preschool.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"windows-preschool\",\n \"name\": \"WINDOWS\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2025/06/windows-1.png\",\n \"description\": \"3 Preschool Lessons on Missions\",\n \"url\": \"https://highvoltagekids.com/downloads/windows-preschool/\",\n \"lessonCount\": 3,\n \"lessons\": [\n {\n \"id\": \"windows-preschool-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2025/06/windows-1.png\",\n \"files\": []\n },\n {\n \"id\": \"windows-preschool-lesson-2\",\n \"name\": \"Lesson 2\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2025/06/windows-1.png\",\n \"files\": []\n },\n {\n \"id\": \"windows-preschool-lesson-3\",\n \"name\": \"Lesson 3\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2025/06/windows-1.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"what-is-a-true-friend-preschool\",\n \"name\": \"What Is A True Friend?\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2025/05/what-is-a-true-friend-2.png\",\n \"description\": \"Preschool Single Lesson on Friendship\",\n \"url\": \"https://highvoltagekids.com/downloads/what-is-a-true-friend-preschool/\",\n \"lessonCount\": 1,\n \"lessons\": [\n {\n \"id\": \"what-is-a-true-friend-preschool-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2025/05/what-is-a-true-friend-2.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"livin-the-sheep-life-2\",\n \"name\": \"Livin' The Sheep Life\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2025/04/sheep-life-pre.png\",\n \"description\": \"6 Preschool Lessons on the 23rd Psalm\",\n \"url\": \"https://highvoltagekids.com/downloads/livin-the-sheep-life-2/\",\n \"lessonCount\": 6,\n \"lessons\": [\n {\n \"id\": \"livin-the-sheep-life-2-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2025/04/sheep-life-pre.png\",\n \"files\": []\n },\n {\n \"id\": \"livin-the-sheep-life-2-lesson-2\",\n \"name\": \"Lesson 2\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2025/04/sheep-life-pre.png\",\n \"files\": []\n },\n {\n \"id\": \"livin-the-sheep-life-2-lesson-3\",\n \"name\": \"Lesson 3\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2025/04/sheep-life-pre.png\",\n \"files\": []\n },\n {\n \"id\": \"livin-the-sheep-life-2-lesson-4\",\n \"name\": \"Lesson 4\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2025/04/sheep-life-pre.png\",\n \"files\": []\n },\n {\n \"id\": \"livin-the-sheep-life-2-lesson-5\",\n \"name\": \"Lesson 5\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2025/04/sheep-life-pre.png\",\n \"files\": []\n },\n {\n \"id\": \"livin-the-sheep-life-2-lesson-6\",\n \"name\": \"Lesson 6\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2025/04/sheep-life-pre.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"a-mothers-love-preschool\",\n \"name\": \"A Mother's Love\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2025/03/a-mothers-love-preschool.png\",\n \"description\": \"Single Preschool Lesson for Mother’s Day\",\n \"url\": \"https://highvoltagekids.com/downloads/a-mothers-love-preschool/\",\n \"lessonCount\": 1,\n \"lessons\": [\n {\n \"id\": \"a-mothers-love-preschool-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2025/03/a-mothers-love-preschool.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"t-h-i-n-k-before-you-speak-preschool\",\n \"name\": \"T.H.I.N.K. Before You Speak\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2025/02/TBYS-3D-Box-PS.png\",\n \"description\": \"6 Lessons on the power of words\",\n \"url\": \"https://highvoltagekids.com/downloads/t-h-i-n-k-before-you-speak-preschool/\",\n \"lessonCount\": 6,\n \"lessons\": [\n {\n \"id\": \"t-h-i-n-k-before-you-speak-preschool-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2025/02/TBYS-3D-Box-PS.png\",\n \"files\": []\n },\n {\n \"id\": \"t-h-i-n-k-before-you-speak-preschool-lesson-2\",\n \"name\": \"Lesson 2\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2025/02/TBYS-3D-Box-PS.png\",\n \"files\": []\n },\n {\n \"id\": \"t-h-i-n-k-before-you-speak-preschool-lesson-3\",\n \"name\": \"Lesson 3\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2025/02/TBYS-3D-Box-PS.png\",\n \"files\": []\n },\n {\n \"id\": \"t-h-i-n-k-before-you-speak-preschool-lesson-4\",\n \"name\": \"Lesson 4\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2025/02/TBYS-3D-Box-PS.png\",\n \"files\": []\n },\n {\n \"id\": \"t-h-i-n-k-before-you-speak-preschool-lesson-5\",\n \"name\": \"Lesson 5\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2025/02/TBYS-3D-Box-PS.png\",\n \"files\": []\n },\n {\n \"id\": \"t-h-i-n-k-before-you-speak-preschool-lesson-6\",\n \"name\": \"Lesson 6\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2025/02/TBYS-3D-Box-PS.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"closed-preschool\",\n \"name\": \"Closed\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2025/03/Closed-3D-Box.png\",\n \"description\": \"Preschool Lesson for Easter\",\n \"url\": \"https://highvoltagekids.com/downloads/closed-preschool/\",\n \"lessonCount\": 1,\n \"lessons\": [\n {\n \"id\": \"closed-preschool-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2025/03/Closed-3D-Box.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"remember-me-preschool\",\n \"name\": \"Remember Me\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2025/03/Remember-Me-Elementary.png\",\n \"description\": \"Preschool Lesson on Communion\",\n \"url\": \"https://highvoltagekids.com/downloads/remember-me-preschool/\",\n \"lessonCount\": 1,\n \"lessons\": [\n {\n \"id\": \"remember-me-preschool-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2025/03/Remember-Me-Elementary.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"rock-solid-preschool\",\n \"name\": \"Rock Solid\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/12/Rock-Solid-PS.png\",\n \"description\": \"6 Foundational Truths Every Kid Should Know\",\n \"url\": \"https://highvoltagekids.com/downloads/rock-solid-preschool/\",\n \"lessonCount\": 1,\n \"lessons\": [\n {\n \"id\": \"rock-solid-preschool-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/12/Rock-Solid-PS.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"dream-big\",\n \"name\": \"Dream BIG\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/10/Dream-Big-ELE.png\",\n \"description\": \"10 Lessons From Joseph\",\n \"url\": \"https://highvoltagekids.com/downloads/dream-big/\",\n \"lessonCount\": 10,\n \"lessons\": [\n {\n \"id\": \"dream-big-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/10/Dream-Big-ELE.png\",\n \"files\": []\n },\n {\n \"id\": \"dream-big-lesson-2\",\n \"name\": \"Lesson 2\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/10/Dream-Big-ELE.png\",\n \"files\": []\n },\n {\n \"id\": \"dream-big-lesson-3\",\n \"name\": \"Lesson 3\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/10/Dream-Big-ELE.png\",\n \"files\": []\n },\n {\n \"id\": \"dream-big-lesson-4\",\n \"name\": \"Lesson 4\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/10/Dream-Big-ELE.png\",\n \"files\": []\n },\n {\n \"id\": \"dream-big-lesson-5\",\n \"name\": \"Lesson 5\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/10/Dream-Big-ELE.png\",\n \"files\": []\n },\n {\n \"id\": \"dream-big-lesson-6\",\n \"name\": \"Lesson 6\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/10/Dream-Big-ELE.png\",\n \"files\": []\n },\n {\n \"id\": \"dream-big-lesson-7\",\n \"name\": \"Lesson 7\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/10/Dream-Big-ELE.png\",\n \"files\": []\n },\n {\n \"id\": \"dream-big-lesson-8\",\n \"name\": \"Lesson 8\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/10/Dream-Big-ELE.png\",\n \"files\": []\n },\n {\n \"id\": \"dream-big-lesson-9\",\n \"name\": \"Lesson 9\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/10/Dream-Big-ELE.png\",\n \"files\": []\n },\n {\n \"id\": \"dream-big-lesson-10\",\n \"name\": \"Lesson 10\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/10/Dream-Big-ELE.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"a-way-in-a-manger-preschool\",\n \"name\": \"A Way In A Manger\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/09/AWIAM-Pre-1.png\",\n \"description\": \"A Single Christmas Lesson\",\n \"url\": \"https://highvoltagekids.com/downloads/a-way-in-a-manger-preschool/\",\n \"lessonCount\": 1,\n \"lessons\": [\n {\n \"id\": \"a-way-in-a-manger-preschool-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/09/AWIAM-Pre-1.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"level-up-preschool\",\n \"name\": \"Level Up\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/08/Level-Up-Pre.png\",\n \"description\": \"4 Lessons to elevate our Stewardship\",\n \"url\": \"https://highvoltagekids.com/downloads/level-up-preschool/\",\n \"lessonCount\": 4,\n \"lessons\": [\n {\n \"id\": \"level-up-preschool-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/08/Level-Up-Pre.png\",\n \"files\": []\n },\n {\n \"id\": \"level-up-preschool-lesson-2\",\n \"name\": \"Lesson 2\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/08/Level-Up-Pre.png\",\n \"files\": []\n },\n {\n \"id\": \"level-up-preschool-lesson-3\",\n \"name\": \"Lesson 3\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/08/Level-Up-Pre.png\",\n \"files\": []\n },\n {\n \"id\": \"level-up-preschool-lesson-4\",\n \"name\": \"Lesson 4\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/08/Level-Up-Pre.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"no-name-preschool\",\n \"name\": \"No Name\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/07/No-Name-Pre.png\",\n \"description\": \"6 Lessons from Unnamed Bible Characters\",\n \"url\": \"https://highvoltagekids.com/downloads/no-name-preschool/\",\n \"lessonCount\": 6,\n \"lessons\": [\n {\n \"id\": \"no-name-preschool-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/07/No-Name-Pre.png\",\n \"files\": []\n },\n {\n \"id\": \"no-name-preschool-lesson-2\",\n \"name\": \"Lesson 2\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/07/No-Name-Pre.png\",\n \"files\": []\n },\n {\n \"id\": \"no-name-preschool-lesson-3\",\n \"name\": \"Lesson 3\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/07/No-Name-Pre.png\",\n \"files\": []\n },\n {\n \"id\": \"no-name-preschool-lesson-4\",\n \"name\": \"Lesson 4\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/07/No-Name-Pre.png\",\n \"files\": []\n },\n {\n \"id\": \"no-name-preschool-lesson-5\",\n \"name\": \"Lesson 5\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/07/No-Name-Pre.png\",\n \"files\": []\n },\n {\n \"id\": \"no-name-preschool-lesson-6\",\n \"name\": \"Lesson 6\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/07/No-Name-Pre.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"forgive-u-preschool\",\n \"name\": \"Forgive U\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/05/Forgive-U-PRE.png\",\n \"description\": \"5 Lessons on Forgiveness\",\n \"url\": \"https://highvoltagekids.com/downloads/forgive-u-preschool/\",\n \"lessonCount\": 5,\n \"lessons\": [\n {\n \"id\": \"forgive-u-preschool-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/05/Forgive-U-PRE.png\",\n \"files\": []\n },\n {\n \"id\": \"forgive-u-preschool-lesson-2\",\n \"name\": \"Lesson 2\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/05/Forgive-U-PRE.png\",\n \"files\": []\n },\n {\n \"id\": \"forgive-u-preschool-lesson-3\",\n \"name\": \"Lesson 3\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/05/Forgive-U-PRE.png\",\n \"files\": []\n },\n {\n \"id\": \"forgive-u-preschool-lesson-4\",\n \"name\": \"Lesson 4\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/05/Forgive-U-PRE.png\",\n \"files\": []\n },\n {\n \"id\": \"forgive-u-preschool-lesson-5\",\n \"name\": \"Lesson 5\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/05/Forgive-U-PRE.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"deal-with-it-preschool\",\n \"name\": \"Deal With It\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/04/Deal-With-It-PS.png\",\n \"description\": \"6 Lessons on Handling Life’s Difficulties\",\n \"url\": \"https://highvoltagekids.com/downloads/deal-with-it-preschool/\",\n \"lessonCount\": 6,\n \"lessons\": [\n {\n \"id\": \"deal-with-it-preschool-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/04/Deal-With-It-PS.png\",\n \"files\": []\n },\n {\n \"id\": \"deal-with-it-preschool-lesson-2\",\n \"name\": \"Lesson 2\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/04/Deal-With-It-PS.png\",\n \"files\": []\n },\n {\n \"id\": \"deal-with-it-preschool-lesson-3\",\n \"name\": \"Lesson 3\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/04/Deal-With-It-PS.png\",\n \"files\": []\n },\n {\n \"id\": \"deal-with-it-preschool-lesson-4\",\n \"name\": \"Lesson 4\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/04/Deal-With-It-PS.png\",\n \"files\": []\n },\n {\n \"id\": \"deal-with-it-preschool-lesson-5\",\n \"name\": \"Lesson 5\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/04/Deal-With-It-PS.png\",\n \"files\": []\n },\n {\n \"id\": \"deal-with-it-preschool-lesson-6\",\n \"name\": \"Lesson 6\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/04/Deal-With-It-PS.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"get-in-the-game-preschool\",\n \"name\": \"Get In The Game\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/04/Get-in-the-Game-PS.png\",\n \"description\": \"Preschool Lesson on Serving\",\n \"url\": \"https://highvoltagekids.com/downloads/get-in-the-game-preschool/\",\n \"lessonCount\": 1,\n \"lessons\": [\n {\n \"id\": \"get-in-the-game-preschool-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/04/Get-in-the-Game-PS.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"limitless-preschool\",\n \"name\": \"Limitless\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/03/Limtless-Preschool.png\",\n \"description\": \"3 Lessons on the Nature of God\",\n \"url\": \"https://highvoltagekids.com/downloads/limitless-preschool/\",\n \"lessonCount\": 3,\n \"lessons\": [\n {\n \"id\": \"limitless-preschool-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/03/Limtless-Preschool.png\",\n \"files\": []\n },\n {\n \"id\": \"limitless-preschool-lesson-2\",\n \"name\": \"Lesson 2\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/03/Limtless-Preschool.png\",\n \"files\": []\n },\n {\n \"id\": \"limitless-preschool-lesson-3\",\n \"name\": \"Lesson 3\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/03/Limtless-Preschool.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"transformed-preschool\",\n \"name\": \"Transformed\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/01/Transformed-3D-Box-PS.png\",\n \"description\": \"9 Lessons on the Transforming Power of God\",\n \"url\": \"https://highvoltagekids.com/downloads/transformed-preschool/\",\n \"lessonCount\": 9,\n \"lessons\": [\n {\n \"id\": \"transformed-preschool-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/01/Transformed-3D-Box-PS.png\",\n \"files\": []\n },\n {\n \"id\": \"transformed-preschool-lesson-2\",\n \"name\": \"Lesson 2\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/01/Transformed-3D-Box-PS.png\",\n \"files\": []\n },\n {\n \"id\": \"transformed-preschool-lesson-3\",\n \"name\": \"Lesson 3\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/01/Transformed-3D-Box-PS.png\",\n \"files\": []\n },\n {\n \"id\": \"transformed-preschool-lesson-4\",\n \"name\": \"Lesson 4\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/01/Transformed-3D-Box-PS.png\",\n \"files\": []\n },\n {\n \"id\": \"transformed-preschool-lesson-5\",\n \"name\": \"Lesson 5\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/01/Transformed-3D-Box-PS.png\",\n \"files\": []\n },\n {\n \"id\": \"transformed-preschool-lesson-6\",\n \"name\": \"Lesson 6\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/01/Transformed-3D-Box-PS.png\",\n \"files\": []\n },\n {\n \"id\": \"transformed-preschool-lesson-7\",\n \"name\": \"Lesson 7\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/01/Transformed-3D-Box-PS.png\",\n \"files\": []\n },\n {\n \"id\": \"transformed-preschool-lesson-8\",\n \"name\": \"Lesson 8\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/01/Transformed-3D-Box-PS.png\",\n \"files\": []\n },\n {\n \"id\": \"transformed-preschool-lesson-9\",\n \"name\": \"Lesson 9\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/01/Transformed-3D-Box-PS.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"the-price-is-right-preschool\",\n \"name\": \"The Price Is Right\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2023/12/price-is-right-elementary.png\",\n \"description\": \"Preschool Lesson for Easter\",\n \"url\": \"https://highvoltagekids.com/downloads/the-price-is-right-preschool/\",\n \"lessonCount\": 1,\n \"lessons\": [\n {\n \"id\": \"the-price-is-right-preschool-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2023/12/price-is-right-elementary.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"upside-down-preschool\",\n \"name\": \"Upside Down\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/01/UPSide.png\",\n \"description\": \"6 Lessons on Spiritual Paradoxes\",\n \"url\": \"https://highvoltagekids.com/downloads/upside-down-preschool/\",\n \"lessonCount\": 6,\n \"lessons\": [\n {\n \"id\": \"upside-down-preschool-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/01/UPSide.png\",\n \"files\": []\n },\n {\n \"id\": \"upside-down-preschool-lesson-2\",\n \"name\": \"Lesson 2\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/01/UPSide.png\",\n \"files\": []\n },\n {\n \"id\": \"upside-down-preschool-lesson-3\",\n \"name\": \"Lesson 3\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/01/UPSide.png\",\n \"files\": []\n },\n {\n \"id\": \"upside-down-preschool-lesson-4\",\n \"name\": \"Lesson 4\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/01/UPSide.png\",\n \"files\": []\n },\n {\n \"id\": \"upside-down-preschool-lesson-5\",\n \"name\": \"Lesson 5\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/01/UPSide.png\",\n \"files\": []\n },\n {\n \"id\": \"upside-down-preschool-lesson-6\",\n \"name\": \"Lesson 6\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/01/UPSide.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"christmas-gifts-preschool\",\n \"name\": \"Christmas Gifts\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/01/Christmas-Gifts-Preschool.png\",\n \"description\": \"3 Lessons for Christmas\",\n \"url\": \"https://highvoltagekids.com/downloads/christmas-gifts-preschool/\",\n \"lessonCount\": 3,\n \"lessons\": [\n {\n \"id\": \"christmas-gifts-preschool-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/01/Christmas-Gifts-Preschool.png\",\n \"files\": []\n },\n {\n \"id\": \"christmas-gifts-preschool-lesson-2\",\n \"name\": \"Lesson 2\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/01/Christmas-Gifts-Preschool.png\",\n \"files\": []\n },\n {\n \"id\": \"christmas-gifts-preschool-lesson-3\",\n \"name\": \"Lesson 3\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/01/Christmas-Gifts-Preschool.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"forgiveness-preschool\",\n \"name\": \"Forgiveness\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2023/10/Forgiveness-Preschool-1.png\",\n \"description\": \"5 Lessons on Forgiveness\",\n \"url\": \"https://highvoltagekids.com/downloads/forgiveness-preschool/\",\n \"lessonCount\": 5,\n \"lessons\": [\n {\n \"id\": \"forgiveness-preschool-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2023/10/Forgiveness-Preschool-1.png\",\n \"files\": []\n },\n {\n \"id\": \"forgiveness-preschool-lesson-2\",\n \"name\": \"Lesson 2\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2023/10/Forgiveness-Preschool-1.png\",\n \"files\": []\n },\n {\n \"id\": \"forgiveness-preschool-lesson-3\",\n \"name\": \"Lesson 3\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2023/10/Forgiveness-Preschool-1.png\",\n \"files\": []\n },\n {\n \"id\": \"forgiveness-preschool-lesson-4\",\n \"name\": \"Lesson 4\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2023/10/Forgiveness-Preschool-1.png\",\n \"files\": []\n },\n {\n \"id\": \"forgiveness-preschool-lesson-5\",\n \"name\": \"Lesson 5\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2023/10/Forgiveness-Preschool-1.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"running-for-your-life-preschool\",\n \"name\": \"Running For Your Life\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/01/Running-for-life-Preschool.png\",\n \"description\": \"6 Lessons from the Life of David\",\n \"url\": \"https://highvoltagekids.com/downloads/running-for-your-life-preschool/\",\n \"lessonCount\": 6,\n \"lessons\": [\n {\n \"id\": \"running-for-your-life-preschool-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/01/Running-for-life-Preschool.png\",\n \"files\": []\n },\n {\n \"id\": \"running-for-your-life-preschool-lesson-2\",\n \"name\": \"Lesson 2\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/01/Running-for-life-Preschool.png\",\n \"files\": []\n },\n {\n \"id\": \"running-for-your-life-preschool-lesson-3\",\n \"name\": \"Lesson 3\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/01/Running-for-life-Preschool.png\",\n \"files\": []\n },\n {\n \"id\": \"running-for-your-life-preschool-lesson-4\",\n \"name\": \"Lesson 4\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/01/Running-for-life-Preschool.png\",\n \"files\": []\n },\n {\n \"id\": \"running-for-your-life-preschool-lesson-5\",\n \"name\": \"Lesson 5\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/01/Running-for-life-Preschool.png\",\n \"files\": []\n },\n {\n \"id\": \"running-for-your-life-preschool-lesson-6\",\n \"name\": \"Lesson 6\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/01/Running-for-life-Preschool.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"songs-of-christmas-preschool\",\n \"name\": \"Songs of Christmas\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/01/Songs-Of-Christmas-3D-Box-PS.png\",\n \"description\": \"4 Lessons on the Meaning of Christmas\",\n \"url\": \"https://highvoltagekids.com/downloads/songs-of-christmas-preschool/\",\n \"lessonCount\": 4,\n \"lessons\": [\n {\n \"id\": \"songs-of-christmas-preschool-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/01/Songs-Of-Christmas-3D-Box-PS.png\",\n \"files\": []\n },\n {\n \"id\": \"songs-of-christmas-preschool-lesson-2\",\n \"name\": \"Lesson 2\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/01/Songs-Of-Christmas-3D-Box-PS.png\",\n \"files\": []\n },\n {\n \"id\": \"songs-of-christmas-preschool-lesson-3\",\n \"name\": \"Lesson 3\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/01/Songs-Of-Christmas-3D-Box-PS.png\",\n \"files\": []\n },\n {\n \"id\": \"songs-of-christmas-preschool-lesson-4\",\n \"name\": \"Lesson 4\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/01/Songs-Of-Christmas-3D-Box-PS.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"all-preschool\",\n \"name\": \"All\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2023/10/All-Preschool.png\",\n \"description\": \"3 Lessons on Missions/Evangelism\",\n \"url\": \"https://highvoltagekids.com/downloads/all-preschool/\",\n \"lessonCount\": 3,\n \"lessons\": [\n {\n \"id\": \"all-preschool-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2023/10/All-Preschool.png\",\n \"files\": []\n },\n {\n \"id\": \"all-preschool-lesson-2\",\n \"name\": \"Lesson 2\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2023/10/All-Preschool.png\",\n \"files\": []\n },\n {\n \"id\": \"all-preschool-lesson-3\",\n \"name\": \"Lesson 3\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2023/10/All-Preschool.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"famous-last-words-preschool\",\n \"name\": \"Famous Last Words\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/01/price-is-right-elementary.png\",\n \"description\": \"4 Lessons on Jesus’ Last Teachings\",\n \"url\": \"https://highvoltagekids.com/downloads/famous-last-words-preschool/\",\n \"lessonCount\": 4,\n \"lessons\": [\n {\n \"id\": \"famous-last-words-preschool-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/01/price-is-right-elementary.png\",\n \"files\": []\n },\n {\n \"id\": \"famous-last-words-preschool-lesson-2\",\n \"name\": \"Lesson 2\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/01/price-is-right-elementary.png\",\n \"files\": []\n },\n {\n \"id\": \"famous-last-words-preschool-lesson-3\",\n \"name\": \"Lesson 3\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/01/price-is-right-elementary.png\",\n \"files\": []\n },\n {\n \"id\": \"famous-last-words-preschool-lesson-4\",\n \"name\": \"Lesson 4\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/01/price-is-right-elementary.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"dont-worry-about-it-preschool\",\n \"name\": \"Don’t Worry About It\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2023/10/Dont-Worry-About-It-Preschool.png\",\n \"description\": \"5 Lessons about anxiety\",\n \"url\": \"https://highvoltagekids.com/downloads/dont-worry-about-it-preschool/\",\n \"lessonCount\": 5,\n \"lessons\": [\n {\n \"id\": \"dont-worry-about-it-preschool-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2023/10/Dont-Worry-About-It-Preschool.png\",\n \"files\": []\n },\n {\n \"id\": \"dont-worry-about-it-preschool-lesson-2\",\n \"name\": \"Lesson 2\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2023/10/Dont-Worry-About-It-Preschool.png\",\n \"files\": []\n },\n {\n \"id\": \"dont-worry-about-it-preschool-lesson-3\",\n \"name\": \"Lesson 3\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2023/10/Dont-Worry-About-It-Preschool.png\",\n \"files\": []\n },\n {\n \"id\": \"dont-worry-about-it-preschool-lesson-4\",\n \"name\": \"Lesson 4\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2023/10/Dont-Worry-About-It-Preschool.png\",\n \"files\": []\n },\n {\n \"id\": \"dont-worry-about-it-preschool-lesson-5\",\n \"name\": \"Lesson 5\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2023/10/Dont-Worry-About-It-Preschool.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"wonderfully-made-preschool\",\n \"name\": \"Wonderfully Made\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2023/07/Wonderfully-Made-Preschool.png\",\n \"description\": \"Preschool Lesson on Gender Identity\",\n \"url\": \"https://highvoltagekids.com/downloads/wonderfully-made-preschool/\",\n \"lessonCount\": 1,\n \"lessons\": [\n {\n \"id\": \"wonderfully-made-preschool-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2023/07/Wonderfully-Made-Preschool.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"holy-spirit-preschool\",\n \"name\": \"Holy Spirit\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/01/Holy-Spirit-3D-Box-PS.png\",\n \"description\": \"4 Preschool Lessons on the Holy Spirit\",\n \"url\": \"https://highvoltagekids.com/downloads/holy-spirit-preschool/\",\n \"lessonCount\": 4,\n \"lessons\": [\n {\n \"id\": \"holy-spirit-preschool-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/01/Holy-Spirit-3D-Box-PS.png\",\n \"files\": []\n },\n {\n \"id\": \"holy-spirit-preschool-lesson-2\",\n \"name\": \"Lesson 2\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/01/Holy-Spirit-3D-Box-PS.png\",\n \"files\": []\n },\n {\n \"id\": \"holy-spirit-preschool-lesson-3\",\n \"name\": \"Lesson 3\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/01/Holy-Spirit-3D-Box-PS.png\",\n \"files\": []\n },\n {\n \"id\": \"holy-spirit-preschool-lesson-4\",\n \"name\": \"Lesson 4\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/01/Holy-Spirit-3D-Box-PS.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"teach-us-to-pray-preschool\",\n \"name\": \"Teach Us to Pray\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2023/06/Teach-Us-To-Pray-Preschool.png\",\n \"description\": \"6 Lessons On The Lord’s Prayer\",\n \"url\": \"https://highvoltagekids.com/downloads/teach-us-to-pray-preschool/\",\n \"lessonCount\": 6,\n \"lessons\": [\n {\n \"id\": \"teach-us-to-pray-preschool-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2023/06/Teach-Us-To-Pray-Preschool.png\",\n \"files\": []\n },\n {\n \"id\": \"teach-us-to-pray-preschool-lesson-2\",\n \"name\": \"Lesson 2\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2023/06/Teach-Us-To-Pray-Preschool.png\",\n \"files\": []\n },\n {\n \"id\": \"teach-us-to-pray-preschool-lesson-3\",\n \"name\": \"Lesson 3\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2023/06/Teach-Us-To-Pray-Preschool.png\",\n \"files\": []\n },\n {\n \"id\": \"teach-us-to-pray-preschool-lesson-4\",\n \"name\": \"Lesson 4\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2023/06/Teach-Us-To-Pray-Preschool.png\",\n \"files\": []\n },\n {\n \"id\": \"teach-us-to-pray-preschool-lesson-5\",\n \"name\": \"Lesson 5\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2023/06/Teach-Us-To-Pray-Preschool.png\",\n \"files\": []\n },\n {\n \"id\": \"teach-us-to-pray-preschool-lesson-6\",\n \"name\": \"Lesson 6\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2023/06/Teach-Us-To-Pray-Preschool.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"broken-preschool\",\n \"name\": \"Broken\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/01/Broken-3D-Box-PS.png\",\n \"description\": \"4 Lessons on God’s power to heal\",\n \"url\": \"https://highvoltagekids.com/downloads/broken-preschool/\",\n \"lessonCount\": 4,\n \"lessons\": [\n {\n \"id\": \"broken-preschool-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/01/Broken-3D-Box-PS.png\",\n \"files\": []\n },\n {\n \"id\": \"broken-preschool-lesson-2\",\n \"name\": \"Lesson 2\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/01/Broken-3D-Box-PS.png\",\n \"files\": []\n },\n {\n \"id\": \"broken-preschool-lesson-3\",\n \"name\": \"Lesson 3\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/01/Broken-3D-Box-PS.png\",\n \"files\": []\n },\n {\n \"id\": \"broken-preschool-lesson-4\",\n \"name\": \"Lesson 4\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/01/Broken-3D-Box-PS.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"turn-the-page-preschool\",\n \"name\": \"Turn the Page\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2023/05/Turn-the-page-elementary.png\",\n \"description\": \"Single lesson on overcoming the past\",\n \"url\": \"https://highvoltagekids.com/downloads/turn-the-page-preschool/\",\n \"lessonCount\": 1,\n \"lessons\": [\n {\n \"id\": \"turn-the-page-preschool-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2023/05/Turn-the-page-elementary.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"healing\",\n \"name\": \"Healing\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2023/05/Healing-3D-Box-EL.png\",\n \"description\": \"5 lessons on the Healing Power of God\",\n \"url\": \"https://highvoltagekids.com/downloads/healing/\",\n \"lessonCount\": 5,\n \"lessons\": [\n {\n \"id\": \"healing-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2023/05/Healing-3D-Box-EL.png\",\n \"files\": []\n },\n {\n \"id\": \"healing-lesson-2\",\n \"name\": \"Lesson 2\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2023/05/Healing-3D-Box-EL.png\",\n \"files\": []\n },\n {\n \"id\": \"healing-lesson-3\",\n \"name\": \"Lesson 3\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2023/05/Healing-3D-Box-EL.png\",\n \"files\": []\n },\n {\n \"id\": \"healing-lesson-4\",\n \"name\": \"Lesson 4\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2023/05/Healing-3D-Box-EL.png\",\n \"files\": []\n },\n {\n \"id\": \"healing-lesson-5\",\n \"name\": \"Lesson 5\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2023/05/Healing-3D-Box-EL.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"listen-up-preschool\",\n \"name\": \"Listen Up\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/01/Listen-Up-3D-Box-ELE.png\",\n \"description\": \"Three Lessons on Listening to the Right Voices\",\n \"url\": \"https://highvoltagekids.com/downloads/listen-up-preschool/\",\n \"lessonCount\": 1,\n \"lessons\": [\n {\n \"id\": \"listen-up-preschool-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/01/Listen-Up-3D-Box-ELE.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"dollars-and-sense-preschool\",\n \"name\": \"Dollars And Sense\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2023/10/Dollars-and-Sense-Preschool.png\",\n \"description\": \"Three Lessons on Stewardship\",\n \"url\": \"https://highvoltagekids.com/downloads/dollars-and-sense-preschool/\",\n \"lessonCount\": 1,\n \"lessons\": [\n {\n \"id\": \"dollars-and-sense-preschool-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2023/10/Dollars-and-Sense-Preschool.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"epic-fail-preschool\",\n \"name\": \"Epic Fail\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/01/Epic-Fail-3D-Box-PS.png\",\n \"description\": \"Four Lessons from King Saul\",\n \"url\": \"https://highvoltagekids.com/downloads/epic-fail-preschool/\",\n \"lessonCount\": 1,\n \"lessons\": [\n {\n \"id\": \"epic-fail-preschool-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/01/Epic-Fail-3D-Box-PS.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"priceless-preschool\",\n \"name\": \"Priceless\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/01/Priceless-3D-Box-PS.png\",\n \"description\": \"Four Lessons from King Saul\",\n \"url\": \"https://highvoltagekids.com/downloads/priceless-preschool/\",\n \"lessonCount\": 1,\n \"lessons\": [\n {\n \"id\": \"priceless-preschool-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/01/Priceless-3D-Box-PS.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"fruit-of-the-spirit-preschool\",\n \"name\": \"Fruit of the Spirit\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2023/10/Fruit-of-the-Spirit-Preschool.png\",\n \"description\": \"9 Lessons on the Fruit of the Spirit\",\n \"url\": \"https://highvoltagekids.com/downloads/fruit-of-the-spirit-preschool/\",\n \"lessonCount\": 9,\n \"lessons\": [\n {\n \"id\": \"fruit-of-the-spirit-preschool-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2023/10/Fruit-of-the-Spirit-Preschool.png\",\n \"files\": []\n },\n {\n \"id\": \"fruit-of-the-spirit-preschool-lesson-2\",\n \"name\": \"Lesson 2\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2023/10/Fruit-of-the-Spirit-Preschool.png\",\n \"files\": []\n },\n {\n \"id\": \"fruit-of-the-spirit-preschool-lesson-3\",\n \"name\": \"Lesson 3\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2023/10/Fruit-of-the-Spirit-Preschool.png\",\n \"files\": []\n },\n {\n \"id\": \"fruit-of-the-spirit-preschool-lesson-4\",\n \"name\": \"Lesson 4\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2023/10/Fruit-of-the-Spirit-Preschool.png\",\n \"files\": []\n },\n {\n \"id\": \"fruit-of-the-spirit-preschool-lesson-5\",\n \"name\": \"Lesson 5\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2023/10/Fruit-of-the-Spirit-Preschool.png\",\n \"files\": []\n },\n {\n \"id\": \"fruit-of-the-spirit-preschool-lesson-6\",\n \"name\": \"Lesson 6\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2023/10/Fruit-of-the-Spirit-Preschool.png\",\n \"files\": []\n },\n {\n \"id\": \"fruit-of-the-spirit-preschool-lesson-7\",\n \"name\": \"Lesson 7\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2023/10/Fruit-of-the-Spirit-Preschool.png\",\n \"files\": []\n },\n {\n \"id\": \"fruit-of-the-spirit-preschool-lesson-8\",\n \"name\": \"Lesson 8\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2023/10/Fruit-of-the-Spirit-Preschool.png\",\n \"files\": []\n },\n {\n \"id\": \"fruit-of-the-spirit-preschool-lesson-9\",\n \"name\": \"Lesson 9\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2023/10/Fruit-of-the-Spirit-Preschool.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"finish-preschool\",\n \"name\": \"Finish\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2021/03/Finish-Easter-3D-Box-EL.png\",\n \"description\": \"Preschool Lesson for EASTER\",\n \"url\": \"https://highvoltagekids.com/downloads/finish-preschool/\",\n \"lessonCount\": 1,\n \"lessons\": [\n {\n \"id\": \"finish-preschool-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2021/03/Finish-Easter-3D-Box-EL.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"who-preschool\",\n \"name\": \"Who\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/01/Who-3D-Box-PS.png\",\n \"description\": \"5 Lessons On the Most Important People In Your Life With God\",\n \"url\": \"https://highvoltagekids.com/downloads/who-preschool/\",\n \"lessonCount\": 5,\n \"lessons\": [\n {\n \"id\": \"who-preschool-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/01/Who-3D-Box-PS.png\",\n \"files\": []\n },\n {\n \"id\": \"who-preschool-lesson-2\",\n \"name\": \"Lesson 2\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/01/Who-3D-Box-PS.png\",\n \"files\": []\n },\n {\n \"id\": \"who-preschool-lesson-3\",\n \"name\": \"Lesson 3\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/01/Who-3D-Box-PS.png\",\n \"files\": []\n },\n {\n \"id\": \"who-preschool-lesson-4\",\n \"name\": \"Lesson 4\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/01/Who-3D-Box-PS.png\",\n \"files\": []\n },\n {\n \"id\": \"who-preschool-lesson-5\",\n \"name\": \"Lesson 5\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/01/Who-3D-Box-PS.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"love-preschool\",\n \"name\": \"Love\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/01/LOVE-Easter-3D-Box-PS.png\",\n \"description\": \"Preschool Lesson for Easter\",\n \"url\": \"https://highvoltagekids.com/downloads/love-preschool/\",\n \"lessonCount\": 1,\n \"lessons\": [\n {\n \"id\": \"love-preschool-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/01/LOVE-Easter-3D-Box-PS.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"promises-promises-preschool\",\n \"name\": \"Promises, Promises\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2023/07/Promises-Promises-3D-Box-EL.png\",\n \"description\": \"Preschool Lesson On God’s Faithfulness\",\n \"url\": \"https://highvoltagekids.com/downloads/promises-promises-preschool/\",\n \"lessonCount\": 1,\n \"lessons\": [\n {\n \"id\": \"promises-promises-preschool-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2023/07/Promises-Promises-3D-Box-EL.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"fresh-start-preschool\",\n \"name\": \"Fresh Start\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2022/12/Fresh-Start-3D-Box-EL.png\",\n \"description\": \"Preschool Lesson For New Year’s Day\",\n \"url\": \"https://highvoltagekids.com/downloads/fresh-start-preschool/\",\n \"lessonCount\": 1,\n \"lessons\": [\n {\n \"id\": \"fresh-start-preschool-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2022/12/Fresh-Start-3D-Box-EL.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"church-preschool\",\n \"name\": \"Church\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/01/Church-3D-Box-PS.png\",\n \"description\": \"Six Lessons About the Family of God\",\n \"url\": \"https://highvoltagekids.com/downloads/church-preschool/\",\n \"lessonCount\": 1,\n \"lessons\": [\n {\n \"id\": \"church-preschool-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/01/Church-3D-Box-PS.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"mine-preschool\",\n \"name\": \"Mine!\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/01/Mine-3D-Box-PS.png\",\n \"description\": \"Preschool Lesson on Sharing\",\n \"url\": \"https://highvoltagekids.com/downloads/mine-preschool/\",\n \"lessonCount\": 1,\n \"lessons\": [\n {\n \"id\": \"mine-preschool-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/01/Mine-3D-Box-PS.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"christmas-stars-preschool\",\n \"name\": \"Christmas Stars\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/01/Christmas-Stars-3D-Box-PS.png\",\n \"description\": \"Five Lessons for Christmas\",\n \"url\": \"https://highvoltagekids.com/downloads/christmas-stars-preschool/\",\n \"lessonCount\": 1,\n \"lessons\": [\n {\n \"id\": \"christmas-stars-preschool-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/01/Christmas-Stars-3D-Box-PS.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"give-thanks-preschool\",\n \"name\": \"Give Thanks\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2022/09/Give-Thanks-Preschool.png\",\n \"description\": \"Preschool Lesson perfect for Thanksgiving\",\n \"url\": \"https://highvoltagekids.com/downloads/give-thanks-preschool/\",\n \"lessonCount\": 1,\n \"lessons\": [\n {\n \"id\": \"give-thanks-preschool-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2022/09/Give-Thanks-Preschool.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"family-farm-preschool\",\n \"name\": \"Family Farm\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/01/Family-Farm-3D-Box-PS.png\",\n \"description\": \"4 Lessons on Planting Healthy Seeds in the Family\",\n \"url\": \"https://highvoltagekids.com/downloads/family-farm-preschool/\",\n \"lessonCount\": 4,\n \"lessons\": [\n {\n \"id\": \"family-farm-preschool-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/01/Family-Farm-3D-Box-PS.png\",\n \"files\": []\n },\n {\n \"id\": \"family-farm-preschool-lesson-2\",\n \"name\": \"Lesson 2\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/01/Family-Farm-3D-Box-PS.png\",\n \"files\": []\n },\n {\n \"id\": \"family-farm-preschool-lesson-3\",\n \"name\": \"Lesson 3\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/01/Family-Farm-3D-Box-PS.png\",\n \"files\": []\n },\n {\n \"id\": \"family-farm-preschool-lesson-4\",\n \"name\": \"Lesson 4\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/01/Family-Farm-3D-Box-PS.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"just-do-it-preschool\",\n \"name\": \"Just Do It!\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/01/Just-Do-It-3D-Box-PS.png\",\n \"description\": \"6 Lessons from the Commands of Jesus\",\n \"url\": \"https://highvoltagekids.com/downloads/just-do-it-preschool/\",\n \"lessonCount\": 6,\n \"lessons\": [\n {\n \"id\": \"just-do-it-preschool-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/01/Just-Do-It-3D-Box-PS.png\",\n \"files\": []\n },\n {\n \"id\": \"just-do-it-preschool-lesson-2\",\n \"name\": \"Lesson 2\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/01/Just-Do-It-3D-Box-PS.png\",\n \"files\": []\n },\n {\n \"id\": \"just-do-it-preschool-lesson-3\",\n \"name\": \"Lesson 3\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/01/Just-Do-It-3D-Box-PS.png\",\n \"files\": []\n },\n {\n \"id\": \"just-do-it-preschool-lesson-4\",\n \"name\": \"Lesson 4\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/01/Just-Do-It-3D-Box-PS.png\",\n \"files\": []\n },\n {\n \"id\": \"just-do-it-preschool-lesson-5\",\n \"name\": \"Lesson 5\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/01/Just-Do-It-3D-Box-PS.png\",\n \"files\": []\n },\n {\n \"id\": \"just-do-it-preschool-lesson-6\",\n \"name\": \"Lesson 6\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/01/Just-Do-It-3D-Box-PS.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"every-soul-matters-to-god-preschool\",\n \"name\": \"Every Soul Matters to God\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2023/10/Every-Soul-Matters-To-God-Preschool.png\",\n \"description\": \"3 Lessons On Evangelism And Missions\",\n \"url\": \"https://highvoltagekids.com/downloads/every-soul-matters-to-god-preschool/\",\n \"lessonCount\": 3,\n \"lessons\": [\n {\n \"id\": \"every-soul-matters-to-god-preschool-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2023/10/Every-Soul-Matters-To-God-Preschool.png\",\n \"files\": []\n },\n {\n \"id\": \"every-soul-matters-to-god-preschool-lesson-2\",\n \"name\": \"Lesson 2\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2023/10/Every-Soul-Matters-To-God-Preschool.png\",\n \"files\": []\n },\n {\n \"id\": \"every-soul-matters-to-god-preschool-lesson-3\",\n \"name\": \"Lesson 3\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2023/10/Every-Soul-Matters-To-God-Preschool.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"battle-zone-preschool\",\n \"name\": \"Battle Zone\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2023/10/Battle-Zone-Preschool-1.png\",\n \"description\": \"8 Lessons from the Biggest Battles of the Bible\",\n \"url\": \"https://highvoltagekids.com/downloads/battle-zone-preschool/\",\n \"lessonCount\": 8,\n \"lessons\": [\n {\n \"id\": \"battle-zone-preschool-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2023/10/Battle-Zone-Preschool-1.png\",\n \"files\": []\n },\n {\n \"id\": \"battle-zone-preschool-lesson-2\",\n \"name\": \"Lesson 2\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2023/10/Battle-Zone-Preschool-1.png\",\n \"files\": []\n },\n {\n \"id\": \"battle-zone-preschool-lesson-3\",\n \"name\": \"Lesson 3\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2023/10/Battle-Zone-Preschool-1.png\",\n \"files\": []\n },\n {\n \"id\": \"battle-zone-preschool-lesson-4\",\n \"name\": \"Lesson 4\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2023/10/Battle-Zone-Preschool-1.png\",\n \"files\": []\n },\n {\n \"id\": \"battle-zone-preschool-lesson-5\",\n \"name\": \"Lesson 5\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2023/10/Battle-Zone-Preschool-1.png\",\n \"files\": []\n },\n {\n \"id\": \"battle-zone-preschool-lesson-6\",\n \"name\": \"Lesson 6\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2023/10/Battle-Zone-Preschool-1.png\",\n \"files\": []\n },\n {\n \"id\": \"battle-zone-preschool-lesson-7\",\n \"name\": \"Lesson 7\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2023/10/Battle-Zone-Preschool-1.png\",\n \"files\": []\n },\n {\n \"id\": \"battle-zone-preschool-lesson-8\",\n \"name\": \"Lesson 8\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2023/10/Battle-Zone-Preschool-1.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"game-plan-preschool\",\n \"name\": \"Game Plan\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2023/10/Game-Plan-Preschool.png\",\n \"description\": \"8 Lessons On Following God’s Plans\",\n \"url\": \"https://highvoltagekids.com/downloads/game-plan-preschool/\",\n \"lessonCount\": 8,\n \"lessons\": [\n {\n \"id\": \"game-plan-preschool-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2023/10/Game-Plan-Preschool.png\",\n \"files\": []\n },\n {\n \"id\": \"game-plan-preschool-lesson-2\",\n \"name\": \"Lesson 2\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2023/10/Game-Plan-Preschool.png\",\n \"files\": []\n },\n {\n \"id\": \"game-plan-preschool-lesson-3\",\n \"name\": \"Lesson 3\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2023/10/Game-Plan-Preschool.png\",\n \"files\": []\n },\n {\n \"id\": \"game-plan-preschool-lesson-4\",\n \"name\": \"Lesson 4\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2023/10/Game-Plan-Preschool.png\",\n \"files\": []\n },\n {\n \"id\": \"game-plan-preschool-lesson-5\",\n \"name\": \"Lesson 5\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2023/10/Game-Plan-Preschool.png\",\n \"files\": []\n },\n {\n \"id\": \"game-plan-preschool-lesson-6\",\n \"name\": \"Lesson 6\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2023/10/Game-Plan-Preschool.png\",\n \"files\": []\n },\n {\n \"id\": \"game-plan-preschool-lesson-7\",\n \"name\": \"Lesson 7\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2023/10/Game-Plan-Preschool.png\",\n \"files\": []\n },\n {\n \"id\": \"game-plan-preschool-lesson-8\",\n \"name\": \"Lesson 8\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2023/10/Game-Plan-Preschool.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"lets-get-real-preschool\",\n \"name\": \"Let's Get Real!\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/01/5.png\",\n \"description\": \"10 Lessons from Ephesians\",\n \"url\": \"https://highvoltagekids.com/downloads/lets-get-real-preschool/\",\n \"lessonCount\": 10,\n \"lessons\": [\n {\n \"id\": \"lets-get-real-preschool-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/01/5.png\",\n \"files\": []\n },\n {\n \"id\": \"lets-get-real-preschool-lesson-2\",\n \"name\": \"Lesson 2\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/01/5.png\",\n \"files\": []\n },\n {\n \"id\": \"lets-get-real-preschool-lesson-3\",\n \"name\": \"Lesson 3\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/01/5.png\",\n \"files\": []\n },\n {\n \"id\": \"lets-get-real-preschool-lesson-4\",\n \"name\": \"Lesson 4\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/01/5.png\",\n \"files\": []\n },\n {\n \"id\": \"lets-get-real-preschool-lesson-5\",\n \"name\": \"Lesson 5\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/01/5.png\",\n \"files\": []\n },\n {\n \"id\": \"lets-get-real-preschool-lesson-6\",\n \"name\": \"Lesson 6\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/01/5.png\",\n \"files\": []\n },\n {\n \"id\": \"lets-get-real-preschool-lesson-7\",\n \"name\": \"Lesson 7\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/01/5.png\",\n \"files\": []\n },\n {\n \"id\": \"lets-get-real-preschool-lesson-8\",\n \"name\": \"Lesson 8\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/01/5.png\",\n \"files\": []\n },\n {\n \"id\": \"lets-get-real-preschool-lesson-9\",\n \"name\": \"Lesson 9\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/01/5.png\",\n \"files\": []\n },\n {\n \"id\": \"lets-get-real-preschool-lesson-10\",\n \"name\": \"Lesson 10\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/01/5.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"money-talk-preschool\",\n \"name\": \"Money Talk$\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/01/Lets-Get-Real-3D-Box-PS.png\",\n \"description\": \"3 Lessons on Stewardship\",\n \"url\": \"https://highvoltagekids.com/downloads/money-talk-preschool/\",\n \"lessonCount\": 3,\n \"lessons\": [\n {\n \"id\": \"money-talk-preschool-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/01/Lets-Get-Real-3D-Box-PS.png\",\n \"files\": []\n },\n {\n \"id\": \"money-talk-preschool-lesson-2\",\n \"name\": \"Lesson 2\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/01/Lets-Get-Real-3D-Box-PS.png\",\n \"files\": []\n },\n {\n \"id\": \"money-talk-preschool-lesson-3\",\n \"name\": \"Lesson 3\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/01/Lets-Get-Real-3D-Box-PS.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"rescue-preschool\",\n \"name\": \"Rescue\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/01/Rescue-Preschool.png\",\n \"description\": \"3 Lessons on Missions/Evangelism\",\n \"url\": \"https://highvoltagekids.com/downloads/rescue-preschool/\",\n \"lessonCount\": 3,\n \"lessons\": [\n {\n \"id\": \"rescue-preschool-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/01/Rescue-Preschool.png\",\n \"files\": []\n },\n {\n \"id\": \"rescue-preschool-lesson-2\",\n \"name\": \"Lesson 2\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/01/Rescue-Preschool.png\",\n \"files\": []\n },\n {\n \"id\": \"rescue-preschool-lesson-3\",\n \"name\": \"Lesson 3\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/01/Rescue-Preschool.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"joshua-extreme-hero-preschool\",\n \"name\": \"JOSHUA – Extreme Hero\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2018/06/Josh-X.png\",\n \"description\": \"9 Lessons on the Life of Joshua\",\n \"url\": \"https://highvoltagekids.com/downloads/joshua-extreme-hero-preschool/\",\n \"lessonCount\": 9,\n \"lessons\": [\n {\n \"id\": \"joshua-extreme-hero-preschool-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2018/06/Josh-X.png\",\n \"files\": []\n },\n {\n \"id\": \"joshua-extreme-hero-preschool-lesson-2\",\n \"name\": \"Lesson 2\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2018/06/Josh-X.png\",\n \"files\": []\n },\n {\n \"id\": \"joshua-extreme-hero-preschool-lesson-3\",\n \"name\": \"Lesson 3\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2018/06/Josh-X.png\",\n \"files\": []\n },\n {\n \"id\": \"joshua-extreme-hero-preschool-lesson-4\",\n \"name\": \"Lesson 4\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2018/06/Josh-X.png\",\n \"files\": []\n },\n {\n \"id\": \"joshua-extreme-hero-preschool-lesson-5\",\n \"name\": \"Lesson 5\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2018/06/Josh-X.png\",\n \"files\": []\n },\n {\n \"id\": \"joshua-extreme-hero-preschool-lesson-6\",\n \"name\": \"Lesson 6\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2018/06/Josh-X.png\",\n \"files\": []\n },\n {\n \"id\": \"joshua-extreme-hero-preschool-lesson-7\",\n \"name\": \"Lesson 7\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2018/06/Josh-X.png\",\n \"files\": []\n },\n {\n \"id\": \"joshua-extreme-hero-preschool-lesson-8\",\n \"name\": \"Lesson 8\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2018/06/Josh-X.png\",\n \"files\": []\n },\n {\n \"id\": \"joshua-extreme-hero-preschool-lesson-9\",\n \"name\": \"Lesson 9\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2018/06/Josh-X.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"game-over-preschool-easter\",\n \"name\": \"Game Over\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2018/06/Game-Over.png\",\n \"description\": \"Single Lesson for EASTER\",\n \"url\": \"https://highvoltagekids.com/downloads/game-over-preschool-easter/\",\n \"lessonCount\": 1,\n \"lessons\": [\n {\n \"id\": \"game-over-preschool-easter-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2018/06/Game-Over.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"hey-can-i-ask-you-a-question-preschool\",\n \"name\": \"Hey! Can I Ask You A Question?\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/01/Hey.png\",\n \"description\": \"4 Lessons from Kids’ Biggest Questions\",\n \"url\": \"https://highvoltagekids.com/downloads/hey-can-i-ask-you-a-question-preschool/\",\n \"lessonCount\": 4,\n \"lessons\": [\n {\n \"id\": \"hey-can-i-ask-you-a-question-preschool-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/01/Hey.png\",\n \"files\": []\n },\n {\n \"id\": \"hey-can-i-ask-you-a-question-preschool-lesson-2\",\n \"name\": \"Lesson 2\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/01/Hey.png\",\n \"files\": []\n },\n {\n \"id\": \"hey-can-i-ask-you-a-question-preschool-lesson-3\",\n \"name\": \"Lesson 3\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/01/Hey.png\",\n \"files\": []\n },\n {\n \"id\": \"hey-can-i-ask-you-a-question-preschool-lesson-4\",\n \"name\": \"Lesson 4\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/01/Hey.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"the-table-preschool\",\n \"name\": \"The Table\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2018/06/Table.png\",\n \"description\": \"6 Lessons From Tables In The Bible\",\n \"url\": \"https://highvoltagekids.com/downloads/the-table-preschool/\",\n \"lessonCount\": 6,\n \"lessons\": [\n {\n \"id\": \"the-table-preschool-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2018/06/Table.png\",\n \"files\": []\n },\n {\n \"id\": \"the-table-preschool-lesson-2\",\n \"name\": \"Lesson 2\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2018/06/Table.png\",\n \"files\": []\n },\n {\n \"id\": \"the-table-preschool-lesson-3\",\n \"name\": \"Lesson 3\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2018/06/Table.png\",\n \"files\": []\n },\n {\n \"id\": \"the-table-preschool-lesson-4\",\n \"name\": \"Lesson 4\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2018/06/Table.png\",\n \"files\": []\n },\n {\n \"id\": \"the-table-preschool-lesson-5\",\n \"name\": \"Lesson 5\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2018/06/Table.png\",\n \"files\": []\n },\n {\n \"id\": \"the-table-preschool-lesson-6\",\n \"name\": \"Lesson 6\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2018/06/Table.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"game-over-preschool\",\n \"name\": \"Game Over\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2018/06/Game-Over.png\",\n \"description\": \"8 Lessons From the Bible’s Greatest Comebacks\",\n \"url\": \"https://highvoltagekids.com/downloads/game-over-preschool/\",\n \"lessonCount\": 8,\n \"lessons\": [\n {\n \"id\": \"game-over-preschool-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2018/06/Game-Over.png\",\n \"files\": []\n },\n {\n \"id\": \"game-over-preschool-lesson-2\",\n \"name\": \"Lesson 2\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2018/06/Game-Over.png\",\n \"files\": []\n },\n {\n \"id\": \"game-over-preschool-lesson-3\",\n \"name\": \"Lesson 3\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2018/06/Game-Over.png\",\n \"files\": []\n },\n {\n \"id\": \"game-over-preschool-lesson-4\",\n \"name\": \"Lesson 4\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2018/06/Game-Over.png\",\n \"files\": []\n },\n {\n \"id\": \"game-over-preschool-lesson-5\",\n \"name\": \"Lesson 5\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2018/06/Game-Over.png\",\n \"files\": []\n },\n {\n \"id\": \"game-over-preschool-lesson-6\",\n \"name\": \"Lesson 6\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2018/06/Game-Over.png\",\n \"files\": []\n },\n {\n \"id\": \"game-over-preschool-lesson-7\",\n \"name\": \"Lesson 7\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2018/06/Game-Over.png\",\n \"files\": []\n },\n {\n \"id\": \"game-over-preschool-lesson-8\",\n \"name\": \"Lesson 8\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2018/06/Game-Over.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"jonah-a-whale-of-a-tale-preschool\",\n \"name\": \"Jonah – A Whale of a Tale\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2018/06/Jonah-2.png\",\n \"description\": \"3 Lessons from the book of Jonah\",\n \"url\": \"https://highvoltagekids.com/downloads/jonah-a-whale-of-a-tale-preschool/\",\n \"lessonCount\": 3,\n \"lessons\": [\n {\n \"id\": \"jonah-a-whale-of-a-tale-preschool-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2018/06/Jonah-2.png\",\n \"files\": []\n },\n {\n \"id\": \"jonah-a-whale-of-a-tale-preschool-lesson-2\",\n \"name\": \"Lesson 2\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2018/06/Jonah-2.png\",\n \"files\": []\n },\n {\n \"id\": \"jonah-a-whale-of-a-tale-preschool-lesson-3\",\n \"name\": \"Lesson 3\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2018/06/Jonah-2.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"the-rock-preschool\",\n \"name\": \"The Rock\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2018/06/The-Rock.png\",\n \"description\": \"9 Lessons from the life of Peter\",\n \"url\": \"https://highvoltagekids.com/downloads/the-rock-preschool/\",\n \"lessonCount\": 9,\n \"lessons\": [\n {\n \"id\": \"the-rock-preschool-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2018/06/The-Rock.png\",\n \"files\": []\n },\n {\n \"id\": \"the-rock-preschool-lesson-2\",\n \"name\": \"Lesson 2\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2018/06/The-Rock.png\",\n \"files\": []\n },\n {\n \"id\": \"the-rock-preschool-lesson-3\",\n \"name\": \"Lesson 3\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2018/06/The-Rock.png\",\n \"files\": []\n },\n {\n \"id\": \"the-rock-preschool-lesson-4\",\n \"name\": \"Lesson 4\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2018/06/The-Rock.png\",\n \"files\": []\n },\n {\n \"id\": \"the-rock-preschool-lesson-5\",\n \"name\": \"Lesson 5\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2018/06/The-Rock.png\",\n \"files\": []\n },\n {\n \"id\": \"the-rock-preschool-lesson-6\",\n \"name\": \"Lesson 6\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2018/06/The-Rock.png\",\n \"files\": []\n },\n {\n \"id\": \"the-rock-preschool-lesson-7\",\n \"name\": \"Lesson 7\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2018/06/The-Rock.png\",\n \"files\": []\n },\n {\n \"id\": \"the-rock-preschool-lesson-8\",\n \"name\": \"Lesson 8\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2018/06/The-Rock.png\",\n \"files\": []\n },\n {\n \"id\": \"the-rock-preschool-lesson-9\",\n \"name\": \"Lesson 9\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2018/06/The-Rock.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"three-in-one-preschool-single\",\n \"name\": \"Three in One\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/01/Three-In-One-Preschool.png\",\n \"description\": \"Preschool Lesson on “The Trinity”\",\n \"url\": \"https://highvoltagekids.com/downloads/three-in-one-preschool-single/\",\n \"lessonCount\": 1,\n \"lessons\": [\n {\n \"id\": \"three-in-one-preschool-single-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2024/01/Three-In-One-Preschool.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"blessed-preschool\",\n \"name\": \"Blessed\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2023/10/Blessed-Preschool-1.png\",\n \"description\": \"6 Lessons about God’s blessings\",\n \"url\": \"https://highvoltagekids.com/downloads/blessed-preschool/\",\n \"lessonCount\": 6,\n \"lessons\": [\n {\n \"id\": \"blessed-preschool-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2023/10/Blessed-Preschool-1.png\",\n \"files\": []\n },\n {\n \"id\": \"blessed-preschool-lesson-2\",\n \"name\": \"Lesson 2\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2023/10/Blessed-Preschool-1.png\",\n \"files\": []\n },\n {\n \"id\": \"blessed-preschool-lesson-3\",\n \"name\": \"Lesson 3\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2023/10/Blessed-Preschool-1.png\",\n \"files\": []\n },\n {\n \"id\": \"blessed-preschool-lesson-4\",\n \"name\": \"Lesson 4\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2023/10/Blessed-Preschool-1.png\",\n \"files\": []\n },\n {\n \"id\": \"blessed-preschool-lesson-5\",\n \"name\": \"Lesson 5\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2023/10/Blessed-Preschool-1.png\",\n \"files\": []\n },\n {\n \"id\": \"blessed-preschool-lesson-6\",\n \"name\": \"Lesson 6\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2023/10/Blessed-Preschool-1.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"power-promises-preschool\",\n \"name\": \"Power Promises\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2022/03/Power-Promises-Preschool.png\",\n \"description\": \"6 Lessons from some of God’s most powerful promises\",\n \"url\": \"https://highvoltagekids.com/downloads/power-promises-preschool/\",\n \"lessonCount\": 6,\n \"lessons\": [\n {\n \"id\": \"power-promises-preschool-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2022/03/Power-Promises-Preschool.png\",\n \"files\": []\n },\n {\n \"id\": \"power-promises-preschool-lesson-2\",\n \"name\": \"Lesson 2\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2022/03/Power-Promises-Preschool.png\",\n \"files\": []\n },\n {\n \"id\": \"power-promises-preschool-lesson-3\",\n \"name\": \"Lesson 3\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2022/03/Power-Promises-Preschool.png\",\n \"files\": []\n },\n {\n \"id\": \"power-promises-preschool-lesson-4\",\n \"name\": \"Lesson 4\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2022/03/Power-Promises-Preschool.png\",\n \"files\": []\n },\n {\n \"id\": \"power-promises-preschool-lesson-5\",\n \"name\": \"Lesson 5\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2022/03/Power-Promises-Preschool.png\",\n \"files\": []\n },\n {\n \"id\": \"power-promises-preschool-lesson-6\",\n \"name\": \"Lesson 6\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2022/03/Power-Promises-Preschool.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"im-in-trouble-preschool\",\n \"name\": \"I’m In Trouble\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2022/03/Im-In-Trouble-Preschool-1.png\",\n \"description\": \"8 Lessons About Dealing With Difficulty\",\n \"url\": \"https://highvoltagekids.com/downloads/im-in-trouble-preschool/\",\n \"lessonCount\": 8,\n \"lessons\": [\n {\n \"id\": \"im-in-trouble-preschool-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2022/03/Im-In-Trouble-Preschool-1.png\",\n \"files\": []\n },\n {\n \"id\": \"im-in-trouble-preschool-lesson-2\",\n \"name\": \"Lesson 2\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2022/03/Im-In-Trouble-Preschool-1.png\",\n \"files\": []\n },\n {\n \"id\": \"im-in-trouble-preschool-lesson-3\",\n \"name\": \"Lesson 3\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2022/03/Im-In-Trouble-Preschool-1.png\",\n \"files\": []\n },\n {\n \"id\": \"im-in-trouble-preschool-lesson-4\",\n \"name\": \"Lesson 4\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2022/03/Im-In-Trouble-Preschool-1.png\",\n \"files\": []\n },\n {\n \"id\": \"im-in-trouble-preschool-lesson-5\",\n \"name\": \"Lesson 5\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2022/03/Im-In-Trouble-Preschool-1.png\",\n \"files\": []\n },\n {\n \"id\": \"im-in-trouble-preschool-lesson-6\",\n \"name\": \"Lesson 6\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2022/03/Im-In-Trouble-Preschool-1.png\",\n \"files\": []\n },\n {\n \"id\": \"im-in-trouble-preschool-lesson-7\",\n \"name\": \"Lesson 7\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2022/03/Im-In-Trouble-Preschool-1.png\",\n \"files\": []\n },\n {\n \"id\": \"im-in-trouble-preschool-lesson-8\",\n \"name\": \"Lesson 8\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2022/03/Im-In-Trouble-Preschool-1.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"what-if-preschool-christmas\",\n \"name\": \"What if?\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2023/07/WhatIf-3D-Box-EL.png\",\n \"description\": \"Preschool lesson for Christmas\",\n \"url\": \"https://highvoltagekids.com/downloads/what-if-preschool-christmas/\",\n \"lessonCount\": 1,\n \"lessons\": [\n {\n \"id\": \"what-if-preschool-christmas-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2023/07/WhatIf-3D-Box-EL.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"the-amazing-god-diet-preschool-single\",\n \"name\": \"The Amazing GOD Diet\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2023/07/TAGD-3D-Box-EL.png\",\n \"description\": \"Preschool Lesson on Putting Good Things In Our Lives\",\n \"url\": \"https://highvoltagekids.com/downloads/the-amazing-god-diet-preschool-single/\",\n \"lessonCount\": 1,\n \"lessons\": [\n {\n \"id\": \"the-amazing-god-diet-preschool-single-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2023/07/TAGD-3D-Box-EL.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"ikisc2-preschool\",\n \"name\": \"IKISC2\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2023/05/I-Know-It-Sounds-Crazy-But-Its-True-Vol-2-Preschool.png\",\n \"description\": \"Ten Lessons on the craziest stories in the Bible\",\n \"url\": \"https://highvoltagekids.com/downloads/ikisc2-preschool/\",\n \"lessonCount\": 1,\n \"lessons\": [\n {\n \"id\": \"ikisc2-preschool-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2023/05/I-Know-It-Sounds-Crazy-But-Its-True-Vol-2-Preschool.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"the-missing-piece-preschool-easter\",\n \"name\": \"The Missing Piece\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2023/07/Missing-Piece-3D-Box-EL.png\",\n \"description\": \"Preschool Lesson for EASTER\",\n \"url\": \"https://highvoltagekids.com/downloads/the-missing-piece-preschool-easter/\",\n \"lessonCount\": 1,\n \"lessons\": [\n {\n \"id\": \"the-missing-piece-preschool-easter-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2023/07/Missing-Piece-3D-Box-EL.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"worship-preschool\",\n \"name\": \"Worship\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2022/03/Worship-Preschool-1.png\",\n \"description\": \"3 Lessons On Experiencing God’s Presence\",\n \"url\": \"https://highvoltagekids.com/downloads/worship-preschool/\",\n \"lessonCount\": 3,\n \"lessons\": [\n {\n \"id\": \"worship-preschool-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2022/03/Worship-Preschool-1.png\",\n \"files\": []\n },\n {\n \"id\": \"worship-preschool-lesson-2\",\n \"name\": \"Lesson 2\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2022/03/Worship-Preschool-1.png\",\n \"files\": []\n },\n {\n \"id\": \"worship-preschool-lesson-3\",\n \"name\": \"Lesson 3\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2022/03/Worship-Preschool-1.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"tell-me-a-story-preschool\",\n \"name\": \"Tell Me A Story\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2022/03/Tell-Me-A-Story-Preschool.png\",\n \"description\": \"Preschool: 6 Lessons on the Parables of Jesus\",\n \"url\": \"https://highvoltagekids.com/downloads/tell-me-a-story-preschool/\",\n \"lessonCount\": 6,\n \"lessons\": [\n {\n \"id\": \"tell-me-a-story-preschool-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2022/03/Tell-Me-A-Story-Preschool.png\",\n \"files\": []\n },\n {\n \"id\": \"tell-me-a-story-preschool-lesson-2\",\n \"name\": \"Lesson 2\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2022/03/Tell-Me-A-Story-Preschool.png\",\n \"files\": []\n },\n {\n \"id\": \"tell-me-a-story-preschool-lesson-3\",\n \"name\": \"Lesson 3\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2022/03/Tell-Me-A-Story-Preschool.png\",\n \"files\": []\n },\n {\n \"id\": \"tell-me-a-story-preschool-lesson-4\",\n \"name\": \"Lesson 4\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2022/03/Tell-Me-A-Story-Preschool.png\",\n \"files\": []\n },\n {\n \"id\": \"tell-me-a-story-preschool-lesson-5\",\n \"name\": \"Lesson 5\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2022/03/Tell-Me-A-Story-Preschool.png\",\n \"files\": []\n },\n {\n \"id\": \"tell-me-a-story-preschool-lesson-6\",\n \"name\": \"Lesson 6\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2022/03/Tell-Me-A-Story-Preschool.png\",\n \"files\": []\n }\n ]\n },\n {\n \"id\": \"tell-me-a-story-preschool-bonus\",\n \"name\": \"Tell Me A Story\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2022/03/Tell-Me-A-Story-Preschool.png\",\n \"description\": \"Preschool Curriculum Bonus\",\n \"url\": \"https://highvoltagekids.com/downloads/tell-me-a-story-preschool-bonus/\",\n \"lessonCount\": 1,\n \"lessons\": [\n {\n \"id\": \"tell-me-a-story-preschool-bonus-lesson-1\",\n \"name\": \"Lesson 1\",\n \"image\": \"https://highvoltagekids.com/wp-content/uploads/2022/03/Tell-Me-A-Story-Preschool.png\",\n \"files\": []\n }\n ]\n }\n ]\n }\n ]\n}","import { ContentItem, ContentFile, Plan, PlanSection, PlanPresentation } from \"../../interfaces\";\r\nimport { createFile, slugify } from \"../../utils\";\r\nimport { HighVoltageData, LessonFolder, StudyFolder } from \"./HighVoltageKidsInterfaces\";\r\n\r\nexport function getCollections(data: HighVoltageData): ContentItem[] {\r\n return data.collections\r\n .filter(collection => collection.folders.length > 0)\r\n .map(collection => ({\r\n type: \"folder\" as const,\r\n id: slugify(collection.name),\r\n title: collection.name,\r\n path: `/${slugify(collection.name)}`\r\n }));\r\n}\r\n\r\nexport function getStudyFolders(data: HighVoltageData, collectionSlug: string, currentPath: string): ContentItem[] {\r\n const collection = data.collections.find(c => slugify(c.name) === collectionSlug);\r\n if (!collection) return [];\r\n\r\n return collection.folders.map(study => ({\r\n type: \"folder\" as const,\r\n id: study.id,\r\n title: study.name,\r\n thumbnail: study.image || undefined,\r\n path: `${currentPath}/${study.id}`\r\n }));\r\n}\r\n\r\nexport function getLessonFolders(data: HighVoltageData, collectionSlug: string, studyId: string, currentPath: string): ContentItem[] {\r\n const collection = data.collections.find(c => slugify(c.name) === collectionSlug);\r\n if (!collection) return [];\r\n\r\n const study = collection.folders.find(s => s.id === studyId);\r\n if (!study) return [];\r\n\r\n return study.lessons.map(lesson => ({\r\n type: \"folder\" as const,\r\n id: lesson.id,\r\n title: lesson.name,\r\n thumbnail: lesson.image || undefined,\r\n isLeaf: true,\r\n path: `${currentPath}/${lesson.id}`\r\n }));\r\n}\r\n\r\nexport function getLessonFiles(data: HighVoltageData, collectionSlug: string, studyId: string, lessonId: string): ContentItem[] {\r\n const collection = data.collections.find(c => slugify(c.name) === collectionSlug);\r\n if (!collection) return [];\r\n\r\n const study = collection.folders.find(s => s.id === studyId);\r\n if (!study) return [];\r\n\r\n const lesson = study.lessons.find(l => l.id === lessonId);\r\n if (!lesson?.files) return [];\r\n\r\n return lesson.files.map(file => createFile(file.id, file.title, file.url, { mediaType: file.mediaType as \"video\" | \"image\" }));\r\n}\r\n\r\nexport function findStudy(data: HighVoltageData, collectionSlug: string, studyId: string): StudyFolder | null {\r\n const collection = data.collections.find(c => slugify(c.name) === collectionSlug);\r\n if (!collection) return null;\r\n\r\n const study = collection.folders.find(s => s.id === studyId);\r\n return study || null;\r\n}\r\n\r\nexport function findLesson(data: HighVoltageData, collectionSlug: string, studyId: string, lessonId: string): LessonFolder | null {\r\n const study = findStudy(data, collectionSlug, studyId);\r\n if (!study) return null;\r\n\r\n const lesson = study.lessons.find(l => l.id === lessonId);\r\n return lesson || null;\r\n}\r\n\r\nexport function buildStudyPlan(study: StudyFolder): Plan {\r\n const allFiles: ContentFile[] = [];\r\n const sections: PlanSection[] = study.lessons.map(lesson => {\r\n const files: ContentFile[] = lesson.files.map(file => {\r\n const contentFile: ContentFile = { type: \"file\", id: file.id, title: file.title, mediaType: file.mediaType as \"video\" | \"image\", url: file.url, thumbnail: lesson.image };\r\n allFiles.push(contentFile);\r\n return contentFile;\r\n });\r\n const presentation: PlanPresentation = { id: lesson.id, name: lesson.name, actionType: \"play\", files };\r\n return { id: lesson.id, name: lesson.name, presentations: [presentation] };\r\n });\r\n\r\n return { id: study.id, name: study.name, thumbnail: study.image, sections, allFiles };\r\n}\r\n\r\nexport function buildLessonPlan(lesson: LessonFolder): Plan {\r\n const files: ContentFile[] = lesson.files.map(file => ({ type: \"file\" as const, id: file.id, title: file.title, mediaType: file.mediaType as \"video\" | \"image\", url: file.url, thumbnail: lesson.image }));\r\n const presentation: PlanPresentation = { id: lesson.id, name: lesson.name, actionType: \"play\", files };\r\n return { id: lesson.id, name: lesson.name, thumbnail: lesson.image, sections: [{ id: \"main\", name: \"Content\", presentations: [presentation] }], allFiles: files };\r\n}\r\n\r\nexport function buildStudyPlaylist(study: StudyFolder): ContentFile[] {\r\n const allFiles: ContentFile[] = [];\r\n for (const lesson of study.lessons) {\r\n for (const file of lesson.files) {\r\n allFiles.push({ type: \"file\", id: file.id, title: file.title, mediaType: file.mediaType as \"video\" | \"image\", url: file.url, thumbnail: lesson.image });\r\n }\r\n }\r\n return allFiles;\r\n}\r\n\r\nexport function buildLessonPlaylist(lesson: LessonFolder): ContentFile[] {\r\n return lesson.files.map(file => ({ type: \"file\" as const, id: file.id, title: file.title, mediaType: file.mediaType as \"video\" | \"image\", url: file.url, thumbnail: lesson.image }));\r\n}\r\n","import { Instructions, InstructionItem } from \"../../interfaces\";\r\nimport { estimateDuration } from \"../../durationUtils\";\r\nimport { LessonFileJson, LessonFolder, StudyFolder } from \"./HighVoltageKidsInterfaces\";\r\n\r\n/**\r\n * Get the base name from a title by removing trailing numbers\r\n * e.g., \"Call to Action - Point 1\" -> \"Call to Action - Point\"\r\n */\r\nfunction getBaseName(title: string): string {\r\n const match = title.match(/^(.+?)\\s*\\d+$/);\r\n return match ? match[1].trim() : title;\r\n}\r\n\r\n/**\r\n * Group consecutive files with the same base name into actions\r\n */\r\nexport function groupFilesIntoActions(files: LessonFileJson[], thumbnail?: string): InstructionItem[] {\r\n const actionItems: InstructionItem[] = [];\r\n let currentGroup: LessonFileJson[] = [];\r\n let currentBaseName: string | null = null;\r\n\r\n const flushGroup = () => {\r\n if (currentGroup.length === 0) return;\r\n const children: InstructionItem[] = currentGroup.map(file => {\r\n const seconds = estimateDuration(file.mediaType as \"video\" | \"image\");\r\n return {\r\n id: file.id,\r\n itemType: \"file\" as const,\r\n label: file.title,\r\n seconds,\r\n downloadUrl: file.url,\r\n thumbnail\r\n };\r\n });\r\n // Use base name as label only if multiple files were grouped\r\n const label = (currentGroup.length > 1 && currentBaseName) ? currentBaseName : currentGroup[0].title;\r\n actionItems.push({\r\n id: currentGroup[0].id + \"-action\",\r\n itemType: \"action\",\r\n label,\r\n actionType: \"play\",\r\n children\r\n });\r\n currentGroup = [];\r\n currentBaseName = null;\r\n };\r\n\r\n for (const file of files) {\r\n const baseName = getBaseName(file.title);\r\n const isNumbered = baseName !== file.title;\r\n\r\n if (isNumbered && baseName === currentBaseName) {\r\n // Continue the current group\r\n currentGroup.push(file);\r\n } else {\r\n // Flush previous group and start a new one\r\n flushGroup();\r\n currentGroup = [file];\r\n currentBaseName = isNumbered ? baseName : null;\r\n }\r\n }\r\n flushGroup();\r\n\r\n return actionItems;\r\n}\r\n\r\nexport function buildStudyInstructions(study: StudyFolder): Instructions {\r\n const lessonItems: InstructionItem[] = study.lessons.map(lesson => {\r\n const fileItems: InstructionItem[] = lesson.files.map(file => {\r\n const seconds = estimateDuration(file.mediaType as \"video\" | \"image\");\r\n return { id: file.id, itemType: \"file\", label: file.title, seconds, downloadUrl: file.url, thumbnail: lesson.image };\r\n });\r\n return { id: lesson.id, itemType: \"action\", label: lesson.name, actionType: \"play\", children: fileItems };\r\n });\r\n\r\n return { name: study.name, items: [{ id: \"main\", itemType: \"section\", label: \"Content\", children: lessonItems }] };\r\n}\r\n\r\nexport function buildLessonInstructions(lesson: LessonFolder): Instructions {\r\n const actionItems = groupFilesIntoActions(lesson.files, lesson.image);\r\n return { name: lesson.name, items: [{ id: \"main\", itemType: \"section\", label: lesson.name, children: actionItems }] };\r\n}\r\n","import { ContentProviderConfig, ContentProviderAuthData, ContentItem, ContentFile, ProviderLogos, ProviderCapabilities, Instructions, IProvider, AuthType } from \"../../interfaces\";\r\nimport { parsePath } from \"../../pathUtils\";\r\nimport highVoltageData from \"./data.json\";\r\nimport { HighVoltageData } from \"./HighVoltageKidsInterfaces\";\r\nimport { getCollections, getStudyFolders, getLessonFolders, getLessonFiles, findStudy, findLesson, buildStudyPlaylist, buildLessonPlaylist } from \"./HighVoltageConverters\";\r\nimport { buildStudyInstructions, buildLessonInstructions } from \"./HighVoltageInstructions\";\r\n\r\n/**\r\n * HighVoltageKids Provider\r\n *\r\n * Path structure:\r\n * / -> list collections (Elementary, Preschool)\r\n * /{collectionSlug} -> list studies\r\n * /{collectionSlug}/{studyId} -> list lessons\r\n * /{collectionSlug}/{studyId}/{lessonId} -> lesson files (leaf)\r\n */\r\nexport class HighVoltageKidsProvider implements IProvider {\r\n readonly id = \"highvoltagekids\";\r\n readonly name = \"High Voltage Kids\";\r\n\r\n readonly logos: ProviderLogos = {\r\n light: \"https://highvoltagekids.com/wp-content/uploads/2023/10/logo-300x300-1.webp\",\r\n dark: \"https://highvoltagekids.com/wp-content/uploads/2023/10/logo-300x300-1.webp\"\r\n };\r\n\r\n readonly config: ContentProviderConfig = {\r\n id: \"highvoltagekids\",\r\n name: \"High Voltage Kids\",\r\n apiBase: \"https://highvoltagekids.com\",\r\n oauthBase: \"\",\r\n clientId: \"\",\r\n scopes: [],\r\n endpoints: { downloads: \"/membership-downloads/\" }\r\n };\r\n\r\n private data: HighVoltageData = highVoltageData;\r\n\r\n readonly requiresAuth = false;\r\n readonly authTypes: AuthType[] = [\"none\"];\r\n readonly capabilities: ProviderCapabilities = {\r\n browse: true,\r\n presentations: true,\r\n playlist: true,\r\n instructions: true,\r\n mediaLicensing: false\r\n };\r\n\r\n async browse(path?: string | null, _auth?: ContentProviderAuthData | null): Promise<ContentItem[]> {\r\n const { segments, depth } = parsePath(path);\r\n\r\n if (depth === 0) return getCollections(this.data);\r\n if (depth === 1) return getStudyFolders(this.data, segments[0], path!);\r\n if (depth === 2) return getLessonFolders(this.data, segments[0], segments[1], path!);\r\n if (depth === 3) return getLessonFiles(this.data, segments[0], segments[1], segments[2]);\r\n\r\n return [];\r\n }\r\n\r\n // async getPresentations(path: string, _auth?: ContentProviderAuthData | null): Promise<Plan | null> {\r\n // const { segments, depth } = parsePath(path);\r\n\r\n // if (depth < 2) return null;\r\n\r\n // const study = findStudy(this.data, segments[0], segments[1]);\r\n // if (!study) return null;\r\n\r\n // if (depth === 2) return buildStudyPlan(study);\r\n\r\n // if (depth === 3) {\r\n // const lesson = findLesson(this.data, segments[0], segments[1], segments[2]);\r\n // if (!lesson) return null;\r\n // return buildLessonPlan(lesson);\r\n // }\r\n\r\n // return null;\r\n // }\r\n\r\n async getPlaylist(path: string, _auth?: ContentProviderAuthData | null, _resolution?: number): Promise<ContentFile[] | null> {\r\n const { segments, depth } = parsePath(path);\r\n\r\n if (depth < 2) return null;\r\n\r\n const study = findStudy(this.data, segments[0], segments[1]);\r\n if (!study) return null;\r\n\r\n if (depth === 2) {\r\n const files = buildStudyPlaylist(study);\r\n return files.length > 0 ? files : null;\r\n }\r\n\r\n if (depth === 3) {\r\n const lesson = findLesson(this.data, segments[0], segments[1], segments[2]);\r\n if (!lesson) return null;\r\n const files = buildLessonPlaylist(lesson);\r\n return files.length > 0 ? files : null;\r\n }\r\n\r\n return null;\r\n }\r\n\r\n async getInstructions(path: string, _auth?: ContentProviderAuthData | null): Promise<Instructions | null> {\r\n const { segments, depth } = parsePath(path);\r\n\r\n if (depth < 2) return null;\r\n\r\n const study = findStudy(this.data, segments[0], segments[1]);\r\n if (!study) return null;\r\n\r\n if (depth === 2) return buildStudyInstructions(study);\r\n\r\n if (depth === 3) {\r\n const lesson = findLesson(this.data, segments[0], segments[1], segments[2]);\r\n if (!lesson) return null;\r\n return buildLessonInstructions(lesson);\r\n }\r\n\r\n return null;\r\n }\r\n\r\n supportsDeviceFlow(): boolean {\r\n return false;\r\n }\r\n}\r\n","import { ContentProviderConfig, ContentProviderAuthData, ContentItem, ContentFile, ProviderLogos, ProviderCapabilities, IProvider, AuthType, Instructions, InstructionItem } from \"../../interfaces\";\r\nimport { createFile, createFolder } from \"../../utils\";\r\nimport { parsePath } from \"../../pathUtils\";\r\nimport type { ArclightMediaListResponse, ArclightLanguageVariant, ArclightMediaComponent } from \"./JesusFilmInterfaces\";\r\n\r\nconst API_BASE = \"https://api.arclight.org/v2\";\r\nconst API_KEY = \"616db012e9a951.51499299\";\r\nconst LANGUAGE_ID = \"529\"; // English\r\n\r\nconst CATEGORY_MAP: Record<string, string> = {\r\n \"feature-films\": \"featureFilm\",\r\n \"series\": \"series\",\r\n \"collections\": \"collection\"\r\n};\r\n\r\n/**\r\n * Jesus Film Project Provider\r\n *\r\n * Uses the public Arclight API to browse video content from jesusfilm.org.\r\n *\r\n * Path structure:\r\n * / -> categories (Feature Films, Series, Collections)\r\n * /{category} -> list items in category\r\n * /{category}/{mediaComponentId} -> single video file\r\n */\r\nexport class JesusFilmProvider implements IProvider {\r\n readonly id = \"jesusfilm\";\r\n readonly name = \"Jesus Film Project\";\r\n\r\n readonly logos: ProviderLogos = {\r\n light: \"https://www.jesusfilm.org/wp-content/uploads/2022/11/jfp-logo-red.png\",\r\n dark: \"https://www.jesusfilm.org/wp-content/uploads/2022/11/jfp-logo-red.png\"\r\n };\r\n\r\n readonly config: ContentProviderConfig = {\r\n id: \"jesusfilm\",\r\n name: \"Jesus Film Project\",\r\n apiBase: API_BASE,\r\n oauthBase: \"\",\r\n clientId: \"\",\r\n scopes: [],\r\n endpoints: { watch: \"/watch\" }\r\n };\r\n\r\n readonly requiresAuth = false;\r\n readonly authTypes: AuthType[] = [\"none\"];\r\n readonly capabilities: ProviderCapabilities = {\r\n browse: true,\r\n presentations: true,\r\n playlist: true,\r\n instructions: true,\r\n mediaLicensing: false\r\n };\r\n\r\n private async fetchApi<T>(path: string): Promise<T> {\r\n const separator = path.includes(\"?\") ? \"&\" : \"?\";\r\n const url = `${API_BASE}${path}${separator}apiKey=${API_KEY}`;\r\n const response = await fetch(url);\r\n if (!response.ok) throw new Error(`Arclight API error: ${response.status}`);\r\n return response.json() as Promise<T>;\r\n }\r\n\r\n async browse(path?: string | null, _auth?: ContentProviderAuthData | null): Promise<ContentItem[]> {\r\n const { segments, depth } = parsePath(path);\r\n\r\n if (depth === 0) return this.getCategories();\r\n if (depth === 1) return this.getItemsInCategory(segments[0]);\r\n if (depth === 2) return this.getVideoFile(segments[1]);\r\n\r\n return [];\r\n }\r\n\r\n private getCategories(): ContentItem[] {\r\n return [\r\n createFolder(\"feature-films\", \"Feature Films\", \"/feature-films\"),\r\n createFolder(\"series\", \"Series\", \"/series\"),\r\n createFolder(\"collections\", \"Collections\", \"/collections\")\r\n ];\r\n }\r\n\r\n private async getItemsInCategory(category: string): Promise<ContentItem[]> {\r\n const subType = CATEGORY_MAP[category];\r\n if (!subType) return [];\r\n\r\n const data = await this.fetchApi<ArclightMediaListResponse>(\r\n `/media-components?filter=master&subTypes=${subType}&languageIds=${LANGUAGE_ID}&limit=100`\r\n );\r\n\r\n return data._embedded.mediaComponents.map(item => createFolder(\r\n item.mediaComponentId,\r\n item.title,\r\n `/${category}/${item.mediaComponentId}`,\r\n item.imageUrls.mobileCinematicHigh || item.imageUrls.videoStill || item.imageUrls.thumbnail,\r\n true\r\n ));\r\n }\r\n\r\n private async getVideoFile(mediaComponentId: string): Promise<ContentItem[]> {\r\n const variant = await this.fetchApi<ArclightLanguageVariant>(\r\n `/media-components/${mediaComponentId}/languages/${LANGUAGE_ID}?platform=web`\r\n );\r\n\r\n const downloadUrl = variant.downloadUrls.high?.url || variant.downloadUrls.low?.url;\r\n if (!downloadUrl) return [];\r\n\r\n // Also fetch the media component metadata for title and duration\r\n const components = await this.fetchApi<ArclightMediaListResponse>(\r\n `/media-components?ids=${mediaComponentId}&languageIds=${LANGUAGE_ID}`\r\n );\r\n const component = components._embedded?.mediaComponents?.[0];\r\n const title = component?.title || mediaComponentId;\r\n const seconds = component ? Math.round(component.lengthInMilliseconds / 1000) : 0;\r\n const thumbnail = component?.imageUrls.mobileCinematicHigh || component?.imageUrls.videoStill;\r\n\r\n const muxPlaybackId = this.extractMuxPlaybackId(downloadUrl);\r\n\r\n return [\r\n createFile(mediaComponentId, title, downloadUrl, {\r\n mediaType: \"video\",\r\n muxPlaybackId,\r\n seconds,\r\n thumbnail\r\n })\r\n ];\r\n }\r\n\r\n private extractMuxPlaybackId(url: string): string | undefined {\r\n const match = url.match(/stream\\.mux\\.com\\/([^/]+)/);\r\n return match ? match[1] : undefined;\r\n }\r\n\r\n async getPlaylist(path: string, _auth?: ContentProviderAuthData | null, _resolution?: number): Promise<ContentFile[] | null> {\r\n const { segments, depth } = parsePath(path);\r\n if (depth < 1) return null;\r\n\r\n if (depth === 2) {\r\n const items = await this.getVideoFile(segments[1]);\r\n if (items.length === 0) return null;\r\n return items.filter((item): item is ContentFile => item.type === \"file\");\r\n }\r\n\r\n // Depth 1: return all items in category as playlist\r\n const category = segments[0];\r\n const subType = CATEGORY_MAP[category];\r\n if (!subType) return null;\r\n\r\n const data = await this.fetchApi<ArclightMediaListResponse>(\r\n `/media-components?filter=master&subTypes=${subType}&languageIds=${LANGUAGE_ID}&limit=100`\r\n );\r\n\r\n const files = await this.fetchVideoFiles(data._embedded.mediaComponents);\r\n return files.length > 0 ? files : null;\r\n }\r\n\r\n private async fetchVideoFiles(components: ArclightMediaComponent[]): Promise<ContentFile[]> {\r\n const files: ContentFile[] = [];\r\n\r\n for (const component of components) {\r\n try {\r\n const variant = await this.fetchApi<ArclightLanguageVariant>(\r\n `/media-components/${component.mediaComponentId}/languages/${LANGUAGE_ID}?platform=web`\r\n );\r\n const url = variant.downloadUrls.high?.url || variant.downloadUrls.low?.url;\r\n if (!url) continue;\r\n\r\n files.push({\r\n type: \"file\",\r\n id: component.mediaComponentId,\r\n title: component.title,\r\n mediaType: \"video\",\r\n url,\r\n thumbnail: component.imageUrls.mobileCinematicHigh || component.imageUrls.videoStill,\r\n muxPlaybackId: this.extractMuxPlaybackId(url),\r\n seconds: Math.round(component.lengthInMilliseconds / 1000)\r\n });\r\n } catch {\r\n // Skip items that fail to resolve\r\n }\r\n }\r\n\r\n return files;\r\n }\r\n\r\n async getInstructions(path: string, _auth?: ContentProviderAuthData | null): Promise<Instructions | null> {\r\n const { segments, depth } = parsePath(path);\r\n if (depth < 1) return null;\r\n\r\n const category = segments[0];\r\n const subType = CATEGORY_MAP[category];\r\n if (!subType) return null;\r\n\r\n if (depth === 1) {\r\n const data = await this.fetchApi<ArclightMediaListResponse>(\r\n `/media-components?filter=master&subTypes=${subType}&languageIds=${LANGUAGE_ID}&limit=100`\r\n );\r\n\r\n const categoryName = category === \"feature-films\" ? \"Feature Films\" : category === \"series\" ? \"Series\" : \"Collections\";\r\n\r\n const actionItems: InstructionItem[] = await Promise.all(\r\n data._embedded.mediaComponents.map(async (component) => {\r\n let downloadUrl: string | undefined;\r\n try {\r\n const variant = await this.fetchApi<ArclightLanguageVariant>(\r\n `/media-components/${component.mediaComponentId}/languages/${LANGUAGE_ID}?platform=web`\r\n );\r\n downloadUrl = variant.downloadUrls.high?.url || variant.downloadUrls.low?.url;\r\n } catch {\r\n // Skip\r\n }\r\n\r\n return {\r\n id: component.mediaComponentId + \"-action\",\r\n itemType: \"action\",\r\n label: component.title,\r\n actionType: \"play\",\r\n children: downloadUrl ? [\r\n {\r\n id: component.mediaComponentId,\r\n itemType: \"file\",\r\n label: component.title,\r\n downloadUrl,\r\n thumbnail: component.imageUrls.mobileCinematicHigh || component.imageUrls.videoStill\r\n }\r\n ] : []\r\n } satisfies InstructionItem;\r\n })\r\n );\r\n\r\n const sectionItem: InstructionItem = {\r\n id: category + \"-section\",\r\n itemType: \"section\",\r\n label: categoryName,\r\n children: actionItems.filter(a => a.children && a.children.length > 0)\r\n };\r\n\r\n return { name: categoryName, items: [sectionItem] };\r\n }\r\n\r\n if (depth === 2) {\r\n const mediaComponentId = segments[1];\r\n const items = await this.getVideoFile(mediaComponentId);\r\n if (items.length === 0) return null;\r\n\r\n const file = items[0];\r\n if (file.type !== \"file\") return null;\r\n\r\n const actionItem: InstructionItem = {\r\n id: mediaComponentId + \"-action\",\r\n itemType: \"action\",\r\n label: file.title,\r\n actionType: \"play\",\r\n children: [\r\n {\r\n id: mediaComponentId,\r\n itemType: \"file\",\r\n label: file.title,\r\n downloadUrl: file.url,\r\n thumbnail: file.thumbnail\r\n }\r\n ]\r\n };\r\n\r\n const sectionItem: InstructionItem = {\r\n id: category + \"-section\",\r\n itemType: \"section\",\r\n label: file.title,\r\n children: [actionItem]\r\n };\r\n\r\n return { name: file.title, items: [sectionItem] };\r\n }\r\n\r\n return null;\r\n }\r\n\r\n supportsDeviceFlow(): boolean {\r\n return false;\r\n }\r\n}\r\n","import { ProviderInfo, ProviderLogos, IProvider } from \"../interfaces\";\r\nimport { APlayProvider } from \"./aPlay\";\r\nimport { B1ChurchProvider } from \"./b1Church\";\r\nimport { DropboxProvider } from \"./dropbox\";\r\nimport { BibleProjectProvider } from \"./bibleProject\";\r\nimport { HighVoltageKidsProvider } from \"./highVoltage\";\r\nimport { LessonsChurchProvider } from \"./lessonsChurch\";\r\nimport { PlanningCenterProvider } from \"./planningCenter\";\r\nimport { SignPresenterProvider } from \"./signPresenter\";\r\nimport { JesusFilmProvider } from \"./jesusFilm\";\r\n\r\nexport { APlayProvider } from \"./aPlay\";\r\nexport { B1ChurchProvider } from \"./b1Church\";\r\nexport { DropboxProvider } from \"./dropbox\";\r\nexport { BibleProjectProvider } from \"./bibleProject\";\r\nexport { HighVoltageKidsProvider } from \"./highVoltage\";\r\nexport { JesusFilmProvider } from \"./jesusFilm\";\r\nexport { LessonsChurchProvider } from \"./lessonsChurch\";\r\nexport { PlanningCenterProvider } from \"./planningCenter\";\r\nexport { SignPresenterProvider } from \"./signPresenter\";\r\n\r\n// Provider registry - singleton instances\r\nconst providerRegistry: Map<string, IProvider> = new Map();\r\n\r\n// Unimplemented providers (coming soon)\r\ninterface UnimplementedProvider {\r\n id: string;\r\n name: string;\r\n logos: ProviderLogos;\r\n}\r\n\r\nconst unimplementedProviders: UnimplementedProvider[] = [\r\n {\r\n id: \"awana\",\r\n name: \"Awana\",\r\n logos: {\r\n light: \"https://www.awana.org/wp-content/uploads/2025/04/awana-logo-black.svg\",\r\n dark: \"https://www.awana.org/wp-content/uploads/2025/04/awana-logo-white.svg\"\r\n }\r\n },\r\n {\r\n id: \"freeshow\",\r\n name: \"FreeShow\",\r\n logos: {\r\n light: \"https://freeshow.app/images/favicon.png\",\r\n dark: \"https://freeshow.app/images/favicon.png\"\r\n }\r\n },\r\n {\r\n id: \"gocurriculum\",\r\n name: \"Go Curriculum\",\r\n logos: {\r\n light: \"https://gocurriculum.com/wp-content/uploads/go-logo-curriculum-v2.png\",\r\n dark: \"https://gocurriculum.com/wp-content/uploads/go-logo-curriculum-v2.png\"\r\n }\r\n },\r\n {\r\n id: \"iteachchurch\",\r\n name: \"iTeachChurch\",\r\n logos: {\r\n light: \"https://iteachchurch.com/wp-content/uploads/2022/05/iTeachChurch_Artboard-1-copy-3@2x.png\",\r\n dark: \"https://iteachchurch.com/wp-content/uploads/2022/05/iTeachChurch_Artboard-1-copy-3@2x.png\"\r\n }\r\n },\r\n {\r\n id: \"lifechurch\",\r\n name: \"LifeChurch\",\r\n logos: {\r\n light: \"https://cdn.brandfetch.io/idRrA6pM45/w/400/h/400/theme/dark/icon.jpeg?c=1bxid64Mup7aczewSAYMX&t=1668042253613\",\r\n dark: \"https://cdn.brandfetch.io/idRrA6pM45/w/400/h/400/theme/dark/icon.jpeg?c=1bxid64Mup7aczewSAYMX&t=1668042253613\"\r\n }\r\n },\r\n {\r\n id: \"ministrystuff\",\r\n name: \"MinistryStuff\",\r\n logos: {\r\n light: \"\",\r\n dark: \"\"\r\n }\r\n }\r\n];\r\n\r\n// Register built-in providers\r\nfunction initializeProviders() {\r\n const aplay = new APlayProvider();\r\n const b1Church = new B1ChurchProvider();\r\n const dropbox = new DropboxProvider();\r\n const bibleProject = new BibleProjectProvider();\r\n const highVoltageKids = new HighVoltageKidsProvider();\r\n const lessonsChurch = new LessonsChurchProvider();\r\n const planningCenter = new PlanningCenterProvider();\r\n const signPresenter = new SignPresenterProvider();\r\n const jesusFilm = new JesusFilmProvider();\r\n\r\n providerRegistry.set(aplay.id, aplay);\r\n providerRegistry.set(b1Church.id, b1Church);\r\n providerRegistry.set(dropbox.id, dropbox);\r\n providerRegistry.set(bibleProject.id, bibleProject);\r\n providerRegistry.set(highVoltageKids.id, highVoltageKids);\r\n providerRegistry.set(jesusFilm.id, jesusFilm);\r\n providerRegistry.set(lessonsChurch.id, lessonsChurch);\r\n providerRegistry.set(planningCenter.id, planningCenter);\r\n providerRegistry.set(signPresenter.id, signPresenter);\r\n}\r\n\r\n// Initialize on module load\r\ninitializeProviders();\r\n\r\n/**\r\n * Get a provider by ID.\r\n */\r\nexport function getProvider(providerId: string): IProvider | null {\r\n return providerRegistry.get(providerId) || null;\r\n}\r\n\r\n/**\r\n * Get all registered providers.\r\n */\r\nexport function getAllProviders(): IProvider[] {\r\n return Array.from(providerRegistry.values());\r\n}\r\n\r\n/**\r\n * Register a custom provider.\r\n */\r\nexport function registerProvider(provider: IProvider): void {\r\n providerRegistry.set(provider.id, provider);\r\n}\r\n\r\n/**\r\n * Get provider configuration by ID (for backward compatibility).\r\n */\r\nexport function getProviderConfig(providerId: string) {\r\n const provider = getProvider(providerId);\r\n return provider?.config || null;\r\n}\r\n\r\n/**\r\n * Get list of available providers with their info including logos and auth types.\r\n * Includes both implemented providers and coming soon providers.\r\n * @param ids - Optional array of provider IDs to filter the results. If provided, only providers with matching IDs will be returned.\r\n */\r\nexport function getAvailableProviders(ids?: string[]): ProviderInfo[] {\r\n // Implemented providers\r\n const implemented: ProviderInfo[] = getAllProviders().map((provider) => ({\r\n id: provider.id,\r\n name: provider.name,\r\n logos: provider.logos,\r\n implemented: true,\r\n requiresAuth: provider.requiresAuth,\r\n authTypes: provider.authTypes,\r\n capabilities: provider.capabilities\r\n }));\r\n\r\n // Coming soon providers\r\n const comingSoon: ProviderInfo[] = unimplementedProviders.map((p) => ({\r\n id: p.id,\r\n name: p.name,\r\n logos: p.logos,\r\n implemented: false,\r\n requiresAuth: false,\r\n authTypes: [],\r\n capabilities: { browse: false, presentations: false, playlist: false, instructions: false, mediaLicensing: false }\r\n }));\r\n\r\n const all = [...implemented, ...comingSoon];\r\n\r\n // Filter by IDs if provided\r\n if (ids && ids.length > 0) {\r\n const idSet = new Set(ids);\r\n return all.filter((provider) => idSet.has(provider.id));\r\n }\r\n\r\n return all;\r\n}\r\n","/**\r\n * @churchapps/content-provider-helper\r\n * Helper classes for interacting with third party content providers\r\n */\r\n\r\nexport const VERSION = \"0.0.5\";\r\n\r\n// Interfaces\r\nexport * from \"./interfaces\";\r\n\r\n// Utilities\r\nexport { detectMediaType, createFolder, createFile } from \"./utils\";\r\nexport { parsePath, getSegment, buildPath, appendToPath } from \"./pathUtils\";\r\nexport { navigateToPath, generatePath } from \"./instructionPathUtils\";\r\nexport {\r\n estimateDuration,\r\n estimateImageDuration,\r\n estimateTextDuration,\r\n countWords,\r\n DEFAULT_DURATION_CONFIG,\r\n type DurationEstimationConfig\r\n} from \"./durationUtils\";\r\n\r\n// Format conversion utilities (access via FormatConverters namespace)\r\nexport * as FormatConverters from \"./FormatConverters\";\r\n\r\n// Format resolver\r\nexport { FormatResolver, type FormatResolverOptions, type ResolvedFormatMeta } from \"./FormatResolver\";\r\n\r\n// Helper classes (for standalone use or custom providers)\r\nexport { OAuthHelper, TokenHelper, DeviceFlowHelper, ApiHelper } from \"./helpers\";\r\n\r\n// Built-in providers\r\nexport { APlayProvider } from \"./providers/aPlay\";\r\nexport { SignPresenterProvider } from \"./providers/signPresenter\";\r\nexport { LessonsChurchProvider } from \"./providers/lessonsChurch\";\r\nexport { B1ChurchProvider } from \"./providers/b1Church\";\r\nexport { DropboxProvider } from \"./providers/dropbox\";\r\nexport { PlanningCenterProvider } from \"./providers/planningCenter\";\r\nexport { BibleProjectProvider } from \"./providers/bibleProject\";\r\nexport { HighVoltageKidsProvider } from \"./providers/highVoltage\";\r\nexport { JesusFilmProvider } from \"./providers/jesusFilm\";\r\n\r\n// Registry functions\r\nexport {\r\n getProvider,\r\n getAllProviders,\r\n registerProvider,\r\n getProviderConfig,\r\n getAvailableProviders\r\n} from \"./providers\";\r\n"],"mappings":"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","names":["API_BASE","API_BASE","API_BASE","API_BASE","API_BASE","API_BASE","buildSectionActionsMap","API_BASE","buildSectionActionsMap","data_default","data_default","API_BASE"]}