{"version":3,"file":"js/application-1f14ea9bef20ebf1d61b.js","mappings":"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","sources":["webpack://hopper/./app/javascript/components/ sync ^\\.\\/.*$","webpack://hopper/./app/javascript/components/academies/AcademyCourseCategoryEdit.tsx","webpack://hopper/./app/javascript/components/academies/AcademyCourseCategoryListEdit.tsx","webpack://hopper/./app/javascript/components/academies/AcademyCourseEdit.tsx","webpack://hopper/./app/javascript/components/academies/AcademyCourseIcon.tsx","webpack://hopper/./app/javascript/components/academies/AcademyCourseIconChooser.tsx","webpack://hopper/./app/javascript/components/academies/AcademyCourseLessonListEdit.tsx","webpack://hopper/./app/javascript/components/academies/AcademyCourseLessonTextEdit.tsx","webpack://hopper/./app/javascript/components/academies/AcademyCourseListEdit.tsx","webpack://hopper/./app/javascript/components/academies/AcademyLogoEdit.tsx","webpack://hopper/./app/javascript/components/academies/AcademyShareMenu.tsx","webpack://hopper/./app/javascript/components/academies/AcademyShareModal.tsx","webpack://hopper/./app/javascript/components/academies/AddAcademyCourseLessonButton.tsx","webpack://hopper/./app/javascript/components/academies/ChangeAcademyCourseCategoryStateSwitch.tsx","webpack://hopper/./app/javascript/components/academies/ChangeAcademyCourseStateSwitch.tsx","webpack://hopper/./app/javascript/components/academies/CreateAcademyCourseCategoryModal.tsx","webpack://hopper/./app/javascript/components/academies/CreateAcademyCourseModal.tsx","webpack://hopper/./app/javascript/components/common/DurationText.tsx","webpack://hopper/./app/javascript/components/common/FolderSelectorModal.tsx","webpack://hopper/./app/javascript/components/common/LinkCopyButton.tsx","webpack://hopper/./app/javascript/components/common/ReactTooltipWrapper.tsx","webpack://hopper/./app/javascript/components/common/SaveButton.tsx","webpack://hopper/./app/javascript/components/common/TimeMsInput.tsx","webpack://hopper/./app/javascript/components/common/VideoSelectorModal.tsx","webpack://hopper/./app/javascript/components/common/editor/RichTextEditor.tsx","webpack://hopper/./app/javascript/components/common/editor/TimestampLinkPlugin.ts","webpack://hopper/./app/javascript/components/common/exam/AnswerFeedback.tsx","webpack://hopper/./app/javascript/components/common/exam/CreateExamAnswer.tsx","webpack://hopper/./app/javascript/components/common/exam/CreateExamAnswerModal.tsx","webpack://hopper/./app/javascript/components/common/exam/ExamQuestion.tsx","webpack://hopper/./app/javascript/components/common/loading/LoadingContext.tsx","webpack://hopper/./app/javascript/components/common/player/VideoPlayer.tsx","webpack://hopper/./app/javascript/components/common/player/buildErrorInfo.ts","webpack://hopper/./app/javascript/lib/api/runtime.ts","webpack://hopper/./app/javascript/lib/api/apis/ApiStatsWatchApi.ts","webpack://hopper/./app/javascript/components/common/player/usePlayerWatchLog.ts","webpack://hopper/./app/javascript/components/common/submenus/FolderSubMenu.tsx","webpack://hopper/./app/javascript/components/common/submenus/MoveFolderModal.tsx","webpack://hopper/./app/javascript/components/common/submenus/MoveVideoModal.tsx","webpack://hopper/./app/javascript/components/common/submenus/RenameFolderModal.tsx","webpack://hopper/./app/javascript/components/common/submenus/VideoSubMenu.tsx","webpack://hopper/./app/javascript/components/common/submenus/useSubMenuVisible.ts","webpack://hopper/./app/javascript/components/common/treeview/DescendantsContext.ts","webpack://hopper/./app/javascript/components/common/treeview/TreeItem.tsx","webpack://hopper/./app/javascript/components/common/treeview/TreeThemeContext.ts","webpack://hopper/./app/javascript/components/common/treeview/TreeView.tsx","webpack://hopper/./app/javascript/components/common/treeview/TreeViewContext.ts","webpack://hopper/./app/javascript/components/common/watch_link/WatchLinkInvitationForm.tsx","webpack://hopper/./app/javascript/components/common/watch_link/WatchLinkTooltipContent.tsx","webpack://hopper/./app/javascript/components/common/watch_link/WatchLinkTypeSelect.tsx","webpack://hopper/./app/javascript/components/design/DesignHeader.tsx","webpack://hopper/./app/javascript/components/design/DesignSideNav.tsx","webpack://hopper/./app/javascript/components/design/VideoContext.tsx","webpack://hopper/./app/javascript/components/design/edit/CreatomatePreviewPlayer.tsx","webpack://hopper/./app/javascript/components/design/edit/DesignPreviewPane.tsx","webpack://hopper/./app/javascript/components/design/edit/DesignSceneItem.tsx","webpack://hopper/./app/javascript/components/design/edit/DesignSceneItemOverlay.tsx","webpack://hopper/./app/javascript/components/design/edit/DesignScenesEdit.tsx","webpack://hopper/./app/javascript/components/design/edit/DesignScenesEditContainer.tsx","webpack://hopper/./app/javascript/components/design/edit/FileUploadDropzone.tsx","webpack://hopper/./app/javascript/components/design/exam/DesignExamEdit.tsx","webpack://hopper/./app/javascript/components/design/exam/DesignExamEditContainer.tsx","webpack://hopper/./app/javascript/components/design/helpers.ts","webpack://hopper/./app/javascript/components/design/hooks.ts","webpack://hopper/./app/javascript/components/design/info/DesignInfoEdit.tsx","webpack://hopper/./app/javascript/components/design/info/DesignInfoEditContainer.tsx","webpack://hopper/./app/javascript/components/design/requests.ts","webpack://hopper/./app/javascript/components/exam/ExamEdit.tsx","webpack://hopper/./app/javascript/components/exam_csvs/AcademySelector.tsx","webpack://hopper/./app/javascript/components/folders/CreateFolderModal.tsx","webpack://hopper/./app/javascript/components/folders/VideoUploader.tsx","webpack://hopper/./app/javascript/lib/loadVideoDuration.ts","webpack://hopper/./app/javascript/components/narrations/NarrationPreviewPlayer.tsx","webpack://hopper/./app/javascript/components/narrations/VideoNarrationsEdit.tsx","webpack://hopper/./app/javascript/components/narrations/useNarrationsView.ts","webpack://hopper/./app/javascript/components/notification.ts","webpack://hopper/./app/javascript/components/subtitles/SubtitlesView.tsx","webpack://hopper/./app/javascript/components/subtitles/edit/SubtitlesEditView.tsx","webpack://hopper/./app/javascript/components/subtitles/edit/SubtitlesPreviewPlayer.tsx","webpack://hopper/./app/javascript/components/subtitles/edit/useCurrentSubtitlesCue.ts","webpack://hopper/./app/javascript/components/subtitles/edit/useSubtitlesCues.ts","webpack://hopper/./app/javascript/components/subtitles/edit/useSubtitlesPublished.ts","webpack://hopper/./app/javascript/components/subtitles/useSubtitleView.ts","webpack://hopper/./app/javascript/components/summary/SelectFolderButton.tsx","webpack://hopper/./app/javascript/components/summary/SummaryBarGraph.tsx","webpack://hopper/./app/javascript/components/timeline/PreviewPlayer.tsx","webpack://hopper/./app/javascript/components/timeline/VideoTimelineEdit.tsx","webpack://hopper/./app/javascript/components/timeline/useChangingClipStart.ts","webpack://hopper/./app/javascript/components/timeline/useClipContextMenuPosition.ts","webpack://hopper/./app/javascript/components/timeline/useClipItemDraggingPosition.ts","webpack://hopper/./app/javascript/components/timeline/useRestoreClips.ts","webpack://hopper/./app/javascript/components/timeline/useScrollIntoView.ts","webpack://hopper/./app/javascript/lib/useStack.ts","webpack://hopper/./app/javascript/components/timeline/useTimelineClips.ts","webpack://hopper/./app/javascript/components/video/VideoDescriptionEdit.tsx","webpack://hopper/./app/javascript/components/video/VideoEditMenu.tsx","webpack://hopper/./app/javascript/components/video/VideoShareMenu.tsx","webpack://hopper/./app/javascript/components/video/VideoShareModal.tsx","webpack://hopper/./app/javascript/components/video/VideoStateChecker.tsx","webpack://hopper/./app/javascript/components/video/VideoThumbnail.tsx","webpack://hopper/./app/javascript/components/video/analysis/LineGraph.tsx","webpack://hopper/./app/javascript/components/video/analysis/WatchCumulativeGraph.tsx","webpack://hopper/./app/javascript/components/video/analysis/WatchRetensionGraph.tsx","webpack://hopper/./app/javascript/components/video/analysis/WatchedUserList.tsx","webpack://hopper/./app/javascript/components/video_watch/Review.tsx","webpack://hopper/./app/javascript/components/video_watch/WatchLinkConditionFormModal.tsx","webpack://hopper/./app/javascript/components/word_pronounciations/WordPronounciationEntry.tsx","webpack://hopper/./app/javascript/components/word_pronounciations/WordPronounciationForm.tsx","webpack://hopper/./app/javascript/dom-ready.ts","webpack://hopper/./app/javascript/generated/api/runtime.ts","webpack://hopper/./app/javascript/generated/api/models/ApiVideoVideoIdWatchLinkGet200ResponseMembersInner.ts","webpack://hopper/./app/javascript/generated/api/models/ApiAcademyAcademyIdWatchLinkGet200Response.ts","webpack://hopper/./app/javascript/generated/api/models/ApiAcademyAcademyIdWatchLinkPatchRequest.ts","webpack://hopper/./app/javascript/generated/api/models/ApiAcademyCourseCategoriesIdGet200Response.ts","webpack://hopper/./app/javascript/generated/api/models/ApiAcademyCourseCategoriesIdPatch202Response.ts","webpack://hopper/./app/javascript/generated/api/models/ApiAcademyCourseCategoriesIdPatchRequestAcademyCourseCategory.ts","webpack://hopper/./app/javascript/generated/api/models/ApiAcademyCourseCategoriesIdPatchRequest.ts","webpack://hopper/./app/javascript/generated/api/models/ApiAcademyCourseCategoriesPost201Response.ts","webpack://hopper/./app/javascript/generated/api/models/ApiAcademyCourseCategoriesPostRequestAcademyCourseCategory.ts","webpack://hopper/./app/javascript/generated/api/models/ApiAcademyCourseCategoriesPostRequest.ts","webpack://hopper/./app/javascript/generated/api/models/ApiAcademyCourseLessonsIdGet200ResponseVideo.ts","webpack://hopper/./app/javascript/generated/api/models/ApiAcademyCourseLessonsIdGet200Response.ts","webpack://hopper/./app/javascript/generated/api/models/ApiAcademyCourseLessonsPost201ResponseVideo.ts","webpack://hopper/./app/javascript/generated/api/models/ApiAcademyCourseLessonsIdPatch202Response.ts","webpack://hopper/./app/javascript/generated/api/models/ApiAcademyCourseLessonsIdPatchRequestCourseLesson.ts","webpack://hopper/./app/javascript/generated/api/models/ApiAcademyCourseLessonsIdPatchRequest.ts","webpack://hopper/./app/javascript/generated/api/models/ApiAcademyCourseLessonsPost201Response.ts","webpack://hopper/./app/javascript/generated/api/models/ApiAcademyCourseLessonsPostRequestCourseLesson.ts","webpack://hopper/./app/javascript/generated/api/models/ApiAcademyCourseLessonsPostRequest.ts","webpack://hopper/./app/javascript/generated/api/models/ApiAcademyCoursesIdGet200Response.ts","webpack://hopper/./app/javascript/generated/api/models/ApiAcademyCoursesIdPatch202Response.ts","webpack://hopper/./app/javascript/generated/api/models/ApiAcademyCoursesIdPatchRequestAcademyCourse.ts","webpack://hopper/./app/javascript/generated/api/models/ApiAcademyCoursesIdPatchRequest.ts","webpack://hopper/./app/javascript/generated/api/models/ApiAcademyCoursesPost201Response.ts","webpack://hopper/./app/javascript/generated/api/models/ApiAcademyCoursesPostRequestAcademyCourse.ts","webpack://hopper/./app/javascript/generated/api/models/ApiAcademyCoursesPostRequest.ts","webpack://hopper/./app/javascript/generated/api/models/ApiAcademyLogoGet200Response.ts","webpack://hopper/./app/javascript/generated/api/models/ApiAcademyLogoPost201Response.ts","webpack://hopper/./app/javascript/generated/api/models/ApiScenesIdPutRequestAudioData.ts","webpack://hopper/./app/javascript/generated/api/models/ApiDesignDesignIdScenesPostRequest.ts","webpack://hopper/./app/javascript/generated/api/models/ApiDesignIdAddCreatomateJobPost200ResponseInner.ts","webpack://hopper/./app/javascript/generated/api/models/ApiDesignIdAddCreatomateJobPostRequestCreatomateParamSourceElementsInnerAnimationsInner.ts","webpack://hopper/./app/javascript/generated/api/models/ApiDesignIdAddCreatomateJobPostRequestCreatomateParamSourceElementsInner.ts","webpack://hopper/./app/javascript/generated/api/models/ApiDesignIdAddCreatomateJobPostRequestCreatomateParamSource.ts","webpack://hopper/./app/javascript/generated/api/models/ApiDesignIdAddCreatomateJobPostRequestCreatomateParam.ts","webpack://hopper/./app/javascript/generated/api/models/ApiDesignIdAddCreatomateJobPostRequest.ts","webpack://hopper/./app/javascript/generated/api/models/ApiFoldersIdRenamePatch202Response.ts","webpack://hopper/./app/javascript/generated/api/models/ApiFoldersIdRenamePatchRequestFolder.ts","webpack://hopper/./app/javascript/generated/api/models/ApiFoldersIdRenamePatchRequest.ts","webpack://hopper/./app/javascript/generated/api/models/ApiVideoIdMovePatch200ResponseWatchLink.ts","webpack://hopper/./app/javascript/generated/api/models/ApiFoldersIdVideosGet200ResponseInner.ts","webpack://hopper/./app/javascript/generated/api/models/ApiFoldersPost201Response.ts","webpack://hopper/./app/javascript/generated/api/models/ApiFoldersPostRequestFolder.ts","webpack://hopper/./app/javascript/generated/api/models/ApiFoldersPostRequest.ts","webpack://hopper/./app/javascript/generated/api/models/ApiScenesIdGet200ResponseAudioData.ts","webpack://hopper/./app/javascript/generated/api/models/ApiScenesIdGet200Response.ts","webpack://hopper/./app/javascript/generated/api/models/ApiScenesIdPutRequest.ts","webpack://hopper/./app/javascript/generated/api/models/ApiScenesIdUploadedAudioPost200Response.ts","webpack://hopper/./app/javascript/generated/api/models/ApiScenesIdUploadedAudioPostRequest.ts","webpack://hopper/./app/javascript/generated/api/models/ApiScenesIdUploadedImagePost200Response.ts","webpack://hopper/./app/javascript/generated/api/models/ApiScenesIdUploadedImagePostRequest.ts","webpack://hopper/./app/javascript/generated/api/models/ApiVideoIdMovePatch200ResponseSubtitles.ts","webpack://hopper/./app/javascript/generated/api/models/ApiVideoIdGet200Response.ts","webpack://hopper/./app/javascript/generated/api/models/ApiVideoIdMovePatch200Response.ts","webpack://hopper/./app/javascript/generated/api/models/ApiVideoIdMovePatchRequest.ts","webpack://hopper/./app/javascript/generated/api/models/ApiVideoIdPut200Response.ts","webpack://hopper/./app/javascript/generated/api/models/ApiVideoIdPutRequest.ts","webpack://hopper/./app/javascript/generated/api/models/ApiVideoIdThumbnailPost200Response.ts","webpack://hopper/./app/javascript/generated/api/models/ApiVideoIdThumbnailPresignGet201Response.ts","webpack://hopper/./app/javascript/generated/api/models/ApiVideoPreparePost200Response.ts","webpack://hopper/./app/javascript/generated/api/models/ApiVideoUploadedPostRequest.ts","webpack://hopper/./app/javascript/generated/api/models/ApiVideoVideoIdExamAnswersPost200Response.ts","webpack://hopper/./app/javascript/generated/api/models/ApiVideoVideoIdExamAnswersPostRequestAnswersInner.ts","webpack://hopper/./app/javascript/generated/api/models/ApiVideoVideoIdExamAnswersPostRequest.ts","webpack://hopper/./app/javascript/generated/api/models/ApiVideoVideoIdExamGet200Response.ts","webpack://hopper/./app/javascript/generated/api/models/ApiVideoVideoIdExamPutRequest.ts","webpack://hopper/./app/javascript/generated/api/models/ApiVideoVideoIdExamQuestionsGet200ResponseInnerOptionsInner.ts","webpack://hopper/./app/javascript/generated/api/models/ApiVideoVideoIdExamQuestionsGet200ResponseInner.ts","webpack://hopper/./app/javascript/generated/api/models/ApiVideoVideoIdExamQuestionsPutRequestExamQuestionsInner.ts","webpack://hopper/./app/javascript/generated/api/models/ApiVideoVideoIdExamQuestionsPutRequest.ts","webpack://hopper/./app/javascript/generated/api/models/ApiVideoVideoIdNarrationsGet200ResponseInnerAudioData.ts","webpack://hopper/./app/javascript/generated/api/models/ApiVideoVideoIdNarrationsGet200ResponseInner.ts","webpack://hopper/./app/javascript/generated/api/models/ApiVideoVideoIdNarrationsPutRequestNarrationsInnerAudio.ts","webpack://hopper/./app/javascript/generated/api/models/ApiVideoVideoIdNarrationsPutRequestNarrationsInner.ts","webpack://hopper/./app/javascript/generated/api/models/ApiVideoVideoIdNarrationsPutRequest.ts","webpack://hopper/./app/javascript/generated/api/models/ApiVideoVideoIdSubtitlesDefaultDisplayedPatchRequest.ts","webpack://hopper/./app/javascript/generated/api/models/ApiVideoVideoIdSubtitlesGet200ResponseInner.ts","webpack://hopper/./app/javascript/generated/api/models/ApiVideoVideoIdSubtitlesPublishedPatchRequest.ts","webpack://hopper/./app/javascript/generated/api/models/ApiVideoVideoIdSubtitlesPutRequestSubtitlesInner.ts","webpack://hopper/./app/javascript/generated/api/models/ApiVideoVideoIdSubtitlesPutRequest.ts","webpack://hopper/./app/javascript/generated/api/models/ApiVideoVideoIdThumbnailSpritesGet200Response.ts","webpack://hopper/./app/javascript/generated/api/models/ApiVideoVideoIdTimelineUpdateJobsPostRequestTimelinesInner.ts","webpack://hopper/./app/javascript/generated/api/models/ApiVideoVideoIdTimelineUpdateJobsPostRequest.ts","webpack://hopper/./app/javascript/generated/api/models/ApiVideoVideoIdWatchLinkConditionResponsePostRequestResponse.ts","webpack://hopper/./app/javascript/generated/api/models/ApiVideoVideoIdWatchLinkConditionResponsePostRequest.ts","webpack://hopper/./app/javascript/generated/api/models/ApiVideoVideoIdWatchLinkGet200ResponseCondition.ts","webpack://hopper/./app/javascript/generated/api/models/ApiVideoVideoIdWatchLinkGet200Response.ts","webpack://hopper/./app/javascript/generated/api/models/ApiVideoVideoIdWatchLinkPatch200ResponseCondition.ts","webpack://hopper/./app/javascript/generated/api/models/ApiVideoVideoIdWatchLinkPatch200Response.ts","webpack://hopper/./app/javascript/generated/api/models/ApiVideoVideoIdWatchLinkPatchRequestCondition.ts","webpack://hopper/./app/javascript/generated/api/models/ApiVideoVideoIdWatchLinkPatchRequest.ts","webpack://hopper/./app/javascript/generated/api/models/ApiWordPronounciationsAffectDesignGet200ResponseDataInner.ts","webpack://hopper/./app/javascript/generated/api/models/ApiWordPronounciationsAffectDesignGet200Response.ts","webpack://hopper/./app/javascript/generated/api/models/ApiWordPronounciationsIdGet200Response.ts","webpack://hopper/./app/javascript/generated/api/models/ApiWordPronounciationsIdPut200ResponseLastModifiedBy.ts","webpack://hopper/./app/javascript/generated/api/models/ApiWordPronounciationsIdPut200Response.ts","webpack://hopper/./app/javascript/generated/api/models/ApiWordPronounciationsIdPutRequest.ts","webpack://hopper/./app/javascript/generated/api/models/ApiWordPronounciationsPostRequest.ts","webpack://hopper/./app/javascript/generated/api/apis/ApiAcademyCourseApi.ts","webpack://hopper/./app/javascript/generated/api/apis/ApiAcademyCourseCategoryApi.ts","webpack://hopper/./app/javascript/generated/api/apis/ApiAcademyCourseLessonApi.ts","webpack://hopper/./app/javascript/generated/api/apis/ApiAcademyLogoApi.ts","webpack://hopper/./app/javascript/generated/api/apis/ApiAcademyWatchLinkApi.ts","webpack://hopper/./app/javascript/generated/api/apis/ApiAzureCognitiveApi.ts","webpack://hopper/./app/javascript/generated/api/apis/ApiDesignApi.ts","webpack://hopper/./app/javascript/generated/api/apis/ApiExamApi.ts","webpack://hopper/./app/javascript/generated/api/apis/ApiExamAnswerApi.ts","webpack://hopper/./app/javascript/generated/api/apis/ApiExamQuestionApi.ts","webpack://hopper/./app/javascript/generated/api/apis/ApiFolderApi.ts","webpack://hopper/./app/javascript/generated/api/apis/ApiNarrationApi.ts","webpack://hopper/./app/javascript/generated/api/apis/ApiSceneApi.ts","webpack://hopper/./app/javascript/generated/api/apis/ApiSubtitleApi.ts","webpack://hopper/./app/javascript/generated/api/apis/ApiThumbnailApi.ts","webpack://hopper/./app/javascript/generated/api/apis/ApiThumbnailSpriteApi.ts","webpack://hopper/./app/javascript/generated/api/apis/ApiTimelineUpdateJobApi.ts","webpack://hopper/./app/javascript/generated/api/apis/ApiVideoApi.ts","webpack://hopper/./app/javascript/generated/api/apis/ApiWatchLinkApi.ts","webpack://hopper/./app/javascript/generated/api/apis/ApiWatchLinkConditionResponseApi.ts","webpack://hopper/./app/javascript/generated/api/apis/ApiWordPronounciationApi.ts","webpack://hopper/./app/javascript/generated/routes.ts","webpack://hopper/./app/javascript/lib/AzureCognitiveService.ts","webpack://hopper/./app/javascript/lib/formatTimeMs.ts","webpack://hopper/./app/javascript/lib/isResponseError.ts","webpack://hopper/./app/javascript/lib/ssmlHelper.ts","webpack://hopper/./app/javascript/lib/stripTags.ts","webpack://hopper/./app/javascript/lib/timestamp-link.ts","webpack://hopper/./app/javascript/lib/tree-folder.ts","webpack://hopper/./app/javascript/lib/useBeforeUnload.ts","webpack://hopper/./app/javascript/lib/useDebounce.ts","webpack://hopper/./app/javascript/lib/videojs.ts","webpack://hopper/./app/javascript/packs/application.ts"],"sourcesContent":["var map = {\n\t\"./academies/AcademyCourseCategoryEdit\": 640,\n\t\"./academies/AcademyCourseCategoryEdit.tsx\": 640,\n\t\"./academies/AcademyCourseCategoryListEdit\": 38796,\n\t\"./academies/AcademyCourseCategoryListEdit.tsx\": 38796,\n\t\"./academies/AcademyCourseEdit\": 55892,\n\t\"./academies/AcademyCourseEdit.tsx\": 55892,\n\t\"./academies/AcademyCourseIcon\": 39952,\n\t\"./academies/AcademyCourseIcon.tsx\": 39952,\n\t\"./academies/AcademyCourseIconChooser\": 63116,\n\t\"./academies/AcademyCourseIconChooser.tsx\": 63116,\n\t\"./academies/AcademyCourseLessonListEdit\": 33580,\n\t\"./academies/AcademyCourseLessonListEdit.tsx\": 33580,\n\t\"./academies/AcademyCourseLessonTextEdit\": 73865,\n\t\"./academies/AcademyCourseLessonTextEdit.tsx\": 73865,\n\t\"./academies/AcademyCourseListEdit\": 90224,\n\t\"./academies/AcademyCourseListEdit.tsx\": 90224,\n\t\"./academies/AcademyLogoEdit\": 890,\n\t\"./academies/AcademyLogoEdit.tsx\": 890,\n\t\"./academies/AcademyShareMenu\": 92643,\n\t\"./academies/AcademyShareMenu.tsx\": 92643,\n\t\"./academies/AcademyShareModal\": 18491,\n\t\"./academies/AcademyShareModal.tsx\": 18491,\n\t\"./academies/AddAcademyCourseLessonButton\": 14975,\n\t\"./academies/AddAcademyCourseLessonButton.tsx\": 14975,\n\t\"./academies/ChangeAcademyCourseCategoryStateSwitch\": 21969,\n\t\"./academies/ChangeAcademyCourseCategoryStateSwitch.tsx\": 21969,\n\t\"./academies/ChangeAcademyCourseStateSwitch\": 65005,\n\t\"./academies/ChangeAcademyCourseStateSwitch.tsx\": 65005,\n\t\"./academies/CreateAcademyCourseCategoryModal\": 95545,\n\t\"./academies/CreateAcademyCourseCategoryModal.tsx\": 95545,\n\t\"./academies/CreateAcademyCourseModal\": 5645,\n\t\"./academies/CreateAcademyCourseModal.tsx\": 5645,\n\t\"./common/DurationText\": 35401,\n\t\"./common/DurationText.tsx\": 35401,\n\t\"./common/FolderSelectorModal\": 78008,\n\t\"./common/FolderSelectorModal.tsx\": 78008,\n\t\"./common/LinkCopyButton\": 21979,\n\t\"./common/LinkCopyButton.tsx\": 21979,\n\t\"./common/ReactTooltipWrapper\": 70721,\n\t\"./common/ReactTooltipWrapper.tsx\": 70721,\n\t\"./common/SaveButton\": 96763,\n\t\"./common/SaveButton.tsx\": 96763,\n\t\"./common/TimeMsInput\": 81395,\n\t\"./common/TimeMsInput.tsx\": 81395,\n\t\"./common/VideoSelectorModal\": 47437,\n\t\"./common/VideoSelectorModal.tsx\": 47437,\n\t\"./common/editor/RichTextEditor\": 71780,\n\t\"./common/editor/RichTextEditor.tsx\": 71780,\n\t\"./common/editor/TimestampLinkPlugin\": 55737,\n\t\"./common/editor/TimestampLinkPlugin.ts\": 55737,\n\t\"./common/exam/AnswerFeedback\": 51241,\n\t\"./common/exam/AnswerFeedback.tsx\": 51241,\n\t\"./common/exam/CreateExamAnswer\": 64113,\n\t\"./common/exam/CreateExamAnswer.tsx\": 64113,\n\t\"./common/exam/CreateExamAnswerModal\": 83974,\n\t\"./common/exam/CreateExamAnswerModal.tsx\": 83974,\n\t\"./common/exam/ExamQuestion\": 15119,\n\t\"./common/exam/ExamQuestion.tsx\": 15119,\n\t\"./common/loading/LoadingContext\": 74086,\n\t\"./common/loading/LoadingContext.tsx\": 74086,\n\t\"./common/player/VideoPlayer\": 83748,\n\t\"./common/player/VideoPlayer.tsx\": 83748,\n\t\"./common/player/buildErrorInfo\": 64458,\n\t\"./common/player/buildErrorInfo.ts\": 64458,\n\t\"./common/player/usePlayerWatchLog\": 68099,\n\t\"./common/player/usePlayerWatchLog.ts\": 68099,\n\t\"./common/submenus/FolderSubMenu\": 98344,\n\t\"./common/submenus/FolderSubMenu.tsx\": 98344,\n\t\"./common/submenus/MoveFolderModal\": 36717,\n\t\"./common/submenus/MoveFolderModal.tsx\": 36717,\n\t\"./common/submenus/MoveVideoModal\": 95900,\n\t\"./common/submenus/MoveVideoModal.tsx\": 95900,\n\t\"./common/submenus/RenameFolderModal\": 70374,\n\t\"./common/submenus/RenameFolderModal.tsx\": 70374,\n\t\"./common/submenus/VideoSubMenu\": 75139,\n\t\"./common/submenus/VideoSubMenu.tsx\": 75139,\n\t\"./common/submenus/useSubMenuVisible\": 9331,\n\t\"./common/submenus/useSubMenuVisible.ts\": 9331,\n\t\"./common/treeview\": 57902,\n\t\"./common/treeview/\": 57902,\n\t\"./common/treeview/DescendantsContext\": 27707,\n\t\"./common/treeview/DescendantsContext.ts\": 27707,\n\t\"./common/treeview/TreeItem\": 10057,\n\t\"./common/treeview/TreeItem.tsx\": 10057,\n\t\"./common/treeview/TreeThemeContext\": 45920,\n\t\"./common/treeview/TreeThemeContext.ts\": 45920,\n\t\"./common/treeview/TreeView\": 183,\n\t\"./common/treeview/TreeView.tsx\": 183,\n\t\"./common/treeview/TreeViewContext\": 1086,\n\t\"./common/treeview/TreeViewContext.ts\": 1086,\n\t\"./common/treeview/TreeViewTypes\": 55316,\n\t\"./common/treeview/TreeViewTypes.ts\": 55316,\n\t\"./common/treeview/index\": 57902,\n\t\"./common/treeview/index.ts\": 57902,\n\t\"./common/watch_link/WatchLinkInvitationForm\": 32970,\n\t\"./common/watch_link/WatchLinkInvitationForm.tsx\": 32970,\n\t\"./common/watch_link/WatchLinkItem\": 32347,\n\t\"./common/watch_link/WatchLinkItem.ts\": 32347,\n\t\"./common/watch_link/WatchLinkTooltipContent\": 78368,\n\t\"./common/watch_link/WatchLinkTooltipContent.tsx\": 78368,\n\t\"./common/watch_link/WatchLinkTypeSelect\": 29528,\n\t\"./common/watch_link/WatchLinkTypeSelect.tsx\": 29528,\n\t\"./design/DesignHeader\": 8802,\n\t\"./design/DesignHeader.tsx\": 8802,\n\t\"./design/DesignSideNav\": 54409,\n\t\"./design/DesignSideNav.tsx\": 54409,\n\t\"./design/VideoContext\": 24289,\n\t\"./design/VideoContext.tsx\": 24289,\n\t\"./design/edit/CreatomatePreviewPlayer\": 16446,\n\t\"./design/edit/CreatomatePreviewPlayer.tsx\": 16446,\n\t\"./design/edit/DesignPreviewPane\": 32966,\n\t\"./design/edit/DesignPreviewPane.tsx\": 32966,\n\t\"./design/edit/DesignSceneItem\": 6121,\n\t\"./design/edit/DesignSceneItem.tsx\": 6121,\n\t\"./design/edit/DesignSceneItemOverlay\": 91145,\n\t\"./design/edit/DesignSceneItemOverlay.tsx\": 91145,\n\t\"./design/edit/DesignScenesEdit\": 56057,\n\t\"./design/edit/DesignScenesEdit.tsx\": 56057,\n\t\"./design/edit/DesignScenesEditContainer\": 23808,\n\t\"./design/edit/DesignScenesEditContainer.tsx\": 23808,\n\t\"./design/edit/FileUploadDropzone\": 86891,\n\t\"./design/edit/FileUploadDropzone.tsx\": 86891,\n\t\"./design/exam/DesignExamEdit\": 79664,\n\t\"./design/exam/DesignExamEdit.tsx\": 79664,\n\t\"./design/exam/DesignExamEditContainer\": 31591,\n\t\"./design/exam/DesignExamEditContainer.tsx\": 31591,\n\t\"./design/helpers\": 79328,\n\t\"./design/helpers.ts\": 79328,\n\t\"./design/hooks\": 84341,\n\t\"./design/hooks.ts\": 84341,\n\t\"./design/info/DesignInfoEdit\": 44510,\n\t\"./design/info/DesignInfoEdit.tsx\": 44510,\n\t\"./design/info/DesignInfoEditContainer\": 94661,\n\t\"./design/info/DesignInfoEditContainer.tsx\": 94661,\n\t\"./design/requests\": 58399,\n\t\"./design/requests.ts\": 58399,\n\t\"./exam/ExamEdit\": 30187,\n\t\"./exam/ExamEdit.tsx\": 30187,\n\t\"./exam_csvs/AcademySelector\": 12713,\n\t\"./exam_csvs/AcademySelector.tsx\": 12713,\n\t\"./folders/CreateFolderModal\": 98711,\n\t\"./folders/CreateFolderModal.tsx\": 98711,\n\t\"./folders/VideoUploader\": 93684,\n\t\"./folders/VideoUploader.tsx\": 93684,\n\t\"./narrations/NarrationPreviewPlayer\": 84783,\n\t\"./narrations/NarrationPreviewPlayer.tsx\": 84783,\n\t\"./narrations/VideoNarrationsEdit\": 19084,\n\t\"./narrations/VideoNarrationsEdit.tsx\": 19084,\n\t\"./narrations/useNarrationsView\": 9161,\n\t\"./narrations/useNarrationsView.ts\": 9161,\n\t\"./notification\": 24911,\n\t\"./notification.ts\": 24911,\n\t\"./subtitles/SubtitlesView\": 95892,\n\t\"./subtitles/SubtitlesView.tsx\": 95892,\n\t\"./subtitles/edit/SubtitlesEditView\": 16479,\n\t\"./subtitles/edit/SubtitlesEditView.tsx\": 16479,\n\t\"./subtitles/edit/SubtitlesPreviewPlayer\": 39205,\n\t\"./subtitles/edit/SubtitlesPreviewPlayer.tsx\": 39205,\n\t\"./subtitles/edit/useCurrentSubtitlesCue\": 86453,\n\t\"./subtitles/edit/useCurrentSubtitlesCue.ts\": 86453,\n\t\"./subtitles/edit/useSubtitlesCues\": 95333,\n\t\"./subtitles/edit/useSubtitlesCues.ts\": 95333,\n\t\"./subtitles/edit/useSubtitlesPublished\": 39279,\n\t\"./subtitles/edit/useSubtitlesPublished.ts\": 39279,\n\t\"./subtitles/useSubtitleView\": 13246,\n\t\"./subtitles/useSubtitleView.ts\": 13246,\n\t\"./summary/SelectFolderButton\": 58975,\n\t\"./summary/SelectFolderButton.tsx\": 58975,\n\t\"./summary/SummaryBarGraph\": 7726,\n\t\"./summary/SummaryBarGraph.tsx\": 7726,\n\t\"./timeline/PreviewPlayer\": 5955,\n\t\"./timeline/PreviewPlayer.tsx\": 5955,\n\t\"./timeline/VideoTimelineEdit\": 66968,\n\t\"./timeline/VideoTimelineEdit.tsx\": 66968,\n\t\"./timeline/useChangingClipStart\": 82420,\n\t\"./timeline/useChangingClipStart.ts\": 82420,\n\t\"./timeline/useClipContextMenuPosition\": 43770,\n\t\"./timeline/useClipContextMenuPosition.ts\": 43770,\n\t\"./timeline/useClipItemDraggingPosition\": 56176,\n\t\"./timeline/useClipItemDraggingPosition.ts\": 56176,\n\t\"./timeline/useRestoreClips\": 29862,\n\t\"./timeline/useRestoreClips.ts\": 29862,\n\t\"./timeline/useScrollIntoView\": 97013,\n\t\"./timeline/useScrollIntoView.ts\": 97013,\n\t\"./timeline/useTimelineClips\": 17230,\n\t\"./timeline/useTimelineClips.ts\": 17230,\n\t\"./video/VideoDescriptionEdit\": 88109,\n\t\"./video/VideoDescriptionEdit.tsx\": 88109,\n\t\"./video/VideoEditMenu\": 61158,\n\t\"./video/VideoEditMenu.tsx\": 61158,\n\t\"./video/VideoShareMenu\": 76743,\n\t\"./video/VideoShareMenu.tsx\": 76743,\n\t\"./video/VideoShareModal\": 31767,\n\t\"./video/VideoShareModal.tsx\": 31767,\n\t\"./video/VideoStateChecker\": 90935,\n\t\"./video/VideoStateChecker.tsx\": 90935,\n\t\"./video/VideoThumbnail\": 4423,\n\t\"./video/VideoThumbnail.tsx\": 4423,\n\t\"./video/analysis/LineGraph\": 9873,\n\t\"./video/analysis/LineGraph.tsx\": 9873,\n\t\"./video/analysis/WatchCumulativeGraph\": 383,\n\t\"./video/analysis/WatchCumulativeGraph.tsx\": 383,\n\t\"./video/analysis/WatchRetensionGraph\": 72591,\n\t\"./video/analysis/WatchRetensionGraph.tsx\": 72591,\n\t\"./video/analysis/WatchedUserList\": 53808,\n\t\"./video/analysis/WatchedUserList.tsx\": 53808,\n\t\"./video_watch/Review\": 99277,\n\t\"./video_watch/Review.tsx\": 99277,\n\t\"./video_watch/WatchLinkConditionFormModal\": 92663,\n\t\"./video_watch/WatchLinkConditionFormModal.tsx\": 92663,\n\t\"./word_pronounciations/WordPronounciationEntry\": 84583,\n\t\"./word_pronounciations/WordPronounciationEntry.tsx\": 84583,\n\t\"./word_pronounciations/WordPronounciationForm\": 22469,\n\t\"./word_pronounciations/WordPronounciationForm.tsx\": 22469\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 86900;","import { VFC, useState } from \"react\";\nimport TextareaAutosize from \"react-textarea-autosize\";\nimport {\n ApiAcademyCourseCategoryApi,\n Configuration,\n} from \"../../generated/api\";\nimport { notify } from \"../notification\";\n\ntype AcademyCourseCategory = Awaited<\n ReturnType\n>;\n\ninterface Props {\n csrfToken: string;\n courseCategory: AcademyCourseCategory;\n}\n\nexport const AcademyCourseCategoryEdit: VFC = (props) => {\n const [title, setTitle] = useState(props.courseCategory.title ?? \"\");\n\n const patchCourse = (\n courseCategory: Pick\n ) => {\n const api = new ApiAcademyCourseCategoryApi(\n new Configuration({\n basePath: \"\",\n headers: {\n \"x-hopper-api-version\": \"1.0\",\n \"X-CSRF-Token\": props.csrfToken,\n },\n })\n );\n api\n .apiAcademyCourseCategoriesIdPatch({\n id: props.courseCategory.id,\n apiAcademyCourseCategoriesIdPatchRequest: {\n academyCourseCategory: { ...courseCategory },\n },\n })\n .catch((reason) => {\n notify(\n \"エラーが発生しました。画面をリロードしてもう一度試してください。\"\n );\n throw reason;\n });\n };\n\n return (\n
\n \n カテゴリー名\n \n setTitle(e.target.value)}\n onBlur={() => {\n if (title) {\n patchCourse({ title });\n }\n }}\n onKeyPress={(e) => {\n if (e.key === \"Enter\") {\n e.currentTarget.blur();\n }\n }}\n />\n
\n );\n};\nexport default AcademyCourseCategoryEdit;\n","import { VFC, MouseEventHandler, useState, CSSProperties } from \"react\";\nimport {\n DndContext,\n closestCenter,\n KeyboardSensor,\n PointerSensor,\n useSensor,\n useSensors,\n DragEndEvent,\n} from \"@dnd-kit/core\";\nimport {\n useSortable,\n arrayMove,\n SortableContext,\n sortableKeyboardCoordinates,\n verticalListSortingStrategy,\n} from \"@dnd-kit/sortable\";\nimport { CSS } from \"@dnd-kit/utilities\";\nimport { useSubMenuVisible } from \"../common/submenus/useSubMenuVisible\";\nimport {\n editAcademiesCourseCategoryPath,\n academiesCourseCategoryPath,\n} from \"../../generated/routes\";\nimport {\n ApiAcademyCourseCategoryApi,\n Configuration,\n} from \"../../generated/api\";\nimport { notify } from \"../notification\";\n\ntype AcademyCourseCategory = Awaited<\n ReturnType\n>;\n\ninterface Props {\n csrfToken: string;\n academyId: number;\n courseCategories: AcademyCourseCategory[];\n}\n\nexport const AcademyCourseCategoryListEdit: VFC = (props) => {\n const dndSensors = useSensors(\n useSensor(PointerSensor),\n useSensor(KeyboardSensor, {\n coordinateGetter: sortableKeyboardCoordinates,\n })\n );\n const [courseCategories, setCourseCategories] = useState(\n props.courseCategories ?? []\n );\n\n function handleDragEnd(event: DragEndEvent) {\n const { active, over } = event;\n if (active.id !== over.id) {\n const oldIndex = courseCategories.findIndex(\n (i) => i.id.toString() === active.id\n );\n const newIndex = courseCategories.findIndex(\n (i) => i.id.toString() === over.id\n );\n const target = courseCategories[oldIndex];\n setCourseCategories(arrayMove(courseCategories, oldIndex, newIndex));\n academyCourseCategoryApi(props.csrfToken)\n .apiAcademyCourseCategoriesIdPatch({\n id: target.id,\n apiAcademyCourseCategoriesIdPatchRequest: {\n academyCourseCategory: { rowOrderPosition: newIndex },\n },\n })\n .catch((reason) => {\n notify(\n \"エラーが発生しました。画面をリロードしてもう一度試してください。\"\n );\n throw reason;\n });\n }\n }\n\n return (\n \n c.id.toString())}\n strategy={verticalListSortingStrategy}\n >\n \n \n \n \n \n \n \n \n \n \n \n \n {courseCategories.map((category) => (\n \n ))}\n {courseCategories.length === 0 && (\n \n \n \n )}\n \n
{/* drag handle */}カテゴリー名公開コース{/* copy link */}{/* submenu */}
\n 「カテゴリーを作成」ボタンでカテゴリーを追加してください。\n
\n \n \n );\n};\nexport default AcademyCourseCategoryListEdit;\n\nconst ListItem: VFC = (\n props\n) => {\n const linkPath = editAcademiesCourseCategoryPath(props.hashid);\n const { attributes, listeners, setNodeRef, transform, transition } =\n useSortable({ id: props.id.toString() });\n const [subMenuVisible, toggleSubMenuVisible] = useSubMenuVisible();\n\n const copyLink: MouseEventHandler = () => {\n const url = new URL(\n academiesCourseCategoryPath(props.hashid),\n location.href\n );\n navigator.clipboard.writeText(url.toString());\n };\n\n const toggleMenu: MouseEventHandler = () => {\n toggleSubMenuVisible();\n };\n\n const onClickDel: MouseEventHandler = () => {\n if (!confirm(`カテゴリー「${props.title}」を削除しますか?`)) {\n return;\n }\n\n academyCourseCategoryApi(props.csrfToken)\n .apiAcademyCourseCategoriesIdDelete({\n id: props.id,\n })\n .then(() => {\n location.reload();\n })\n .catch((reason) => {\n reason.response\n .json()\n .then((errorResponse) => {\n const errorMessages = Object.values(errorResponse.messages);\n notify(errorMessages.join(\"\\n\"));\n })\n .catch(() => {\n notify(\n \"エラーが発生しました。画面をリロードしてもう一度試してください。\"\n );\n throw reason;\n });\n });\n };\n\n // tableで行に対してリンクを実装出来ないので、onClickでお茶を濁す。\n // 代わりにテキストのセルには個別にaタグを実装して、ブラウザのインタラクションを損ねないようにする。\n const onClickRow: MouseEventHandler = (event) => {\n if (\n event.target instanceof HTMLElement &&\n (event.target.closest(\"a\") || event.target.closest(\"button\"))\n ) {\n return; // aタグや行内のメニューボタンの操作の場合は無視\n }\n location.assign(linkPath);\n };\n\n const rowStyle: CSSProperties = {\n transform: CSS.Transform.toString(transform),\n transition,\n };\n\n return (\n \n \n \n drag_handle\n \n \n \n \n

{props.title}

\n
\n \n {props.state === \"draft\" ? \"非公開\" : \"公開\"}\n \n {props.coursesCount}\n \n \n \n link\n \n \n \n \n more_vert\n \n {subMenuVisible && (\n
    \n
  • \n \n
  • \n
\n )}\n \n \n );\n};\n\nfunction academyCourseCategoryApi(csrfToken: string) {\n return new ApiAcademyCourseCategoryApi(\n new Configuration({\n basePath: \"\",\n headers: {\n \"x-hopper-api-version\": \"1.0\",\n \"X-CSRF-Token\": csrfToken,\n },\n })\n );\n}\n","import { VFC, useState } from \"react\";\nimport TextareaAutosize from \"react-textarea-autosize\";\nimport { ApiAcademyCourseApi, Configuration } from \"../../generated/api\";\nimport { notify } from \"../notification\";\nimport { useSubMenuVisible } from \"../common/submenus/useSubMenuVisible\";\nimport { AcademyCourseIcon } from \"./AcademyCourseIcon\";\nimport { AcademyCourseIconChooser } from \"./AcademyCourseIconChooser\";\n\ntype AcademyCourse = Awaited<\n ReturnType\n>;\n\ninterface Props {\n csrfToken: string;\n course: AcademyCourse;\n}\n\nexport const AcademyCourseEdit: VFC = (props) => {\n const [title, setTitle] = useState(props.course.title ?? \"\");\n const [description, setDescription] = useState(\n props.course.description ?? \"\"\n );\n const [iconName, setIconName] = useState(props.course.iconName ?? \"\");\n const [visibleIconChooser, setVisibleIconChooser] = useSubMenuVisible();\n\n const patchCourse = (\n course: Pick\n ) => {\n const api = new ApiAcademyCourseApi(\n new Configuration({\n basePath: \"\",\n headers: {\n \"x-hopper-api-version\": \"1.0\",\n \"X-CSRF-Token\": props.csrfToken,\n },\n })\n );\n api\n .apiAcademyCoursesIdPatch({\n id: props.course.id,\n apiAcademyCoursesIdPatchRequest: { academyCourse: { ...course } },\n })\n .catch((reason) => {\n notify(\n \"エラーが発生しました。画面をリロードしてもう一度試してください。\"\n );\n throw reason;\n });\n };\n\n return (\n
\n \n コース名\n \n setTitle(e.target.value)}\n onBlur={() => {\n if (title) {\n patchCourse({ title });\n }\n }}\n onKeyPress={(e) => {\n if (e.key === \"Enter\") {\n e.currentTarget.blur();\n }\n }}\n />\n {/* */}\n \n コースの説明\n \n setDescription(e.target.value)}\n onBlur={() => {\n patchCourse({ description });\n }}\n onKeyPress={(e) => {\n if (e.key === \"Enter\") {\n e.currentTarget.blur();\n }\n }}\n />\n {/* */}\n \n アイコン\n \n setVisibleIconChooser(true)}\n >\n \n \n {visibleIconChooser && (\n
\n {\n setIconName(newIconName);\n setVisibleIconChooser(false);\n patchCourse({ iconName: newIconName });\n }}\n />\n
\n )}\n
\n );\n};\nexport default AcademyCourseEdit;\n","import { VFC } from \"react\";\n\nimport iconCalendar from \"images/academy/course_icon/calendar.png\";\nimport iconChat from \"images/academy/course_icon/chat.png\";\nimport iconChecklist from \"images/academy/course_icon/checklist.png\";\nimport iconComment from \"images/academy/course_icon/comment.png\";\nimport iconContents from \"images/academy/course_icon/contents.png\";\nimport iconDevice from \"images/academy/course_icon/device.png\";\nimport iconDiamond from \"images/academy/course_icon/diamond.png\";\nimport iconEye from \"images/academy/course_icon/eye.png\";\nimport iconGraph from \"images/academy/course_icon/graph.png\";\nimport iconGroup from \"images/academy/course_icon/group.png\";\nimport iconHandshake from \"images/academy/course_icon/handshake.png\";\nimport iconLightBulb from \"images/academy/course_icon/light-bulb.png\";\nimport iconMedal from \"images/academy/course_icon/medal.png\";\nimport iconMoney from \"images/academy/course_icon/money.png\";\nimport iconNote from \"images/academy/course_icon/note.png\";\nimport iconPc from \"images/academy/course_icon/pc.png\";\nimport iconSearch from \"images/academy/course_icon/search.png\";\nimport iconSetting from \"images/academy/course_icon/setting.png\";\nimport iconShare from \"images/academy/course_icon/share.png\";\nimport iconShield from \"images/academy/course_icon/shield.png\";\nimport iconSpeaker from \"images/academy/course_icon/speaker.png\";\nimport iconStar from \"images/academy/course_icon/star.png\";\nimport iconSupport from \"images/academy/course_icon/support.png\";\nimport iconTime from \"images/academy/course_icon/time.png\";\nimport iconVideo from \"images/academy/course_icon/video.png\";\n\n// ※表示順を保持\nexport const ICON_LIST = [\n { name: \"support\", img: iconSupport },\n { name: \"calendar\", img: iconCalendar },\n { name: \"pc\", img: iconPc },\n { name: \"device\", img: iconDevice },\n { name: \"setting\", img: iconSetting },\n { name: \"speaker\", img: iconSpeaker },\n { name: \"light-bulb\", img: iconLightBulb },\n { name: \"search\", img: iconSearch },\n { name: \"chat\", img: iconChat },\n { name: \"medal\", img: iconMedal },\n { name: \"note\", img: iconNote },\n { name: \"diamond\", img: iconDiamond },\n { name: \"handshake\", img: iconHandshake },\n { name: \"eye\", img: iconEye },\n { name: \"group\", img: iconGroup },\n { name: \"comment\", img: iconComment },\n { name: \"checklist\", img: iconChecklist },\n { name: \"shield\", img: iconShield },\n { name: \"graph\", img: iconGraph },\n { name: \"money\", img: iconMoney },\n { name: \"star\", img: iconStar },\n { name: \"video\", img: iconVideo },\n { name: \"share\", img: iconShare },\n { name: \"time\", img: iconTime },\n { name: \"contents\", img: iconContents },\n] as const;\n\nconst iconMap = ICON_LIST.reduce>((ret, item) => {\n ret[item.name] = item.img;\n return ret;\n}, {});\n\nexport const AcademyCourseIcon: VFC<{\n iconName: string;\n className?: string;\n}> = (props) => {\n return (\n \n );\n};\n","import { VFC, useState, useEffect, useRef } from \"react\";\nimport { AcademyCourseIcon, ICON_LIST } from \"./AcademyCourseIcon\";\n\ninterface Props {\n iconName?: string;\n required?: boolean;\n onChange?: (iconName: string) => void;\n}\n\nexport const AcademyCourseIconChooser: VFC = (props) => {\n const inputRef = useRef();\n const [iconName, setIconName] = useState(props.iconName || \"\");\n\n useEffect(() => {\n if (!props.onChange) {\n return;\n }\n if (props.iconName !== iconName) {\n props.onChange(iconName);\n }\n }, [props, iconName]);\n\n return (\n
\n {\n setIconName(e.target.value);\n }}\n />\n
\n {ICON_LIST.map((icon) => (\n {\n setIconName(icon.name);\n }}\n >\n \n \n ))}\n
\n
\n );\n};\n","import { VFC, MouseEventHandler, useState, CSSProperties } from \"react\";\nimport {\n DndContext,\n closestCenter,\n KeyboardSensor,\n PointerSensor,\n useSensor,\n useSensors,\n DragEndEvent,\n} from \"@dnd-kit/core\";\nimport {\n useSortable,\n arrayMove,\n SortableContext,\n sortableKeyboardCoordinates,\n verticalListSortingStrategy,\n} from \"@dnd-kit/sortable\";\nimport { CSS } from \"@dnd-kit/utilities\";\nimport { useSubMenuVisible } from \"../common/submenus/useSubMenuVisible\";\nimport { ApiAcademyCourseLessonApi, Configuration } from \"../../generated/api\";\nimport { notify } from \"../notification\";\nimport { DurationText } from \"../common/DurationText\";\nimport { stripTags } from \"../../lib/stripTags\";\nimport {\n editAcademiesCourseLessonPath,\n videoPath,\n} from \"../../generated/routes\";\n\nimport type { VideoWatchLinkType } from \"../../types/videoWatchLink\";\n\ntype AcademyCourseLesson = Awaited<\n ReturnType\n> & { video: { watchLink: { typeName: VideoWatchLinkType } } };\n\ninterface Props {\n csrfToken: string;\n lessons: AcademyCourseLesson[];\n}\n\nexport const AcademyCourseLessonListEdit: VFC = (props) => {\n const dndSensors = useSensors(\n useSensor(PointerSensor),\n useSensor(KeyboardSensor, {\n coordinateGetter: sortableKeyboardCoordinates,\n })\n );\n const [lessons, setLessons] = useState(props.lessons ?? []);\n\n function handleDragEnd(event: DragEndEvent) {\n const { active, over } = event;\n if (active.id !== over.id) {\n const oldIndex = lessons.findIndex((i) => i.id.toString() === active.id);\n const newIndex = lessons.findIndex((i) => i.id.toString() === over.id);\n const target = lessons[oldIndex];\n setLessons(arrayMove(lessons, oldIndex, newIndex));\n lessonApi(props.csrfToken)\n .apiAcademyCourseLessonsIdPatch({\n id: target.id,\n apiAcademyCourseLessonsIdPatchRequest: {\n courseLesson: { rowOrderPosition: newIndex },\n },\n })\n .catch((reason) => {\n notify(\n \"エラーが発生しました。画面をリロードしてもう一度試してください。\"\n );\n throw reason;\n });\n }\n }\n\n return (\n \n c.id.toString())}\n strategy={verticalListSortingStrategy}\n >\n \n \n \n \n \n \n \n \n \n \n \n \n {lessons.map((lesson) =>\n lesson.video ? (\n \n ) : (\n \n )\n )}\n {lessons.length === 0 && (\n \n \n \n )}\n \n
{/* drag handle */}{/* video thumbnail */}レッスン名・説明公開長さ{/* submenu */}
\n 「レッスンを追加」ボタンでレッスンを追加してください。\n
\n \n \n );\n};\nexport default AcademyCourseLessonListEdit;\n\ninterface ListItemProps {\n csrfToken: string;\n lessonId: number;\n videoThumbnailUrl?: string;\n title: string;\n bodyHtml: string;\n watchLinkType: VideoWatchLinkType;\n playTimeSec: number;\n editMenuHref: string;\n}\n\nconst ListItem: VFC = (props) => {\n const { attributes, listeners, setNodeRef, transform, transition } =\n useSortable({ id: props.lessonId.toString() });\n const [subMenuVisible, toggleSubMenuVisible] = useSubMenuVisible();\n\n const toggleMenu: MouseEventHandler = () => {\n toggleSubMenuVisible();\n };\n\n const onClickDel: MouseEventHandler = () => {\n if (!confirm(`レッスン「${props.title}」を削除しますか?`)) {\n return;\n }\n\n lessonApi(props.csrfToken)\n .apiAcademyCourseLessonsIdDelete({\n id: props.lessonId,\n })\n .then(() => {\n location.reload();\n })\n .catch((reason) => {\n notify(\n \"エラーが発生しました。画面をリロードしてもう一度試してください。\"\n );\n throw reason;\n });\n };\n\n const rowStyle: CSSProperties = {\n transform: CSS.Transform.toString(transform),\n transition,\n };\n\n function watchLinkTypeName(typeName: VideoWatchLinkType) {\n const nameMap = {\n video_create_user_only: \"非公開\",\n member_only: \"特定の人\",\n no_limit: \"一般公開\",\n };\n return nameMap[typeName];\n }\n\n const bodyText = stripTags(props.bodyHtml);\n return (\n \n \n \n drag_handle\n \n \n {props.videoThumbnailUrl && (\n \n {props.title}\n \n )}\n \n

\n {props.title}\n

\n

\n {bodyText}\n

\n \n {watchLinkTypeName(props.watchLinkType)}\n \n {props.playTimeSec ? (\n \n ) : (\n \"-\"\n )}\n \n \n \n more_vert\n \n {subMenuVisible && (\n \n )}\n \n \n );\n};\n\nfunction lessonApi(csrfToken: string) {\n return new ApiAcademyCourseLessonApi(\n new Configuration({\n basePath: \"\",\n headers: {\n \"x-hopper-api-version\": \"1.0\",\n \"X-CSRF-Token\": csrfToken,\n },\n })\n );\n}\n","import { VFC, useState, FormEvent, MouseEventHandler } from \"react\";\nimport TextareaAutosize from \"react-textarea-autosize\";\nimport {\n ApiAcademyCourseLessonApi,\n ApiAcademyCourseApi,\n Configuration,\n} from \"../../generated/api\";\nimport { notify } from \"../notification\";\nimport { RichTextEditor } from \"../common/editor/RichTextEditor\";\nimport { editAcademiesCoursePath } from \"../../generated/routes\";\n\ntype AcademyCourse = Awaited<\n ReturnType\n>;\ntype AcademyCourseLesson = Awaited<\n ReturnType\n>;\n\ninterface Props {\n csrfToken: string;\n actionName: \"new\" | \"edit\";\n course: AcademyCourse;\n lesson?: AcademyCourseLesson; // 編集モードの時だけ受け取る\n}\n\nexport const AcademyCourseLessonTextEdit: VFC = (props) => {\n const [title, setTitle] = useState(props.lesson?.title ?? \"\");\n const [textHtml, setTextHtml] = useState(props.lesson?.textHtml ?? \"\");\n const submitable: boolean =\n props.actionName == \"new\"\n ? textHtml.length > 0 && title.length > 0\n : textHtml.length > 0 &&\n title.length > 0 &&\n (props.lesson.textHtml != textHtml || props.lesson.title != title);\n\n const handleInputTitle = (title: string) => {\n setTitle(title);\n };\n\n const handleInputTextHtml = (textHtml: string) => {\n setTextHtml(textHtml);\n };\n\n const handleSubmit = (event: FormEvent) => {\n event.preventDefault();\n\n if (textHtml.length > 20000) {\n notify(\n \"データ量が大きすぎるため保存できません。コンテンツの量を減らしてください。\"\n );\n return;\n }\n\n const api = new ApiAcademyCourseLessonApi(\n new Configuration({\n basePath: \"\",\n headers: {\n \"x-hopper-api-version\": \"1.0\",\n \"X-CSRF-Token\": props.csrfToken,\n },\n })\n );\n\n switch (props.actionName) {\n case \"new\": {\n const params = {\n courseLesson: {\n academyCourseId: props.course.id,\n title,\n textHtml,\n },\n };\n api\n .apiAcademyCourseLessonsPostRaw({\n apiAcademyCourseLessonsPostRequest: params,\n })\n .then(() => {\n location.assign(editAcademiesCoursePath(props.course.hashid));\n })\n .catch((reason) => {\n notify(\n \"エラーが発生しました。画面をリロードしてもう一度試してください。\"\n );\n throw reason;\n });\n break;\n }\n case \"edit\": {\n const params = {\n courseLesson: {\n title,\n textHtml,\n },\n };\n api\n .apiAcademyCourseLessonsIdPatch({\n id: props.lesson.id,\n apiAcademyCourseLessonsIdPatchRequest: params,\n })\n .then(() => {\n location.assign(editAcademiesCoursePath(props.course.hashid));\n })\n .catch((reason) => {\n notify(\n \"エラーが発生しました。画面をリロードしてもう一度試してください。\"\n );\n throw reason;\n });\n break;\n }\n }\n };\n\n const resetForm: MouseEventHandler = (event) => {\n event.preventDefault();\n if (confirm(\"編集内容を破棄します。よろしいですか?\")) {\n location.reload();\n }\n };\n\n return (\n
handleSubmit(e)}>\n
\n \n レッスンタイトル\n \n handleInputTitle(e.target.value)}\n />\n\n
\n \n 変更を破棄\n \n \n
\n\n \n コンテンツ\n \n handleInputTextHtml(e)}\n />\n
\n
\n );\n};\nexport default AcademyCourseLessonTextEdit;\n","import { VFC, MouseEventHandler, useState, CSSProperties } from \"react\";\nimport {\n DndContext,\n closestCenter,\n KeyboardSensor,\n PointerSensor,\n useSensor,\n useSensors,\n DragEndEvent,\n} from \"@dnd-kit/core\";\nimport {\n useSortable,\n arrayMove,\n SortableContext,\n sortableKeyboardCoordinates,\n verticalListSortingStrategy,\n} from \"@dnd-kit/sortable\";\nimport { CSS } from \"@dnd-kit/utilities\";\nimport { useSubMenuVisible } from \"../common/submenus/useSubMenuVisible\";\nimport { AcademyCourseIcon } from \"./AcademyCourseIcon\";\nimport {\n editAcademiesCoursePath,\n academiesCoursePath,\n} from \"../../generated/routes\";\nimport { ApiAcademyCourseApi, Configuration } from \"../../generated/api\";\nimport { notify } from \"../notification\";\nimport { DurationText } from \"../common/DurationText\";\n\ntype AcademyCourse = Awaited<\n ReturnType\n>;\n\ninterface Props {\n csrfToken: string;\n academyId: number;\n courses: AcademyCourse[];\n}\n\nexport const AcademyCourseListEdit: VFC = (props) => {\n const dndSensors = useSensors(\n useSensor(PointerSensor),\n useSensor(KeyboardSensor, {\n coordinateGetter: sortableKeyboardCoordinates,\n })\n );\n const [courses, setCourses] = useState(props.courses ?? []);\n\n function handleDragEnd(event: DragEndEvent) {\n const { active, over } = event;\n if (active.id !== over.id) {\n const oldIndex = courses.findIndex((i) => i.id.toString() === active.id);\n const newIndex = courses.findIndex((i) => i.id.toString() === over.id);\n const target = courses[oldIndex];\n setCourses(arrayMove(courses, oldIndex, newIndex));\n academyCourseApi(props.csrfToken)\n .apiAcademyCoursesIdPatch({\n id: target.id,\n apiAcademyCoursesIdPatchRequest: {\n academyCourse: { rowOrderPosition: newIndex },\n },\n })\n .catch((reason) => {\n notify(\n \"エラーが発生しました。画面をリロードしてもう一度試してください。\"\n );\n throw reason;\n });\n }\n }\n\n return (\n \n c.id.toString())}\n strategy={verticalListSortingStrategy}\n >\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {courses.map((course) => (\n \n ))}\n {courses.length === 0 && (\n \n \n \n )}\n \n
{/* drag handle */}{/* icon */}コース名・説明公開長さレッスン{/* copy link */}{/* submenu */}
\n 「コースを作成」ボタンでコースを追加してください。\n
\n \n \n );\n};\nexport default AcademyCourseListEdit;\n\nconst ListItem: VFC = (props) => {\n const linkPath = editAcademiesCoursePath(props.hashid);\n const { attributes, listeners, setNodeRef, transform, transition } =\n useSortable({ id: props.id.toString() });\n const [subMenuVisible, toggleSubMenuVisible] = useSubMenuVisible();\n\n const copyLink: MouseEventHandler = () => {\n const url = new URL(academiesCoursePath(props.hashid), location.href);\n navigator.clipboard.writeText(url.toString());\n };\n\n const toggleMenu: MouseEventHandler = () => {\n toggleSubMenuVisible();\n };\n\n const onClickDel: MouseEventHandler = () => {\n if (!confirm(`コース「${props.title}」を削除しますか?`)) {\n return;\n }\n\n academyCourseApi(props.csrfToken)\n .apiAcademyCoursesIdDelete({\n id: props.id,\n })\n .then(() => {\n location.reload();\n })\n .catch((reason) => {\n notify(\n \"エラーが発生しました。画面をリロードしてもう一度試してください。\"\n );\n throw reason;\n });\n };\n\n // tableで行に対してリンクを実装出来ないので、onClickでお茶を濁す。\n // 代わりにテキストのセルには個別にaタグを実装して、ブラウザのインタラクションを損ねないようにする。\n const onClickRow: MouseEventHandler = (event) => {\n if (\n event.target instanceof HTMLElement &&\n (event.target.closest(\"a\") || event.target.closest(\"button\"))\n ) {\n return; // aタグや行内のメニューボタンの操作の場合は無視\n }\n location.assign(linkPath);\n };\n\n const rowStyle: CSSProperties = {\n transform: CSS.Transform.toString(transform),\n transition,\n };\n\n return (\n \n \n \n drag_handle\n \n \n \n \n \n \n \n \n \n

{props.title}

\n \n {props.description}\n

\n
\n \n {props.state === \"draft\" ? \"非公開\" : \"公開\"}\n \n \n \n \n \n \n {props.lessonsCount}\n \n \n \n link\n \n \n \n \n more_vert\n \n {subMenuVisible && (\n
    \n
  • \n \n
  • \n
\n )}\n \n \n );\n};\n\nfunction academyCourseApi(csrfToken: string) {\n return new ApiAcademyCourseApi(\n new Configuration({\n basePath: \"\",\n headers: {\n \"x-hopper-api-version\": \"1.0\",\n \"X-CSRF-Token\": csrfToken,\n },\n })\n );\n}\n","import { VFC, useState, ChangeEventHandler } from \"react\";\nimport loadingImg from \"images/loading.svg\";\nimport { ApiAcademyLogoApi, Configuration } from \"../../generated/api\";\nimport { BlockBlobClient } from \"@azure/storage-blob\";\n\ninterface Props {\n csrfToken: string;\n academyId: number;\n imgUrl?: string;\n}\n\nconst acceptMimeTypes = [\"image/jpeg\", \"image/png\"];\ntype ErrorType = \"fileSize\" | \"fileType\" | \"unknown\";\n\nexport const AcademyLogoEdit: VFC = (props) => {\n const [errors, setErrors] = useState([]);\n const [uploading, setUploading] = useState(false);\n\n const fileChange: ChangeEventHandler = (event) => {\n setErrors([]);\n const file = event.target.files[0];\n if (!file) {\n return;\n }\n setUploading(true);\n const errors = validateFile(file);\n if (errors.length > 0) {\n setErrors(errors);\n setUploading(false);\n return;\n }\n\n // アップロード\n uploadImage(props, file)\n .then(() => {\n location.reload();\n })\n .catch((reason) => {\n console.error(reason);\n setErrors([\"unknown\"]);\n setUploading(false);\n });\n };\n\n return (\n
\n

\n ロゴ画像(jpeg, png / 1MB以下 / 推奨サイズ:縦72px以上)\n

\n {errors.length > 0 && (\n
\n アップロードできませんでした。\n
\n {errors\n .map((errorType) => {\n const errMsgs: Record = {\n fileSize: \"ファイルサイズを1MB以下にして再度お試しください。\",\n fileType:\n \"JPEGまたはPNG形式のファイルをアップロードしてください。\",\n unknown: \"画面をリロードしてもう一度お試しください。\",\n };\n return errMsgs[errorType] ?? errMsgs.unknown;\n })\n .join(\"\\n\")}\n
\n )}\n \n {props.imgUrl ? (\n \n ) : (\n

ロゴ画像が選択されていません。

\n )}\n \n\n {uploading && (\n <>\n
\n \n
\n \n \n )}\n \n
\n );\n};\nexport default AcademyLogoEdit;\n\nasync function uploadImage(props: Props, file: File): Promise {\n const api = new ApiAcademyLogoApi(\n new Configuration({\n basePath: \"\",\n headers: {\n \"x-hopper-api-version\": \"1.0\",\n \"X-CSRF-Token\": props.csrfToken,\n },\n })\n );\n\n if (props.imgUrl) {\n await api.apiAcademyLogoDelete();\n }\n\n const res = await api.apiAcademyLogoPresignGet();\n\n const blobClient = new BlockBlobClient(res.endpoint);\n await blobClient.uploadData(file, {\n blobHTTPHeaders: { blobContentType: file.type },\n });\n\n const url = new URL(res.endpoint);\n const [, assetContainer, assetName] = url.pathname.split(\"/\");\n await api.apiAcademyLogoPost({\n assetContainer,\n assetName,\n });\n}\n\nfunction validateFile(file: File) {\n const errors: ErrorType[] = [];\n if (file.size > 1024 * 1024) {\n errors.push(\"fileSize\");\n }\n if (!acceptMimeTypes.includes(file.type)) {\n errors.push(\"fileType\");\n }\n return errors;\n}\n","import { VFC, useState } from \"react\";\nimport ReactTooltip from \"react-tooltip\";\nimport { AcademyShareModal } from \"./AcademyShareModal\";\nimport { WatchLinkTooltipContent } from \"../common/watch_link/WatchLinkTooltipContent\";\nimport { AcademyWatchLinkType } from \"../../types/academyWatchLink\";\n\nexport interface Props {\n csrfToken: string;\n academyId: number;\n shareUrl: string;\n watchLinkType: AcademyWatchLinkType;\n inviteMembersCount?: number;\n domainWatchLinkAvailable: boolean;\n}\n\nexport const AcademyWatchLinkIconMap: Record = {\n team_only: \"lock\",\n member_only: \"people\",\n domain_only: \"domain\",\n no_limit: \"language\",\n};\n\nexport const AcademyShareMenu: VFC = (props) => {\n const [watchLinkType, setWatchLinkType] = useState(props.watchLinkType);\n const [inviteMembersCount, setInviteMembersCount] = useState(\n props.inviteMembersCount\n );\n const [modalVisible, setModalVisible] = useState(false);\n\n return (\n <>\n setModalVisible(true)}\n data-tip=\"\"\n data-for=\"academy-share-tooltip\"\n >\n \n {AcademyWatchLinkIconMap[watchLinkType]}\n \n 共有リンクを設定\n \n\n {/* eslint-disable-next-line react/forbid-elements */}\n \n \n \n\n setModalVisible(false)}\n onUpdated={(type, count) => {\n setWatchLinkType(type);\n setInviteMembersCount(count);\n }}\n type={watchLinkType}\n csrfToken={props.csrfToken}\n academyId={props.academyId}\n shareUrl={props.shareUrl}\n domainWatchLinkAvailable={props.domainWatchLinkAvailable}\n />\n \n );\n};\n\nexport default AcademyShareMenu;\n\nconst AcademyWatchLinkTooltipContent: VFC<{\n linkIcon: string;\n type: AcademyWatchLinkType;\n inviteMembersCount: number;\n}> = (props) => {\n let tooltipTitle: string;\n let tooltipDesc: string;\n switch (props.type) {\n case \"team_only\":\n tooltipTitle = \"非公開\";\n break;\n case \"member_only\":\n tooltipTitle = \"特定の人\";\n tooltipDesc = `指定された${\n props.inviteMembersCount || 0\n }人に共有されています`;\n break;\n case \"domain_only\":\n tooltipTitle = \"特定のドメイン\";\n tooltipDesc = \"指定されたドメインのユーザーのみが閲覧できます\";\n break;\n case \"no_limit\":\n tooltipTitle = \"一般公開\";\n tooltipDesc =\n \"リンクを知っている人は、誰でもビデオを閲覧することができます\";\n break;\n default:\n break;\n }\n\n return (\n \n );\n};\n","import { VFC, useState } from \"react\";\nimport ReactModal from \"react-modal\";\nimport { ApiAcademyWatchLinkApi, Configuration } from \"../../generated/api\";\nimport { isResponseError } from \"../../lib/isResponseError\";\nimport LinkCopyButton from \"../common/LinkCopyButton\";\nimport { notify } from \"../notification\";\nimport { WatchLinkInvitationForm } from \"../common/watch_link/WatchLinkInvitationForm\";\nimport { WatchLinkItem } from \"../common/watch_link/WatchLinkItem\";\nimport { WatchLinkTypeSelect } from \"../common/watch_link/WatchLinkTypeSelect\";\nimport { AcademyWatchLinkType } from \"../../types/academyWatchLink\";\nimport { AcademyWatchLinkIconMap } from \"./AcademyShareMenu\";\n\ntype InviteMember = Awaited<\n ReturnType\n>[\"members\"][number];\n\ninterface Props {\n isOpen: boolean;\n requestClose(): void;\n onUpdated(type: AcademyWatchLinkType, inviteMembersCount: number): void;\n type: AcademyWatchLinkType;\n csrfToken: string;\n academyId: number;\n shareUrl: string;\n domainWatchLinkAvailable: boolean;\n}\n\nexport const AcademyShareModal: VFC = (props) => {\n const [type, setType] = useState(props.type);\n const [members, setMembers] = useState([]);\n const [errMsg, setErrMsg] = useState(\"\");\n\n const typeItems: WatchLinkItem[] = [\n {\n type: \"team_only\",\n title: \"非公開\",\n icon: \"lock\",\n copyDesc: \"チームに所属するユーザーだけが閲覧できます。\",\n },\n {\n type: \"member_only\",\n title: \"特定の人\",\n icon: \"people\",\n copyDesc: \"指定したメールアドレスでログインした場合に閲覧できます。\",\n },\n {\n type: \"no_limit\",\n title: \"リンクを知っている人全員\",\n icon: \"language\",\n copyDesc: \"リンクを知っているインターネット上の全員が閲覧できます。\",\n },\n ];\n\n if (props.domainWatchLinkAvailable) {\n typeItems.splice(2, 0, {\n type: \"domain_only\",\n title: \"特定のドメイン\",\n icon: AcademyWatchLinkIconMap[\"domain_only\"],\n copyDesc: \"指定したドメインでログインした場合に閲覧できます。\",\n });\n }\n\n const copyDesc = typeItems.find((i) => i.type === type)?.copyDesc;\n\n const closeModal = () => {\n props.requestClose();\n\n // 初期値に戻す\n setType(undefined);\n setMembers([]);\n setErrMsg(\"\");\n };\n\n // 初期データ取得\n const initialize = () => {\n watchLinkApi(props.csrfToken)\n .apiAcademyAcademyIdWatchLinkGet({\n academyId: props.academyId,\n })\n .then((data) => {\n const typeName = data.typeName as AcademyWatchLinkType;\n setType(typeName);\n setMembers(data.members ?? []);\n props.onUpdated(typeName, data.members?.length);\n })\n .catch((reason) => {\n notify(\n \"エラーが発生しました。画面をリロードしてもう一度試してください。\"\n );\n Rollbar.warn(reason);\n });\n };\n\n const updateShareSettings = () => {\n setErrMsg(\"\");\n const emails = type === \"member_only\" ? members.map((m) => m.email) : [];\n const api = watchLinkApi(props.csrfToken);\n api\n .apiAcademyAcademyIdWatchLinkPatch({\n academyId: props.academyId,\n apiAcademyAcademyIdWatchLinkPatchRequest: { type, emails },\n })\n .then(() => {\n props.onUpdated(type, members?.length);\n closeModal();\n })\n .catch((reason) => {\n if (isResponseError(reason) && reason.response.status === 422) {\n reason.response\n .json()\n .then((body) => Object.values(body?.messages).flat().join(\"\\n\"))\n .then((msg) => {\n setErrMsg(msg);\n });\n } else {\n notify(\n \"エラーが発生しました。画面をリロードしてもう一度試してください。\"\n );\n Rollbar.warn(reason);\n }\n });\n };\n\n return (\n \n
\n
\n

共有リンクを設定

\n \n close\n \n
\n {errMsg &&

{errMsg}

}\n
\n setType(value)}\n />\n\n {type === \"member_only\" && (\n \n )}\n
\n
\n \n キャンセル\n \n \n 完了\n \n
\n
\n\n
\n
\n

リンクを取得

\n
\n
\n

{copyDesc}

\n
\n \n
\n
\n
\n \n );\n};\n\nfunction watchLinkApi(csrfToken: string) {\n return new ApiAcademyWatchLinkApi(\n new Configuration({\n basePath: \"\",\n headers: {\n \"x-hopper-api-version\": \"1.0\",\n \"X-CSRF-Token\": csrfToken,\n },\n })\n );\n}\n","import { VFC, useState, MouseEventHandler } from \"react\";\nimport { useSubMenuVisible } from \"../common/submenus/useSubMenuVisible\";\nimport { ApiAcademyCourseLessonApi, Configuration } from \"../../generated/api\";\nimport { notify } from \"../notification\";\nimport { VideoSelectorModal } from \"../common/VideoSelectorModal\";\n\nimport type { Folder } from \"../../types/folder\";\nimport { newAcademiesCourseLessonPath } from \"../../generated/routes\";\n\ninterface Props {\n csrfToken: string;\n academyCourseId: number;\n academyCourseHashid: string;\n folders: Folder[];\n disabled?: boolean;\n}\n\nexport const AddAcademyCourseLessonButton: VFC = (props) => {\n const [modalVisible, setModalVisible] = useState(false);\n const [visible, toggleVisible] = useSubMenuVisible();\n\n const toggleMenu: MouseEventHandler = (event) => {\n event.preventDefault();\n toggleVisible();\n };\n\n const addVideo: MouseEventHandler = (event) => {\n event.preventDefault();\n setModalVisible(!modalVisible);\n };\n\n async function submit(videos: { id: number }[]) {\n const videoIds = videos.map((v) => v.id);\n const api = new ApiAcademyCourseLessonApi(\n new Configuration({\n basePath: \"\",\n headers: {\n \"x-hopper-api-version\": \"1.0\",\n \"X-CSRF-Token\": props.csrfToken,\n },\n })\n );\n const requestFactories = videoIds.map((videoId) => {\n return () =>\n api.apiAcademyCourseLessonsPost({\n apiAcademyCourseLessonsPostRequest: {\n courseLesson: { academyCourseId: props.academyCourseId, videoId },\n },\n });\n });\n for (const requestFactory of requestFactories) {\n try {\n await requestFactory();\n } catch (e) {\n notify(\n \"エラーが発生しました。画面をリロードしてもう一度試してください。\"\n );\n throw e;\n }\n }\n location.reload();\n }\n\n return (\n <>\n \n add\n レッスンを追加\n \n {visible && (\n
    \n \n \n \n \n \n \n text_snippet\n \n テキスト\n \n \n
\n )}\n\n setModalVisible(false)}\n onSelect={submit}\n teamFolders={props.folders}\n headerTitle=\"コースにビデオを追加\"\n />\n \n );\n};\nexport default AddAcademyCourseLessonButton;\n","import { useState, ChangeEventHandler, VFC } from \"react\";\nimport {\n ApiAcademyCourseCategoryApi,\n Configuration,\n} from \"../../generated/api\";\nimport { notify } from \"../notification\";\n\ntype AcademyCourseCategoryStateType = \"published\" | \"draft\";\n\ninterface Props {\n csrfToken: string;\n academyCourseCategoryId: number;\n state: AcademyCourseCategoryStateType;\n}\n\nexport const ChangeAcademyCourseCategoryStateSwitch: VFC = (props) => {\n const [courseState, setCourseState] = useState(props.state === \"published\");\n\n const handleOnChanged: ChangeEventHandler = (e) => {\n setCourseState(e.target.checked);\n const state: AcademyCourseCategoryStateType = e.target.checked\n ? \"published\"\n : \"draft\";\n const api = new ApiAcademyCourseCategoryApi(\n new Configuration({\n basePath: \"\",\n headers: {\n \"x-hopper-api-version\": \"1.0\",\n \"X-CSRF-Token\": props.csrfToken,\n },\n })\n );\n api\n .apiAcademyCourseCategoriesIdPatch({\n id: props.academyCourseCategoryId,\n apiAcademyCourseCategoriesIdPatchRequest: {\n academyCourseCategory: { state },\n },\n })\n .catch((reason) => {\n notify(\n \"エラーが発生しました。画面をリロードしてもう一度試してください。\"\n );\n throw reason;\n });\n };\n\n return (\n <>\n \n \n \n );\n};\nexport default ChangeAcademyCourseCategoryStateSwitch;\n","import { useState, ChangeEventHandler, VFC } from \"react\";\nimport type { AcademyCourseStateType } from \"../../types/academyCourse\";\nimport { ApiAcademyCourseApi, Configuration } from \"../../generated/api\";\nimport { notify } from \"../notification\";\n\ninterface Props {\n csrfToken: string;\n academyCourseId: number;\n state: AcademyCourseStateType;\n}\n\nexport const ChangeAcademyCourseStateSwitch: VFC = (props) => {\n const [courseState, setCourseState] = useState(props.state === \"published\");\n\n const handleOnChanged: ChangeEventHandler = (e) => {\n setCourseState(e.target.checked);\n const state: AcademyCourseStateType = e.target.checked\n ? \"published\"\n : \"draft\";\n const api = new ApiAcademyCourseApi(\n new Configuration({\n basePath: \"\",\n headers: {\n \"x-hopper-api-version\": \"1.0\",\n \"X-CSRF-Token\": props.csrfToken,\n },\n })\n );\n api\n .apiAcademyCoursesIdPatch({\n id: props.academyCourseId,\n apiAcademyCoursesIdPatchRequest: { academyCourse: { state } },\n })\n .catch((reason) => {\n notify(\n \"エラーが発生しました。画面をリロードしてもう一度試してください。\"\n );\n throw reason;\n });\n };\n\n return (\n <>\n \n \n \n );\n};\nexport default ChangeAcademyCourseStateSwitch;\n","import { VFC, useState, FormEvent } from \"react\";\nimport ReactModal from \"react-modal\";\nimport {\n ApiAcademyCourseCategoryApi,\n Configuration,\n} from \"../../generated/api\";\nimport { notify } from \"../notification\";\n\ninterface Props {\n csrfToken: string;\n academyId: number;\n}\n\nexport const CreateAcademyCourseCategoryModal: VFC = (props) => {\n const [modalVisible, setModalVisible] = useState(false);\n const [title, setTitle] = useState(\"\");\n\n const handleCloseButton = () => {\n setModalVisible(false);\n setTitle(\"\");\n };\n\n const handleSubmit = (event: FormEvent) => {\n event.preventDefault();\n\n const api = new ApiAcademyCourseCategoryApi(\n new Configuration({\n basePath: \"\",\n headers: {\n \"x-hopper-api-version\": \"1.0\",\n \"X-CSRF-Token\": props.csrfToken,\n },\n })\n );\n api\n .apiAcademyCourseCategoriesPost({\n apiAcademyCourseCategoriesPostRequest: {\n academyCourseCategory: {\n title,\n },\n },\n })\n .then(() => {\n location.reload();\n })\n .catch((reason) => {\n notify(\n \"エラーが発生しました。画面をリロードしてもう一度試してください。\"\n );\n throw reason;\n });\n };\n\n return (\n <>\n setModalVisible(!modalVisible)}\n >\n add\n カテゴリーを作成\n \n\n setModalVisible(false)}\n onAfterClose={() => handleCloseButton()}\n shouldCloseOnEsc={false}\n shouldCloseOnOverlayClick={false}\n overlayClassName=\"c-dialog__overlay vertical-center\"\n className=\"c-dialog__container wide\"\n >\n
\n

カテゴリーを作成

\n handleCloseButton()}\n >\n close\n \n
\n
handleSubmit(e)}>\n
\n \n カテゴリー名\n \n setTitle(e.target.value?.trim())}\n value={title}\n onKeyPress={(e) => {\n if (e.key === \"Enter\") {\n e.preventDefault();\n }\n }}\n />\n
\n
\n \n
\n
\n \n \n );\n};\n\nexport default CreateAcademyCourseCategoryModal;\n","import { VFC, useState, FormEvent } from \"react\";\nimport ReactModal from \"react-modal\";\nimport { ApiAcademyCourseApi, Configuration } from \"../../generated/api\";\nimport { notify } from \"../notification\";\nimport { AcademyCourseIconChooser } from \"./AcademyCourseIconChooser\";\n\ninterface Props {\n csrfToken: string;\n academyCourseCategoryId: number;\n}\n\nexport const CreateAcademyCourseModal: VFC = (props) => {\n const [modalVisible, setModalVisible] = useState(false);\n const [title, setTitle] = useState(\"\");\n const [description, setDescription] = useState(\"\");\n const [iconName, setIconName] = useState(\"\");\n\n const handleCloseButton = () => {\n setModalVisible(false);\n setTitle(\"\");\n setDescription(\"\");\n setIconName(\"\");\n };\n\n const handleSubmit = (event: FormEvent) => {\n event.preventDefault();\n\n const api = new ApiAcademyCourseApi(\n new Configuration({\n basePath: \"\",\n headers: {\n \"x-hopper-api-version\": \"1.0\",\n \"X-CSRF-Token\": props.csrfToken,\n },\n })\n );\n api\n .apiAcademyCoursesPost({\n apiAcademyCoursesPostRequest: {\n academyCourse: {\n title,\n description,\n iconName,\n academyCourseCategoryId: props.academyCourseCategoryId,\n },\n },\n })\n .then(() => {\n location.reload();\n })\n .catch((reason) => {\n notify(\n \"エラーが発生しました。画面をリロードしてもう一度試してください。\"\n );\n throw reason;\n });\n };\n\n return (\n <>\n setModalVisible(!modalVisible)}\n >\n add\n コースを作成\n \n\n setModalVisible(false)}\n onAfterClose={() => handleCloseButton()}\n shouldCloseOnEsc={false}\n shouldCloseOnOverlayClick={false}\n overlayClassName=\"c-dialog__overlay vertical-center\"\n className=\"c-dialog__container wide\"\n >\n
\n

コースを作成

\n handleCloseButton()}\n >\n close\n \n
\n
handleSubmit(e)}>\n
\n \n コース名(必須)\n \n setTitle(e.target.value?.trim())}\n value={title}\n onKeyPress={(e) => {\n if (e.key === \"Enter\") {\n e.preventDefault();\n }\n }}\n />\n  \n
\n \n コースの説明\n \n setDescription(e.target.value)}\n value={description}\n onKeyPress={(e) => {\n if (e.key === \"Enter\") {\n e.preventDefault();\n }\n }}\n />\n  \n
\n \n setIconName(newIconName)}\n />\n
\n
\n \n
\n
\n \n \n );\n};\n\nexport default CreateAcademyCourseModal;\n","import { VFC, ReactChild } from \"react\";\n\ninterface Props {\n /** 秒 */\n value: number;\n format?: {\n hours?: boolean;\n minutes?: boolean;\n seconds?: boolean;\n separator?: ReactChild;\n };\n}\n\nexport const DurationText: VFC = (props) => {\n const format = props.format ?? { hours: true, minutes: true, seconds: true };\n let value = props.value ?? 0;\n let hours = NaN;\n let minutes = NaN;\n let seconds = NaN;\n\n if (format.hours) {\n hours = Math.floor(value / 3600);\n if (format.minutes || format.seconds) {\n hours ||= NaN; // より小さい桁を表示する指定があるのなら、値が0の桁は表示しない。\n }\n value = value % 3600;\n }\n if (format.minutes) {\n minutes = Math.floor(value / 60);\n if (format.seconds) {\n minutes ||= NaN;\n }\n value = value % 60;\n }\n if (format.seconds) {\n seconds = Math.floor(value);\n }\n const separator = format.separator ?? \"\";\n\n return (\n <>\n {!isNaN(hours) && `${hours}時間`}\n {separator}\n {!isNaN(minutes) && `${minutes}分`}\n {separator}\n {!isNaN(seconds) && `${seconds}秒`}\n \n );\n};\n","import { ReactNode, VFC, useState } from \"react\";\nimport ReactModal from \"react-modal\";\n\nimport { toTreeFolderFromTeamFolders, TreeFolder } from \"../../lib/tree-folder\";\nimport type { Folder } from \"../../types/folder\";\nimport { TreeView, TreeItem, TreeViewThemeContext } from \"./treeview\";\n\ninterface Props {\n isOpen: boolean;\n onClick: (folder: Folder) => void;\n onClose: () => void;\n teamFolders: Folder[];\n selectedFolder?: Folder;\n headerTitle: string;\n}\n\nexport const FolderSelectorModal: VFC = (props) => {\n const rootTeamFolder = toTreeFolderFromTeamFolders(props.teamFolders);\n const [folderHashid, setFolderHashid] = useState(\n props.selectedFolder?.hashid\n );\n const onClick = () => {\n const folder = props.teamFolders.find((f) => f.hashid === folderHashid);\n if (folder) {\n props.onClick(folder);\n }\n };\n\n return (\n \n
\n

{props.headerTitle}

\n {\n props.onClose();\n // 再度開いたときにクリックしたが選択ボタンを押下せずに閉じたものはリセットする\n if (props.selectedFolder) {\n setFolderHashid(props.selectedFolder.hashid);\n }\n }}\n >\n close\n \n
\n\n
\n
\n setFolderHashid(itemId)}\n >\n folder,\n }}\n >\n business}\n >\n {buildTreeView(rootTeamFolder.children)}\n \n \n \n
\n
\n
\n \n 選択する\n \n
\n \n );\n};\n\nfunction buildTreeView(folders: TreeFolder[] | undefined): ReactNode {\n if (folders) {\n return folders.map((folder) => (\n \n {buildTreeView(folder.children)}\n \n ));\n }\n}\n","import { VFC, useState, useEffect } from \"react\";\n\ninterface Props {\n className?: string;\n url: string;\n}\n\nexport const LinkCopyButton: VFC = (props) => {\n const [copied, setCopied] = useState(false);\n\n useEffect(() => {\n if (copied) {\n // コピーボタン表示の戻し\n const timeoutId = setTimeout(() => setCopied(false), 3000);\n return () => {\n clearTimeout(timeoutId);\n };\n }\n }, [copied]);\n\n const copyUrl = () => {\n navigator.clipboard.writeText(props.url).then(() => {\n setCopied(true);\n });\n };\n\n return (\n \n \n {copied ? \"done\" : \"link\"}\n \n {copied ? \"コピーしました\" : \"リンクをコピー\"}\n \n );\n};\nexport default LinkCopyButton;\n","import ReactTooltip from \"react-tooltip\";\n\n// eslint-disable-next-line react/forbid-elements\nconst ReactTooltipWrapper = () => ;\nexport default ReactTooltipWrapper;\n","import type { MouseEventHandler, ButtonHTMLAttributes } from \"react\";\nimport { useState, forwardRef, useImperativeHandle } from \"react\";\nimport loadingImg from \"images/loading.svg\";\n\ntype Props = {\n type?: ButtonHTMLAttributes[\"type\"];\n disabled?: boolean;\n onClick?: MouseEventHandler;\n};\n\ntype SavingState = \"default\" | \"saving\" | \"done\";\n\nexport interface SaveButtonHandler {\n startSaving(): void;\n finishSaving(): Promise;\n reset(): void;\n}\n\nexport const SaveButton = forwardRef(\n function SaveButtonImpl(props: Props, ref) {\n const [state, setState] = useState(\"default\");\n\n useImperativeHandle(\n ref,\n () => ({\n startSaving() {\n setState(\"saving\");\n },\n async finishSaving() {\n setState(\"done\");\n await new Promise((resolve) => setTimeout(resolve, 3_000)); // 少し待ってから初期状態に戻す。\n setState(\"default\");\n },\n reset() {\n setState(\"default\");\n },\n }),\n []\n );\n\n const className =\n \"c-button--text-link-primary narrow-padding c-save-button__button\";\n if (state === \"saving\") {\n return (\n

\n \n 保存中\n

\n );\n }\n if (state === \"done\") {\n return (\n

\n \n done\n \n 保存しました\n

\n );\n }\n return (\n \n 保存\n \n );\n }\n);\n","import { useMemo, useState, VFC } from \"react\";\nimport { formatTimeMs } from \"../../lib/formatTimeMs\";\n\ntype Prop = {\n required?: boolean;\n className?: string;\n value?: number;\n onChange?(value: number): void;\n};\n\n/** `12:34.5` or `12:34:56.7` */\nconst TIME_MS_REGEXP = /^(?:(\\d+):)?([0-5]\\d):([0-5]\\d)(?:\\.(\\d))$/;\n\nfunction parse(text: string): number {\n const match = (text ?? \"\").trim().match(TIME_MS_REGEXP);\n if (match) {\n const [, hour, min, sec, tenthOfSec] = [...match];\n const timeMs =\n Number(hour || 0) * 3600_000 +\n Number(min) * 60_000 +\n Number(sec) * 1000 +\n Number(tenthOfSec) * 100;\n if (Number.isSafeInteger(timeMs)) {\n return timeMs;\n }\n }\n return null;\n}\n\n/**\n * ミリ秒を「hh:mm:ss.z」の書式のテキストで扱うテキストフィールド。\n *\n * 適切な入力の時はミリ秒の値をonChangeで親コンポーネントに戻し、propsと同期する。\n * 不適切な入力の時はnullを返し、適切な入力になるまではpropsと同期せず、このコンポーネント内だけでinputを制御する。\n */\nexport const TimeMsInput: VFC = (props) => {\n const [text, setText] = useState(() => formatTimeMs(props.value));\n const propValue = useMemo(() => formatTimeMs(props.value), [props.value]);\n return (\n {\n setText(event.target.value);\n const timeMs = parse(event.target.value);\n if (props.value !== timeMs) {\n props.onChange(timeMs);\n }\n }}\n />\n );\n};\n","import { VFC, useState, useEffect } from \"react\";\nimport ReactModal from \"react-modal\";\nimport { TreeView, TreeItem, TreeViewThemeContext } from \"./treeview\";\nimport { stripTags } from \"../../lib/stripTags\";\nimport {\n toTreeFolderFromUserFolders,\n toTreeFolderFromTeamFolders,\n} from \"../../lib/tree-folder\";\nimport { ApiFolderApi, Configuration } from \"../../generated/api\";\nimport loadingImg from \"images/loading.svg\";\n\nimport type { Folder } from \"../../types/folder\";\nimport type { ReactNode } from \"react\";\nimport type { TreeFolder } from \"../../lib/tree-folder\";\n\ntype VideoSummary = Awaited<\n ReturnType\n>[number];\ninterface Props {\n isOpen: boolean;\n onClose: () => void;\n csrfToken: string;\n userFolders?: Folder[];\n teamFolders?: Folder[];\n onSelect: (videos: VideoSummary[]) => void;\n headerTitle?: string;\n filter?: (\n value: VideoSummary,\n index: number,\n array: VideoSummary[]\n ) => boolean;\n}\n\nexport const VideoSelectorModal: VFC = (props) => {\n const rootUserFolder = props.userFolders\n ? toTreeFolderFromUserFolders(props.userFolders)\n : null;\n const rootTeamFolder = props.teamFolders\n ? toTreeFolderFromTeamFolders(props.teamFolders)\n : null;\n const [folderId, setFolderId] = useState(\n rootUserFolder ? rootUserFolder.id : rootTeamFolder.id\n );\n const [selectedVideos, setSelectedVideos] = useState([]);\n\n return (\n \n
\n

\n {props.headerTitle ?? \"ビデオを追加\"}\n

\n \n close\n \n
\n\n
\n
\n setFolderId(itemId)}\n >\n folder,\n }}\n >\n {rootUserFolder && (\n perm_identity\n }\n >\n {buildTreeView(rootUserFolder.children)}\n \n )}\n {rootTeamFolder && (\n business}\n >\n {buildTreeView(rootTeamFolder.children)}\n \n )}\n \n \n
\n\n {props.isOpen && (\n \n )}\n
\n
\n props.onSelect(selectedVideos)}\n >\n 追加する\n \n
\n \n );\n};\n\ntype VideosChooserProps = {\n csrfToken: string;\n folderId: number;\n onChangeSelectedVideos: (videos: VideoSummary[]) => void;\n filter?: Props[\"filter\"];\n};\n\nconst VideosChooser: VFC = (props) => {\n const [loading, setLoading] = useState(false);\n const [videos, setVideos] = useState([]);\n const [selectedVideos, setSelectedVideos] = useState([]);\n\n useEffect(() => {\n // UI上フォルダをまたいだビデオ選択を表現できておらず、フォルダを切り替えたら選択状態をリセットする。\n setSelectedVideos([]);\n }, [props.folderId]);\n\n useEffect(() => {\n // ビデオの選択状態をモーダル本体に同期\n props.onChangeSelectedVideos(selectedVideos);\n }, [props, selectedVideos]);\n\n useEffect(() => {\n setLoading(true);\n let cancelled = false;\n const api = new ApiFolderApi(\n new Configuration({\n basePath: \"\",\n headers: {\n \"x-hopper-api-version\": \"1.0\",\n \"X-CSRF-Token\": props.csrfToken,\n },\n })\n );\n const folderId = props.folderId ? props.folderId : -1;\n api\n .apiFoldersIdVideosGet({ id: folderId })\n .then((videos) => {\n if (cancelled) {\n return;\n }\n if (props.filter) {\n setVideos(videos.filter(props.filter));\n } else {\n setVideos(videos);\n }\n })\n .finally(() => {\n setLoading(false);\n });\n return () => {\n cancelled = true;\n };\n }, [props.folderId, props.csrfToken, props.filter]);\n\n if (loading) {\n return (\n
\n \"読み込み中\"\n
\n );\n }\n if (videos.length === 0) {\n if (props.folderId) {\n return <>フォルダにビデオがありません;\n }\n return <>フォルダを選択してください;\n }\n\n function selectVideo(video: VideoSummary) {\n if (selectedVideos.some((v) => v.id === video.id)) {\n setSelectedVideos(selectedVideos.filter((v) => v.id !== video.id));\n } else {\n setSelectedVideos([...selectedVideos, video]);\n }\n }\n\n return (\n
\n {videos.map((video) => {\n const isSelected = !!selectedVideos.find((v) => v.id === video.id);\n const description = stripTags(video.descriptionHtml);\n return (\n selectVideo(video)}\n title={video.title}\n >\n \n
\n

\n {video.title}\n

\n \n {description}\n

\n
\n \n );\n })}\n
\n );\n};\n\nfunction buildTreeView(folders: TreeFolder[]): ReactNode {\n if (folders) {\n return folders.map((folder) => (\n \n {buildTreeView(folder.children)}\n \n ));\n }\n}\n","import { useEffect, useRef } from \"react\";\nimport { Jodit } from \"jodit\";\nimport { TimestampLink } from \"./TimestampLinkPlugin\";\n\ninterface Props {\n className?: string;\n placeholder?: string;\n toolbarStickyOffset?: number;\n value?: string;\n onChangeValue?(newValue: string, oldValue: string): void;\n onBlur?(event: FocusEvent): void;\n enableTimestampLink?: boolean;\n}\n\nexport function RichTextEditor(props: Props) {\n const textarea = useRef();\n const editor = useRef();\n\n useEffect(() => {\n if (props.enableTimestampLink) {\n Jodit.plugins.add(\"TimestampLink\", TimestampLink);\n }\n\n type JoditOptionsValue = string | number | boolean | string[];\n type JoditOptionsItem = {\n [key: string]: JoditOptionsItem | JoditOptionsValue;\n };\n type JoditOptions = Partial & JoditOptionsItem;\n const config: JoditOptions = {\n tabIndex: 0,\n language: \"ja\",\n theme: \"vt\",\n placeholder: props.placeholder || \"\",\n disablePlugins: [\n \"mobile\", // mobileプラグインがbuttons指定を書き換えてしまうので。\n \"inline-popup\", // デフォルトでは不要なメニューも表示されるなど問題があるため使用しない。必要性が出たらカスタマイズなど検討する。\n ],\n buttons: [\n \"paragraph\",\n \"brush\",\n \"bold\",\n \"italic\",\n \"underline\",\n \"eraser\",\n \"link\",\n \"ul\",\n \"ol\",\n ],\n // https://github.com/xdan/jodit/blob/3.24.5/src/plugins/clean-html/config.ts\n cleanHTML: {\n denyTags: `script,img,video,audio,iframe,embed,object,button,form,input,select,textarea,details,dialog,summary`,\n },\n statusbar: false,\n toolbarStickyOffset: props.toolbarStickyOffset,\n showTooltipDelay: 100,\n askBeforePasteHTML: false,\n defaultActionOnPaste: Jodit.constants.INSERT_CLEAR_HTML,\n link: { modeClassName: false, noFollowCheckbox: false },\n colorPickerDefaultTab: \"color\",\n };\n editor.current = Jodit.make(textarea.current, config);\n\n return () => {\n editor.current.destruct();\n };\n }, [props.placeholder, props.enableTimestampLink, props.toolbarStickyOffset]);\n\n useEffect(() => {\n if (editor.current.value != props.value) {\n editor.current.value = props.value;\n }\n }, [props.value]);\n\n useEffect(() => {\n if (props.onChangeValue) {\n editor.current.events.on(\"change\", props.onChangeValue);\n return () => {\n editor.current.events.off(\"change\", props.onChangeValue);\n };\n }\n }, [props.onChangeValue]);\n\n useEffect(() => {\n if (props.onBlur) {\n editor.current.events.on(\"blur\", props.onBlur);\n return () => {\n editor.current.events.off(\"blur\", props.onBlur);\n };\n }\n }, [props.onBlur]);\n\n return (\n
\n \n
\n );\n};\n\nconst EditSubmenu: VFC<{ onClickClear: () => void }> = ({ onClickClear }) => {\n const [submenu, toggleSubmenu] = useSubMenuVisible();\n return (\n
\n toggleSubmenu()}\n >\n more_vert\n \n
\n );\n};\n\nconst VoiceNameSelect: VFC> = (\n props\n) => {\n return (\n \n );\n};\n\nfunction convertNarrationAudios(\n acsRef: { readonly current: AzureCognitiveService },\n viewState: {\n narrations: NarrationState[];\n voiceName: string;\n speechRate: string;\n }\n) {\n const { narrations, voiceName, speechRate } = viewState;\n return narrations.map((narration) =>\n Promise.all([\n narration,\n narration.text.trim()\n ? acsRef.current.convert({\n text: narration.text,\n voiceName,\n speechRate,\n })\n : null,\n ]).then(([narration, audio]) => ({ ...narration, audio }))\n );\n}\n\nfunction fetchSubtitles(videoId: number) {\n const api = new ApiSubtitleApi(\n new Configuration({\n basePath: \"\",\n headers: { Accept: \"application/json\", \"x-hopper-api-version\": \"1.0\" },\n })\n );\n return api.apiVideoVideoIdSubtitlesGet({ videoId });\n}\n\n/**\n * ナレーションの保存操作を行う。\n * - 音声のアップロード\n * - ナレーションの保存(及び、音声生成ジョブのリクエスト)\n */\nasync function saveNarrations(\n csrfToken: string,\n videoId: number,\n voiceName: string,\n speechRate: string,\n viewNarrations: NarrationState[]\n) {\n const narrationsAndBlobNames = await Promise.all(\n viewNarrations.map((narration) =>\n Promise.all([\n narration,\n uploadAudio(videoId, narration.audio).then((uploadedBlobUrl) => {\n // e.g. https://${accountName}.blob.core.windows.net/${container}/${blobName}\n return new URL(uploadedBlobUrl).pathname.split(\"/\").at(-1);\n }),\n ])\n )\n );\n const api = new ApiNarrationApi(\n new Configuration({\n basePath: \"\",\n headers: {\n \"x-hopper-api-version\": \"1.0\",\n \"X-CSRF-Token\": csrfToken,\n },\n })\n );\n type ParamNarration = Required<\n Parameters<\n typeof api.apiVideoVideoIdNarrationsPut\n >[0][\"apiVideoVideoIdNarrationsPutRequest\"][\"narrations\"][number]\n >;\n const narrations: ParamNarration[] = narrationsAndBlobNames.map(\n ([narration, blobName]) => ({\n startTimeMs: narration.startTimeMs,\n text: narration.text,\n audio: {\n voiceName,\n blobName,\n speechRate: speechRate,\n durationMs: narration.audio.durationMs,\n },\n })\n );\n return api.apiVideoVideoIdNarrationsPut({\n videoId,\n apiVideoVideoIdNarrationsPutRequest: { narrations },\n });\n}\n\nasync function uploadAudio(videoId: number, audio: NarrationState[\"audio\"]) {\n const fileBlob = await fetch(audio.blobUrl).then((v) => v.blob());\n const api = new ApiNarrationApi(\n new Configuration({\n basePath: \"\",\n headers: { \"x-hopper-api-version\": \"1.0\" },\n })\n );\n const presign = await api.apiVideoVideoIdNarrationsPresignGet({ videoId });\n const blobClient = new BlockBlobClient(presign.endpoint);\n await blobClient.uploadData(fileBlob, {\n blobHTTPHeaders: { blobContentType: fileBlob.type },\n });\n return presign.endpoint;\n}\n","import { useReducer } from \"react\";\nimport { ApiVideoApi, ApiNarrationApi } from \"../../generated/api\";\nimport { formatTimeMs } from \"../../lib/formatTimeMs\";\n\ntype Video = Awaited>;\ntype VideoNarration = Awaited<\n ReturnType\n>[number];\n\ntype ViewState = {\n playing: boolean;\n playingNarrationKey?: NarrationState[\"key\"];\n video: Video;\n voiceName: string;\n speechRate: string;\n narrations: NarrationState[];\n};\n\ntype NarrationError =\n | \"このフィールドを入力してください\"\n | \"ナレーションを生成できないテキストです\"\n | `ビデオの再生時間 ${string} を越えています`\n | `次のナレーションの開始時間 ${string} と重なっています`;\n\nexport type NarrationState = {\n key: string;\n startTimeMs: number;\n text: string;\n error?: NarrationError;\n audio?: {\n blobSize: number;\n blobUrl: string;\n durationMs: number;\n };\n};\n\ntype ReducerAction =\n | { type: \"set-voice-name\"; voiceName: string }\n | { type: \"set-speech-rate\"; speechRate: string }\n | {\n type: \"set-narrations\";\n narrations: (Pick &\n Partial>)[];\n }\n | {\n type: \"set-narration-item\";\n narration: Pick;\n }\n | { type: \"delete-narration\"; key: NarrationState[\"key\"] }\n | { type: \"add-new-narration-after\"; key: NarrationState[\"key\"] }\n | { type: \"set-playing\"; playing: boolean }\n | { type: \"set-current-time\"; currentTimeMs: number };\n\nfunction reducer(state: ViewState, action: ReducerAction) {\n let result: ViewState;\n if (action.type === \"set-voice-name\") {\n result = {\n ...state,\n voiceName: action.voiceName,\n narrations: state.narrations.map((n) => ({ ...n, audio: null })), // 音声種別の変更時は生成済み音声もリセット\n };\n } else if (action.type === \"set-speech-rate\") {\n result = {\n ...state,\n speechRate: action.speechRate,\n narrations: state.narrations.map((n) => ({ ...n, audio: null })), // 音声のパラメータ関連の変更時は生成済み音声もリセット\n };\n } else if (action.type === \"set-narrations\") {\n result = {\n ...state,\n narrations: action.narrations.map((n) => ({\n key: n.key ?? crypto.randomUUID(),\n startTimeMs: n.startTimeMs,\n text: n.text,\n audio: n.audio,\n })),\n };\n } else if (action.type === \"set-narration-item\") {\n const index = state.narrations.findIndex(\n (n) => n.key === action.narration.key\n );\n state.narrations[index] = action.narration;\n result = { ...state, narrations: [...state.narrations] };\n } else if (action.type === \"delete-narration\") {\n const index = state.narrations.findIndex((n) => n.key === action.key);\n state.narrations.splice(index, 1);\n result = { ...state };\n } else if (action.type === \"add-new-narration-after\") {\n const index = state.narrations.findIndex((n) => n.key === action.key);\n const startTimeMs =\n state.narrations[index]?.startTimeMs != null\n ? state.narrations[index]?.startTimeMs + 3_000\n : 0;\n const newNarration: NarrationState = {\n key: crypto.randomUUID(),\n text: \"\",\n startTimeMs,\n };\n state.narrations.splice(index + 1, 0, newNarration);\n result = { ...state };\n } else if (action.type === \"set-playing\") {\n result = { ...state, playing: action.playing };\n } else if (action.type === \"set-current-time\") {\n const currentTimeMs = action.currentTimeMs;\n const playingNarrationKey = state.narrations\n .filter((n) => n.audio?.durationMs)\n .find(\n (n) =>\n n.startTimeMs <= currentTimeMs &&\n currentTimeMs <= n.startTimeMs + n.audio.durationMs\n )?.key;\n if (playingNarrationKey !== state.playingNarrationKey) {\n result = { ...state, playingNarrationKey };\n } else {\n result = state; // 変更なし\n }\n } else {\n throw new Error(`unknown action.type: ${JSON.stringify(action)}`);\n }\n return validate(result);\n}\n\nfunction validate(state: ViewState): ViewState {\n state.narrations.forEach((narration, index) => {\n delete narration.error;\n if (!narration.text?.trim()) {\n narration.error = \"このフィールドを入力してください\";\n }\n const nextNarration = state.narrations[index + 1];\n if (narration.startTimeMs > state.video.playTimeMs) {\n narration.error = `ビデオの再生時間 ${formatTimeMs(\n state.video.playTimeMs\n )} を越えています`;\n } else if (narration.audio) {\n if (narration.audio.blobSize === 0) {\n narration.error = \"ナレーションを生成できないテキストです\";\n }\n // エンコードの都合上、 50ms 程度の余裕が必要。画面上の制御としてはキリ良く 100ms でチェック。\n const endTimeMs =\n narration.startTimeMs + narration.audio.durationMs + 100;\n if (endTimeMs > state.video.playTimeMs) {\n narration.error = `ビデオの再生時間 ${formatTimeMs(\n state.video.playTimeMs\n )} を越えています`;\n } else if (nextNarration) {\n if (endTimeMs > nextNarration.startTimeMs) {\n narration.error = `次のナレーションの開始時間 ${formatTimeMs(\n nextNarration.startTimeMs\n )} と重なっています`;\n }\n }\n }\n });\n return state;\n}\n\nexport function useNarrationsView(\n video: Video,\n videoNarrations: VideoNarration[],\n defaultVoiceName: string,\n defaultSpeechRate: string\n) {\n const [state, dispatch] = useReducer(\n reducer,\n { video, videoNarrations, defaultVoiceName, defaultSpeechRate },\n init\n );\n return [state, dispatch] as const;\n}\n\nfunction init(arg: {\n video: Video;\n videoNarrations: VideoNarration[];\n defaultVoiceName: string;\n defaultSpeechRate: string;\n}): ViewState {\n if (!arg.videoNarrations?.length) {\n return {\n playing: false,\n video: arg.video,\n voiceName: arg.defaultVoiceName,\n speechRate: arg.defaultSpeechRate,\n narrations: [],\n };\n }\n return {\n playing: false,\n video: arg.video,\n voiceName:\n arg.videoNarrations?.at(0)?.audioData?.voiceName || arg.defaultVoiceName,\n speechRate:\n arg.videoNarrations?.at(0)?.audioData?.speechRate ||\n arg.defaultSpeechRate,\n narrations: arg.videoNarrations?.map((vn) => ({\n key: crypto.randomUUID(),\n text: vn.text,\n startTimeMs: vn.startTimeMs,\n })),\n };\n}\n","import { domReady } from \"../dom-ready\";\n\ndomReady(() => {\n // 閉じるボタンイベント\n const elem = document.getElementById(\"c-notification\");\n if (elem) {\n const closeButton = elem.querySelector(\"button\");\n closeButton.addEventListener(\"click\", () => {\n elem.style.display = \"none\";\n });\n }\n});\n\nexport function notify(msg: string): void {\n const elem = document.getElementById(\"c-notification\");\n clearTimeout(parseInt(elem.dataset.timeoutId));\n if (elem.style.display) {\n show();\n } else {\n // 表示中の場合、一度消してから再表示させCSSアニメーションを発火する\n elem.style.display = \"none\";\n setTimeout(() => show(), 100);\n }\n\n function show() {\n elem.querySelector(\"p\").textContent = msg;\n elem.style.display = \"\";\n const timeoutId = setTimeout(() => {\n elem.style.display = \"none\";\n }, 5000); // 5秒\n elem.dataset.timeoutId = `${timeoutId}`;\n }\n}\n","import loadingImg from \"images/loading.svg\";\nimport {\n SubtitlesEditView,\n SubtitlesEditViewProps,\n} from \"./edit/SubtitlesEditView\";\nimport { useSubtitleView } from \"./useSubtitleView\";\n\ntype Props = SubtitlesEditViewProps & {\n canRequestGenerateJob: boolean;\n subtitles: {\n generateJobState: string;\n size: number;\n };\n};\n\nexport function SubtitlesView(props: Props) {\n const { viewState, isRequesting, requestGenerateJob, startEditView } =\n useSubtitleView(\n props.videoId,\n props.csrfToken,\n props.subtitles.generateJobState,\n props.subtitles.size\n );\n\n if (viewState === \"initial\") {\n // 字幕生成方法選択\n return (\n
\n
\n requestGenerateJob()}\n title={\n props.canRequestGenerateJob\n ? \"AI字幕(自動生成)\"\n : \"音声トラックのないビデオでは自動生成できません\"\n }\n >\n \n auto_awesome\n \n AI字幕(自動生成)\n \n\n \n \n edit_note\n \n 字幕を手動入力\n \n
\n {isRequesting && }\n
\n );\n }\n\n if (viewState === \"processing\") {\n // 字幕生成中\n return (\n
\n
\n

\n 字幕を生成しています...\n

\n

\n この画面から移動しても字幕の生成は継続されます。\n

\n \n
\n
\n );\n }\n\n if (viewState === \"editable\") {\n return (\n \n );\n }\n\n // エラー\n return (\n
\n
\n エラーが発生しました。\n
\n 画面をリロードしてもう一度試してください。\n
\n
\n );\n}\nexport default SubtitlesView;\n","import {\n VFC,\n useRef,\n useState,\n useEffect,\n useCallback,\n ChangeEventHandler,\n MouseEventHandler,\n} from \"react\";\nimport { useSubtitlesCues, SubtitlesCue } from \"./useSubtitlesCues\";\nimport { useCurrentSubtitlesCue } from \"./useCurrentSubtitlesCue\";\nimport { useSubMenuVisible } from \"../../common/submenus/useSubMenuVisible\";\nimport { SaveButton, SaveButtonHandler } from \"../../common/SaveButton\";\nimport { useSubtitlesPublished } from \"./useSubtitlesPublished\";\nimport { notify } from \"../../notification\";\nimport { SubtitlesPreviewPlayer } from \"./SubtitlesPreviewPlayer\";\nimport { TimeMsInput } from \"../../common/TimeMsInput\";\n\nexport interface SubtitlesEditViewProps {\n csrfToken: string;\n videoId: number;\n src: string;\n type: string;\n}\n\nexport const SubtitlesEditView: VFC = (props) => {\n const saveButtonRef = useRef();\n const [savable, setSavable] = useState(false);\n const { cues, dispatchCues, requestSaveCues, requestDestroyCues } =\n useSubtitlesCues(props.videoId, props.csrfToken);\n const { subtitlesPublished, requestSaveSubtitlesPublished } =\n useSubtitlesPublished(props.videoId, props.csrfToken);\n const { currentCue, setCurrentTimeMs } = useCurrentSubtitlesCue(cues);\n\n const hasError = cues.some((c) => c.hasStartTimeError || c.hasEndTimeError);\n\n useEffect(() => {\n // 保存前、保存中は画面離脱確認をする。\n if (savable) {\n const onBeforeUnload = (event: BeforeUnloadEvent) => {\n event.returnValue = true;\n };\n window.addEventListener(\"beforeunload\", onBeforeUnload);\n return () => window.removeEventListener(\"beforeunload\", onBeforeUnload);\n }\n }, [savable]);\n\n const save = async () => {\n if (savable) {\n saveButtonRef.current.startSaving();\n try {\n await requestSaveCues();\n await saveButtonRef.current.finishSaving();\n setSavable(false);\n } catch (reason) {\n saveButtonRef.current.reset();\n notify(\n \"エラーが発生しました。画面をリロードしてもう一度試してください。\"\n );\n throw reason;\n }\n }\n };\n\n const destroy = async () => {\n if (confirm(\"字幕を削除し初期状態に戻します。この操作は取り消せません。\")) {\n setSavable(false); // 画面離脱確認が表示されないように\n try {\n await Promise.all([\n requestDestroyCues(),\n requestSaveSubtitlesPublished(false),\n ]);\n location.reload();\n } catch {\n notify(\n \"エラーが発生しました。画面をリロードしてもう一度試してください。\"\n );\n }\n }\n };\n\n return (\n <>\n
\n \n\n {\n requestSaveSubtitlesPublished(event.currentTarget.checked);\n }}\n />\n\n \n
\n
\n
\n {cues.length === 0 && (\n dispatchCues({ type: \"add-new-after\", key: null })}\n title=\"字幕を追加\"\n >\n add\n 字幕を追加\n \n )}\n {cues.map((cue) => (\n {\n setSavable(true); // 厳密な変更検知は諦めて、何かしら更新したら保存可能扱い\n return dispatchCues(action);\n }}\n />\n ))}\n
\n
\n \n
\n
\n \n );\n};\n\nconst SubtitlesEditCueItem: VFC<{\n cue: SubtitlesCue;\n isCurrent: boolean;\n dispatchCues: ReturnType[\"dispatchCues\"];\n}> = ({ cue, isCurrent, dispatchCues }) => {\n const currentCueItemRef = useCallback((elem: HTMLDivElement) => {\n elem?.scrollIntoView?.({ behavior: \"smooth\", block: \"center\" });\n }, []);\n\n const updateCue = (newCue: SubtitlesCue) => {\n dispatchCues({ type: \"update\", key: cue.key, cue: newCue });\n };\n\n const changeCueText: ChangeEventHandler = (event) => {\n // WebVTTの仕様で空行は扱えないので入力時点で制御する。\n const value = event.target.value.trimStart().replace(/\\n\\n/g, \"\\n\");\n updateCue({ ...cue, value });\n };\n\n return (\n \n
\n updateCue({ ...cue, startTimeMs })}\n />\n updateCue({ ...cue, endTimeMs })}\n />\n
\n
\n dispatchCues({ type: \"delete\", key: cue.key })}\n >\n delete_outline\n \n\n dispatchCues({ type: \"add-new-after\", key: cue.key })}\n >\n add_circle\n \n
\n \n \n );\n};\n\nconst SubtitlesEditPublishSwitch: VFC<{\n checked: boolean;\n onChange: ChangeEventHandler;\n}> = ({ checked, onChange }) => {\n return (\n <>\n \n \n \n );\n};\n\nconst SubtitlesEditSubmenu: VFC<{\n onClickDestroy: MouseEventHandler;\n}> = ({ onClickDestroy }) => {\n const [submenu, toggleSubmenu] = useSubMenuVisible();\n return (\n <>\n toggleSubmenu()}\n >\n more_vert\n \n
\n setModalVisible(false)}\n onUpdated={(type, count) => {\n setWatchLinkType(type);\n setInviteMembersCount(count);\n }}\n type={watchLinkType}\n csrfToken={props.csrfToken}\n videoId={props.videoId}\n shareUrl={props.shareUrl}\n domainWatchLinkAvailable={props.domainWatchLinkAvailable}\n watchLinkConditionAvailable={props.watchLinkConditionAvailable}\n />\n \n );\n};\n\nexport default VideoShareMenu;\n\nexport const VideoWatchLinkTooltipContent: VFC<{\n type: VideoWatchLinkType;\n inviteMembersCount: number;\n}> = (props) => {\n const linkIcon = linkIconMap[props.type];\n let tooltipTitle: string;\n let tooltipDesc: string;\n switch (props.type) {\n case \"video_create_user_only\":\n tooltipTitle = \"非公開\";\n break;\n case \"member_only\":\n tooltipTitle = \"特定の人\";\n tooltipDesc = `指定された${\n props.inviteMembersCount || 0\n }人に共有されています`;\n break;\n case \"domain_only\":\n tooltipTitle = \"特定のドメイン\";\n tooltipDesc = \"指定されたドメインのユーザーのみが閲覧できます\";\n break;\n case \"no_limit\":\n tooltipTitle = \"一般公開\";\n tooltipDesc =\n \"リンクを知っている人は、誰でもビデオを閲覧することができます\";\n break;\n default:\n break;\n }\n\n return (\n \n );\n};\n","import { VFC, useState } from \"react\";\nimport ReactModal from \"react-modal\";\nimport type { VideoWatchLinkType } from \"../../types/videoWatchLink\";\nimport { ApiWatchLinkApi, Configuration } from \"../../generated/api\";\nimport { linkIconMap } from \"./VideoShareMenu\";\nimport { notify } from \"../notification\";\nimport { WatchLinkItem } from \"../common/watch_link/WatchLinkItem\";\nimport { WatchLinkTypeSelect } from \"../common/watch_link/WatchLinkTypeSelect\";\nimport { WatchLinkInvitationForm } from \"../common/watch_link/WatchLinkInvitationForm\";\nimport { LinkCopyButton } from \"../common/LinkCopyButton\";\nimport { isResponseError } from \"../../lib/isResponseError\";\n\ntype InviteMember = Awaited<\n ReturnType\n>[\"members\"][number];\ntype WatchLinkCondition = Awaited<\n ReturnType\n>[\"condition\"];\n\ntype Props = {\n isOpen: boolean;\n requestClose: () => void;\n onUpdated: (type: VideoWatchLinkType, inviteMembersCount: number) => void;\n type: VideoWatchLinkType;\n csrfToken: string;\n videoId: number;\n shareUrl: string;\n domainWatchLinkAvailable: boolean;\n watchLinkConditionAvailable?: boolean;\n};\n\nfunction watchLinkApi(csrfToken: string) {\n return new ApiWatchLinkApi(\n new Configuration({\n basePath: \"\",\n headers: {\n \"x-hopper-api-version\": \"1.0\",\n \"X-CSRF-Token\": csrfToken,\n },\n })\n );\n}\n\nexport const VideoShareModal: VFC = (props) => {\n const [type, setType] = useState(props.type);\n const [members, setMembers] = useState([]);\n const [condition, setCondition] = useState();\n const [errMsg, setErrMsg] = useState(\"\");\n\n const typeItems: WatchLinkItem[] = [\n {\n type: \"video_create_user_only\",\n title: \"非公開\",\n icon: linkIconMap[\"video_create_user_only\"],\n copyDesc: \"自分だけが閲覧できます。\",\n },\n {\n type: \"member_only\",\n title: \"特定の人\",\n icon: linkIconMap[\"member_only\"],\n copyDesc: \"指定したメールアドレスでログインした場合に閲覧できます。\",\n },\n {\n type: \"no_limit\",\n title: \"リンクを知っている人全員\",\n icon: linkIconMap[\"no_limit\"],\n copyDesc: \"リンクを知っているインターネット上の全員が閲覧できます。\",\n },\n ];\n if (props.domainWatchLinkAvailable) {\n typeItems.splice(2, 0, {\n type: \"domain_only\",\n title: \"特定のドメイン\",\n icon: linkIconMap[\"domain_only\"],\n copyDesc: \"指定したドメインでログインした場合に閲覧できます。\",\n });\n }\n const copyDesc = typeItems.find((i) => i.type === type)?.copyDesc;\n\n const closeModal = () => {\n props.requestClose();\n\n // 初期値に戻す\n setType(undefined);\n setMembers([]);\n setCondition(undefined);\n setErrMsg(\"\");\n };\n\n // 初期データ取得\n const initialize = () => {\n watchLinkApi(props.csrfToken)\n .apiVideoVideoIdWatchLinkGet({\n videoId: props.videoId,\n })\n .then((data) => {\n const typeName = data.typeName as VideoWatchLinkType;\n setType(typeName);\n setMembers(data.members ?? []);\n setCondition(data.condition ?? undefined);\n props.onUpdated(typeName, data.members?.length);\n })\n .catch((reason) => {\n notify(\n \"エラーが発生しました。画面をリロードしてもう一度試してください。\"\n );\n Rollbar.warn(reason);\n });\n };\n\n const updateShareSettings = () => {\n setErrMsg(\"\");\n const emails = type === \"member_only\" ? members.map((m) => m.email) : [];\n const api = watchLinkApi(props.csrfToken);\n api\n .apiVideoVideoIdWatchLinkPatch({\n videoId: props.videoId,\n apiVideoVideoIdWatchLinkPatchRequest: { type, emails, condition },\n })\n .then(() => {\n props.onUpdated(type, members?.length);\n closeModal();\n })\n .catch((reason) => {\n if (isResponseError(reason) && reason.response.status === 422) {\n reason.response\n .json()\n .then((body) => Object.values(body?.messages).flat().join(\"\\n\"))\n .then((msg) => {\n setErrMsg(msg);\n });\n } else {\n notify(\n \"エラーが発生しました。画面をリロードしてもう一度試してください。\"\n );\n Rollbar.warn(reason);\n }\n });\n };\n\n return (\n \n
\n
\n

共有リンクを設定

\n \n close\n \n
\n {errMsg &&

{errMsg}

}\n
\n setType(v)}\n />\n\n {type === \"member_only\" && (\n \n )}\n {props.watchLinkConditionAvailable && type === \"no_limit\" && (\n
\n \n
\n )}\n
\n
\n \n キャンセル\n \n \n 完了\n \n
\n
\n\n
\n
\n

リンクを取得

\n
\n
\n

{copyDesc}

\n
\n \n
\n
\n
\n \n );\n};\n","import { useEffect } from \"react\";\nimport { ApiVideoApi, Configuration } from \"../../generated/api\";\nimport type { VFC } from \"react\";\n\ninterface Props {\n videoId: number;\n}\nexport const VideoStateChecker: VFC = (props) => {\n useEffect(() => {\n const intervalId = setInterval(() => {\n const api = new ApiVideoApi(\n new Configuration({\n basePath: \"\",\n headers: { \"x-hopper-api-version\": \"1.0\" },\n })\n );\n api.apiVideoIdGet({ id: props.videoId }).then((video) => {\n if (video.state !== \"transforming\") {\n clearInterval(intervalId);\n location.reload();\n }\n });\n }, 5_000);\n return () => {\n clearInterval(intervalId);\n };\n }, [props.videoId]);\n return null;\n};\nexport default VideoStateChecker;\n","import { useState, useRef, ChangeEventHandler, MouseEventHandler } from \"react\";\nimport loadingImg from \"images/loading.svg\";\nimport { ApiThumbnailApi, Configuration } from \"../../generated/api\";\nimport { BlockBlobClient } from \"@azure/storage-blob\";\n\ninterface Props {\n csrfToken: string;\n videoId: number;\n thumbnailResettable: boolean;\n enableVideoElemCapture?: boolean;\n}\n\nconst acceptMimeTypes = [\"image/jpeg\", \"image/png\"];\ntype ErrorType = \"fileSize\" | \"fileType\" | \"unknown\";\n\nasync function uploadThumbnail(props: Props, file: File): Promise {\n const api = new ApiThumbnailApi(\n new Configuration({\n basePath: \"\",\n headers: {\n \"x-hopper-api-version\": \"1.0\",\n \"X-CSRF-Token\": props.csrfToken,\n },\n })\n );\n\n if (props.thumbnailResettable) {\n await api.apiVideoIdThumbnailDelete({\n id: props.videoId,\n });\n }\n\n const res = await api.apiVideoIdThumbnailPresignGet({\n id: props.videoId,\n });\n\n const blobClient = new BlockBlobClient(res.endpoint);\n await blobClient.uploadData(file, {\n blobHTTPHeaders: { blobContentType: file.type },\n });\n\n const url = new URL(res.endpoint);\n const [, assetContainerName, assetName] = url.pathname.split(\"/\");\n await api.apiVideoIdThumbnailPost({\n id: props.videoId,\n assetName: assetName,\n assetContainer: assetContainerName,\n });\n}\n\nfunction validateFile(file: File) {\n const errors: ErrorType[] = [];\n if (file.size > 1024 * 1024) {\n errors.push(\"fileSize\");\n }\n if (!acceptMimeTypes.includes(file.type)) {\n errors.push(\"fileType\");\n }\n return errors;\n}\n\nasync function purgeThumbnail(props: Props): Promise {\n const api = new ApiThumbnailApi(\n new Configuration({\n basePath: \"\",\n headers: {\n \"x-hopper-api-version\": \"1.0\",\n \"X-CSRF-Token\": props.csrfToken,\n },\n })\n );\n\n await api.apiVideoIdThumbnailDelete({\n id: props.videoId,\n });\n}\n\nexport function VideoThumbnail(props: Props) {\n const resettable = props.thumbnailResettable;\n const inputFileRef = useRef();\n const [errors, setErrors] = useState([]);\n const [uploading, setUploading] = useState(false);\n\n const fileChange: ChangeEventHandler = (event) => {\n setErrors([]);\n const file = event.target.files[0];\n if (!file) {\n return;\n }\n setUploading(true);\n const errors = validateFile(file);\n if (errors.length > 0) {\n setErrors(errors);\n setUploading(false);\n return;\n }\n\n // アップロード\n uploadThumbnail(props, file)\n .then(() => {\n location.reload();\n })\n .catch((reason) => {\n console.error(reason);\n setErrors([\"unknown\"]);\n setUploading(false);\n });\n };\n\n const captureVideoElemInThisPage = () => {\n const video = document.querySelector(\"video\");\n if (!video) {\n alert(\"ビデオを検出できませんでした\");\n return;\n }\n const canvas = document.createElement(\"canvas\");\n canvas.width = video.videoWidth;\n canvas.height = video.videoHeight;\n canvas.getContext(\"2d\").drawImage(video, 0, 0);\n canvas.toBlob((blob) => {\n canvas.remove();\n if (!blob) {\n alert(\"画像の取得に失敗しました\");\n return;\n }\n const file = new File([blob], \"thumbnail.jpeg\", { type: blob.type });\n setUploading(true);\n uploadThumbnail(props, file)\n .then(() => {\n location.reload();\n })\n .catch((reason) => {\n console.error(reason);\n setErrors([\"unknown\"]);\n setUploading(false);\n });\n }, \"image/jpeg\");\n };\n\n const initializeThumbnail: MouseEventHandler = () => {\n if (!confirm(\"サムネイルをリセットしますか?\")) {\n return;\n }\n setUploading(true);\n purgeThumbnail(props)\n .then(() => {\n location.reload();\n })\n .catch((reason) => {\n console.error(reason);\n setErrors([\"unknown\"]);\n setUploading(false);\n });\n };\n return (\n <>\n {errors.length > 0 && (\n
\n アップロードできませんでした。\n
\n {errors\n .map((errorType) => {\n const errMsgs: Record = {\n fileSize: \"ファイルサイズを1MB以下にして再度お試しください。\",\n fileType:\n \"JPEGまたはPNG形式のファイルをアップロードしてください。\",\n unknown: \"画面をリロードしてもう一度お試しください。\",\n };\n return errMsgs[errorType] ?? errMsgs.unknown;\n })\n .join(\"\\n\")}\n
\n )}\n
\n

insert_photo

\n

画像をアップロード

\n

\n jpeg, png / 1MB以下\n
\n 推奨サイズ:1280 x 720px\n

\n\n inputFileRef.current.click()}\n >\n ファイルを選択\n \n \n\n {uploading && (\n <>\n
\n \n
\n \n \n )}\n
\n {props.enableVideoElemCapture && (\n
\n \n 現在のビデオプレビューをサムネイルに設定\n \n
\n )}\n {resettable && (\n
\n \n サムネイルをリセット\n \n
\n )}\n \n );\n}\nexport default VideoThumbnail;\n","import { VFC, useState, useRef, useEffect } from \"react\";\nimport type {\n InteractionMode,\n TooltipModel,\n ChartType,\n ChartData,\n} from \"chart.js\";\nimport {\n Chart,\n LineController,\n LinearScale,\n CategoryScale,\n PointElement,\n LineElement,\n Filler,\n Tooltip,\n} from \"chart.js\";\n\nChart.register(\n LineController,\n LinearScale,\n CategoryScale,\n PointElement,\n LineElement,\n Filler,\n Tooltip\n);\n\ntype ChartTooltipModel = TooltipModel;\n\nexport type { ChartData };\nexport type TooltipComponent = VFC<{ model: ChartTooltipModel }>;\n\ntype Props = {\n data: ChartData;\n aspectRatio?: number;\n /**\n * Y軸の単位を可変にするスケール値\n *\n * 例えば、値の単位が秒の場合に`60`を指定するとY軸の表示は分単位になる。\n */\n yTickScale?: number;\n yMax?: number;\n // ツールチップの制御を親コンポーネントに移譲する実装にすると、ReactのレンダリングとChart.jsのDOM操作がカニバる。\n // そのため、ツールチップのコンポーネントを親から受け取り処理する形にしている。\n tooltip?: TooltipComponent;\n};\n\nconst primaryColor = \"#0032F0\";\nconst primaryColorBackground = \"#0032F022\";\nconst white = \"#FFFFFF\";\n\nexport const LineGraph: VFC = (props) => {\n const { data, aspectRatio, yTickScale, yMax, tooltip: Tooltip } = props;\n const [tooltipModel, setTooltipModel] = useState(null);\n const canvasRef = useRef();\n\n useEffect(() => {\n const tooltipMode: InteractionMode = \"index\";\n const chart = new Chart(canvasRef.current, {\n type: \"line\",\n data: data,\n options: {\n animation: false,\n aspectRatio,\n scales: {\n y: {\n position: \"right\",\n beginAtZero: true,\n max: yMax,\n ticks: {\n autoSkipPadding: 14,\n stepSize: yTickScale,\n callback(value) {\n if (yTickScale && typeof value === \"number\") {\n return value / yTickScale;\n }\n return value;\n },\n },\n },\n x: {\n grid: { display: false },\n ticks: { font: { size: 10 }, maxRotation: 0, autoSkipPadding: 14 },\n },\n },\n plugins: {\n legend: { display: false },\n tooltip: {\n mode: tooltipMode,\n intersect: false,\n enabled: false, // デフォルトのツールチップは消す\n external({ tooltip }) {\n setTooltipModel({ ...tooltip });\n },\n },\n },\n hover: { mode: tooltipMode, intersect: false },\n elements: {\n line: {\n fill: true,\n backgroundColor: primaryColorBackground,\n borderColor: primaryColor,\n tension: 0,\n },\n point: {\n radius: 0,\n hoverRadius: 8,\n borderWidth: 3,\n backgroundColor: primaryColor,\n borderColor: white, // なんかきれいに白にならないけど諦める\n pointStyle: \"circle\",\n },\n },\n },\n });\n return () => {\n chart.destroy();\n };\n }, [data, aspectRatio, yTickScale, yMax]);\n\n // ツールチップの位置制御まわりはcssに切り出し辛いのでここでやる\n return (\n
\n \n {Tooltip && tooltipModel?.opacity > 0 && (\n \n \n
\n )}\n \n );\n};\n","import { VFC } from \"react\";\nimport { DurationText } from \"../../common/DurationText\";\nimport { LineGraph, ChartData, TooltipComponent } from \"./LineGraph\";\n\ntype Props = {\n data: {\n /** YYYY-MM-DD */\n day: string;\n /** 日別の累計視聴時間(ミリ秒) */\n sum: number;\n }[];\n};\n\nfunction convert2ChartData(src: Props[\"data\"]) {\n const labels = src.map((d) => d.day.replace(/-/g, \"/\"));\n const data = src.map((d) => d.sum / 1000);\n const maxValue = Math.max(...data);\n const chartData: ChartData = {\n labels,\n datasets: [{ data }],\n };\n return { chartData, maxValue };\n}\n\n// e.g. 2020年12月22日(火)\nconst dateTimeFormater = new Intl.DateTimeFormat(\"ja-JP\", {\n weekday: \"short\",\n year: \"numeric\",\n month: \"long\",\n day: \"numeric\",\n});\n\nexport const Tooltip: TooltipComponent = (props) => {\n const [data] = props.model.dataPoints;\n const dateLabel = dateTimeFormater.format(new Date(data.label));\n return (\n
\n

{dateLabel}

\n

\n \n

\n
\n );\n};\n\nexport const WatchCumulativeGraph: VFC = (props) => {\n const { chartData, maxValue } = convert2ChartData(props.data);\n // 秒、分、時間でY軸がスケールするようにしておく\n const yScale = maxValue > 3600 ? 3600 : maxValue > 60 ? 60 : undefined;\n return ;\n};\nexport default WatchCumulativeGraph;\n","import { VFC } from \"react\";\nimport { LineGraph, ChartData, TooltipComponent } from \"./LineGraph\";\n\ntype Props = {\n data: {\n /** 秒数 */\n sec: number;\n /** 秒毎の視聴維持率: 0-100 */\n rate: number;\n }[];\n};\n\n// e.g. 12:34\nconst timeFormater = new Intl.DateTimeFormat(\"ja-JP\", {\n minute: \"2-digit\",\n second: \"2-digit\",\n});\n\nfunction convert2ChartData(src: Props[\"data\"]): ChartData {\n const labels = src.map((d) => timeFormater.format(d.sec * 1000));\n const data = src.map((d) => d.rate);\n const chartData: ChartData = {\n labels,\n datasets: [{ data }],\n };\n return chartData;\n}\n\nconst Tooltip: TooltipComponent = (props) => {\n const [data] = props.model.dataPoints;\n const dateLabel = data.label;\n return (\n
\n

{dateLabel}

\n

{data.formattedValue}%

\n
\n );\n};\n\nexport const WatchRetensionGraph: VFC = (props) => {\n const chartData = convert2ChartData(props.data);\n return (\n \n );\n};\nexport default WatchRetensionGraph;\n","import { VFC } from \"react\";\nimport type { User } from \"app/javascript/types/user\";\n\ntype Props = {\n data: {\n user: User;\n }[];\n domainWatchLinkAvailable: boolean;\n};\n\nexport const WatchedUserList: VFC = (props) => {\n const { data, domainWatchLinkAvailable } = props;\n\n if (!data?.length) {\n return (\n

\n {domainWatchLinkAvailable\n ? \"ビデオの共有が「特定の人」、「特定のドメイン」で視聴したユーザーの一覧が表示されます。\"\n : \"ビデオの共有が「特定の人」で視聴したユーザーの一覧が表示されます。\"}\n

\n );\n }\n\n return (\n
    \n {props.data.map((data, index) => {\n const { user } = data;\n return (\n // keyは本来はユニーク値にするべきだが、Userのidを取得してないので一旦index\n
  • \n \n {user.name}\n
  • \n );\n })}\n
\n );\n};\nexport default WatchedUserList;\n","import { VFC, useState, useEffect } from \"react\";\nimport { videoReviewsPath } from \"../../generated/routes\";\nimport bestImage from \"images/review/best.svg\";\nimport betterImage from \"images/review/better.svg\";\nimport normalImage from \"images/review/normal.svg\";\nimport worseImage from \"images/review/worse.svg\";\nimport worstImage from \"images/review/worst.svg\";\n\ninterface Props {\n videoID: string;\n csrfToken: string;\n}\ninterface Rate {\n rate: number;\n image: string;\n label: string;\n}\n\nconst Review: VFC = (props) => {\n const { videoID, csrfToken } = props;\n const [localStorageVideoID, setLocalStorageVideoID] = useState(\n () => {\n try {\n return localStorage.getItem(videoID);\n } catch (reason) {\n Rollbar.info(reason);\n return null;\n }\n }\n );\n const [rate, setRate] = useState(null);\n const [reviewdVideoID, setReviewdVideoID] = useState(\"\");\n\n const rateArr: Rate[] = [\n { rate: 1, image: worstImage, label: \"不満\" },\n { rate: 2, image: worseImage, label: \"やや不満\" },\n { rate: 3, image: normalImage, label: \"ふつう\" },\n { rate: 4, image: betterImage, label: \"やや満足\" },\n { rate: 5, image: bestImage, label: \"満足\" },\n ];\n\n const handleSelect = (rate: number) => {\n setRate(rate);\n };\n\n useEffect(() => {\n if (rate !== null) {\n const url = videoReviewsPath(videoID);\n const params = {\n review: {\n rate: rate,\n },\n };\n fetch(url, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"X-CSRF-Token\": csrfToken,\n },\n body: JSON.stringify(params),\n })\n .then(() => {\n try {\n localStorage.setItem(videoID, videoID);\n setLocalStorageVideoID(localStorage.getItem(\"videoID\"));\n } catch (reason) {\n Rollbar.info(reason);\n }\n setReviewdVideoID(videoID);\n })\n .catch((reason) => {\n Rollbar.warn(reason);\n });\n }\n }, [rate, videoID, csrfToken]);\n\n if (reviewdVideoID === videoID) {\n return (\n
\n

ありがとうございます!

\n
ビデオの改善の参考にさせていただきます。
\n
\n );\n }\n\n if (localStorageVideoID === videoID) {\n return <>;\n }\n\n return (\n <>\n

ビデオの評価

\n
\n {rateArr.map((arr, i) => (\n \n ))}\n
\n \n );\n};\n\nexport default Review;\n","import { useState, FormEventHandler } from \"react\";\nimport ReactModal from \"react-modal\";\nimport {\n ApiWatchLinkConditionResponseApi,\n Configuration,\n} from \"../../generated/api\";\nimport { notify } from \"../notification\";\n\ninterface Props {\n videoId: number;\n csrfToken: string;\n description?: string;\n}\n\nexport const WatchLinkConditionFormModal = (props: Props) => {\n const [open, setOpen] = useState(true);\n const [email, setEmail] = useState(\"\");\n\n const handleSubmit: FormEventHandler = (e) => {\n e.preventDefault();\n\n const api = new ApiWatchLinkConditionResponseApi(\n new Configuration({\n basePath: \"\",\n headers: {\n \"x-hopper-api-version\": \"1.0\",\n \"X-CSRF-Token\": props.csrfToken,\n },\n })\n );\n api\n .apiVideoVideoIdWatchLinkConditionResponsePost({\n videoId: props.videoId,\n apiVideoVideoIdWatchLinkConditionResponsePostRequest: {\n response: { email },\n },\n })\n .then(() => {\n setOpen(false);\n })\n .catch((reason) => {\n notify(\n \"エラーが発生しました。画面をリロードしてもう一度試してください。\"\n );\n throw reason;\n });\n };\n\n return (\n \n \n \"\"\n

\n {props.description}\n

\n setEmail(e.target.value)}\n >\n

\n ビデオを視聴するにあたり、メールアドレスをVideoTouchに登録します。\n VideoTouchの\n \n プライバシーポリシー\n \n をご確認ください。\n

\n \n \n \n );\n};\nexport default WatchLinkConditionFormModal;\n","import {\n FC,\n MouseEventHandler,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { ApiWordPronounciationApi, Configuration } from \"../../generated/api\";\nimport { useSubMenuVisible } from \"../common/submenus/useSubMenuVisible\";\nimport { AzureCognitiveService } from \"../../lib/AzureCognitiveService\";\nimport { phoneme2Ssml } from \"../../lib/ssmlHelper\";\n\ninterface WordPronounciation {\n id: number;\n literal: string;\n phoneme: string;\n lastModifiedBy?: {\n name?: string;\n imageUrl?: string;\n };\n lastModifiedAt: string;\n}\ninterface Props {\n csrfToken: string;\n wordPronounciation: WordPronounciation;\n}\n\nconst WordPronounciationEntry: FC = (props) => {\n const { wordPronounciation } = props;\n const [phoneme, setPhoneme] = useState(wordPronounciation.phoneme);\n const [literal, setLiteral] = useState(wordPronounciation.literal);\n const [subMenuVisible, toggleSubMenuVisible] = useSubMenuVisible();\n const acsRef = useRef();\n const phonemeRef = useRef();\n const literalRef = useRef();\n\n useEffect(() => {\n return () => acsRef.current?.disposeAudioCaches();\n }, []);\n\n const api = useMemo(\n () =>\n new ApiWordPronounciationApi(\n new Configuration({\n basePath: \"\",\n headers: {\n \"x-hopper-api-version\": \"1.0\",\n \"X-CSRF-Token\": props.csrfToken,\n },\n })\n ),\n [props.csrfToken]\n );\n\n const formattedLastModifiedAt = useMemo(() => {\n // RubyのI18n.l(_, format: :long) 相当のフォーマット\n const dateTimeFormater = new Intl.DateTimeFormat(\"ja-JP\", {\n year: \"numeric\",\n month: \"2-digit\",\n day: \"2-digit\",\n hour: \"2-digit\",\n minute: \"2-digit\",\n });\n return dateTimeFormater.format(new Date(wordPronounciation.lastModifiedAt));\n }, [wordPronounciation.lastModifiedAt]);\n\n const handleLiteralChange = (e: React.ChangeEvent) => {\n setLiteral(e.target.value);\n };\n const handlePhonemeChange = (e: React.ChangeEvent) => {\n setPhoneme(e.target.value);\n };\n\n const handleSubmit = (e: React.MouseEvent) => {\n e.preventDefault();\n api\n .apiWordPronounciationsIdPut({\n id: wordPronounciation.id,\n apiWordPronounciationsIdPutRequest: {\n literal,\n phoneme,\n },\n })\n .then(() => {\n location.reload();\n })\n .catch(async (error) => {\n const { messages } = await error.response.json();\n if (messages.literal) {\n literalRef.current.setCustomValidity(messages.literal.join(\"\\n\"));\n literalRef.current.reportValidity();\n }\n if (messages.phoneme) {\n phonemeRef.current.setCustomValidity(messages.phoneme.join(\"\\n\"));\n phonemeRef.current.reportValidity();\n }\n });\n };\n\n const handleDelete = () => {\n api\n .apiWordPronounciationsIdDelete({\n id: wordPronounciation.id,\n })\n .then(() => {\n location.reload();\n });\n };\n\n const handlePreview = async () => {\n acsRef.current ??= new AzureCognitiveService(props.csrfToken);\n await acsRef.current.ensureToken();\n const ssmlString = phoneme2Ssml({\n phoneme,\n literal,\n voiceName: \"ja-JP-NanamiNeural\",\n speechRate: \"1\",\n });\n\n const audioInfo = await acsRef.current.convertSsml(ssmlString).catch(() => {\n phonemeRef.current.setCustomValidity(\n \"音声生成に失敗しました。読み方の指定が正しいか確認してください。\"\n );\n phonemeRef.current.reportValidity();\n });\n if (!audioInfo) {\n return;\n }\n const audio = new Audio(audioInfo.blobUrl);\n audio.play();\n };\n\n const toggleMenu: MouseEventHandler = () => {\n toggleSubMenuVisible();\n };\n\n const isDirty =\n phoneme !== wordPronounciation.phoneme ||\n literal !== wordPronounciation.literal;\n\n return (\n
\n
\n \n
\n
\n \n volume_up\n \n \n \n more_vert\n \n {subMenuVisible && (\n
    \n
  • \n \n
  • \n
\n )}\n \n 保存\n \n
\n
\n \n
\n \n {wordPronounciation.lastModifiedBy?.name || \"削除済みユーザー\"}\n \n {formattedLastModifiedAt} 更新\n
\n
\n
\n );\n};\n\nexport default WordPronounciationEntry;\n","import { FC, useEffect, useMemo, useRef, useState } from \"react\";\nimport { ApiWordPronounciationApi, Configuration } from \"../../generated/api\";\nimport { AzureCognitiveService } from \"../../lib/AzureCognitiveService\";\nimport { phoneme2Ssml } from \"../../lib/ssmlHelper\";\n\ninterface Props {\n csrfToken: string;\n}\n\nconst WordPronounciationForm: FC = (props) => {\n const [phoneme, setPhoneme] = useState(\"\");\n const [literal, setLiteral] = useState(\"\");\n const acsRef = useRef();\n const literalRef = useRef();\n const phonemeRef = useRef();\n const hasInput = phoneme && literal;\n\n useEffect(() => {\n return () => acsRef.current?.disposeAudioCaches();\n }, []);\n\n const api = useMemo(\n () =>\n new ApiWordPronounciationApi(\n new Configuration({\n basePath: \"\",\n headers: {\n \"x-hopper-api-version\": \"1.0\",\n \"X-CSRF-Token\": props.csrfToken,\n },\n })\n ),\n [props.csrfToken]\n );\n\n const handleLiteralChange = (e: React.ChangeEvent) => {\n setLiteral(e.target.value);\n };\n const handlePhonemeChange = (e: React.ChangeEvent) => {\n setPhoneme(e.target.value);\n };\n\n const handleSubmit = (e: React.MouseEvent) => {\n e.preventDefault();\n api\n .apiWordPronounciationsPost({\n apiWordPronounciationsPostRequest: {\n literal,\n phoneme,\n },\n })\n .then(() => {\n location.reload();\n })\n .catch(async (error) => {\n const { messages } = await error.response.json();\n if (messages.literal) {\n literalRef.current.setCustomValidity(messages.literal);\n literalRef.current.reportValidity();\n }\n if (messages.phoneme) {\n phonemeRef.current.setCustomValidity(messages.phoneme);\n phonemeRef.current.reportValidity();\n }\n });\n };\n\n const handlePreview = async () => {\n acsRef.current ??= new AzureCognitiveService(props.csrfToken);\n await acsRef.current.ensureToken();\n const ssmlString = phoneme2Ssml({\n phoneme,\n literal,\n voiceName: \"ja-JP-NanamiNeural\",\n speechRate: \"1\",\n });\n\n const audioInfo = await acsRef.current.convertSsml(ssmlString).catch(() => {\n phonemeRef.current.setCustomValidity(\n \"音声生成に失敗しました。読み方の指定が正しいか確認してください。\"\n );\n phonemeRef.current.reportValidity();\n });\n if (!audioInfo) {\n return;\n }\n const audio = new Audio(audioInfo.blobUrl);\n audio.play();\n };\n\n return (\n
\n
\n \n
\n
\n \n volume_up\n \n \n \n 追加\n \n
\n
\n );\n};\n\nexport default WordPronounciationForm;\n","export function domReady(func: (event?: Event) => void): void {\n if (document?.readyState === \"loading\") {\n document.addEventListener(\"DOMContentLoaded\", func, { once: true });\n } else {\n func();\n }\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * hopper\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\nexport const BASE_PATH = \"http://localhost\".replace(/\\/+$/, \"\");\n\nexport interface ConfigurationParameters {\n basePath?: string; // override base path\n fetchApi?: FetchAPI; // override for fetch implementation\n middleware?: Middleware[]; // middleware to apply before/after fetch requests\n queryParamsStringify?: (params: HTTPQuery) => string; // stringify function for query strings\n username?: string; // parameter for basic security\n password?: string; // parameter for basic security\n apiKey?: string | ((name: string) => string); // parameter for apiKey security\n accessToken?: string | Promise | ((name?: string, scopes?: string[]) => string | Promise); // parameter for oauth2 security\n headers?: HTTPHeaders; //header params we want to use on every request\n credentials?: RequestCredentials; //value for the credentials param we want to use on each request\n}\n\nexport class Configuration {\n constructor(private configuration: ConfigurationParameters = {}) {}\n\n set config(configuration: Configuration) {\n this.configuration = configuration;\n }\n\n get basePath(): string {\n return this.configuration.basePath != null ? this.configuration.basePath : BASE_PATH;\n }\n\n get fetchApi(): FetchAPI | undefined {\n return this.configuration.fetchApi;\n }\n\n get middleware(): Middleware[] {\n return this.configuration.middleware || [];\n }\n\n get queryParamsStringify(): (params: HTTPQuery) => string {\n return this.configuration.queryParamsStringify || querystring;\n }\n\n get username(): string | undefined {\n return this.configuration.username;\n }\n\n get password(): string | undefined {\n return this.configuration.password;\n }\n\n get apiKey(): ((name: string) => string) | undefined {\n const apiKey = this.configuration.apiKey;\n if (apiKey) {\n return typeof apiKey === 'function' ? apiKey : () => apiKey;\n }\n return undefined;\n }\n\n get accessToken(): ((name?: string, scopes?: string[]) => string | Promise) | undefined {\n const accessToken = this.configuration.accessToken;\n if (accessToken) {\n return typeof accessToken === 'function' ? accessToken : async () => accessToken;\n }\n return undefined;\n }\n\n get headers(): HTTPHeaders | undefined {\n return this.configuration.headers;\n }\n\n get credentials(): RequestCredentials | undefined {\n return this.configuration.credentials;\n }\n}\n\nexport const DefaultConfig = new Configuration();\n\n/**\n * This is the base class for all generated API classes.\n */\nexport class BaseAPI {\n\n\t private static readonly jsonRegex = new RegExp('^(:?application\\/json|[^;/ \\t]+\\/[^;/ \\t]+[+]json)[ \\t]*(:?;.*)?$', 'i');\n private middleware: Middleware[];\n\n constructor(protected configuration = DefaultConfig) {\n this.middleware = configuration.middleware;\n }\n\n withMiddleware(this: T, ...middlewares: Middleware[]) {\n const next = this.clone();\n next.middleware = next.middleware.concat(...middlewares);\n return next;\n }\n\n withPreMiddleware(this: T, ...preMiddlewares: Array) {\n const middlewares = preMiddlewares.map((pre) => ({ pre }));\n return this.withMiddleware(...middlewares);\n }\n\n withPostMiddleware(this: T, ...postMiddlewares: Array) {\n const middlewares = postMiddlewares.map((post) => ({ post }));\n return this.withMiddleware(...middlewares);\n }\n\n /**\n * Check if the given MIME is a JSON MIME.\n * JSON MIME examples:\n * application/json\n * application/json; charset=UTF8\n * APPLICATION/JSON\n * application/vnd.company+json\n * @param mime - MIME (Multipurpose Internet Mail Extensions)\n * @return True if the given MIME is JSON, false otherwise.\n */\n protected isJsonMime(mime: string | null | undefined): boolean {\n if (!mime) {\n return false;\n }\n return BaseAPI.jsonRegex.test(mime);\n }\n\n protected async request(context: RequestOpts, initOverrides?: RequestInit | InitOverrideFunction): Promise {\n const { url, init } = await this.createFetchParams(context, initOverrides);\n const response = await this.fetchApi(url, init);\n if (response && (response.status >= 200 && response.status < 300)) {\n return response;\n }\n throw new ResponseError(response, 'Response returned an error code');\n }\n\n private async createFetchParams(context: RequestOpts, initOverrides?: RequestInit | InitOverrideFunction) {\n let url = this.configuration.basePath + context.path;\n if (context.query !== undefined && Object.keys(context.query).length !== 0) {\n // only add the querystring to the URL if there are query parameters.\n // this is done to avoid urls ending with a \"?\" character which buggy webservers\n // do not handle correctly sometimes.\n url += '?' + this.configuration.queryParamsStringify(context.query);\n }\n\n const headers = Object.assign({}, this.configuration.headers, context.headers);\n Object.keys(headers).forEach(key => headers[key] === undefined ? delete headers[key] : {});\n\n const initOverrideFn =\n typeof initOverrides === \"function\"\n ? initOverrides\n : async () => initOverrides;\n\n const initParams = {\n method: context.method,\n headers,\n body: context.body,\n credentials: this.configuration.credentials,\n };\n\n const overriddenInit: RequestInit = {\n ...initParams,\n ...(await initOverrideFn({\n init: initParams,\n context,\n }))\n };\n\n const init: RequestInit = {\n ...overriddenInit,\n body:\n isFormData(overriddenInit.body) ||\n overriddenInit.body instanceof URLSearchParams ||\n isBlob(overriddenInit.body)\n ? overriddenInit.body\n : JSON.stringify(overriddenInit.body),\n };\n\n return { url, init };\n }\n\n private fetchApi = async (url: string, init: RequestInit) => {\n let fetchParams = { url, init };\n for (const middleware of this.middleware) {\n if (middleware.pre) {\n fetchParams = await middleware.pre({\n fetch: this.fetchApi,\n ...fetchParams,\n }) || fetchParams;\n }\n }\n let response: Response | undefined = undefined;\n try {\n response = await (this.configuration.fetchApi || fetch)(fetchParams.url, fetchParams.init);\n } catch (e) {\n for (const middleware of this.middleware) {\n if (middleware.onError) {\n response = await middleware.onError({\n fetch: this.fetchApi,\n url: fetchParams.url,\n init: fetchParams.init,\n error: e,\n response: response ? response.clone() : undefined,\n }) || response;\n }\n }\n if (response === undefined) {\n if (e instanceof Error) {\n throw new FetchError(e, 'The request failed and the interceptors did not return an alternative response');\n } else {\n throw e;\n }\n }\n }\n for (const middleware of this.middleware) {\n if (middleware.post) {\n response = await middleware.post({\n fetch: this.fetchApi,\n url: fetchParams.url,\n init: fetchParams.init,\n response: response.clone(),\n }) || response;\n }\n }\n return response;\n }\n\n /**\n * Create a shallow clone of `this` by constructing a new instance\n * and then shallow cloning data members.\n */\n private clone(this: T): T {\n const constructor = this.constructor as any;\n const next = new constructor(this.configuration);\n next.middleware = this.middleware.slice();\n return next;\n }\n};\n\nfunction isBlob(value: any): value is Blob {\n return typeof Blob !== 'undefined' && value instanceof Blob;\n}\n\nfunction isFormData(value: any): value is FormData {\n return typeof FormData !== \"undefined\" && value instanceof FormData;\n}\n\nexport class ResponseError extends Error {\n override name: \"ResponseError\" = \"ResponseError\";\n constructor(public response: Response, msg?: string) {\n super(msg);\n }\n}\n\nexport class FetchError extends Error {\n override name: \"FetchError\" = \"FetchError\";\n constructor(public cause: Error, msg?: string) {\n super(msg);\n }\n}\n\nexport class RequiredError extends Error {\n override name: \"RequiredError\" = \"RequiredError\";\n constructor(public field: string, msg?: string) {\n super(msg);\n }\n}\n\nexport const COLLECTION_FORMATS = {\n csv: \",\",\n ssv: \" \",\n tsv: \"\\t\",\n pipes: \"|\",\n};\n\nexport type FetchAPI = WindowOrWorkerGlobalScope['fetch'];\n\nexport type Json = any;\nexport type HTTPMethod = 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE' | 'OPTIONS' | 'HEAD';\nexport type HTTPHeaders = { [key: string]: string };\nexport type HTTPQuery = { [key: string]: string | number | null | boolean | Array | Set | HTTPQuery };\nexport type HTTPBody = Json | FormData | URLSearchParams;\nexport type HTTPRequestInit = { headers?: HTTPHeaders; method: HTTPMethod; credentials?: RequestCredentials; body?: HTTPBody };\nexport type ModelPropertyNaming = 'camelCase' | 'snake_case' | 'PascalCase' | 'original';\n\nexport type InitOverrideFunction = (requestContext: { init: HTTPRequestInit, context: RequestOpts }) => Promise\n\nexport interface FetchParams {\n url: string;\n init: RequestInit;\n}\n\nexport interface RequestOpts {\n path: string;\n method: HTTPMethod;\n headers: HTTPHeaders;\n query?: HTTPQuery;\n body?: HTTPBody;\n}\n\nexport function exists(json: any, key: string) {\n const value = json[key];\n return value !== null && value !== undefined;\n}\n\nexport function querystring(params: HTTPQuery, prefix: string = ''): string {\n return Object.keys(params)\n .map(key => querystringSingleKey(key, params[key], prefix))\n .filter(part => part.length > 0)\n .join('&');\n}\n\nfunction querystringSingleKey(key: string, value: string | number | null | undefined | boolean | Array | Set | HTTPQuery, keyPrefix: string = ''): string {\n const fullKey = keyPrefix + (keyPrefix.length ? `[${key}]` : key);\n if (value instanceof Array) {\n const multiValue = value.map(singleValue => encodeURIComponent(String(singleValue)))\n .join(`&${encodeURIComponent(fullKey)}=`);\n return `${encodeURIComponent(fullKey)}=${multiValue}`;\n }\n if (value instanceof Set) {\n const valueAsArray = Array.from(value);\n return querystringSingleKey(key, valueAsArray, keyPrefix);\n }\n if (value instanceof Date) {\n return `${encodeURIComponent(fullKey)}=${encodeURIComponent(value.toISOString())}`;\n }\n if (value instanceof Object) {\n return querystring(value as HTTPQuery, fullKey);\n }\n return `${encodeURIComponent(fullKey)}=${encodeURIComponent(String(value))}`;\n}\n\nexport function mapValues(data: any, fn: (item: any) => any) {\n return Object.keys(data).reduce(\n (acc, key) => ({ ...acc, [key]: fn(data[key]) }),\n {}\n );\n}\n\nexport function canConsumeForm(consumes: Consume[]): boolean {\n for (const consume of consumes) {\n if ('multipart/form-data' === consume.contentType) {\n return true;\n }\n }\n return false;\n}\n\nexport interface Consume {\n contentType: string;\n}\n\nexport interface RequestContext {\n fetch: FetchAPI;\n url: string;\n init: RequestInit;\n}\n\nexport interface ResponseContext {\n fetch: FetchAPI;\n url: string;\n init: RequestInit;\n response: Response;\n}\n\nexport interface ErrorContext {\n fetch: FetchAPI;\n url: string;\n init: RequestInit;\n error: unknown;\n response?: Response;\n}\n\nexport interface Middleware {\n pre?(context: RequestContext): Promise;\n post?(context: ResponseContext): Promise;\n onError?(context: ErrorContext): Promise;\n}\n\nexport interface ApiResponse {\n raw: Response;\n value(): Promise;\n}\n\nexport interface ResponseTransformer {\n (json: any): T;\n}\n\nexport class JSONApiResponse {\n constructor(public raw: Response, private transformer: ResponseTransformer = (jsonValue: any) => jsonValue) {}\n\n async value(): Promise {\n return this.transformer(await this.raw.json());\n }\n}\n\nexport class VoidApiResponse {\n constructor(public raw: Response) {}\n\n async value(): Promise {\n return undefined;\n }\n}\n\nexport class BlobApiResponse {\n constructor(public raw: Response) {}\n\n async value(): Promise {\n return await this.raw.blob();\n };\n}\n\nexport class TextApiResponse {\n constructor(public raw: Response) {}\n\n async value(): Promise {\n return await this.raw.text();\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * hopper\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface ApiVideoVideoIdWatchLinkGet200ResponseMembersInner\n */\nexport interface ApiVideoVideoIdWatchLinkGet200ResponseMembersInner {\n /**\n * \n * @type {string}\n * @memberof ApiVideoVideoIdWatchLinkGet200ResponseMembersInner\n */\n email?: string;\n /**\n * \n * @type {string}\n * @memberof ApiVideoVideoIdWatchLinkGet200ResponseMembersInner\n */\n name?: string;\n /**\n * \n * @type {string}\n * @memberof ApiVideoVideoIdWatchLinkGet200ResponseMembersInner\n */\n imageUrl?: string;\n /**\n * \n * @type {boolean}\n * @memberof ApiVideoVideoIdWatchLinkGet200ResponseMembersInner\n */\n isJoined?: boolean;\n}\n\n/**\n * Check if a given object implements the ApiVideoVideoIdWatchLinkGet200ResponseMembersInner interface.\n */\nexport function instanceOfApiVideoVideoIdWatchLinkGet200ResponseMembersInner(value: object): boolean {\n let isInstance = true;\n\n return isInstance;\n}\n\nexport function ApiVideoVideoIdWatchLinkGet200ResponseMembersInnerFromJSON(json: any): ApiVideoVideoIdWatchLinkGet200ResponseMembersInner {\n return ApiVideoVideoIdWatchLinkGet200ResponseMembersInnerFromJSONTyped(json, false);\n}\n\nexport function ApiVideoVideoIdWatchLinkGet200ResponseMembersInnerFromJSONTyped(json: any, ignoreDiscriminator: boolean): ApiVideoVideoIdWatchLinkGet200ResponseMembersInner {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'email': !exists(json, 'email') ? undefined : json['email'],\n 'name': !exists(json, 'name') ? undefined : json['name'],\n 'imageUrl': !exists(json, 'imageUrl') ? undefined : json['imageUrl'],\n 'isJoined': !exists(json, 'isJoined') ? undefined : json['isJoined'],\n };\n}\n\nexport function ApiVideoVideoIdWatchLinkGet200ResponseMembersInnerToJSON(value?: ApiVideoVideoIdWatchLinkGet200ResponseMembersInner | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'email': value.email,\n 'name': value.name,\n 'imageUrl': value.imageUrl,\n 'isJoined': value.isJoined,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * hopper\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport type { ApiVideoVideoIdWatchLinkGet200ResponseMembersInner } from './ApiVideoVideoIdWatchLinkGet200ResponseMembersInner';\nimport {\n ApiVideoVideoIdWatchLinkGet200ResponseMembersInnerFromJSON,\n ApiVideoVideoIdWatchLinkGet200ResponseMembersInnerFromJSONTyped,\n ApiVideoVideoIdWatchLinkGet200ResponseMembersInnerToJSON,\n} from './ApiVideoVideoIdWatchLinkGet200ResponseMembersInner';\n\n/**\n * \n * @export\n * @interface ApiAcademyAcademyIdWatchLinkGet200Response\n */\nexport interface ApiAcademyAcademyIdWatchLinkGet200Response {\n /**\n * \n * @type {number}\n * @memberof ApiAcademyAcademyIdWatchLinkGet200Response\n */\n academyId?: number;\n /**\n * \n * @type {string}\n * @memberof ApiAcademyAcademyIdWatchLinkGet200Response\n */\n typeName?: string;\n /**\n * \n * @type {string}\n * @memberof ApiAcademyAcademyIdWatchLinkGet200Response\n */\n uniqKey?: string;\n /**\n * \n * @type {Array}\n * @memberof ApiAcademyAcademyIdWatchLinkGet200Response\n */\n members?: Array;\n}\n\n/**\n * Check if a given object implements the ApiAcademyAcademyIdWatchLinkGet200Response interface.\n */\nexport function instanceOfApiAcademyAcademyIdWatchLinkGet200Response(value: object): boolean {\n let isInstance = true;\n\n return isInstance;\n}\n\nexport function ApiAcademyAcademyIdWatchLinkGet200ResponseFromJSON(json: any): ApiAcademyAcademyIdWatchLinkGet200Response {\n return ApiAcademyAcademyIdWatchLinkGet200ResponseFromJSONTyped(json, false);\n}\n\nexport function ApiAcademyAcademyIdWatchLinkGet200ResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): ApiAcademyAcademyIdWatchLinkGet200Response {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'academyId': !exists(json, 'academyId') ? undefined : json['academyId'],\n 'typeName': !exists(json, 'typeName') ? undefined : json['typeName'],\n 'uniqKey': !exists(json, 'uniqKey') ? undefined : json['uniqKey'],\n 'members': !exists(json, 'members') ? undefined : ((json['members'] as Array).map(ApiVideoVideoIdWatchLinkGet200ResponseMembersInnerFromJSON)),\n };\n}\n\nexport function ApiAcademyAcademyIdWatchLinkGet200ResponseToJSON(value?: ApiAcademyAcademyIdWatchLinkGet200Response | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'academyId': value.academyId,\n 'typeName': value.typeName,\n 'uniqKey': value.uniqKey,\n 'members': value.members === undefined ? undefined : ((value.members as Array).map(ApiVideoVideoIdWatchLinkGet200ResponseMembersInnerToJSON)),\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * hopper\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface ApiAcademyAcademyIdWatchLinkPatchRequest\n */\nexport interface ApiAcademyAcademyIdWatchLinkPatchRequest {\n /**\n * \n * @type {string}\n * @memberof ApiAcademyAcademyIdWatchLinkPatchRequest\n */\n type?: string;\n /**\n * \n * @type {Array}\n * @memberof ApiAcademyAcademyIdWatchLinkPatchRequest\n */\n emails?: Array;\n}\n\n/**\n * Check if a given object implements the ApiAcademyAcademyIdWatchLinkPatchRequest interface.\n */\nexport function instanceOfApiAcademyAcademyIdWatchLinkPatchRequest(value: object): boolean {\n let isInstance = true;\n\n return isInstance;\n}\n\nexport function ApiAcademyAcademyIdWatchLinkPatchRequestFromJSON(json: any): ApiAcademyAcademyIdWatchLinkPatchRequest {\n return ApiAcademyAcademyIdWatchLinkPatchRequestFromJSONTyped(json, false);\n}\n\nexport function ApiAcademyAcademyIdWatchLinkPatchRequestFromJSONTyped(json: any, ignoreDiscriminator: boolean): ApiAcademyAcademyIdWatchLinkPatchRequest {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'type': !exists(json, 'type') ? undefined : json['type'],\n 'emails': !exists(json, 'emails') ? undefined : json['emails'],\n };\n}\n\nexport function ApiAcademyAcademyIdWatchLinkPatchRequestToJSON(value?: ApiAcademyAcademyIdWatchLinkPatchRequest | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'type': value.type,\n 'emails': value.emails,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * hopper\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface ApiAcademyCourseCategoriesIdGet200Response\n */\nexport interface ApiAcademyCourseCategoriesIdGet200Response {\n /**\n * \n * @type {number}\n * @memberof ApiAcademyCourseCategoriesIdGet200Response\n */\n id?: number;\n /**\n * \n * @type {string}\n * @memberof ApiAcademyCourseCategoriesIdGet200Response\n */\n hashid?: string;\n /**\n * \n * @type {string}\n * @memberof ApiAcademyCourseCategoriesIdGet200Response\n */\n state?: string;\n /**\n * \n * @type {string}\n * @memberof ApiAcademyCourseCategoriesIdGet200Response\n */\n title?: string;\n /**\n * \n * @type {number}\n * @memberof ApiAcademyCourseCategoriesIdGet200Response\n */\n rowOrderRank?: number;\n /**\n * \n * @type {any}\n * @memberof ApiAcademyCourseCategoriesIdGet200Response\n */\n rowOrderPosition?: any | null;\n /**\n * \n * @type {number}\n * @memberof ApiAcademyCourseCategoriesIdGet200Response\n */\n coursesCount?: number;\n}\n\n/**\n * Check if a given object implements the ApiAcademyCourseCategoriesIdGet200Response interface.\n */\nexport function instanceOfApiAcademyCourseCategoriesIdGet200Response(value: object): boolean {\n let isInstance = true;\n\n return isInstance;\n}\n\nexport function ApiAcademyCourseCategoriesIdGet200ResponseFromJSON(json: any): ApiAcademyCourseCategoriesIdGet200Response {\n return ApiAcademyCourseCategoriesIdGet200ResponseFromJSONTyped(json, false);\n}\n\nexport function ApiAcademyCourseCategoriesIdGet200ResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): ApiAcademyCourseCategoriesIdGet200Response {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'id': !exists(json, 'id') ? undefined : json['id'],\n 'hashid': !exists(json, 'hashid') ? undefined : json['hashid'],\n 'state': !exists(json, 'state') ? undefined : json['state'],\n 'title': !exists(json, 'title') ? undefined : json['title'],\n 'rowOrderRank': !exists(json, 'rowOrderRank') ? undefined : json['rowOrderRank'],\n 'rowOrderPosition': !exists(json, 'rowOrderPosition') ? undefined : json['rowOrderPosition'],\n 'coursesCount': !exists(json, 'coursesCount') ? undefined : json['coursesCount'],\n };\n}\n\nexport function ApiAcademyCourseCategoriesIdGet200ResponseToJSON(value?: ApiAcademyCourseCategoriesIdGet200Response | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'id': value.id,\n 'hashid': value.hashid,\n 'state': value.state,\n 'title': value.title,\n 'rowOrderRank': value.rowOrderRank,\n 'rowOrderPosition': value.rowOrderPosition,\n 'coursesCount': value.coursesCount,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * hopper\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface ApiAcademyCourseCategoriesIdPatch202Response\n */\nexport interface ApiAcademyCourseCategoriesIdPatch202Response {\n /**\n * \n * @type {number}\n * @memberof ApiAcademyCourseCategoriesIdPatch202Response\n */\n id?: number;\n /**\n * \n * @type {string}\n * @memberof ApiAcademyCourseCategoriesIdPatch202Response\n */\n hashid?: string;\n /**\n * \n * @type {string}\n * @memberof ApiAcademyCourseCategoriesIdPatch202Response\n */\n state?: string;\n /**\n * \n * @type {string}\n * @memberof ApiAcademyCourseCategoriesIdPatch202Response\n */\n title?: string;\n /**\n * \n * @type {number}\n * @memberof ApiAcademyCourseCategoriesIdPatch202Response\n */\n rowOrderRank?: number;\n /**\n * \n * @type {string}\n * @memberof ApiAcademyCourseCategoriesIdPatch202Response\n */\n rowOrderPosition?: string | null;\n /**\n * \n * @type {number}\n * @memberof ApiAcademyCourseCategoriesIdPatch202Response\n */\n coursesCount?: number;\n}\n\n/**\n * Check if a given object implements the ApiAcademyCourseCategoriesIdPatch202Response interface.\n */\nexport function instanceOfApiAcademyCourseCategoriesIdPatch202Response(value: object): boolean {\n let isInstance = true;\n\n return isInstance;\n}\n\nexport function ApiAcademyCourseCategoriesIdPatch202ResponseFromJSON(json: any): ApiAcademyCourseCategoriesIdPatch202Response {\n return ApiAcademyCourseCategoriesIdPatch202ResponseFromJSONTyped(json, false);\n}\n\nexport function ApiAcademyCourseCategoriesIdPatch202ResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): ApiAcademyCourseCategoriesIdPatch202Response {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'id': !exists(json, 'id') ? undefined : json['id'],\n 'hashid': !exists(json, 'hashid') ? undefined : json['hashid'],\n 'state': !exists(json, 'state') ? undefined : json['state'],\n 'title': !exists(json, 'title') ? undefined : json['title'],\n 'rowOrderRank': !exists(json, 'rowOrderRank') ? undefined : json['rowOrderRank'],\n 'rowOrderPosition': !exists(json, 'rowOrderPosition') ? undefined : json['rowOrderPosition'],\n 'coursesCount': !exists(json, 'coursesCount') ? undefined : json['coursesCount'],\n };\n}\n\nexport function ApiAcademyCourseCategoriesIdPatch202ResponseToJSON(value?: ApiAcademyCourseCategoriesIdPatch202Response | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'id': value.id,\n 'hashid': value.hashid,\n 'state': value.state,\n 'title': value.title,\n 'rowOrderRank': value.rowOrderRank,\n 'rowOrderPosition': value.rowOrderPosition,\n 'coursesCount': value.coursesCount,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * hopper\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface ApiAcademyCourseCategoriesIdPatchRequestAcademyCourseCategory\n */\nexport interface ApiAcademyCourseCategoriesIdPatchRequestAcademyCourseCategory {\n /**\n * \n * @type {number}\n * @memberof ApiAcademyCourseCategoriesIdPatchRequestAcademyCourseCategory\n */\n rowOrderPosition?: number;\n /**\n * \n * @type {string}\n * @memberof ApiAcademyCourseCategoriesIdPatchRequestAcademyCourseCategory\n */\n title?: string;\n /**\n * \n * @type {string}\n * @memberof ApiAcademyCourseCategoriesIdPatchRequestAcademyCourseCategory\n */\n state?: string;\n}\n\n/**\n * Check if a given object implements the ApiAcademyCourseCategoriesIdPatchRequestAcademyCourseCategory interface.\n */\nexport function instanceOfApiAcademyCourseCategoriesIdPatchRequestAcademyCourseCategory(value: object): boolean {\n let isInstance = true;\n\n return isInstance;\n}\n\nexport function ApiAcademyCourseCategoriesIdPatchRequestAcademyCourseCategoryFromJSON(json: any): ApiAcademyCourseCategoriesIdPatchRequestAcademyCourseCategory {\n return ApiAcademyCourseCategoriesIdPatchRequestAcademyCourseCategoryFromJSONTyped(json, false);\n}\n\nexport function ApiAcademyCourseCategoriesIdPatchRequestAcademyCourseCategoryFromJSONTyped(json: any, ignoreDiscriminator: boolean): ApiAcademyCourseCategoriesIdPatchRequestAcademyCourseCategory {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'rowOrderPosition': !exists(json, 'row_order_position') ? undefined : json['row_order_position'],\n 'title': !exists(json, 'title') ? undefined : json['title'],\n 'state': !exists(json, 'state') ? undefined : json['state'],\n };\n}\n\nexport function ApiAcademyCourseCategoriesIdPatchRequestAcademyCourseCategoryToJSON(value?: ApiAcademyCourseCategoriesIdPatchRequestAcademyCourseCategory | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'row_order_position': value.rowOrderPosition,\n 'title': value.title,\n 'state': value.state,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * hopper\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport type { ApiAcademyCourseCategoriesIdPatchRequestAcademyCourseCategory } from './ApiAcademyCourseCategoriesIdPatchRequestAcademyCourseCategory';\nimport {\n ApiAcademyCourseCategoriesIdPatchRequestAcademyCourseCategoryFromJSON,\n ApiAcademyCourseCategoriesIdPatchRequestAcademyCourseCategoryFromJSONTyped,\n ApiAcademyCourseCategoriesIdPatchRequestAcademyCourseCategoryToJSON,\n} from './ApiAcademyCourseCategoriesIdPatchRequestAcademyCourseCategory';\n\n/**\n * \n * @export\n * @interface ApiAcademyCourseCategoriesIdPatchRequest\n */\nexport interface ApiAcademyCourseCategoriesIdPatchRequest {\n /**\n * \n * @type {ApiAcademyCourseCategoriesIdPatchRequestAcademyCourseCategory}\n * @memberof ApiAcademyCourseCategoriesIdPatchRequest\n */\n academyCourseCategory?: ApiAcademyCourseCategoriesIdPatchRequestAcademyCourseCategory;\n}\n\n/**\n * Check if a given object implements the ApiAcademyCourseCategoriesIdPatchRequest interface.\n */\nexport function instanceOfApiAcademyCourseCategoriesIdPatchRequest(value: object): boolean {\n let isInstance = true;\n\n return isInstance;\n}\n\nexport function ApiAcademyCourseCategoriesIdPatchRequestFromJSON(json: any): ApiAcademyCourseCategoriesIdPatchRequest {\n return ApiAcademyCourseCategoriesIdPatchRequestFromJSONTyped(json, false);\n}\n\nexport function ApiAcademyCourseCategoriesIdPatchRequestFromJSONTyped(json: any, ignoreDiscriminator: boolean): ApiAcademyCourseCategoriesIdPatchRequest {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'academyCourseCategory': !exists(json, 'academy_course_category') ? undefined : ApiAcademyCourseCategoriesIdPatchRequestAcademyCourseCategoryFromJSON(json['academy_course_category']),\n };\n}\n\nexport function ApiAcademyCourseCategoriesIdPatchRequestToJSON(value?: ApiAcademyCourseCategoriesIdPatchRequest | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'academy_course_category': ApiAcademyCourseCategoriesIdPatchRequestAcademyCourseCategoryToJSON(value.academyCourseCategory),\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * hopper\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface ApiAcademyCourseCategoriesPost201Response\n */\nexport interface ApiAcademyCourseCategoriesPost201Response {\n /**\n * \n * @type {number}\n * @memberof ApiAcademyCourseCategoriesPost201Response\n */\n id?: number;\n /**\n * \n * @type {string}\n * @memberof ApiAcademyCourseCategoriesPost201Response\n */\n hashid?: string;\n /**\n * \n * @type {string}\n * @memberof ApiAcademyCourseCategoriesPost201Response\n */\n state?: string;\n /**\n * \n * @type {string}\n * @memberof ApiAcademyCourseCategoriesPost201Response\n */\n title?: string;\n /**\n * \n * @type {number}\n * @memberof ApiAcademyCourseCategoriesPost201Response\n */\n rowOrderRank?: number;\n /**\n * \n * @type {string}\n * @memberof ApiAcademyCourseCategoriesPost201Response\n */\n rowOrderPosition?: string;\n /**\n * \n * @type {number}\n * @memberof ApiAcademyCourseCategoriesPost201Response\n */\n coursesCount?: number;\n}\n\n/**\n * Check if a given object implements the ApiAcademyCourseCategoriesPost201Response interface.\n */\nexport function instanceOfApiAcademyCourseCategoriesPost201Response(value: object): boolean {\n let isInstance = true;\n\n return isInstance;\n}\n\nexport function ApiAcademyCourseCategoriesPost201ResponseFromJSON(json: any): ApiAcademyCourseCategoriesPost201Response {\n return ApiAcademyCourseCategoriesPost201ResponseFromJSONTyped(json, false);\n}\n\nexport function ApiAcademyCourseCategoriesPost201ResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): ApiAcademyCourseCategoriesPost201Response {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'id': !exists(json, 'id') ? undefined : json['id'],\n 'hashid': !exists(json, 'hashid') ? undefined : json['hashid'],\n 'state': !exists(json, 'state') ? undefined : json['state'],\n 'title': !exists(json, 'title') ? undefined : json['title'],\n 'rowOrderRank': !exists(json, 'rowOrderRank') ? undefined : json['rowOrderRank'],\n 'rowOrderPosition': !exists(json, 'rowOrderPosition') ? undefined : json['rowOrderPosition'],\n 'coursesCount': !exists(json, 'coursesCount') ? undefined : json['coursesCount'],\n };\n}\n\nexport function ApiAcademyCourseCategoriesPost201ResponseToJSON(value?: ApiAcademyCourseCategoriesPost201Response | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'id': value.id,\n 'hashid': value.hashid,\n 'state': value.state,\n 'title': value.title,\n 'rowOrderRank': value.rowOrderRank,\n 'rowOrderPosition': value.rowOrderPosition,\n 'coursesCount': value.coursesCount,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * hopper\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface ApiAcademyCourseCategoriesPostRequestAcademyCourseCategory\n */\nexport interface ApiAcademyCourseCategoriesPostRequestAcademyCourseCategory {\n /**\n * \n * @type {string}\n * @memberof ApiAcademyCourseCategoriesPostRequestAcademyCourseCategory\n */\n title?: string;\n}\n\n/**\n * Check if a given object implements the ApiAcademyCourseCategoriesPostRequestAcademyCourseCategory interface.\n */\nexport function instanceOfApiAcademyCourseCategoriesPostRequestAcademyCourseCategory(value: object): boolean {\n let isInstance = true;\n\n return isInstance;\n}\n\nexport function ApiAcademyCourseCategoriesPostRequestAcademyCourseCategoryFromJSON(json: any): ApiAcademyCourseCategoriesPostRequestAcademyCourseCategory {\n return ApiAcademyCourseCategoriesPostRequestAcademyCourseCategoryFromJSONTyped(json, false);\n}\n\nexport function ApiAcademyCourseCategoriesPostRequestAcademyCourseCategoryFromJSONTyped(json: any, ignoreDiscriminator: boolean): ApiAcademyCourseCategoriesPostRequestAcademyCourseCategory {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'title': !exists(json, 'title') ? undefined : json['title'],\n };\n}\n\nexport function ApiAcademyCourseCategoriesPostRequestAcademyCourseCategoryToJSON(value?: ApiAcademyCourseCategoriesPostRequestAcademyCourseCategory | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'title': value.title,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * hopper\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport type { ApiAcademyCourseCategoriesPostRequestAcademyCourseCategory } from './ApiAcademyCourseCategoriesPostRequestAcademyCourseCategory';\nimport {\n ApiAcademyCourseCategoriesPostRequestAcademyCourseCategoryFromJSON,\n ApiAcademyCourseCategoriesPostRequestAcademyCourseCategoryFromJSONTyped,\n ApiAcademyCourseCategoriesPostRequestAcademyCourseCategoryToJSON,\n} from './ApiAcademyCourseCategoriesPostRequestAcademyCourseCategory';\n\n/**\n * \n * @export\n * @interface ApiAcademyCourseCategoriesPostRequest\n */\nexport interface ApiAcademyCourseCategoriesPostRequest {\n /**\n * \n * @type {ApiAcademyCourseCategoriesPostRequestAcademyCourseCategory}\n * @memberof ApiAcademyCourseCategoriesPostRequest\n */\n academyCourseCategory?: ApiAcademyCourseCategoriesPostRequestAcademyCourseCategory;\n}\n\n/**\n * Check if a given object implements the ApiAcademyCourseCategoriesPostRequest interface.\n */\nexport function instanceOfApiAcademyCourseCategoriesPostRequest(value: object): boolean {\n let isInstance = true;\n\n return isInstance;\n}\n\nexport function ApiAcademyCourseCategoriesPostRequestFromJSON(json: any): ApiAcademyCourseCategoriesPostRequest {\n return ApiAcademyCourseCategoriesPostRequestFromJSONTyped(json, false);\n}\n\nexport function ApiAcademyCourseCategoriesPostRequestFromJSONTyped(json: any, ignoreDiscriminator: boolean): ApiAcademyCourseCategoriesPostRequest {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'academyCourseCategory': !exists(json, 'academy_course_category') ? undefined : ApiAcademyCourseCategoriesPostRequestAcademyCourseCategoryFromJSON(json['academy_course_category']),\n };\n}\n\nexport function ApiAcademyCourseCategoriesPostRequestToJSON(value?: ApiAcademyCourseCategoriesPostRequest | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'academy_course_category': ApiAcademyCourseCategoriesPostRequestAcademyCourseCategoryToJSON(value.academyCourseCategory),\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * hopper\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface ApiAcademyCourseLessonsIdGet200ResponseVideo\n */\nexport interface ApiAcademyCourseLessonsIdGet200ResponseVideo {\n /**\n * \n * @type {number}\n * @memberof ApiAcademyCourseLessonsIdGet200ResponseVideo\n */\n id?: number;\n /**\n * \n * @type {string}\n * @memberof ApiAcademyCourseLessonsIdGet200ResponseVideo\n */\n hashid?: string;\n /**\n * \n * @type {string}\n * @memberof ApiAcademyCourseLessonsIdGet200ResponseVideo\n */\n state?: string;\n /**\n * \n * @type {string}\n * @memberof ApiAcademyCourseLessonsIdGet200ResponseVideo\n */\n title?: string;\n /**\n * \n * @type {string}\n * @memberof ApiAcademyCourseLessonsIdGet200ResponseVideo\n */\n descriptionHtml?: string | null;\n /**\n * \n * @type {number}\n * @memberof ApiAcademyCourseLessonsIdGet200ResponseVideo\n */\n playTimeMs?: number;\n /**\n * \n * @type {string}\n * @memberof ApiAcademyCourseLessonsIdGet200ResponseVideo\n */\n thumbnailUrl?: string;\n /**\n * \n * @type {boolean}\n * @memberof ApiAcademyCourseLessonsIdGet200ResponseVideo\n */\n timelineEditable?: boolean;\n /**\n * \n * @type {Array}\n * @memberof ApiAcademyCourseLessonsIdGet200ResponseVideo\n */\n timelineUneditableReasons?: Array;\n}\n\n/**\n * Check if a given object implements the ApiAcademyCourseLessonsIdGet200ResponseVideo interface.\n */\nexport function instanceOfApiAcademyCourseLessonsIdGet200ResponseVideo(value: object): boolean {\n let isInstance = true;\n\n return isInstance;\n}\n\nexport function ApiAcademyCourseLessonsIdGet200ResponseVideoFromJSON(json: any): ApiAcademyCourseLessonsIdGet200ResponseVideo {\n return ApiAcademyCourseLessonsIdGet200ResponseVideoFromJSONTyped(json, false);\n}\n\nexport function ApiAcademyCourseLessonsIdGet200ResponseVideoFromJSONTyped(json: any, ignoreDiscriminator: boolean): ApiAcademyCourseLessonsIdGet200ResponseVideo {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'id': !exists(json, 'id') ? undefined : json['id'],\n 'hashid': !exists(json, 'hashid') ? undefined : json['hashid'],\n 'state': !exists(json, 'state') ? undefined : json['state'],\n 'title': !exists(json, 'title') ? undefined : json['title'],\n 'descriptionHtml': !exists(json, 'descriptionHtml') ? undefined : json['descriptionHtml'],\n 'playTimeMs': !exists(json, 'playTimeMs') ? undefined : json['playTimeMs'],\n 'thumbnailUrl': !exists(json, 'thumbnailUrl') ? undefined : json['thumbnailUrl'],\n 'timelineEditable': !exists(json, 'timelineEditable') ? undefined : json['timelineEditable'],\n 'timelineUneditableReasons': !exists(json, 'timelineUneditableReasons') ? undefined : json['timelineUneditableReasons'],\n };\n}\n\nexport function ApiAcademyCourseLessonsIdGet200ResponseVideoToJSON(value?: ApiAcademyCourseLessonsIdGet200ResponseVideo | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'id': value.id,\n 'hashid': value.hashid,\n 'state': value.state,\n 'title': value.title,\n 'descriptionHtml': value.descriptionHtml,\n 'playTimeMs': value.playTimeMs,\n 'thumbnailUrl': value.thumbnailUrl,\n 'timelineEditable': value.timelineEditable,\n 'timelineUneditableReasons': value.timelineUneditableReasons,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * hopper\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport type { ApiAcademyCourseLessonsIdGet200ResponseVideo } from './ApiAcademyCourseLessonsIdGet200ResponseVideo';\nimport {\n ApiAcademyCourseLessonsIdGet200ResponseVideoFromJSON,\n ApiAcademyCourseLessonsIdGet200ResponseVideoFromJSONTyped,\n ApiAcademyCourseLessonsIdGet200ResponseVideoToJSON,\n} from './ApiAcademyCourseLessonsIdGet200ResponseVideo';\n\n/**\n * \n * @export\n * @interface ApiAcademyCourseLessonsIdGet200Response\n */\nexport interface ApiAcademyCourseLessonsIdGet200Response {\n /**\n * \n * @type {number}\n * @memberof ApiAcademyCourseLessonsIdGet200Response\n */\n id?: number;\n /**\n * \n * @type {string}\n * @memberof ApiAcademyCourseLessonsIdGet200Response\n */\n hashid?: string;\n /**\n * \n * @type {number}\n * @memberof ApiAcademyCourseLessonsIdGet200Response\n */\n academyCourseId?: number;\n /**\n * \n * @type {number}\n * @memberof ApiAcademyCourseLessonsIdGet200Response\n */\n videoId?: number;\n /**\n * \n * @type {number}\n * @memberof ApiAcademyCourseLessonsIdGet200Response\n */\n rowOrderRank?: number;\n /**\n * \n * @type {any}\n * @memberof ApiAcademyCourseLessonsIdGet200Response\n */\n rowOrderPosition?: any | null;\n /**\n * \n * @type {ApiAcademyCourseLessonsIdGet200ResponseVideo}\n * @memberof ApiAcademyCourseLessonsIdGet200Response\n */\n video?: ApiAcademyCourseLessonsIdGet200ResponseVideo;\n /**\n * \n * @type {number}\n * @memberof ApiAcademyCourseLessonsIdGet200Response\n */\n playTimeSec?: number;\n /**\n * \n * @type {any}\n * @memberof ApiAcademyCourseLessonsIdGet200Response\n */\n textHtml?: any | null;\n /**\n * \n * @type {any}\n * @memberof ApiAcademyCourseLessonsIdGet200Response\n */\n title?: any | null;\n}\n\n/**\n * Check if a given object implements the ApiAcademyCourseLessonsIdGet200Response interface.\n */\nexport function instanceOfApiAcademyCourseLessonsIdGet200Response(value: object): boolean {\n let isInstance = true;\n\n return isInstance;\n}\n\nexport function ApiAcademyCourseLessonsIdGet200ResponseFromJSON(json: any): ApiAcademyCourseLessonsIdGet200Response {\n return ApiAcademyCourseLessonsIdGet200ResponseFromJSONTyped(json, false);\n}\n\nexport function ApiAcademyCourseLessonsIdGet200ResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): ApiAcademyCourseLessonsIdGet200Response {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'id': !exists(json, 'id') ? undefined : json['id'],\n 'hashid': !exists(json, 'hashid') ? undefined : json['hashid'],\n 'academyCourseId': !exists(json, 'academyCourseId') ? undefined : json['academyCourseId'],\n 'videoId': !exists(json, 'videoId') ? undefined : json['videoId'],\n 'rowOrderRank': !exists(json, 'rowOrderRank') ? undefined : json['rowOrderRank'],\n 'rowOrderPosition': !exists(json, 'rowOrderPosition') ? undefined : json['rowOrderPosition'],\n 'video': !exists(json, 'video') ? undefined : ApiAcademyCourseLessonsIdGet200ResponseVideoFromJSON(json['video']),\n 'playTimeSec': !exists(json, 'playTimeSec') ? undefined : json['playTimeSec'],\n 'textHtml': !exists(json, 'textHtml') ? undefined : json['textHtml'],\n 'title': !exists(json, 'title') ? undefined : json['title'],\n };\n}\n\nexport function ApiAcademyCourseLessonsIdGet200ResponseToJSON(value?: ApiAcademyCourseLessonsIdGet200Response | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'id': value.id,\n 'hashid': value.hashid,\n 'academyCourseId': value.academyCourseId,\n 'videoId': value.videoId,\n 'rowOrderRank': value.rowOrderRank,\n 'rowOrderPosition': value.rowOrderPosition,\n 'video': ApiAcademyCourseLessonsIdGet200ResponseVideoToJSON(value.video),\n 'playTimeSec': value.playTimeSec,\n 'textHtml': value.textHtml,\n 'title': value.title,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * hopper\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface ApiAcademyCourseLessonsPost201ResponseVideo\n */\nexport interface ApiAcademyCourseLessonsPost201ResponseVideo {\n /**\n * \n * @type {number}\n * @memberof ApiAcademyCourseLessonsPost201ResponseVideo\n */\n id?: number;\n /**\n * \n * @type {string}\n * @memberof ApiAcademyCourseLessonsPost201ResponseVideo\n */\n hashid?: string;\n /**\n * \n * @type {string}\n * @memberof ApiAcademyCourseLessonsPost201ResponseVideo\n */\n state?: string;\n /**\n * \n * @type {string}\n * @memberof ApiAcademyCourseLessonsPost201ResponseVideo\n */\n title?: string;\n /**\n * \n * @type {string}\n * @memberof ApiAcademyCourseLessonsPost201ResponseVideo\n */\n descriptionHtml?: string | null;\n /**\n * \n * @type {number}\n * @memberof ApiAcademyCourseLessonsPost201ResponseVideo\n */\n playTimeMs?: number;\n /**\n * \n * @type {string}\n * @memberof ApiAcademyCourseLessonsPost201ResponseVideo\n */\n thumbnailUrl?: string;\n /**\n * \n * @type {boolean}\n * @memberof ApiAcademyCourseLessonsPost201ResponseVideo\n */\n timelineEditable?: boolean;\n /**\n * \n * @type {Array}\n * @memberof ApiAcademyCourseLessonsPost201ResponseVideo\n */\n timelineUneditableReasons?: Array;\n}\n\n/**\n * Check if a given object implements the ApiAcademyCourseLessonsPost201ResponseVideo interface.\n */\nexport function instanceOfApiAcademyCourseLessonsPost201ResponseVideo(value: object): boolean {\n let isInstance = true;\n\n return isInstance;\n}\n\nexport function ApiAcademyCourseLessonsPost201ResponseVideoFromJSON(json: any): ApiAcademyCourseLessonsPost201ResponseVideo {\n return ApiAcademyCourseLessonsPost201ResponseVideoFromJSONTyped(json, false);\n}\n\nexport function ApiAcademyCourseLessonsPost201ResponseVideoFromJSONTyped(json: any, ignoreDiscriminator: boolean): ApiAcademyCourseLessonsPost201ResponseVideo {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'id': !exists(json, 'id') ? undefined : json['id'],\n 'hashid': !exists(json, 'hashid') ? undefined : json['hashid'],\n 'state': !exists(json, 'state') ? undefined : json['state'],\n 'title': !exists(json, 'title') ? undefined : json['title'],\n 'descriptionHtml': !exists(json, 'descriptionHtml') ? undefined : json['descriptionHtml'],\n 'playTimeMs': !exists(json, 'playTimeMs') ? undefined : json['playTimeMs'],\n 'thumbnailUrl': !exists(json, 'thumbnailUrl') ? undefined : json['thumbnailUrl'],\n 'timelineEditable': !exists(json, 'timelineEditable') ? undefined : json['timelineEditable'],\n 'timelineUneditableReasons': !exists(json, 'timelineUneditableReasons') ? undefined : json['timelineUneditableReasons'],\n };\n}\n\nexport function ApiAcademyCourseLessonsPost201ResponseVideoToJSON(value?: ApiAcademyCourseLessonsPost201ResponseVideo | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'id': value.id,\n 'hashid': value.hashid,\n 'state': value.state,\n 'title': value.title,\n 'descriptionHtml': value.descriptionHtml,\n 'playTimeMs': value.playTimeMs,\n 'thumbnailUrl': value.thumbnailUrl,\n 'timelineEditable': value.timelineEditable,\n 'timelineUneditableReasons': value.timelineUneditableReasons,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * hopper\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport type { ApiAcademyCourseLessonsPost201ResponseVideo } from './ApiAcademyCourseLessonsPost201ResponseVideo';\nimport {\n ApiAcademyCourseLessonsPost201ResponseVideoFromJSON,\n ApiAcademyCourseLessonsPost201ResponseVideoFromJSONTyped,\n ApiAcademyCourseLessonsPost201ResponseVideoToJSON,\n} from './ApiAcademyCourseLessonsPost201ResponseVideo';\n\n/**\n * \n * @export\n * @interface ApiAcademyCourseLessonsIdPatch202Response\n */\nexport interface ApiAcademyCourseLessonsIdPatch202Response {\n /**\n * \n * @type {number}\n * @memberof ApiAcademyCourseLessonsIdPatch202Response\n */\n id?: number;\n /**\n * \n * @type {string}\n * @memberof ApiAcademyCourseLessonsIdPatch202Response\n */\n hashid?: string;\n /**\n * \n * @type {number}\n * @memberof ApiAcademyCourseLessonsIdPatch202Response\n */\n academyCourseId?: number;\n /**\n * \n * @type {number}\n * @memberof ApiAcademyCourseLessonsIdPatch202Response\n */\n videoId?: number | null;\n /**\n * \n * @type {number}\n * @memberof ApiAcademyCourseLessonsIdPatch202Response\n */\n rowOrderRank?: number;\n /**\n * \n * @type {string}\n * @memberof ApiAcademyCourseLessonsIdPatch202Response\n */\n rowOrderPosition?: string | null;\n /**\n * \n * @type {ApiAcademyCourseLessonsPost201ResponseVideo}\n * @memberof ApiAcademyCourseLessonsIdPatch202Response\n */\n video?: ApiAcademyCourseLessonsPost201ResponseVideo | null;\n /**\n * \n * @type {number}\n * @memberof ApiAcademyCourseLessonsIdPatch202Response\n */\n playTimeSec?: number | null;\n /**\n * \n * @type {string}\n * @memberof ApiAcademyCourseLessonsIdPatch202Response\n */\n textHtml?: string | null;\n /**\n * \n * @type {string}\n * @memberof ApiAcademyCourseLessonsIdPatch202Response\n */\n title?: string | null;\n}\n\n/**\n * Check if a given object implements the ApiAcademyCourseLessonsIdPatch202Response interface.\n */\nexport function instanceOfApiAcademyCourseLessonsIdPatch202Response(value: object): boolean {\n let isInstance = true;\n\n return isInstance;\n}\n\nexport function ApiAcademyCourseLessonsIdPatch202ResponseFromJSON(json: any): ApiAcademyCourseLessonsIdPatch202Response {\n return ApiAcademyCourseLessonsIdPatch202ResponseFromJSONTyped(json, false);\n}\n\nexport function ApiAcademyCourseLessonsIdPatch202ResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): ApiAcademyCourseLessonsIdPatch202Response {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'id': !exists(json, 'id') ? undefined : json['id'],\n 'hashid': !exists(json, 'hashid') ? undefined : json['hashid'],\n 'academyCourseId': !exists(json, 'academyCourseId') ? undefined : json['academyCourseId'],\n 'videoId': !exists(json, 'videoId') ? undefined : json['videoId'],\n 'rowOrderRank': !exists(json, 'rowOrderRank') ? undefined : json['rowOrderRank'],\n 'rowOrderPosition': !exists(json, 'rowOrderPosition') ? undefined : json['rowOrderPosition'],\n 'video': !exists(json, 'video') ? undefined : ApiAcademyCourseLessonsPost201ResponseVideoFromJSON(json['video']),\n 'playTimeSec': !exists(json, 'playTimeSec') ? undefined : json['playTimeSec'],\n 'textHtml': !exists(json, 'textHtml') ? undefined : json['textHtml'],\n 'title': !exists(json, 'title') ? undefined : json['title'],\n };\n}\n\nexport function ApiAcademyCourseLessonsIdPatch202ResponseToJSON(value?: ApiAcademyCourseLessonsIdPatch202Response | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'id': value.id,\n 'hashid': value.hashid,\n 'academyCourseId': value.academyCourseId,\n 'videoId': value.videoId,\n 'rowOrderRank': value.rowOrderRank,\n 'rowOrderPosition': value.rowOrderPosition,\n 'video': ApiAcademyCourseLessonsPost201ResponseVideoToJSON(value.video),\n 'playTimeSec': value.playTimeSec,\n 'textHtml': value.textHtml,\n 'title': value.title,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * hopper\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface ApiAcademyCourseLessonsIdPatchRequestCourseLesson\n */\nexport interface ApiAcademyCourseLessonsIdPatchRequestCourseLesson {\n /**\n * \n * @type {number}\n * @memberof ApiAcademyCourseLessonsIdPatchRequestCourseLesson\n */\n rowOrderPosition?: number;\n /**\n * \n * @type {string}\n * @memberof ApiAcademyCourseLessonsIdPatchRequestCourseLesson\n */\n title?: string;\n /**\n * \n * @type {string}\n * @memberof ApiAcademyCourseLessonsIdPatchRequestCourseLesson\n */\n textHtml?: string;\n}\n\n/**\n * Check if a given object implements the ApiAcademyCourseLessonsIdPatchRequestCourseLesson interface.\n */\nexport function instanceOfApiAcademyCourseLessonsIdPatchRequestCourseLesson(value: object): boolean {\n let isInstance = true;\n\n return isInstance;\n}\n\nexport function ApiAcademyCourseLessonsIdPatchRequestCourseLessonFromJSON(json: any): ApiAcademyCourseLessonsIdPatchRequestCourseLesson {\n return ApiAcademyCourseLessonsIdPatchRequestCourseLessonFromJSONTyped(json, false);\n}\n\nexport function ApiAcademyCourseLessonsIdPatchRequestCourseLessonFromJSONTyped(json: any, ignoreDiscriminator: boolean): ApiAcademyCourseLessonsIdPatchRequestCourseLesson {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'rowOrderPosition': !exists(json, 'row_order_position') ? undefined : json['row_order_position'],\n 'title': !exists(json, 'title') ? undefined : json['title'],\n 'textHtml': !exists(json, 'text_html') ? undefined : json['text_html'],\n };\n}\n\nexport function ApiAcademyCourseLessonsIdPatchRequestCourseLessonToJSON(value?: ApiAcademyCourseLessonsIdPatchRequestCourseLesson | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'row_order_position': value.rowOrderPosition,\n 'title': value.title,\n 'text_html': value.textHtml,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * hopper\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport type { ApiAcademyCourseLessonsIdPatchRequestCourseLesson } from './ApiAcademyCourseLessonsIdPatchRequestCourseLesson';\nimport {\n ApiAcademyCourseLessonsIdPatchRequestCourseLessonFromJSON,\n ApiAcademyCourseLessonsIdPatchRequestCourseLessonFromJSONTyped,\n ApiAcademyCourseLessonsIdPatchRequestCourseLessonToJSON,\n} from './ApiAcademyCourseLessonsIdPatchRequestCourseLesson';\n\n/**\n * \n * @export\n * @interface ApiAcademyCourseLessonsIdPatchRequest\n */\nexport interface ApiAcademyCourseLessonsIdPatchRequest {\n /**\n * \n * @type {ApiAcademyCourseLessonsIdPatchRequestCourseLesson}\n * @memberof ApiAcademyCourseLessonsIdPatchRequest\n */\n courseLesson?: ApiAcademyCourseLessonsIdPatchRequestCourseLesson;\n}\n\n/**\n * Check if a given object implements the ApiAcademyCourseLessonsIdPatchRequest interface.\n */\nexport function instanceOfApiAcademyCourseLessonsIdPatchRequest(value: object): boolean {\n let isInstance = true;\n\n return isInstance;\n}\n\nexport function ApiAcademyCourseLessonsIdPatchRequestFromJSON(json: any): ApiAcademyCourseLessonsIdPatchRequest {\n return ApiAcademyCourseLessonsIdPatchRequestFromJSONTyped(json, false);\n}\n\nexport function ApiAcademyCourseLessonsIdPatchRequestFromJSONTyped(json: any, ignoreDiscriminator: boolean): ApiAcademyCourseLessonsIdPatchRequest {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'courseLesson': !exists(json, 'course_lesson') ? undefined : ApiAcademyCourseLessonsIdPatchRequestCourseLessonFromJSON(json['course_lesson']),\n };\n}\n\nexport function ApiAcademyCourseLessonsIdPatchRequestToJSON(value?: ApiAcademyCourseLessonsIdPatchRequest | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'course_lesson': ApiAcademyCourseLessonsIdPatchRequestCourseLessonToJSON(value.courseLesson),\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * hopper\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport type { ApiAcademyCourseLessonsPost201ResponseVideo } from './ApiAcademyCourseLessonsPost201ResponseVideo';\nimport {\n ApiAcademyCourseLessonsPost201ResponseVideoFromJSON,\n ApiAcademyCourseLessonsPost201ResponseVideoFromJSONTyped,\n ApiAcademyCourseLessonsPost201ResponseVideoToJSON,\n} from './ApiAcademyCourseLessonsPost201ResponseVideo';\n\n/**\n * \n * @export\n * @interface ApiAcademyCourseLessonsPost201Response\n */\nexport interface ApiAcademyCourseLessonsPost201Response {\n /**\n * \n * @type {number}\n * @memberof ApiAcademyCourseLessonsPost201Response\n */\n id?: number;\n /**\n * \n * @type {string}\n * @memberof ApiAcademyCourseLessonsPost201Response\n */\n hashid?: string;\n /**\n * \n * @type {number}\n * @memberof ApiAcademyCourseLessonsPost201Response\n */\n academyCourseId?: number;\n /**\n * \n * @type {number}\n * @memberof ApiAcademyCourseLessonsPost201Response\n */\n videoId?: number | null;\n /**\n * \n * @type {number}\n * @memberof ApiAcademyCourseLessonsPost201Response\n */\n rowOrderRank?: number;\n /**\n * \n * @type {string}\n * @memberof ApiAcademyCourseLessonsPost201Response\n */\n rowOrderPosition?: string;\n /**\n * \n * @type {ApiAcademyCourseLessonsPost201ResponseVideo}\n * @memberof ApiAcademyCourseLessonsPost201Response\n */\n video?: ApiAcademyCourseLessonsPost201ResponseVideo | null;\n /**\n * \n * @type {number}\n * @memberof ApiAcademyCourseLessonsPost201Response\n */\n playTimeSec?: number | null;\n /**\n * \n * @type {string}\n * @memberof ApiAcademyCourseLessonsPost201Response\n */\n textHtml?: string | null;\n /**\n * \n * @type {string}\n * @memberof ApiAcademyCourseLessonsPost201Response\n */\n title?: string | null;\n}\n\n/**\n * Check if a given object implements the ApiAcademyCourseLessonsPost201Response interface.\n */\nexport function instanceOfApiAcademyCourseLessonsPost201Response(value: object): boolean {\n let isInstance = true;\n\n return isInstance;\n}\n\nexport function ApiAcademyCourseLessonsPost201ResponseFromJSON(json: any): ApiAcademyCourseLessonsPost201Response {\n return ApiAcademyCourseLessonsPost201ResponseFromJSONTyped(json, false);\n}\n\nexport function ApiAcademyCourseLessonsPost201ResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): ApiAcademyCourseLessonsPost201Response {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'id': !exists(json, 'id') ? undefined : json['id'],\n 'hashid': !exists(json, 'hashid') ? undefined : json['hashid'],\n 'academyCourseId': !exists(json, 'academyCourseId') ? undefined : json['academyCourseId'],\n 'videoId': !exists(json, 'videoId') ? undefined : json['videoId'],\n 'rowOrderRank': !exists(json, 'rowOrderRank') ? undefined : json['rowOrderRank'],\n 'rowOrderPosition': !exists(json, 'rowOrderPosition') ? undefined : json['rowOrderPosition'],\n 'video': !exists(json, 'video') ? undefined : ApiAcademyCourseLessonsPost201ResponseVideoFromJSON(json['video']),\n 'playTimeSec': !exists(json, 'playTimeSec') ? undefined : json['playTimeSec'],\n 'textHtml': !exists(json, 'textHtml') ? undefined : json['textHtml'],\n 'title': !exists(json, 'title') ? undefined : json['title'],\n };\n}\n\nexport function ApiAcademyCourseLessonsPost201ResponseToJSON(value?: ApiAcademyCourseLessonsPost201Response | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'id': value.id,\n 'hashid': value.hashid,\n 'academyCourseId': value.academyCourseId,\n 'videoId': value.videoId,\n 'rowOrderRank': value.rowOrderRank,\n 'rowOrderPosition': value.rowOrderPosition,\n 'video': ApiAcademyCourseLessonsPost201ResponseVideoToJSON(value.video),\n 'playTimeSec': value.playTimeSec,\n 'textHtml': value.textHtml,\n 'title': value.title,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * hopper\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface ApiAcademyCourseLessonsPostRequestCourseLesson\n */\nexport interface ApiAcademyCourseLessonsPostRequestCourseLesson {\n /**\n * \n * @type {number}\n * @memberof ApiAcademyCourseLessonsPostRequestCourseLesson\n */\n academyCourseId?: number;\n /**\n * \n * @type {number}\n * @memberof ApiAcademyCourseLessonsPostRequestCourseLesson\n */\n videoId?: number;\n /**\n * \n * @type {string}\n * @memberof ApiAcademyCourseLessonsPostRequestCourseLesson\n */\n title?: string;\n /**\n * \n * @type {string}\n * @memberof ApiAcademyCourseLessonsPostRequestCourseLesson\n */\n textHtml?: string;\n}\n\n/**\n * Check if a given object implements the ApiAcademyCourseLessonsPostRequestCourseLesson interface.\n */\nexport function instanceOfApiAcademyCourseLessonsPostRequestCourseLesson(value: object): boolean {\n let isInstance = true;\n\n return isInstance;\n}\n\nexport function ApiAcademyCourseLessonsPostRequestCourseLessonFromJSON(json: any): ApiAcademyCourseLessonsPostRequestCourseLesson {\n return ApiAcademyCourseLessonsPostRequestCourseLessonFromJSONTyped(json, false);\n}\n\nexport function ApiAcademyCourseLessonsPostRequestCourseLessonFromJSONTyped(json: any, ignoreDiscriminator: boolean): ApiAcademyCourseLessonsPostRequestCourseLesson {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'academyCourseId': !exists(json, 'academy_course_id') ? undefined : json['academy_course_id'],\n 'videoId': !exists(json, 'video_id') ? undefined : json['video_id'],\n 'title': !exists(json, 'title') ? undefined : json['title'],\n 'textHtml': !exists(json, 'text_html') ? undefined : json['text_html'],\n };\n}\n\nexport function ApiAcademyCourseLessonsPostRequestCourseLessonToJSON(value?: ApiAcademyCourseLessonsPostRequestCourseLesson | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'academy_course_id': value.academyCourseId,\n 'video_id': value.videoId,\n 'title': value.title,\n 'text_html': value.textHtml,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * hopper\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport type { ApiAcademyCourseLessonsPostRequestCourseLesson } from './ApiAcademyCourseLessonsPostRequestCourseLesson';\nimport {\n ApiAcademyCourseLessonsPostRequestCourseLessonFromJSON,\n ApiAcademyCourseLessonsPostRequestCourseLessonFromJSONTyped,\n ApiAcademyCourseLessonsPostRequestCourseLessonToJSON,\n} from './ApiAcademyCourseLessonsPostRequestCourseLesson';\n\n/**\n * \n * @export\n * @interface ApiAcademyCourseLessonsPostRequest\n */\nexport interface ApiAcademyCourseLessonsPostRequest {\n /**\n * \n * @type {ApiAcademyCourseLessonsPostRequestCourseLesson}\n * @memberof ApiAcademyCourseLessonsPostRequest\n */\n courseLesson?: ApiAcademyCourseLessonsPostRequestCourseLesson;\n}\n\n/**\n * Check if a given object implements the ApiAcademyCourseLessonsPostRequest interface.\n */\nexport function instanceOfApiAcademyCourseLessonsPostRequest(value: object): boolean {\n let isInstance = true;\n\n return isInstance;\n}\n\nexport function ApiAcademyCourseLessonsPostRequestFromJSON(json: any): ApiAcademyCourseLessonsPostRequest {\n return ApiAcademyCourseLessonsPostRequestFromJSONTyped(json, false);\n}\n\nexport function ApiAcademyCourseLessonsPostRequestFromJSONTyped(json: any, ignoreDiscriminator: boolean): ApiAcademyCourseLessonsPostRequest {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'courseLesson': !exists(json, 'course_lesson') ? undefined : ApiAcademyCourseLessonsPostRequestCourseLessonFromJSON(json['course_lesson']),\n };\n}\n\nexport function ApiAcademyCourseLessonsPostRequestToJSON(value?: ApiAcademyCourseLessonsPostRequest | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'course_lesson': ApiAcademyCourseLessonsPostRequestCourseLessonToJSON(value.courseLesson),\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * hopper\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface ApiAcademyCoursesIdGet200Response\n */\nexport interface ApiAcademyCoursesIdGet200Response {\n /**\n * \n * @type {number}\n * @memberof ApiAcademyCoursesIdGet200Response\n */\n id?: number;\n /**\n * \n * @type {string}\n * @memberof ApiAcademyCoursesIdGet200Response\n */\n hashid?: string;\n /**\n * \n * @type {string}\n * @memberof ApiAcademyCoursesIdGet200Response\n */\n state?: string;\n /**\n * \n * @type {string}\n * @memberof ApiAcademyCoursesIdGet200Response\n */\n iconName?: string;\n /**\n * \n * @type {string}\n * @memberof ApiAcademyCoursesIdGet200Response\n */\n title?: string;\n /**\n * \n * @type {string}\n * @memberof ApiAcademyCoursesIdGet200Response\n */\n description?: string;\n /**\n * \n * @type {number}\n * @memberof ApiAcademyCoursesIdGet200Response\n */\n rowOrderRank?: number;\n /**\n * \n * @type {any}\n * @memberof ApiAcademyCoursesIdGet200Response\n */\n rowOrderPosition?: any | null;\n /**\n * \n * @type {number}\n * @memberof ApiAcademyCoursesIdGet200Response\n */\n playTimeSec?: number;\n /**\n * \n * @type {number}\n * @memberof ApiAcademyCoursesIdGet200Response\n */\n lessonsCount?: number;\n /**\n * \n * @type {number}\n * @memberof ApiAcademyCoursesIdGet200Response\n */\n academyCourseCategoryId?: number;\n}\n\n/**\n * Check if a given object implements the ApiAcademyCoursesIdGet200Response interface.\n */\nexport function instanceOfApiAcademyCoursesIdGet200Response(value: object): boolean {\n let isInstance = true;\n\n return isInstance;\n}\n\nexport function ApiAcademyCoursesIdGet200ResponseFromJSON(json: any): ApiAcademyCoursesIdGet200Response {\n return ApiAcademyCoursesIdGet200ResponseFromJSONTyped(json, false);\n}\n\nexport function ApiAcademyCoursesIdGet200ResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): ApiAcademyCoursesIdGet200Response {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'id': !exists(json, 'id') ? undefined : json['id'],\n 'hashid': !exists(json, 'hashid') ? undefined : json['hashid'],\n 'state': !exists(json, 'state') ? undefined : json['state'],\n 'iconName': !exists(json, 'iconName') ? undefined : json['iconName'],\n 'title': !exists(json, 'title') ? undefined : json['title'],\n 'description': !exists(json, 'description') ? undefined : json['description'],\n 'rowOrderRank': !exists(json, 'rowOrderRank') ? undefined : json['rowOrderRank'],\n 'rowOrderPosition': !exists(json, 'rowOrderPosition') ? undefined : json['rowOrderPosition'],\n 'playTimeSec': !exists(json, 'playTimeSec') ? undefined : json['playTimeSec'],\n 'lessonsCount': !exists(json, 'lessonsCount') ? undefined : json['lessonsCount'],\n 'academyCourseCategoryId': !exists(json, 'academyCourseCategoryId') ? undefined : json['academyCourseCategoryId'],\n };\n}\n\nexport function ApiAcademyCoursesIdGet200ResponseToJSON(value?: ApiAcademyCoursesIdGet200Response | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'id': value.id,\n 'hashid': value.hashid,\n 'state': value.state,\n 'iconName': value.iconName,\n 'title': value.title,\n 'description': value.description,\n 'rowOrderRank': value.rowOrderRank,\n 'rowOrderPosition': value.rowOrderPosition,\n 'playTimeSec': value.playTimeSec,\n 'lessonsCount': value.lessonsCount,\n 'academyCourseCategoryId': value.academyCourseCategoryId,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * hopper\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface ApiAcademyCoursesIdPatch202Response\n */\nexport interface ApiAcademyCoursesIdPatch202Response {\n /**\n * \n * @type {number}\n * @memberof ApiAcademyCoursesIdPatch202Response\n */\n id?: number;\n /**\n * \n * @type {string}\n * @memberof ApiAcademyCoursesIdPatch202Response\n */\n hashid?: string;\n /**\n * \n * @type {string}\n * @memberof ApiAcademyCoursesIdPatch202Response\n */\n state?: string;\n /**\n * \n * @type {string}\n * @memberof ApiAcademyCoursesIdPatch202Response\n */\n iconName?: string;\n /**\n * \n * @type {string}\n * @memberof ApiAcademyCoursesIdPatch202Response\n */\n title?: string;\n /**\n * \n * @type {string}\n * @memberof ApiAcademyCoursesIdPatch202Response\n */\n description?: string;\n /**\n * \n * @type {number}\n * @memberof ApiAcademyCoursesIdPatch202Response\n */\n rowOrderRank?: number;\n /**\n * \n * @type {string}\n * @memberof ApiAcademyCoursesIdPatch202Response\n */\n rowOrderPosition?: string | null;\n /**\n * \n * @type {number}\n * @memberof ApiAcademyCoursesIdPatch202Response\n */\n playTimeSec?: number;\n /**\n * \n * @type {number}\n * @memberof ApiAcademyCoursesIdPatch202Response\n */\n lessonsCount?: number;\n /**\n * \n * @type {number}\n * @memberof ApiAcademyCoursesIdPatch202Response\n */\n academyCourseCategoryId?: number;\n}\n\n/**\n * Check if a given object implements the ApiAcademyCoursesIdPatch202Response interface.\n */\nexport function instanceOfApiAcademyCoursesIdPatch202Response(value: object): boolean {\n let isInstance = true;\n\n return isInstance;\n}\n\nexport function ApiAcademyCoursesIdPatch202ResponseFromJSON(json: any): ApiAcademyCoursesIdPatch202Response {\n return ApiAcademyCoursesIdPatch202ResponseFromJSONTyped(json, false);\n}\n\nexport function ApiAcademyCoursesIdPatch202ResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): ApiAcademyCoursesIdPatch202Response {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'id': !exists(json, 'id') ? undefined : json['id'],\n 'hashid': !exists(json, 'hashid') ? undefined : json['hashid'],\n 'state': !exists(json, 'state') ? undefined : json['state'],\n 'iconName': !exists(json, 'iconName') ? undefined : json['iconName'],\n 'title': !exists(json, 'title') ? undefined : json['title'],\n 'description': !exists(json, 'description') ? undefined : json['description'],\n 'rowOrderRank': !exists(json, 'rowOrderRank') ? undefined : json['rowOrderRank'],\n 'rowOrderPosition': !exists(json, 'rowOrderPosition') ? undefined : json['rowOrderPosition'],\n 'playTimeSec': !exists(json, 'playTimeSec') ? undefined : json['playTimeSec'],\n 'lessonsCount': !exists(json, 'lessonsCount') ? undefined : json['lessonsCount'],\n 'academyCourseCategoryId': !exists(json, 'academyCourseCategoryId') ? undefined : json['academyCourseCategoryId'],\n };\n}\n\nexport function ApiAcademyCoursesIdPatch202ResponseToJSON(value?: ApiAcademyCoursesIdPatch202Response | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'id': value.id,\n 'hashid': value.hashid,\n 'state': value.state,\n 'iconName': value.iconName,\n 'title': value.title,\n 'description': value.description,\n 'rowOrderRank': value.rowOrderRank,\n 'rowOrderPosition': value.rowOrderPosition,\n 'playTimeSec': value.playTimeSec,\n 'lessonsCount': value.lessonsCount,\n 'academyCourseCategoryId': value.academyCourseCategoryId,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * hopper\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface ApiAcademyCoursesIdPatchRequestAcademyCourse\n */\nexport interface ApiAcademyCoursesIdPatchRequestAcademyCourse {\n /**\n * \n * @type {string}\n * @memberof ApiAcademyCoursesIdPatchRequestAcademyCourse\n */\n iconName?: string;\n /**\n * \n * @type {string}\n * @memberof ApiAcademyCoursesIdPatchRequestAcademyCourse\n */\n title?: string;\n /**\n * \n * @type {string}\n * @memberof ApiAcademyCoursesIdPatchRequestAcademyCourse\n */\n state?: string;\n /**\n * \n * @type {string}\n * @memberof ApiAcademyCoursesIdPatchRequestAcademyCourse\n */\n description?: string;\n /**\n * \n * @type {number}\n * @memberof ApiAcademyCoursesIdPatchRequestAcademyCourse\n */\n rowOrderPosition?: number;\n}\n\n/**\n * Check if a given object implements the ApiAcademyCoursesIdPatchRequestAcademyCourse interface.\n */\nexport function instanceOfApiAcademyCoursesIdPatchRequestAcademyCourse(value: object): boolean {\n let isInstance = true;\n\n return isInstance;\n}\n\nexport function ApiAcademyCoursesIdPatchRequestAcademyCourseFromJSON(json: any): ApiAcademyCoursesIdPatchRequestAcademyCourse {\n return ApiAcademyCoursesIdPatchRequestAcademyCourseFromJSONTyped(json, false);\n}\n\nexport function ApiAcademyCoursesIdPatchRequestAcademyCourseFromJSONTyped(json: any, ignoreDiscriminator: boolean): ApiAcademyCoursesIdPatchRequestAcademyCourse {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'iconName': !exists(json, 'icon_name') ? undefined : json['icon_name'],\n 'title': !exists(json, 'title') ? undefined : json['title'],\n 'state': !exists(json, 'state') ? undefined : json['state'],\n 'description': !exists(json, 'description') ? undefined : json['description'],\n 'rowOrderPosition': !exists(json, 'row_order_position') ? undefined : json['row_order_position'],\n };\n}\n\nexport function ApiAcademyCoursesIdPatchRequestAcademyCourseToJSON(value?: ApiAcademyCoursesIdPatchRequestAcademyCourse | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'icon_name': value.iconName,\n 'title': value.title,\n 'state': value.state,\n 'description': value.description,\n 'row_order_position': value.rowOrderPosition,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * hopper\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport type { ApiAcademyCoursesIdPatchRequestAcademyCourse } from './ApiAcademyCoursesIdPatchRequestAcademyCourse';\nimport {\n ApiAcademyCoursesIdPatchRequestAcademyCourseFromJSON,\n ApiAcademyCoursesIdPatchRequestAcademyCourseFromJSONTyped,\n ApiAcademyCoursesIdPatchRequestAcademyCourseToJSON,\n} from './ApiAcademyCoursesIdPatchRequestAcademyCourse';\n\n/**\n * \n * @export\n * @interface ApiAcademyCoursesIdPatchRequest\n */\nexport interface ApiAcademyCoursesIdPatchRequest {\n /**\n * \n * @type {ApiAcademyCoursesIdPatchRequestAcademyCourse}\n * @memberof ApiAcademyCoursesIdPatchRequest\n */\n academyCourse?: ApiAcademyCoursesIdPatchRequestAcademyCourse;\n}\n\n/**\n * Check if a given object implements the ApiAcademyCoursesIdPatchRequest interface.\n */\nexport function instanceOfApiAcademyCoursesIdPatchRequest(value: object): boolean {\n let isInstance = true;\n\n return isInstance;\n}\n\nexport function ApiAcademyCoursesIdPatchRequestFromJSON(json: any): ApiAcademyCoursesIdPatchRequest {\n return ApiAcademyCoursesIdPatchRequestFromJSONTyped(json, false);\n}\n\nexport function ApiAcademyCoursesIdPatchRequestFromJSONTyped(json: any, ignoreDiscriminator: boolean): ApiAcademyCoursesIdPatchRequest {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'academyCourse': !exists(json, 'academy_course') ? undefined : ApiAcademyCoursesIdPatchRequestAcademyCourseFromJSON(json['academy_course']),\n };\n}\n\nexport function ApiAcademyCoursesIdPatchRequestToJSON(value?: ApiAcademyCoursesIdPatchRequest | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'academy_course': ApiAcademyCoursesIdPatchRequestAcademyCourseToJSON(value.academyCourse),\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * hopper\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface ApiAcademyCoursesPost201Response\n */\nexport interface ApiAcademyCoursesPost201Response {\n /**\n * \n * @type {number}\n * @memberof ApiAcademyCoursesPost201Response\n */\n id?: number;\n /**\n * \n * @type {string}\n * @memberof ApiAcademyCoursesPost201Response\n */\n hashid?: string;\n /**\n * \n * @type {string}\n * @memberof ApiAcademyCoursesPost201Response\n */\n iconName?: string;\n /**\n * \n * @type {string}\n * @memberof ApiAcademyCoursesPost201Response\n */\n title?: string;\n /**\n * \n * @type {string}\n * @memberof ApiAcademyCoursesPost201Response\n */\n description?: string;\n /**\n * \n * @type {number}\n * @memberof ApiAcademyCoursesPost201Response\n */\n rowOrderRank?: number;\n /**\n * \n * @type {string}\n * @memberof ApiAcademyCoursesPost201Response\n */\n rowOrderPosition?: string;\n /**\n * \n * @type {number}\n * @memberof ApiAcademyCoursesPost201Response\n */\n playTimeSec?: number;\n /**\n * \n * @type {number}\n * @memberof ApiAcademyCoursesPost201Response\n */\n lessonsCount?: number;\n /**\n * \n * @type {string}\n * @memberof ApiAcademyCoursesPost201Response\n */\n state?: string;\n /**\n * \n * @type {number}\n * @memberof ApiAcademyCoursesPost201Response\n */\n academyCourseCategoryId?: number;\n}\n\n/**\n * Check if a given object implements the ApiAcademyCoursesPost201Response interface.\n */\nexport function instanceOfApiAcademyCoursesPost201Response(value: object): boolean {\n let isInstance = true;\n\n return isInstance;\n}\n\nexport function ApiAcademyCoursesPost201ResponseFromJSON(json: any): ApiAcademyCoursesPost201Response {\n return ApiAcademyCoursesPost201ResponseFromJSONTyped(json, false);\n}\n\nexport function ApiAcademyCoursesPost201ResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): ApiAcademyCoursesPost201Response {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'id': !exists(json, 'id') ? undefined : json['id'],\n 'hashid': !exists(json, 'hashid') ? undefined : json['hashid'],\n 'iconName': !exists(json, 'iconName') ? undefined : json['iconName'],\n 'title': !exists(json, 'title') ? undefined : json['title'],\n 'description': !exists(json, 'description') ? undefined : json['description'],\n 'rowOrderRank': !exists(json, 'rowOrderRank') ? undefined : json['rowOrderRank'],\n 'rowOrderPosition': !exists(json, 'rowOrderPosition') ? undefined : json['rowOrderPosition'],\n 'playTimeSec': !exists(json, 'playTimeSec') ? undefined : json['playTimeSec'],\n 'lessonsCount': !exists(json, 'lessonsCount') ? undefined : json['lessonsCount'],\n 'state': !exists(json, 'state') ? undefined : json['state'],\n 'academyCourseCategoryId': !exists(json, 'academyCourseCategoryId') ? undefined : json['academyCourseCategoryId'],\n };\n}\n\nexport function ApiAcademyCoursesPost201ResponseToJSON(value?: ApiAcademyCoursesPost201Response | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'id': value.id,\n 'hashid': value.hashid,\n 'iconName': value.iconName,\n 'title': value.title,\n 'description': value.description,\n 'rowOrderRank': value.rowOrderRank,\n 'rowOrderPosition': value.rowOrderPosition,\n 'playTimeSec': value.playTimeSec,\n 'lessonsCount': value.lessonsCount,\n 'state': value.state,\n 'academyCourseCategoryId': value.academyCourseCategoryId,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * hopper\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface ApiAcademyCoursesPostRequestAcademyCourse\n */\nexport interface ApiAcademyCoursesPostRequestAcademyCourse {\n /**\n * \n * @type {string}\n * @memberof ApiAcademyCoursesPostRequestAcademyCourse\n */\n iconName?: string;\n /**\n * \n * @type {string}\n * @memberof ApiAcademyCoursesPostRequestAcademyCourse\n */\n title?: string;\n /**\n * \n * @type {string}\n * @memberof ApiAcademyCoursesPostRequestAcademyCourse\n */\n description?: string;\n /**\n * \n * @type {number}\n * @memberof ApiAcademyCoursesPostRequestAcademyCourse\n */\n academyCourseCategoryId?: number;\n}\n\n/**\n * Check if a given object implements the ApiAcademyCoursesPostRequestAcademyCourse interface.\n */\nexport function instanceOfApiAcademyCoursesPostRequestAcademyCourse(value: object): boolean {\n let isInstance = true;\n\n return isInstance;\n}\n\nexport function ApiAcademyCoursesPostRequestAcademyCourseFromJSON(json: any): ApiAcademyCoursesPostRequestAcademyCourse {\n return ApiAcademyCoursesPostRequestAcademyCourseFromJSONTyped(json, false);\n}\n\nexport function ApiAcademyCoursesPostRequestAcademyCourseFromJSONTyped(json: any, ignoreDiscriminator: boolean): ApiAcademyCoursesPostRequestAcademyCourse {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'iconName': !exists(json, 'icon_name') ? undefined : json['icon_name'],\n 'title': !exists(json, 'title') ? undefined : json['title'],\n 'description': !exists(json, 'description') ? undefined : json['description'],\n 'academyCourseCategoryId': !exists(json, 'academy_course_category_id') ? undefined : json['academy_course_category_id'],\n };\n}\n\nexport function ApiAcademyCoursesPostRequestAcademyCourseToJSON(value?: ApiAcademyCoursesPostRequestAcademyCourse | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'icon_name': value.iconName,\n 'title': value.title,\n 'description': value.description,\n 'academy_course_category_id': value.academyCourseCategoryId,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * hopper\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport type { ApiAcademyCoursesPostRequestAcademyCourse } from './ApiAcademyCoursesPostRequestAcademyCourse';\nimport {\n ApiAcademyCoursesPostRequestAcademyCourseFromJSON,\n ApiAcademyCoursesPostRequestAcademyCourseFromJSONTyped,\n ApiAcademyCoursesPostRequestAcademyCourseToJSON,\n} from './ApiAcademyCoursesPostRequestAcademyCourse';\n\n/**\n * \n * @export\n * @interface ApiAcademyCoursesPostRequest\n */\nexport interface ApiAcademyCoursesPostRequest {\n /**\n * \n * @type {ApiAcademyCoursesPostRequestAcademyCourse}\n * @memberof ApiAcademyCoursesPostRequest\n */\n academyCourse?: ApiAcademyCoursesPostRequestAcademyCourse;\n}\n\n/**\n * Check if a given object implements the ApiAcademyCoursesPostRequest interface.\n */\nexport function instanceOfApiAcademyCoursesPostRequest(value: object): boolean {\n let isInstance = true;\n\n return isInstance;\n}\n\nexport function ApiAcademyCoursesPostRequestFromJSON(json: any): ApiAcademyCoursesPostRequest {\n return ApiAcademyCoursesPostRequestFromJSONTyped(json, false);\n}\n\nexport function ApiAcademyCoursesPostRequestFromJSONTyped(json: any, ignoreDiscriminator: boolean): ApiAcademyCoursesPostRequest {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'academyCourse': !exists(json, 'academy_course') ? undefined : ApiAcademyCoursesPostRequestAcademyCourseFromJSON(json['academy_course']),\n };\n}\n\nexport function ApiAcademyCoursesPostRequestToJSON(value?: ApiAcademyCoursesPostRequest | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'academy_course': ApiAcademyCoursesPostRequestAcademyCourseToJSON(value.academyCourse),\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * hopper\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface ApiAcademyLogoGet200Response\n */\nexport interface ApiAcademyLogoGet200Response {\n /**\n * \n * @type {string}\n * @memberof ApiAcademyLogoGet200Response\n */\n signedUrl?: string;\n}\n\n/**\n * Check if a given object implements the ApiAcademyLogoGet200Response interface.\n */\nexport function instanceOfApiAcademyLogoGet200Response(value: object): boolean {\n let isInstance = true;\n\n return isInstance;\n}\n\nexport function ApiAcademyLogoGet200ResponseFromJSON(json: any): ApiAcademyLogoGet200Response {\n return ApiAcademyLogoGet200ResponseFromJSONTyped(json, false);\n}\n\nexport function ApiAcademyLogoGet200ResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): ApiAcademyLogoGet200Response {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'signedUrl': !exists(json, 'signedUrl') ? undefined : json['signedUrl'],\n };\n}\n\nexport function ApiAcademyLogoGet200ResponseToJSON(value?: ApiAcademyLogoGet200Response | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'signedUrl': value.signedUrl,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * hopper\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface ApiAcademyLogoPost201Response\n */\nexport interface ApiAcademyLogoPost201Response {\n /**\n * \n * @type {string}\n * @memberof ApiAcademyLogoPost201Response\n */\n message?: string;\n}\n\n/**\n * Check if a given object implements the ApiAcademyLogoPost201Response interface.\n */\nexport function instanceOfApiAcademyLogoPost201Response(value: object): boolean {\n let isInstance = true;\n\n return isInstance;\n}\n\nexport function ApiAcademyLogoPost201ResponseFromJSON(json: any): ApiAcademyLogoPost201Response {\n return ApiAcademyLogoPost201ResponseFromJSONTyped(json, false);\n}\n\nexport function ApiAcademyLogoPost201ResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): ApiAcademyLogoPost201Response {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'message': !exists(json, 'message') ? undefined : json['message'],\n };\n}\n\nexport function ApiAcademyLogoPost201ResponseToJSON(value?: ApiAcademyLogoPost201Response | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'message': value.message,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * hopper\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface ApiScenesIdPutRequestAudioData\n */\nexport interface ApiScenesIdPutRequestAudioData {\n /**\n * \n * @type {string}\n * @memberof ApiScenesIdPutRequestAudioData\n */\n voiceName?: string;\n /**\n * \n * @type {string}\n * @memberof ApiScenesIdPutRequestAudioData\n */\n speechRate?: string;\n}\n\n/**\n * Check if a given object implements the ApiScenesIdPutRequestAudioData interface.\n */\nexport function instanceOfApiScenesIdPutRequestAudioData(value: object): boolean {\n let isInstance = true;\n\n return isInstance;\n}\n\nexport function ApiScenesIdPutRequestAudioDataFromJSON(json: any): ApiScenesIdPutRequestAudioData {\n return ApiScenesIdPutRequestAudioDataFromJSONTyped(json, false);\n}\n\nexport function ApiScenesIdPutRequestAudioDataFromJSONTyped(json: any, ignoreDiscriminator: boolean): ApiScenesIdPutRequestAudioData {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'voiceName': !exists(json, 'voice_name') ? undefined : json['voice_name'],\n 'speechRate': !exists(json, 'speech_rate') ? undefined : json['speech_rate'],\n };\n}\n\nexport function ApiScenesIdPutRequestAudioDataToJSON(value?: ApiScenesIdPutRequestAudioData | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'voice_name': value.voiceName,\n 'speech_rate': value.speechRate,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * hopper\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport type { ApiScenesIdPutRequestAudioData } from './ApiScenesIdPutRequestAudioData';\nimport {\n ApiScenesIdPutRequestAudioDataFromJSON,\n ApiScenesIdPutRequestAudioDataFromJSONTyped,\n ApiScenesIdPutRequestAudioDataToJSON,\n} from './ApiScenesIdPutRequestAudioData';\n\n/**\n * \n * @export\n * @interface ApiDesignDesignIdScenesPostRequest\n */\nexport interface ApiDesignDesignIdScenesPostRequest {\n /**\n * \n * @type {string}\n * @memberof ApiDesignDesignIdScenesPostRequest\n */\n textHtml?: string;\n /**\n * \n * @type {ApiScenesIdPutRequestAudioData}\n * @memberof ApiDesignDesignIdScenesPostRequest\n */\n audioData?: ApiScenesIdPutRequestAudioData;\n /**\n * \n * @type {number}\n * @memberof ApiDesignDesignIdScenesPostRequest\n */\n rowOrderPosition?: number;\n}\n\n/**\n * Check if a given object implements the ApiDesignDesignIdScenesPostRequest interface.\n */\nexport function instanceOfApiDesignDesignIdScenesPostRequest(value: object): boolean {\n let isInstance = true;\n\n return isInstance;\n}\n\nexport function ApiDesignDesignIdScenesPostRequestFromJSON(json: any): ApiDesignDesignIdScenesPostRequest {\n return ApiDesignDesignIdScenesPostRequestFromJSONTyped(json, false);\n}\n\nexport function ApiDesignDesignIdScenesPostRequestFromJSONTyped(json: any, ignoreDiscriminator: boolean): ApiDesignDesignIdScenesPostRequest {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'textHtml': !exists(json, 'text_html') ? undefined : json['text_html'],\n 'audioData': !exists(json, 'audio_data') ? undefined : ApiScenesIdPutRequestAudioDataFromJSON(json['audio_data']),\n 'rowOrderPosition': !exists(json, 'row_order_position') ? undefined : json['row_order_position'],\n };\n}\n\nexport function ApiDesignDesignIdScenesPostRequestToJSON(value?: ApiDesignDesignIdScenesPostRequest | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'text_html': value.textHtml,\n 'audio_data': ApiScenesIdPutRequestAudioDataToJSON(value.audioData),\n 'row_order_position': value.rowOrderPosition,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * hopper\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface ApiDesignIdAddCreatomateJobPost200ResponseInner\n */\nexport interface ApiDesignIdAddCreatomateJobPost200ResponseInner {\n /**\n * \n * @type {string}\n * @memberof ApiDesignIdAddCreatomateJobPost200ResponseInner\n */\n id?: string;\n /**\n * \n * @type {string}\n * @memberof ApiDesignIdAddCreatomateJobPost200ResponseInner\n */\n status?: string;\n /**\n * \n * @type {string}\n * @memberof ApiDesignIdAddCreatomateJobPost200ResponseInner\n */\n url?: string;\n /**\n * \n * @type {string}\n * @memberof ApiDesignIdAddCreatomateJobPost200ResponseInner\n */\n outputFormat?: string;\n /**\n * \n * @type {string}\n * @memberof ApiDesignIdAddCreatomateJobPost200ResponseInner\n */\n webhookUrl?: string;\n}\n\n/**\n * Check if a given object implements the ApiDesignIdAddCreatomateJobPost200ResponseInner interface.\n */\nexport function instanceOfApiDesignIdAddCreatomateJobPost200ResponseInner(value: object): boolean {\n let isInstance = true;\n\n return isInstance;\n}\n\nexport function ApiDesignIdAddCreatomateJobPost200ResponseInnerFromJSON(json: any): ApiDesignIdAddCreatomateJobPost200ResponseInner {\n return ApiDesignIdAddCreatomateJobPost200ResponseInnerFromJSONTyped(json, false);\n}\n\nexport function ApiDesignIdAddCreatomateJobPost200ResponseInnerFromJSONTyped(json: any, ignoreDiscriminator: boolean): ApiDesignIdAddCreatomateJobPost200ResponseInner {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'id': !exists(json, 'id') ? undefined : json['id'],\n 'status': !exists(json, 'status') ? undefined : json['status'],\n 'url': !exists(json, 'url') ? undefined : json['url'],\n 'outputFormat': !exists(json, 'output_format') ? undefined : json['output_format'],\n 'webhookUrl': !exists(json, 'webhook_url') ? undefined : json['webhook_url'],\n };\n}\n\nexport function ApiDesignIdAddCreatomateJobPost200ResponseInnerToJSON(value?: ApiDesignIdAddCreatomateJobPost200ResponseInner | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'id': value.id,\n 'status': value.status,\n 'url': value.url,\n 'output_format': value.outputFormat,\n 'webhook_url': value.webhookUrl,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * hopper\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface ApiDesignIdAddCreatomateJobPostRequestCreatomateParamSourceElementsInnerAnimationsInner\n */\nexport interface ApiDesignIdAddCreatomateJobPostRequestCreatomateParamSourceElementsInnerAnimationsInner {\n /**\n * \n * @type {string}\n * @memberof ApiDesignIdAddCreatomateJobPostRequestCreatomateParamSourceElementsInnerAnimationsInner\n */\n time?: string;\n /**\n * \n * @type {number}\n * @memberof ApiDesignIdAddCreatomateJobPostRequestCreatomateParamSourceElementsInnerAnimationsInner\n */\n duration?: number;\n /**\n * \n * @type {string}\n * @memberof ApiDesignIdAddCreatomateJobPostRequestCreatomateParamSourceElementsInnerAnimationsInner\n */\n easing?: string;\n /**\n * \n * @type {boolean}\n * @memberof ApiDesignIdAddCreatomateJobPostRequestCreatomateParamSourceElementsInnerAnimationsInner\n */\n reversed?: boolean;\n /**\n * \n * @type {string}\n * @memberof ApiDesignIdAddCreatomateJobPostRequestCreatomateParamSourceElementsInnerAnimationsInner\n */\n type?: string;\n}\n\n/**\n * Check if a given object implements the ApiDesignIdAddCreatomateJobPostRequestCreatomateParamSourceElementsInnerAnimationsInner interface.\n */\nexport function instanceOfApiDesignIdAddCreatomateJobPostRequestCreatomateParamSourceElementsInnerAnimationsInner(value: object): boolean {\n let isInstance = true;\n\n return isInstance;\n}\n\nexport function ApiDesignIdAddCreatomateJobPostRequestCreatomateParamSourceElementsInnerAnimationsInnerFromJSON(json: any): ApiDesignIdAddCreatomateJobPostRequestCreatomateParamSourceElementsInnerAnimationsInner {\n return ApiDesignIdAddCreatomateJobPostRequestCreatomateParamSourceElementsInnerAnimationsInnerFromJSONTyped(json, false);\n}\n\nexport function ApiDesignIdAddCreatomateJobPostRequestCreatomateParamSourceElementsInnerAnimationsInnerFromJSONTyped(json: any, ignoreDiscriminator: boolean): ApiDesignIdAddCreatomateJobPostRequestCreatomateParamSourceElementsInnerAnimationsInner {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'time': !exists(json, 'time') ? undefined : json['time'],\n 'duration': !exists(json, 'duration') ? undefined : json['duration'],\n 'easing': !exists(json, 'easing') ? undefined : json['easing'],\n 'reversed': !exists(json, 'reversed') ? undefined : json['reversed'],\n 'type': !exists(json, 'type') ? undefined : json['type'],\n };\n}\n\nexport function ApiDesignIdAddCreatomateJobPostRequestCreatomateParamSourceElementsInnerAnimationsInnerToJSON(value?: ApiDesignIdAddCreatomateJobPostRequestCreatomateParamSourceElementsInnerAnimationsInner | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'time': value.time,\n 'duration': value.duration,\n 'easing': value.easing,\n 'reversed': value.reversed,\n 'type': value.type,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * hopper\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport type { ApiDesignIdAddCreatomateJobPostRequestCreatomateParamSourceElementsInnerAnimationsInner } from './ApiDesignIdAddCreatomateJobPostRequestCreatomateParamSourceElementsInnerAnimationsInner';\nimport {\n ApiDesignIdAddCreatomateJobPostRequestCreatomateParamSourceElementsInnerAnimationsInnerFromJSON,\n ApiDesignIdAddCreatomateJobPostRequestCreatomateParamSourceElementsInnerAnimationsInnerFromJSONTyped,\n ApiDesignIdAddCreatomateJobPostRequestCreatomateParamSourceElementsInnerAnimationsInnerToJSON,\n} from './ApiDesignIdAddCreatomateJobPostRequestCreatomateParamSourceElementsInnerAnimationsInner';\n\n/**\n * \n * @export\n * @interface ApiDesignIdAddCreatomateJobPostRequestCreatomateParamSourceElementsInner\n */\nexport interface ApiDesignIdAddCreatomateJobPostRequestCreatomateParamSourceElementsInner {\n /**\n * \n * @type {number}\n * @memberof ApiDesignIdAddCreatomateJobPostRequestCreatomateParamSourceElementsInner\n */\n track?: number;\n /**\n * \n * @type {string}\n * @memberof ApiDesignIdAddCreatomateJobPostRequestCreatomateParamSourceElementsInner\n */\n type?: string;\n /**\n * \n * @type {string}\n * @memberof ApiDesignIdAddCreatomateJobPostRequestCreatomateParamSourceElementsInner\n */\n source?: string;\n /**\n * \n * @type {string}\n * @memberof ApiDesignIdAddCreatomateJobPostRequestCreatomateParamSourceElementsInner\n */\n fit?: string;\n /**\n * \n * @type {number}\n * @memberof ApiDesignIdAddCreatomateJobPostRequestCreatomateParamSourceElementsInner\n */\n duration?: number;\n /**\n * \n * @type {number}\n * @memberof ApiDesignIdAddCreatomateJobPostRequestCreatomateParamSourceElementsInner\n */\n time?: number;\n /**\n * \n * @type {Array}\n * @memberof ApiDesignIdAddCreatomateJobPostRequestCreatomateParamSourceElementsInner\n */\n animations?: Array;\n}\n\n/**\n * Check if a given object implements the ApiDesignIdAddCreatomateJobPostRequestCreatomateParamSourceElementsInner interface.\n */\nexport function instanceOfApiDesignIdAddCreatomateJobPostRequestCreatomateParamSourceElementsInner(value: object): boolean {\n let isInstance = true;\n\n return isInstance;\n}\n\nexport function ApiDesignIdAddCreatomateJobPostRequestCreatomateParamSourceElementsInnerFromJSON(json: any): ApiDesignIdAddCreatomateJobPostRequestCreatomateParamSourceElementsInner {\n return ApiDesignIdAddCreatomateJobPostRequestCreatomateParamSourceElementsInnerFromJSONTyped(json, false);\n}\n\nexport function ApiDesignIdAddCreatomateJobPostRequestCreatomateParamSourceElementsInnerFromJSONTyped(json: any, ignoreDiscriminator: boolean): ApiDesignIdAddCreatomateJobPostRequestCreatomateParamSourceElementsInner {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'track': !exists(json, 'track') ? undefined : json['track'],\n 'type': !exists(json, 'type') ? undefined : json['type'],\n 'source': !exists(json, 'source') ? undefined : json['source'],\n 'fit': !exists(json, 'fit') ? undefined : json['fit'],\n 'duration': !exists(json, 'duration') ? undefined : json['duration'],\n 'time': !exists(json, 'time') ? undefined : json['time'],\n 'animations': !exists(json, 'animations') ? undefined : ((json['animations'] as Array).map(ApiDesignIdAddCreatomateJobPostRequestCreatomateParamSourceElementsInnerAnimationsInnerFromJSON)),\n };\n}\n\nexport function ApiDesignIdAddCreatomateJobPostRequestCreatomateParamSourceElementsInnerToJSON(value?: ApiDesignIdAddCreatomateJobPostRequestCreatomateParamSourceElementsInner | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'track': value.track,\n 'type': value.type,\n 'source': value.source,\n 'fit': value.fit,\n 'duration': value.duration,\n 'time': value.time,\n 'animations': value.animations === undefined ? undefined : ((value.animations as Array).map(ApiDesignIdAddCreatomateJobPostRequestCreatomateParamSourceElementsInnerAnimationsInnerToJSON)),\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * hopper\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport type { ApiDesignIdAddCreatomateJobPostRequestCreatomateParamSourceElementsInner } from './ApiDesignIdAddCreatomateJobPostRequestCreatomateParamSourceElementsInner';\nimport {\n ApiDesignIdAddCreatomateJobPostRequestCreatomateParamSourceElementsInnerFromJSON,\n ApiDesignIdAddCreatomateJobPostRequestCreatomateParamSourceElementsInnerFromJSONTyped,\n ApiDesignIdAddCreatomateJobPostRequestCreatomateParamSourceElementsInnerToJSON,\n} from './ApiDesignIdAddCreatomateJobPostRequestCreatomateParamSourceElementsInner';\n\n/**\n * \n * @export\n * @interface ApiDesignIdAddCreatomateJobPostRequestCreatomateParamSource\n */\nexport interface ApiDesignIdAddCreatomateJobPostRequestCreatomateParamSource {\n /**\n * \n * @type {string}\n * @memberof ApiDesignIdAddCreatomateJobPostRequestCreatomateParamSource\n */\n outputFormat?: string;\n /**\n * \n * @type {number}\n * @memberof ApiDesignIdAddCreatomateJobPostRequestCreatomateParamSource\n */\n duration?: number;\n /**\n * \n * @type {number}\n * @memberof ApiDesignIdAddCreatomateJobPostRequestCreatomateParamSource\n */\n frameRate?: number;\n /**\n * \n * @type {number}\n * @memberof ApiDesignIdAddCreatomateJobPostRequestCreatomateParamSource\n */\n width?: number;\n /**\n * \n * @type {number}\n * @memberof ApiDesignIdAddCreatomateJobPostRequestCreatomateParamSource\n */\n height?: number;\n /**\n * \n * @type {Array}\n * @memberof ApiDesignIdAddCreatomateJobPostRequestCreatomateParamSource\n */\n elements?: Array;\n}\n\n/**\n * Check if a given object implements the ApiDesignIdAddCreatomateJobPostRequestCreatomateParamSource interface.\n */\nexport function instanceOfApiDesignIdAddCreatomateJobPostRequestCreatomateParamSource(value: object): boolean {\n let isInstance = true;\n\n return isInstance;\n}\n\nexport function ApiDesignIdAddCreatomateJobPostRequestCreatomateParamSourceFromJSON(json: any): ApiDesignIdAddCreatomateJobPostRequestCreatomateParamSource {\n return ApiDesignIdAddCreatomateJobPostRequestCreatomateParamSourceFromJSONTyped(json, false);\n}\n\nexport function ApiDesignIdAddCreatomateJobPostRequestCreatomateParamSourceFromJSONTyped(json: any, ignoreDiscriminator: boolean): ApiDesignIdAddCreatomateJobPostRequestCreatomateParamSource {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'outputFormat': !exists(json, 'output_format') ? undefined : json['output_format'],\n 'duration': !exists(json, 'duration') ? undefined : json['duration'],\n 'frameRate': !exists(json, 'frame_rate') ? undefined : json['frame_rate'],\n 'width': !exists(json, 'width') ? undefined : json['width'],\n 'height': !exists(json, 'height') ? undefined : json['height'],\n 'elements': !exists(json, 'elements') ? undefined : ((json['elements'] as Array).map(ApiDesignIdAddCreatomateJobPostRequestCreatomateParamSourceElementsInnerFromJSON)),\n };\n}\n\nexport function ApiDesignIdAddCreatomateJobPostRequestCreatomateParamSourceToJSON(value?: ApiDesignIdAddCreatomateJobPostRequestCreatomateParamSource | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'output_format': value.outputFormat,\n 'duration': value.duration,\n 'frame_rate': value.frameRate,\n 'width': value.width,\n 'height': value.height,\n 'elements': value.elements === undefined ? undefined : ((value.elements as Array).map(ApiDesignIdAddCreatomateJobPostRequestCreatomateParamSourceElementsInnerToJSON)),\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * hopper\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport type { ApiDesignIdAddCreatomateJobPostRequestCreatomateParamSource } from './ApiDesignIdAddCreatomateJobPostRequestCreatomateParamSource';\nimport {\n ApiDesignIdAddCreatomateJobPostRequestCreatomateParamSourceFromJSON,\n ApiDesignIdAddCreatomateJobPostRequestCreatomateParamSourceFromJSONTyped,\n ApiDesignIdAddCreatomateJobPostRequestCreatomateParamSourceToJSON,\n} from './ApiDesignIdAddCreatomateJobPostRequestCreatomateParamSource';\n\n/**\n * \n * @export\n * @interface ApiDesignIdAddCreatomateJobPostRequestCreatomateParam\n */\nexport interface ApiDesignIdAddCreatomateJobPostRequestCreatomateParam {\n /**\n * \n * @type {number}\n * @memberof ApiDesignIdAddCreatomateJobPostRequestCreatomateParam\n */\n multipart?: number;\n /**\n * \n * @type {ApiDesignIdAddCreatomateJobPostRequestCreatomateParamSource}\n * @memberof ApiDesignIdAddCreatomateJobPostRequestCreatomateParam\n */\n source?: ApiDesignIdAddCreatomateJobPostRequestCreatomateParamSource;\n}\n\n/**\n * Check if a given object implements the ApiDesignIdAddCreatomateJobPostRequestCreatomateParam interface.\n */\nexport function instanceOfApiDesignIdAddCreatomateJobPostRequestCreatomateParam(value: object): boolean {\n let isInstance = true;\n\n return isInstance;\n}\n\nexport function ApiDesignIdAddCreatomateJobPostRequestCreatomateParamFromJSON(json: any): ApiDesignIdAddCreatomateJobPostRequestCreatomateParam {\n return ApiDesignIdAddCreatomateJobPostRequestCreatomateParamFromJSONTyped(json, false);\n}\n\nexport function ApiDesignIdAddCreatomateJobPostRequestCreatomateParamFromJSONTyped(json: any, ignoreDiscriminator: boolean): ApiDesignIdAddCreatomateJobPostRequestCreatomateParam {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'multipart': !exists(json, 'multipart') ? undefined : json['multipart'],\n 'source': !exists(json, 'source') ? undefined : ApiDesignIdAddCreatomateJobPostRequestCreatomateParamSourceFromJSON(json['source']),\n };\n}\n\nexport function ApiDesignIdAddCreatomateJobPostRequestCreatomateParamToJSON(value?: ApiDesignIdAddCreatomateJobPostRequestCreatomateParam | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'multipart': value.multipart,\n 'source': ApiDesignIdAddCreatomateJobPostRequestCreatomateParamSourceToJSON(value.source),\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * hopper\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport type { ApiDesignIdAddCreatomateJobPostRequestCreatomateParam } from './ApiDesignIdAddCreatomateJobPostRequestCreatomateParam';\nimport {\n ApiDesignIdAddCreatomateJobPostRequestCreatomateParamFromJSON,\n ApiDesignIdAddCreatomateJobPostRequestCreatomateParamFromJSONTyped,\n ApiDesignIdAddCreatomateJobPostRequestCreatomateParamToJSON,\n} from './ApiDesignIdAddCreatomateJobPostRequestCreatomateParam';\n\n/**\n * \n * @export\n * @interface ApiDesignIdAddCreatomateJobPostRequest\n */\nexport interface ApiDesignIdAddCreatomateJobPostRequest {\n /**\n * \n * @type {ApiDesignIdAddCreatomateJobPostRequestCreatomateParam}\n * @memberof ApiDesignIdAddCreatomateJobPostRequest\n */\n creatomateParam?: ApiDesignIdAddCreatomateJobPostRequestCreatomateParam;\n}\n\n/**\n * Check if a given object implements the ApiDesignIdAddCreatomateJobPostRequest interface.\n */\nexport function instanceOfApiDesignIdAddCreatomateJobPostRequest(value: object): boolean {\n let isInstance = true;\n\n return isInstance;\n}\n\nexport function ApiDesignIdAddCreatomateJobPostRequestFromJSON(json: any): ApiDesignIdAddCreatomateJobPostRequest {\n return ApiDesignIdAddCreatomateJobPostRequestFromJSONTyped(json, false);\n}\n\nexport function ApiDesignIdAddCreatomateJobPostRequestFromJSONTyped(json: any, ignoreDiscriminator: boolean): ApiDesignIdAddCreatomateJobPostRequest {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'creatomateParam': !exists(json, 'creatomate_param') ? undefined : ApiDesignIdAddCreatomateJobPostRequestCreatomateParamFromJSON(json['creatomate_param']),\n };\n}\n\nexport function ApiDesignIdAddCreatomateJobPostRequestToJSON(value?: ApiDesignIdAddCreatomateJobPostRequest | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'creatomate_param': ApiDesignIdAddCreatomateJobPostRequestCreatomateParamToJSON(value.creatomateParam),\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * hopper\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface ApiFoldersIdRenamePatch202Response\n */\nexport interface ApiFoldersIdRenamePatch202Response {\n /**\n * \n * @type {string}\n * @memberof ApiFoldersIdRenamePatch202Response\n */\n name?: string;\n /**\n * \n * @type {number}\n * @memberof ApiFoldersIdRenamePatch202Response\n */\n id?: number;\n /**\n * \n * @type {any}\n * @memberof ApiFoldersIdRenamePatch202Response\n */\n ancestry?: any | null;\n /**\n * \n * @type {Array}\n * @memberof ApiFoldersIdRenamePatch202Response\n */\n videos?: Array;\n /**\n * \n * @type {string}\n * @memberof ApiFoldersIdRenamePatch202Response\n */\n hashid?: string;\n}\n\n/**\n * Check if a given object implements the ApiFoldersIdRenamePatch202Response interface.\n */\nexport function instanceOfApiFoldersIdRenamePatch202Response(value: object): boolean {\n let isInstance = true;\n\n return isInstance;\n}\n\nexport function ApiFoldersIdRenamePatch202ResponseFromJSON(json: any): ApiFoldersIdRenamePatch202Response {\n return ApiFoldersIdRenamePatch202ResponseFromJSONTyped(json, false);\n}\n\nexport function ApiFoldersIdRenamePatch202ResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): ApiFoldersIdRenamePatch202Response {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'name': !exists(json, 'name') ? undefined : json['name'],\n 'id': !exists(json, 'id') ? undefined : json['id'],\n 'ancestry': !exists(json, 'ancestry') ? undefined : json['ancestry'],\n 'videos': !exists(json, 'videos') ? undefined : json['videos'],\n 'hashid': !exists(json, 'hashid') ? undefined : json['hashid'],\n };\n}\n\nexport function ApiFoldersIdRenamePatch202ResponseToJSON(value?: ApiFoldersIdRenamePatch202Response | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'name': value.name,\n 'id': value.id,\n 'ancestry': value.ancestry,\n 'videos': value.videos,\n 'hashid': value.hashid,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * hopper\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface ApiFoldersIdRenamePatchRequestFolder\n */\nexport interface ApiFoldersIdRenamePatchRequestFolder {\n /**\n * \n * @type {string}\n * @memberof ApiFoldersIdRenamePatchRequestFolder\n */\n name?: string;\n}\n\n/**\n * Check if a given object implements the ApiFoldersIdRenamePatchRequestFolder interface.\n */\nexport function instanceOfApiFoldersIdRenamePatchRequestFolder(value: object): boolean {\n let isInstance = true;\n\n return isInstance;\n}\n\nexport function ApiFoldersIdRenamePatchRequestFolderFromJSON(json: any): ApiFoldersIdRenamePatchRequestFolder {\n return ApiFoldersIdRenamePatchRequestFolderFromJSONTyped(json, false);\n}\n\nexport function ApiFoldersIdRenamePatchRequestFolderFromJSONTyped(json: any, ignoreDiscriminator: boolean): ApiFoldersIdRenamePatchRequestFolder {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'name': !exists(json, 'name') ? undefined : json['name'],\n };\n}\n\nexport function ApiFoldersIdRenamePatchRequestFolderToJSON(value?: ApiFoldersIdRenamePatchRequestFolder | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'name': value.name,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * hopper\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport type { ApiFoldersIdRenamePatchRequestFolder } from './ApiFoldersIdRenamePatchRequestFolder';\nimport {\n ApiFoldersIdRenamePatchRequestFolderFromJSON,\n ApiFoldersIdRenamePatchRequestFolderFromJSONTyped,\n ApiFoldersIdRenamePatchRequestFolderToJSON,\n} from './ApiFoldersIdRenamePatchRequestFolder';\n\n/**\n * \n * @export\n * @interface ApiFoldersIdRenamePatchRequest\n */\nexport interface ApiFoldersIdRenamePatchRequest {\n /**\n * \n * @type {ApiFoldersIdRenamePatchRequestFolder}\n * @memberof ApiFoldersIdRenamePatchRequest\n */\n folder?: ApiFoldersIdRenamePatchRequestFolder;\n}\n\n/**\n * Check if a given object implements the ApiFoldersIdRenamePatchRequest interface.\n */\nexport function instanceOfApiFoldersIdRenamePatchRequest(value: object): boolean {\n let isInstance = true;\n\n return isInstance;\n}\n\nexport function ApiFoldersIdRenamePatchRequestFromJSON(json: any): ApiFoldersIdRenamePatchRequest {\n return ApiFoldersIdRenamePatchRequestFromJSONTyped(json, false);\n}\n\nexport function ApiFoldersIdRenamePatchRequestFromJSONTyped(json: any, ignoreDiscriminator: boolean): ApiFoldersIdRenamePatchRequest {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'folder': !exists(json, 'folder') ? undefined : ApiFoldersIdRenamePatchRequestFolderFromJSON(json['folder']),\n };\n}\n\nexport function ApiFoldersIdRenamePatchRequestToJSON(value?: ApiFoldersIdRenamePatchRequest | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'folder': ApiFoldersIdRenamePatchRequestFolderToJSON(value.folder),\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * hopper\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface ApiVideoIdMovePatch200ResponseWatchLink\n */\nexport interface ApiVideoIdMovePatch200ResponseWatchLink {\n /**\n * \n * @type {number}\n * @memberof ApiVideoIdMovePatch200ResponseWatchLink\n */\n videoId?: number;\n /**\n * \n * @type {string}\n * @memberof ApiVideoIdMovePatch200ResponseWatchLink\n */\n typeName?: string;\n /**\n * \n * @type {string}\n * @memberof ApiVideoIdMovePatch200ResponseWatchLink\n */\n uniqKey?: string;\n /**\n * \n * @type {any}\n * @memberof ApiVideoIdMovePatch200ResponseWatchLink\n */\n condition?: any | null;\n}\n\n/**\n * Check if a given object implements the ApiVideoIdMovePatch200ResponseWatchLink interface.\n */\nexport function instanceOfApiVideoIdMovePatch200ResponseWatchLink(value: object): boolean {\n let isInstance = true;\n\n return isInstance;\n}\n\nexport function ApiVideoIdMovePatch200ResponseWatchLinkFromJSON(json: any): ApiVideoIdMovePatch200ResponseWatchLink {\n return ApiVideoIdMovePatch200ResponseWatchLinkFromJSONTyped(json, false);\n}\n\nexport function ApiVideoIdMovePatch200ResponseWatchLinkFromJSONTyped(json: any, ignoreDiscriminator: boolean): ApiVideoIdMovePatch200ResponseWatchLink {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'videoId': !exists(json, 'videoId') ? undefined : json['videoId'],\n 'typeName': !exists(json, 'typeName') ? undefined : json['typeName'],\n 'uniqKey': !exists(json, 'uniqKey') ? undefined : json['uniqKey'],\n 'condition': !exists(json, 'condition') ? undefined : json['condition'],\n };\n}\n\nexport function ApiVideoIdMovePatch200ResponseWatchLinkToJSON(value?: ApiVideoIdMovePatch200ResponseWatchLink | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'videoId': value.videoId,\n 'typeName': value.typeName,\n 'uniqKey': value.uniqKey,\n 'condition': value.condition,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * hopper\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport type { ApiVideoIdMovePatch200ResponseWatchLink } from './ApiVideoIdMovePatch200ResponseWatchLink';\nimport {\n ApiVideoIdMovePatch200ResponseWatchLinkFromJSON,\n ApiVideoIdMovePatch200ResponseWatchLinkFromJSONTyped,\n ApiVideoIdMovePatch200ResponseWatchLinkToJSON,\n} from './ApiVideoIdMovePatch200ResponseWatchLink';\n\n/**\n * \n * @export\n * @interface ApiFoldersIdVideosGet200ResponseInner\n */\nexport interface ApiFoldersIdVideosGet200ResponseInner {\n /**\n * \n * @type {number}\n * @memberof ApiFoldersIdVideosGet200ResponseInner\n */\n id?: number;\n /**\n * \n * @type {string}\n * @memberof ApiFoldersIdVideosGet200ResponseInner\n */\n hashid?: string;\n /**\n * \n * @type {string}\n * @memberof ApiFoldersIdVideosGet200ResponseInner\n */\n state?: string;\n /**\n * \n * @type {string}\n * @memberof ApiFoldersIdVideosGet200ResponseInner\n */\n title?: string;\n /**\n * \n * @type {string}\n * @memberof ApiFoldersIdVideosGet200ResponseInner\n */\n descriptionHtml?: string | null;\n /**\n * \n * @type {number}\n * @memberof ApiFoldersIdVideosGet200ResponseInner\n */\n playTimeMs?: number;\n /**\n * \n * @type {string}\n * @memberof ApiFoldersIdVideosGet200ResponseInner\n */\n thumbnailUrl?: string;\n /**\n * \n * @type {ApiVideoIdMovePatch200ResponseWatchLink}\n * @memberof ApiFoldersIdVideosGet200ResponseInner\n */\n watchLink?: ApiVideoIdMovePatch200ResponseWatchLink;\n /**\n * \n * @type {boolean}\n * @memberof ApiFoldersIdVideosGet200ResponseInner\n */\n timelineEditable?: boolean;\n /**\n * \n * @type {Array}\n * @memberof ApiFoldersIdVideosGet200ResponseInner\n */\n timelineUneditableReasons?: Array;\n}\n\n/**\n * Check if a given object implements the ApiFoldersIdVideosGet200ResponseInner interface.\n */\nexport function instanceOfApiFoldersIdVideosGet200ResponseInner(value: object): boolean {\n let isInstance = true;\n\n return isInstance;\n}\n\nexport function ApiFoldersIdVideosGet200ResponseInnerFromJSON(json: any): ApiFoldersIdVideosGet200ResponseInner {\n return ApiFoldersIdVideosGet200ResponseInnerFromJSONTyped(json, false);\n}\n\nexport function ApiFoldersIdVideosGet200ResponseInnerFromJSONTyped(json: any, ignoreDiscriminator: boolean): ApiFoldersIdVideosGet200ResponseInner {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'id': !exists(json, 'id') ? undefined : json['id'],\n 'hashid': !exists(json, 'hashid') ? undefined : json['hashid'],\n 'state': !exists(json, 'state') ? undefined : json['state'],\n 'title': !exists(json, 'title') ? undefined : json['title'],\n 'descriptionHtml': !exists(json, 'descriptionHtml') ? undefined : json['descriptionHtml'],\n 'playTimeMs': !exists(json, 'playTimeMs') ? undefined : json['playTimeMs'],\n 'thumbnailUrl': !exists(json, 'thumbnailUrl') ? undefined : json['thumbnailUrl'],\n 'watchLink': !exists(json, 'watchLink') ? undefined : ApiVideoIdMovePatch200ResponseWatchLinkFromJSON(json['watchLink']),\n 'timelineEditable': !exists(json, 'timelineEditable') ? undefined : json['timelineEditable'],\n 'timelineUneditableReasons': !exists(json, 'timelineUneditableReasons') ? undefined : json['timelineUneditableReasons'],\n };\n}\n\nexport function ApiFoldersIdVideosGet200ResponseInnerToJSON(value?: ApiFoldersIdVideosGet200ResponseInner | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'id': value.id,\n 'hashid': value.hashid,\n 'state': value.state,\n 'title': value.title,\n 'descriptionHtml': value.descriptionHtml,\n 'playTimeMs': value.playTimeMs,\n 'thumbnailUrl': value.thumbnailUrl,\n 'watchLink': ApiVideoIdMovePatch200ResponseWatchLinkToJSON(value.watchLink),\n 'timelineEditable': value.timelineEditable,\n 'timelineUneditableReasons': value.timelineUneditableReasons,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * hopper\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface ApiFoldersPost201Response\n */\nexport interface ApiFoldersPost201Response {\n /**\n * \n * @type {string}\n * @memberof ApiFoldersPost201Response\n */\n name?: string;\n /**\n * \n * @type {number}\n * @memberof ApiFoldersPost201Response\n */\n id?: number;\n /**\n * \n * @type {string}\n * @memberof ApiFoldersPost201Response\n */\n ancestry?: string;\n /**\n * \n * @type {Array}\n * @memberof ApiFoldersPost201Response\n */\n videos?: Array;\n /**\n * \n * @type {string}\n * @memberof ApiFoldersPost201Response\n */\n hashid?: string;\n}\n\n/**\n * Check if a given object implements the ApiFoldersPost201Response interface.\n */\nexport function instanceOfApiFoldersPost201Response(value: object): boolean {\n let isInstance = true;\n\n return isInstance;\n}\n\nexport function ApiFoldersPost201ResponseFromJSON(json: any): ApiFoldersPost201Response {\n return ApiFoldersPost201ResponseFromJSONTyped(json, false);\n}\n\nexport function ApiFoldersPost201ResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): ApiFoldersPost201Response {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'name': !exists(json, 'name') ? undefined : json['name'],\n 'id': !exists(json, 'id') ? undefined : json['id'],\n 'ancestry': !exists(json, 'ancestry') ? undefined : json['ancestry'],\n 'videos': !exists(json, 'videos') ? undefined : json['videos'],\n 'hashid': !exists(json, 'hashid') ? undefined : json['hashid'],\n };\n}\n\nexport function ApiFoldersPost201ResponseToJSON(value?: ApiFoldersPost201Response | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'name': value.name,\n 'id': value.id,\n 'ancestry': value.ancestry,\n 'videos': value.videos,\n 'hashid': value.hashid,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * hopper\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface ApiFoldersPostRequestFolder\n */\nexport interface ApiFoldersPostRequestFolder {\n /**\n * \n * @type {string}\n * @memberof ApiFoldersPostRequestFolder\n */\n name?: string;\n /**\n * \n * @type {number}\n * @memberof ApiFoldersPostRequestFolder\n */\n ownerId?: number;\n /**\n * \n * @type {string}\n * @memberof ApiFoldersPostRequestFolder\n */\n ownerType?: string;\n}\n\n/**\n * Check if a given object implements the ApiFoldersPostRequestFolder interface.\n */\nexport function instanceOfApiFoldersPostRequestFolder(value: object): boolean {\n let isInstance = true;\n\n return isInstance;\n}\n\nexport function ApiFoldersPostRequestFolderFromJSON(json: any): ApiFoldersPostRequestFolder {\n return ApiFoldersPostRequestFolderFromJSONTyped(json, false);\n}\n\nexport function ApiFoldersPostRequestFolderFromJSONTyped(json: any, ignoreDiscriminator: boolean): ApiFoldersPostRequestFolder {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'name': !exists(json, 'name') ? undefined : json['name'],\n 'ownerId': !exists(json, 'owner_id') ? undefined : json['owner_id'],\n 'ownerType': !exists(json, 'owner_type') ? undefined : json['owner_type'],\n };\n}\n\nexport function ApiFoldersPostRequestFolderToJSON(value?: ApiFoldersPostRequestFolder | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'name': value.name,\n 'owner_id': value.ownerId,\n 'owner_type': value.ownerType,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * hopper\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport type { ApiFoldersPostRequestFolder } from './ApiFoldersPostRequestFolder';\nimport {\n ApiFoldersPostRequestFolderFromJSON,\n ApiFoldersPostRequestFolderFromJSONTyped,\n ApiFoldersPostRequestFolderToJSON,\n} from './ApiFoldersPostRequestFolder';\n\n/**\n * \n * @export\n * @interface ApiFoldersPostRequest\n */\nexport interface ApiFoldersPostRequest {\n /**\n * \n * @type {number}\n * @memberof ApiFoldersPostRequest\n */\n parentFolderId?: number;\n /**\n * \n * @type {ApiFoldersPostRequestFolder}\n * @memberof ApiFoldersPostRequest\n */\n folder?: ApiFoldersPostRequestFolder;\n}\n\n/**\n * Check if a given object implements the ApiFoldersPostRequest interface.\n */\nexport function instanceOfApiFoldersPostRequest(value: object): boolean {\n let isInstance = true;\n\n return isInstance;\n}\n\nexport function ApiFoldersPostRequestFromJSON(json: any): ApiFoldersPostRequest {\n return ApiFoldersPostRequestFromJSONTyped(json, false);\n}\n\nexport function ApiFoldersPostRequestFromJSONTyped(json: any, ignoreDiscriminator: boolean): ApiFoldersPostRequest {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'parentFolderId': !exists(json, 'parent_folder_id') ? undefined : json['parent_folder_id'],\n 'folder': !exists(json, 'folder') ? undefined : ApiFoldersPostRequestFolderFromJSON(json['folder']),\n };\n}\n\nexport function ApiFoldersPostRequestToJSON(value?: ApiFoldersPostRequest | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'parent_folder_id': value.parentFolderId,\n 'folder': ApiFoldersPostRequestFolderToJSON(value.folder),\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * hopper\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface ApiScenesIdGet200ResponseAudioData\n */\nexport interface ApiScenesIdGet200ResponseAudioData {\n /**\n * \n * @type {string}\n * @memberof ApiScenesIdGet200ResponseAudioData\n */\n voiceName?: string;\n /**\n * \n * @type {string}\n * @memberof ApiScenesIdGet200ResponseAudioData\n */\n speechRate?: string;\n}\n\n/**\n * Check if a given object implements the ApiScenesIdGet200ResponseAudioData interface.\n */\nexport function instanceOfApiScenesIdGet200ResponseAudioData(value: object): boolean {\n let isInstance = true;\n\n return isInstance;\n}\n\nexport function ApiScenesIdGet200ResponseAudioDataFromJSON(json: any): ApiScenesIdGet200ResponseAudioData {\n return ApiScenesIdGet200ResponseAudioDataFromJSONTyped(json, false);\n}\n\nexport function ApiScenesIdGet200ResponseAudioDataFromJSONTyped(json: any, ignoreDiscriminator: boolean): ApiScenesIdGet200ResponseAudioData {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'voiceName': !exists(json, 'voiceName') ? undefined : json['voiceName'],\n 'speechRate': !exists(json, 'speechRate') ? undefined : json['speechRate'],\n };\n}\n\nexport function ApiScenesIdGet200ResponseAudioDataToJSON(value?: ApiScenesIdGet200ResponseAudioData | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'voiceName': value.voiceName,\n 'speechRate': value.speechRate,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * hopper\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport type { ApiScenesIdGet200ResponseAudioData } from './ApiScenesIdGet200ResponseAudioData';\nimport {\n ApiScenesIdGet200ResponseAudioDataFromJSON,\n ApiScenesIdGet200ResponseAudioDataFromJSONTyped,\n ApiScenesIdGet200ResponseAudioDataToJSON,\n} from './ApiScenesIdGet200ResponseAudioData';\n\n/**\n * \n * @export\n * @interface ApiScenesIdGet200Response\n */\nexport interface ApiScenesIdGet200Response {\n /**\n * \n * @type {number}\n * @memberof ApiScenesIdGet200Response\n */\n id?: number;\n /**\n * \n * @type {number}\n * @memberof ApiScenesIdGet200Response\n */\n designId?: number;\n /**\n * \n * @type {number}\n * @memberof ApiScenesIdGet200Response\n */\n rowOrder?: number;\n /**\n * \n * @type {string}\n * @memberof ApiScenesIdGet200Response\n */\n textHtml?: string;\n /**\n * \n * @type {ApiScenesIdGet200ResponseAudioData}\n * @memberof ApiScenesIdGet200Response\n */\n audioData?: ApiScenesIdGet200ResponseAudioData;\n /**\n * \n * @type {any}\n * @memberof ApiScenesIdGet200Response\n */\n imageUrl?: any | null;\n}\n\n/**\n * Check if a given object implements the ApiScenesIdGet200Response interface.\n */\nexport function instanceOfApiScenesIdGet200Response(value: object): boolean {\n let isInstance = true;\n\n return isInstance;\n}\n\nexport function ApiScenesIdGet200ResponseFromJSON(json: any): ApiScenesIdGet200Response {\n return ApiScenesIdGet200ResponseFromJSONTyped(json, false);\n}\n\nexport function ApiScenesIdGet200ResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): ApiScenesIdGet200Response {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'id': !exists(json, 'id') ? undefined : json['id'],\n 'designId': !exists(json, 'designId') ? undefined : json['designId'],\n 'rowOrder': !exists(json, 'rowOrder') ? undefined : json['rowOrder'],\n 'textHtml': !exists(json, 'textHtml') ? undefined : json['textHtml'],\n 'audioData': !exists(json, 'audioData') ? undefined : ApiScenesIdGet200ResponseAudioDataFromJSON(json['audioData']),\n 'imageUrl': !exists(json, 'imageUrl') ? undefined : json['imageUrl'],\n };\n}\n\nexport function ApiScenesIdGet200ResponseToJSON(value?: ApiScenesIdGet200Response | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'id': value.id,\n 'designId': value.designId,\n 'rowOrder': value.rowOrder,\n 'textHtml': value.textHtml,\n 'audioData': ApiScenesIdGet200ResponseAudioDataToJSON(value.audioData),\n 'imageUrl': value.imageUrl,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * hopper\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport type { ApiScenesIdPutRequestAudioData } from './ApiScenesIdPutRequestAudioData';\nimport {\n ApiScenesIdPutRequestAudioDataFromJSON,\n ApiScenesIdPutRequestAudioDataFromJSONTyped,\n ApiScenesIdPutRequestAudioDataToJSON,\n} from './ApiScenesIdPutRequestAudioData';\n\n/**\n * \n * @export\n * @interface ApiScenesIdPutRequest\n */\nexport interface ApiScenesIdPutRequest {\n /**\n * \n * @type {number}\n * @memberof ApiScenesIdPutRequest\n */\n rowOrderPosition?: number;\n /**\n * \n * @type {string}\n * @memberof ApiScenesIdPutRequest\n */\n textHtml?: string;\n /**\n * \n * @type {ApiScenesIdPutRequestAudioData}\n * @memberof ApiScenesIdPutRequest\n */\n audioData?: ApiScenesIdPutRequestAudioData;\n}\n\n/**\n * Check if a given object implements the ApiScenesIdPutRequest interface.\n */\nexport function instanceOfApiScenesIdPutRequest(value: object): boolean {\n let isInstance = true;\n\n return isInstance;\n}\n\nexport function ApiScenesIdPutRequestFromJSON(json: any): ApiScenesIdPutRequest {\n return ApiScenesIdPutRequestFromJSONTyped(json, false);\n}\n\nexport function ApiScenesIdPutRequestFromJSONTyped(json: any, ignoreDiscriminator: boolean): ApiScenesIdPutRequest {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'rowOrderPosition': !exists(json, 'row_order_position') ? undefined : json['row_order_position'],\n 'textHtml': !exists(json, 'text_html') ? undefined : json['text_html'],\n 'audioData': !exists(json, 'audio_data') ? undefined : ApiScenesIdPutRequestAudioDataFromJSON(json['audio_data']),\n };\n}\n\nexport function ApiScenesIdPutRequestToJSON(value?: ApiScenesIdPutRequest | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'row_order_position': value.rowOrderPosition,\n 'text_html': value.textHtml,\n 'audio_data': ApiScenesIdPutRequestAudioDataToJSON(value.audioData),\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * hopper\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface ApiScenesIdUploadedAudioPost200Response\n */\nexport interface ApiScenesIdUploadedAudioPost200Response {\n /**\n * \n * @type {string}\n * @memberof ApiScenesIdUploadedAudioPost200Response\n */\n audioUrl?: string;\n}\n\n/**\n * Check if a given object implements the ApiScenesIdUploadedAudioPost200Response interface.\n */\nexport function instanceOfApiScenesIdUploadedAudioPost200Response(value: object): boolean {\n let isInstance = true;\n\n return isInstance;\n}\n\nexport function ApiScenesIdUploadedAudioPost200ResponseFromJSON(json: any): ApiScenesIdUploadedAudioPost200Response {\n return ApiScenesIdUploadedAudioPost200ResponseFromJSONTyped(json, false);\n}\n\nexport function ApiScenesIdUploadedAudioPost200ResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): ApiScenesIdUploadedAudioPost200Response {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'audioUrl': !exists(json, 'audioUrl') ? undefined : json['audioUrl'],\n };\n}\n\nexport function ApiScenesIdUploadedAudioPost200ResponseToJSON(value?: ApiScenesIdUploadedAudioPost200Response | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'audioUrl': value.audioUrl,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * hopper\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface ApiScenesIdUploadedAudioPostRequest\n */\nexport interface ApiScenesIdUploadedAudioPostRequest {\n /**\n * \n * @type {string}\n * @memberof ApiScenesIdUploadedAudioPostRequest\n */\n audioBlobName?: string;\n}\n\n/**\n * Check if a given object implements the ApiScenesIdUploadedAudioPostRequest interface.\n */\nexport function instanceOfApiScenesIdUploadedAudioPostRequest(value: object): boolean {\n let isInstance = true;\n\n return isInstance;\n}\n\nexport function ApiScenesIdUploadedAudioPostRequestFromJSON(json: any): ApiScenesIdUploadedAudioPostRequest {\n return ApiScenesIdUploadedAudioPostRequestFromJSONTyped(json, false);\n}\n\nexport function ApiScenesIdUploadedAudioPostRequestFromJSONTyped(json: any, ignoreDiscriminator: boolean): ApiScenesIdUploadedAudioPostRequest {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'audioBlobName': !exists(json, 'audio_blob_name') ? undefined : json['audio_blob_name'],\n };\n}\n\nexport function ApiScenesIdUploadedAudioPostRequestToJSON(value?: ApiScenesIdUploadedAudioPostRequest | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'audio_blob_name': value.audioBlobName,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * hopper\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport type { ApiScenesIdGet200ResponseAudioData } from './ApiScenesIdGet200ResponseAudioData';\nimport {\n ApiScenesIdGet200ResponseAudioDataFromJSON,\n ApiScenesIdGet200ResponseAudioDataFromJSONTyped,\n ApiScenesIdGet200ResponseAudioDataToJSON,\n} from './ApiScenesIdGet200ResponseAudioData';\n\n/**\n * \n * @export\n * @interface ApiScenesIdUploadedImagePost200Response\n */\nexport interface ApiScenesIdUploadedImagePost200Response {\n /**\n * \n * @type {number}\n * @memberof ApiScenesIdUploadedImagePost200Response\n */\n id?: number;\n /**\n * \n * @type {number}\n * @memberof ApiScenesIdUploadedImagePost200Response\n */\n designId?: number;\n /**\n * \n * @type {number}\n * @memberof ApiScenesIdUploadedImagePost200Response\n */\n rowOrder?: number;\n /**\n * \n * @type {string}\n * @memberof ApiScenesIdUploadedImagePost200Response\n */\n textHtml?: string;\n /**\n * \n * @type {ApiScenesIdGet200ResponseAudioData}\n * @memberof ApiScenesIdUploadedImagePost200Response\n */\n audioData?: ApiScenesIdGet200ResponseAudioData;\n /**\n * \n * @type {string}\n * @memberof ApiScenesIdUploadedImagePost200Response\n */\n imageUrl?: string;\n}\n\n/**\n * Check if a given object implements the ApiScenesIdUploadedImagePost200Response interface.\n */\nexport function instanceOfApiScenesIdUploadedImagePost200Response(value: object): boolean {\n let isInstance = true;\n\n return isInstance;\n}\n\nexport function ApiScenesIdUploadedImagePost200ResponseFromJSON(json: any): ApiScenesIdUploadedImagePost200Response {\n return ApiScenesIdUploadedImagePost200ResponseFromJSONTyped(json, false);\n}\n\nexport function ApiScenesIdUploadedImagePost200ResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): ApiScenesIdUploadedImagePost200Response {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'id': !exists(json, 'id') ? undefined : json['id'],\n 'designId': !exists(json, 'designId') ? undefined : json['designId'],\n 'rowOrder': !exists(json, 'rowOrder') ? undefined : json['rowOrder'],\n 'textHtml': !exists(json, 'textHtml') ? undefined : json['textHtml'],\n 'audioData': !exists(json, 'audioData') ? undefined : ApiScenesIdGet200ResponseAudioDataFromJSON(json['audioData']),\n 'imageUrl': !exists(json, 'imageUrl') ? undefined : json['imageUrl'],\n };\n}\n\nexport function ApiScenesIdUploadedImagePost200ResponseToJSON(value?: ApiScenesIdUploadedImagePost200Response | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'id': value.id,\n 'designId': value.designId,\n 'rowOrder': value.rowOrder,\n 'textHtml': value.textHtml,\n 'audioData': ApiScenesIdGet200ResponseAudioDataToJSON(value.audioData),\n 'imageUrl': value.imageUrl,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * hopper\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface ApiScenesIdUploadedImagePostRequest\n */\nexport interface ApiScenesIdUploadedImagePostRequest {\n /**\n * \n * @type {string}\n * @memberof ApiScenesIdUploadedImagePostRequest\n */\n imageBlobName?: string;\n}\n\n/**\n * Check if a given object implements the ApiScenesIdUploadedImagePostRequest interface.\n */\nexport function instanceOfApiScenesIdUploadedImagePostRequest(value: object): boolean {\n let isInstance = true;\n\n return isInstance;\n}\n\nexport function ApiScenesIdUploadedImagePostRequestFromJSON(json: any): ApiScenesIdUploadedImagePostRequest {\n return ApiScenesIdUploadedImagePostRequestFromJSONTyped(json, false);\n}\n\nexport function ApiScenesIdUploadedImagePostRequestFromJSONTyped(json: any, ignoreDiscriminator: boolean): ApiScenesIdUploadedImagePostRequest {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'imageBlobName': !exists(json, 'image_blob_name') ? undefined : json['image_blob_name'],\n };\n}\n\nexport function ApiScenesIdUploadedImagePostRequestToJSON(value?: ApiScenesIdUploadedImagePostRequest | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'image_blob_name': value.imageBlobName,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * hopper\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface ApiVideoIdMovePatch200ResponseSubtitles\n */\nexport interface ApiVideoIdMovePatch200ResponseSubtitles {\n /**\n * \n * @type {string}\n * @memberof ApiVideoIdMovePatch200ResponseSubtitles\n */\n generateJobState?: string;\n /**\n * \n * @type {number}\n * @memberof ApiVideoIdMovePatch200ResponseSubtitles\n */\n size?: number;\n /**\n * \n * @type {boolean}\n * @memberof ApiVideoIdMovePatch200ResponseSubtitles\n */\n isPublished?: boolean;\n /**\n * \n * @type {boolean}\n * @memberof ApiVideoIdMovePatch200ResponseSubtitles\n */\n isDefaultDisplayed?: boolean;\n}\n\n/**\n * Check if a given object implements the ApiVideoIdMovePatch200ResponseSubtitles interface.\n */\nexport function instanceOfApiVideoIdMovePatch200ResponseSubtitles(value: object): boolean {\n let isInstance = true;\n\n return isInstance;\n}\n\nexport function ApiVideoIdMovePatch200ResponseSubtitlesFromJSON(json: any): ApiVideoIdMovePatch200ResponseSubtitles {\n return ApiVideoIdMovePatch200ResponseSubtitlesFromJSONTyped(json, false);\n}\n\nexport function ApiVideoIdMovePatch200ResponseSubtitlesFromJSONTyped(json: any, ignoreDiscriminator: boolean): ApiVideoIdMovePatch200ResponseSubtitles {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'generateJobState': !exists(json, 'generateJobState') ? undefined : json['generateJobState'],\n 'size': !exists(json, 'size') ? undefined : json['size'],\n 'isPublished': !exists(json, 'isPublished') ? undefined : json['isPublished'],\n 'isDefaultDisplayed': !exists(json, 'isDefaultDisplayed') ? undefined : json['isDefaultDisplayed'],\n };\n}\n\nexport function ApiVideoIdMovePatch200ResponseSubtitlesToJSON(value?: ApiVideoIdMovePatch200ResponseSubtitles | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'generateJobState': value.generateJobState,\n 'size': value.size,\n 'isPublished': value.isPublished,\n 'isDefaultDisplayed': value.isDefaultDisplayed,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * hopper\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport type { ApiVideoIdMovePatch200ResponseSubtitles } from './ApiVideoIdMovePatch200ResponseSubtitles';\nimport {\n ApiVideoIdMovePatch200ResponseSubtitlesFromJSON,\n ApiVideoIdMovePatch200ResponseSubtitlesFromJSONTyped,\n ApiVideoIdMovePatch200ResponseSubtitlesToJSON,\n} from './ApiVideoIdMovePatch200ResponseSubtitles';\nimport type { ApiVideoIdMovePatch200ResponseWatchLink } from './ApiVideoIdMovePatch200ResponseWatchLink';\nimport {\n ApiVideoIdMovePatch200ResponseWatchLinkFromJSON,\n ApiVideoIdMovePatch200ResponseWatchLinkFromJSONTyped,\n ApiVideoIdMovePatch200ResponseWatchLinkToJSON,\n} from './ApiVideoIdMovePatch200ResponseWatchLink';\n\n/**\n * \n * @export\n * @interface ApiVideoIdGet200Response\n */\nexport interface ApiVideoIdGet200Response {\n /**\n * \n * @type {number}\n * @memberof ApiVideoIdGet200Response\n */\n id?: number;\n /**\n * \n * @type {string}\n * @memberof ApiVideoIdGet200Response\n */\n state?: string;\n /**\n * \n * @type {string}\n * @memberof ApiVideoIdGet200Response\n */\n title?: string;\n /**\n * \n * @type {string}\n * @memberof ApiVideoIdGet200Response\n */\n thumbnailUrl?: string;\n /**\n * \n * @type {ApiVideoIdMovePatch200ResponseSubtitles}\n * @memberof ApiVideoIdGet200Response\n */\n subtitles?: ApiVideoIdMovePatch200ResponseSubtitles;\n /**\n * \n * @type {string}\n * @memberof ApiVideoIdGet200Response\n */\n descriptionHtml?: string | null;\n /**\n * \n * @type {number}\n * @memberof ApiVideoIdGet200Response\n */\n playTimeMs?: number;\n /**\n * \n * @type {string}\n * @memberof ApiVideoIdGet200Response\n */\n hashid?: string;\n /**\n * \n * @type {ApiVideoIdMovePatch200ResponseWatchLink}\n * @memberof ApiVideoIdGet200Response\n */\n watchLink?: ApiVideoIdMovePatch200ResponseWatchLink;\n /**\n * \n * @type {boolean}\n * @memberof ApiVideoIdGet200Response\n */\n timelineEditable?: boolean;\n /**\n * \n * @type {Array}\n * @memberof ApiVideoIdGet200Response\n */\n timelineUneditableReasons?: Array;\n /**\n * \n * @type {string}\n * @memberof ApiVideoIdGet200Response\n */\n sourceUrl?: string;\n /**\n * \n * @type {string}\n * @memberof ApiVideoIdGet200Response\n */\n sourceContentType?: string;\n}\n\n/**\n * Check if a given object implements the ApiVideoIdGet200Response interface.\n */\nexport function instanceOfApiVideoIdGet200Response(value: object): boolean {\n let isInstance = true;\n\n return isInstance;\n}\n\nexport function ApiVideoIdGet200ResponseFromJSON(json: any): ApiVideoIdGet200Response {\n return ApiVideoIdGet200ResponseFromJSONTyped(json, false);\n}\n\nexport function ApiVideoIdGet200ResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): ApiVideoIdGet200Response {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'id': !exists(json, 'id') ? undefined : json['id'],\n 'state': !exists(json, 'state') ? undefined : json['state'],\n 'title': !exists(json, 'title') ? undefined : json['title'],\n 'thumbnailUrl': !exists(json, 'thumbnailUrl') ? undefined : json['thumbnailUrl'],\n 'subtitles': !exists(json, 'subtitles') ? undefined : ApiVideoIdMovePatch200ResponseSubtitlesFromJSON(json['subtitles']),\n 'descriptionHtml': !exists(json, 'descriptionHtml') ? undefined : json['descriptionHtml'],\n 'playTimeMs': !exists(json, 'playTimeMs') ? undefined : json['playTimeMs'],\n 'hashid': !exists(json, 'hashid') ? undefined : json['hashid'],\n 'watchLink': !exists(json, 'watchLink') ? undefined : ApiVideoIdMovePatch200ResponseWatchLinkFromJSON(json['watchLink']),\n 'timelineEditable': !exists(json, 'timelineEditable') ? undefined : json['timelineEditable'],\n 'timelineUneditableReasons': !exists(json, 'timelineUneditableReasons') ? undefined : json['timelineUneditableReasons'],\n 'sourceUrl': !exists(json, 'sourceUrl') ? undefined : json['sourceUrl'],\n 'sourceContentType': !exists(json, 'sourceContentType') ? undefined : json['sourceContentType'],\n };\n}\n\nexport function ApiVideoIdGet200ResponseToJSON(value?: ApiVideoIdGet200Response | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'id': value.id,\n 'state': value.state,\n 'title': value.title,\n 'thumbnailUrl': value.thumbnailUrl,\n 'subtitles': ApiVideoIdMovePatch200ResponseSubtitlesToJSON(value.subtitles),\n 'descriptionHtml': value.descriptionHtml,\n 'playTimeMs': value.playTimeMs,\n 'hashid': value.hashid,\n 'watchLink': ApiVideoIdMovePatch200ResponseWatchLinkToJSON(value.watchLink),\n 'timelineEditable': value.timelineEditable,\n 'timelineUneditableReasons': value.timelineUneditableReasons,\n 'sourceUrl': value.sourceUrl,\n 'sourceContentType': value.sourceContentType,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * hopper\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport type { ApiVideoIdMovePatch200ResponseSubtitles } from './ApiVideoIdMovePatch200ResponseSubtitles';\nimport {\n ApiVideoIdMovePatch200ResponseSubtitlesFromJSON,\n ApiVideoIdMovePatch200ResponseSubtitlesFromJSONTyped,\n ApiVideoIdMovePatch200ResponseSubtitlesToJSON,\n} from './ApiVideoIdMovePatch200ResponseSubtitles';\nimport type { ApiVideoIdMovePatch200ResponseWatchLink } from './ApiVideoIdMovePatch200ResponseWatchLink';\nimport {\n ApiVideoIdMovePatch200ResponseWatchLinkFromJSON,\n ApiVideoIdMovePatch200ResponseWatchLinkFromJSONTyped,\n ApiVideoIdMovePatch200ResponseWatchLinkToJSON,\n} from './ApiVideoIdMovePatch200ResponseWatchLink';\n\n/**\n * \n * @export\n * @interface ApiVideoIdMovePatch200Response\n */\nexport interface ApiVideoIdMovePatch200Response {\n /**\n * \n * @type {number}\n * @memberof ApiVideoIdMovePatch200Response\n */\n id?: number;\n /**\n * \n * @type {string}\n * @memberof ApiVideoIdMovePatch200Response\n */\n hashid?: string;\n /**\n * \n * @type {string}\n * @memberof ApiVideoIdMovePatch200Response\n */\n state?: string;\n /**\n * \n * @type {string}\n * @memberof ApiVideoIdMovePatch200Response\n */\n thumbnailUrl?: string;\n /**\n * \n * @type {string}\n * @memberof ApiVideoIdMovePatch200Response\n */\n title?: string;\n /**\n * \n * @type {ApiVideoIdMovePatch200ResponseSubtitles}\n * @memberof ApiVideoIdMovePatch200Response\n */\n subtitles?: ApiVideoIdMovePatch200ResponseSubtitles;\n /**\n * \n * @type {string}\n * @memberof ApiVideoIdMovePatch200Response\n */\n descriptionHtml?: string | null;\n /**\n * \n * @type {number}\n * @memberof ApiVideoIdMovePatch200Response\n */\n playTimeMs?: number;\n /**\n * \n * @type {ApiVideoIdMovePatch200ResponseWatchLink}\n * @memberof ApiVideoIdMovePatch200Response\n */\n watchLink?: ApiVideoIdMovePatch200ResponseWatchLink;\n /**\n * \n * @type {boolean}\n * @memberof ApiVideoIdMovePatch200Response\n */\n timelineEditable?: boolean;\n /**\n * \n * @type {Array}\n * @memberof ApiVideoIdMovePatch200Response\n */\n timelineUneditableReasons?: Array;\n /**\n * \n * @type {string}\n * @memberof ApiVideoIdMovePatch200Response\n */\n sourceUrl?: string;\n /**\n * \n * @type {string}\n * @memberof ApiVideoIdMovePatch200Response\n */\n sourceContentType?: string;\n}\n\n/**\n * Check if a given object implements the ApiVideoIdMovePatch200Response interface.\n */\nexport function instanceOfApiVideoIdMovePatch200Response(value: object): boolean {\n let isInstance = true;\n\n return isInstance;\n}\n\nexport function ApiVideoIdMovePatch200ResponseFromJSON(json: any): ApiVideoIdMovePatch200Response {\n return ApiVideoIdMovePatch200ResponseFromJSONTyped(json, false);\n}\n\nexport function ApiVideoIdMovePatch200ResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): ApiVideoIdMovePatch200Response {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'id': !exists(json, 'id') ? undefined : json['id'],\n 'hashid': !exists(json, 'hashid') ? undefined : json['hashid'],\n 'state': !exists(json, 'state') ? undefined : json['state'],\n 'thumbnailUrl': !exists(json, 'thumbnailUrl') ? undefined : json['thumbnailUrl'],\n 'title': !exists(json, 'title') ? undefined : json['title'],\n 'subtitles': !exists(json, 'subtitles') ? undefined : ApiVideoIdMovePatch200ResponseSubtitlesFromJSON(json['subtitles']),\n 'descriptionHtml': !exists(json, 'descriptionHtml') ? undefined : json['descriptionHtml'],\n 'playTimeMs': !exists(json, 'playTimeMs') ? undefined : json['playTimeMs'],\n 'watchLink': !exists(json, 'watchLink') ? undefined : ApiVideoIdMovePatch200ResponseWatchLinkFromJSON(json['watchLink']),\n 'timelineEditable': !exists(json, 'timelineEditable') ? undefined : json['timelineEditable'],\n 'timelineUneditableReasons': !exists(json, 'timelineUneditableReasons') ? undefined : json['timelineUneditableReasons'],\n 'sourceUrl': !exists(json, 'sourceUrl') ? undefined : json['sourceUrl'],\n 'sourceContentType': !exists(json, 'sourceContentType') ? undefined : json['sourceContentType'],\n };\n}\n\nexport function ApiVideoIdMovePatch200ResponseToJSON(value?: ApiVideoIdMovePatch200Response | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'id': value.id,\n 'hashid': value.hashid,\n 'state': value.state,\n 'thumbnailUrl': value.thumbnailUrl,\n 'title': value.title,\n 'subtitles': ApiVideoIdMovePatch200ResponseSubtitlesToJSON(value.subtitles),\n 'descriptionHtml': value.descriptionHtml,\n 'playTimeMs': value.playTimeMs,\n 'watchLink': ApiVideoIdMovePatch200ResponseWatchLinkToJSON(value.watchLink),\n 'timelineEditable': value.timelineEditable,\n 'timelineUneditableReasons': value.timelineUneditableReasons,\n 'sourceUrl': value.sourceUrl,\n 'sourceContentType': value.sourceContentType,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * hopper\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface ApiVideoIdMovePatchRequest\n */\nexport interface ApiVideoIdMovePatchRequest {\n /**\n * \n * @type {number}\n * @memberof ApiVideoIdMovePatchRequest\n */\n folderId?: number;\n}\n\n/**\n * Check if a given object implements the ApiVideoIdMovePatchRequest interface.\n */\nexport function instanceOfApiVideoIdMovePatchRequest(value: object): boolean {\n let isInstance = true;\n\n return isInstance;\n}\n\nexport function ApiVideoIdMovePatchRequestFromJSON(json: any): ApiVideoIdMovePatchRequest {\n return ApiVideoIdMovePatchRequestFromJSONTyped(json, false);\n}\n\nexport function ApiVideoIdMovePatchRequestFromJSONTyped(json: any, ignoreDiscriminator: boolean): ApiVideoIdMovePatchRequest {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'folderId': !exists(json, 'folder_id') ? undefined : json['folder_id'],\n };\n}\n\nexport function ApiVideoIdMovePatchRequestToJSON(value?: ApiVideoIdMovePatchRequest | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'folder_id': value.folderId,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * hopper\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport type { ApiVideoIdMovePatch200ResponseSubtitles } from './ApiVideoIdMovePatch200ResponseSubtitles';\nimport {\n ApiVideoIdMovePatch200ResponseSubtitlesFromJSON,\n ApiVideoIdMovePatch200ResponseSubtitlesFromJSONTyped,\n ApiVideoIdMovePatch200ResponseSubtitlesToJSON,\n} from './ApiVideoIdMovePatch200ResponseSubtitles';\nimport type { ApiVideoIdMovePatch200ResponseWatchLink } from './ApiVideoIdMovePatch200ResponseWatchLink';\nimport {\n ApiVideoIdMovePatch200ResponseWatchLinkFromJSON,\n ApiVideoIdMovePatch200ResponseWatchLinkFromJSONTyped,\n ApiVideoIdMovePatch200ResponseWatchLinkToJSON,\n} from './ApiVideoIdMovePatch200ResponseWatchLink';\n\n/**\n * \n * @export\n * @interface ApiVideoIdPut200Response\n */\nexport interface ApiVideoIdPut200Response {\n /**\n * \n * @type {number}\n * @memberof ApiVideoIdPut200Response\n */\n id?: number;\n /**\n * \n * @type {string}\n * @memberof ApiVideoIdPut200Response\n */\n state?: string;\n /**\n * \n * @type {string}\n * @memberof ApiVideoIdPut200Response\n */\n title?: string;\n /**\n * \n * @type {string}\n * @memberof ApiVideoIdPut200Response\n */\n descriptionHtml?: string;\n /**\n * \n * @type {number}\n * @memberof ApiVideoIdPut200Response\n */\n playTimeMs?: number;\n /**\n * \n * @type {string}\n * @memberof ApiVideoIdPut200Response\n */\n thumbnailUrl?: string;\n /**\n * \n * @type {ApiVideoIdMovePatch200ResponseSubtitles}\n * @memberof ApiVideoIdPut200Response\n */\n subtitles?: ApiVideoIdMovePatch200ResponseSubtitles;\n /**\n * \n * @type {string}\n * @memberof ApiVideoIdPut200Response\n */\n hashid?: string;\n /**\n * \n * @type {ApiVideoIdMovePatch200ResponseWatchLink}\n * @memberof ApiVideoIdPut200Response\n */\n watchLink?: ApiVideoIdMovePatch200ResponseWatchLink;\n /**\n * \n * @type {boolean}\n * @memberof ApiVideoIdPut200Response\n */\n timelineEditable?: boolean;\n /**\n * \n * @type {Array}\n * @memberof ApiVideoIdPut200Response\n */\n timelineUneditableReasons?: Array;\n /**\n * \n * @type {string}\n * @memberof ApiVideoIdPut200Response\n */\n sourceUrl?: string;\n /**\n * \n * @type {string}\n * @memberof ApiVideoIdPut200Response\n */\n sourceContentType?: string;\n}\n\n/**\n * Check if a given object implements the ApiVideoIdPut200Response interface.\n */\nexport function instanceOfApiVideoIdPut200Response(value: object): boolean {\n let isInstance = true;\n\n return isInstance;\n}\n\nexport function ApiVideoIdPut200ResponseFromJSON(json: any): ApiVideoIdPut200Response {\n return ApiVideoIdPut200ResponseFromJSONTyped(json, false);\n}\n\nexport function ApiVideoIdPut200ResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): ApiVideoIdPut200Response {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'id': !exists(json, 'id') ? undefined : json['id'],\n 'state': !exists(json, 'state') ? undefined : json['state'],\n 'title': !exists(json, 'title') ? undefined : json['title'],\n 'descriptionHtml': !exists(json, 'descriptionHtml') ? undefined : json['descriptionHtml'],\n 'playTimeMs': !exists(json, 'playTimeMs') ? undefined : json['playTimeMs'],\n 'thumbnailUrl': !exists(json, 'thumbnailUrl') ? undefined : json['thumbnailUrl'],\n 'subtitles': !exists(json, 'subtitles') ? undefined : ApiVideoIdMovePatch200ResponseSubtitlesFromJSON(json['subtitles']),\n 'hashid': !exists(json, 'hashid') ? undefined : json['hashid'],\n 'watchLink': !exists(json, 'watchLink') ? undefined : ApiVideoIdMovePatch200ResponseWatchLinkFromJSON(json['watchLink']),\n 'timelineEditable': !exists(json, 'timelineEditable') ? undefined : json['timelineEditable'],\n 'timelineUneditableReasons': !exists(json, 'timelineUneditableReasons') ? undefined : json['timelineUneditableReasons'],\n 'sourceUrl': !exists(json, 'sourceUrl') ? undefined : json['sourceUrl'],\n 'sourceContentType': !exists(json, 'sourceContentType') ? undefined : json['sourceContentType'],\n };\n}\n\nexport function ApiVideoIdPut200ResponseToJSON(value?: ApiVideoIdPut200Response | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'id': value.id,\n 'state': value.state,\n 'title': value.title,\n 'descriptionHtml': value.descriptionHtml,\n 'playTimeMs': value.playTimeMs,\n 'thumbnailUrl': value.thumbnailUrl,\n 'subtitles': ApiVideoIdMovePatch200ResponseSubtitlesToJSON(value.subtitles),\n 'hashid': value.hashid,\n 'watchLink': ApiVideoIdMovePatch200ResponseWatchLinkToJSON(value.watchLink),\n 'timelineEditable': value.timelineEditable,\n 'timelineUneditableReasons': value.timelineUneditableReasons,\n 'sourceUrl': value.sourceUrl,\n 'sourceContentType': value.sourceContentType,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * hopper\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface ApiVideoIdPutRequest\n */\nexport interface ApiVideoIdPutRequest {\n /**\n * \n * @type {string}\n * @memberof ApiVideoIdPutRequest\n */\n title?: string;\n /**\n * \n * @type {string}\n * @memberof ApiVideoIdPutRequest\n */\n descriptionHtml?: string;\n}\n\n/**\n * Check if a given object implements the ApiVideoIdPutRequest interface.\n */\nexport function instanceOfApiVideoIdPutRequest(value: object): boolean {\n let isInstance = true;\n\n return isInstance;\n}\n\nexport function ApiVideoIdPutRequestFromJSON(json: any): ApiVideoIdPutRequest {\n return ApiVideoIdPutRequestFromJSONTyped(json, false);\n}\n\nexport function ApiVideoIdPutRequestFromJSONTyped(json: any, ignoreDiscriminator: boolean): ApiVideoIdPutRequest {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'title': !exists(json, 'title') ? undefined : json['title'],\n 'descriptionHtml': !exists(json, 'description_html') ? undefined : json['description_html'],\n };\n}\n\nexport function ApiVideoIdPutRequestToJSON(value?: ApiVideoIdPutRequest | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'title': value.title,\n 'description_html': value.descriptionHtml,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * hopper\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface ApiVideoIdThumbnailPost200Response\n */\nexport interface ApiVideoIdThumbnailPost200Response {\n /**\n * \n * @type {string}\n * @memberof ApiVideoIdThumbnailPost200Response\n */\n message?: string;\n /**\n * \n * @type {string}\n * @memberof ApiVideoIdThumbnailPost200Response\n */\n status?: string;\n}\n\n/**\n * Check if a given object implements the ApiVideoIdThumbnailPost200Response interface.\n */\nexport function instanceOfApiVideoIdThumbnailPost200Response(value: object): boolean {\n let isInstance = true;\n\n return isInstance;\n}\n\nexport function ApiVideoIdThumbnailPost200ResponseFromJSON(json: any): ApiVideoIdThumbnailPost200Response {\n return ApiVideoIdThumbnailPost200ResponseFromJSONTyped(json, false);\n}\n\nexport function ApiVideoIdThumbnailPost200ResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): ApiVideoIdThumbnailPost200Response {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'message': !exists(json, 'message') ? undefined : json['message'],\n 'status': !exists(json, 'status') ? undefined : json['status'],\n };\n}\n\nexport function ApiVideoIdThumbnailPost200ResponseToJSON(value?: ApiVideoIdThumbnailPost200Response | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'message': value.message,\n 'status': value.status,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * hopper\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface ApiVideoIdThumbnailPresignGet201Response\n */\nexport interface ApiVideoIdThumbnailPresignGet201Response {\n /**\n * \n * @type {Array}\n * @memberof ApiVideoIdThumbnailPresignGet201Response\n */\n method?: Array;\n /**\n * \n * @type {string}\n * @memberof ApiVideoIdThumbnailPresignGet201Response\n */\n endpoint?: string;\n /**\n * \n * @type {object}\n * @memberof ApiVideoIdThumbnailPresignGet201Response\n */\n params?: object;\n /**\n * \n * @type {object}\n * @memberof ApiVideoIdThumbnailPresignGet201Response\n */\n headers?: object;\n}\n\n/**\n * Check if a given object implements the ApiVideoIdThumbnailPresignGet201Response interface.\n */\nexport function instanceOfApiVideoIdThumbnailPresignGet201Response(value: object): boolean {\n let isInstance = true;\n\n return isInstance;\n}\n\nexport function ApiVideoIdThumbnailPresignGet201ResponseFromJSON(json: any): ApiVideoIdThumbnailPresignGet201Response {\n return ApiVideoIdThumbnailPresignGet201ResponseFromJSONTyped(json, false);\n}\n\nexport function ApiVideoIdThumbnailPresignGet201ResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): ApiVideoIdThumbnailPresignGet201Response {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'method': !exists(json, 'method') ? undefined : json['method'],\n 'endpoint': !exists(json, 'endpoint') ? undefined : json['endpoint'],\n 'params': !exists(json, 'params') ? undefined : json['params'],\n 'headers': !exists(json, 'headers') ? undefined : json['headers'],\n };\n}\n\nexport function ApiVideoIdThumbnailPresignGet201ResponseToJSON(value?: ApiVideoIdThumbnailPresignGet201Response | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'method': value.method,\n 'endpoint': value.endpoint,\n 'params': value.params,\n 'headers': value.headers,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * hopper\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface ApiVideoPreparePost200Response\n */\nexport interface ApiVideoPreparePost200Response {\n /**\n * \n * @type {string}\n * @memberof ApiVideoPreparePost200Response\n */\n assetName?: string;\n /**\n * \n * @type {string}\n * @memberof ApiVideoPreparePost200Response\n */\n uploadUrl?: string;\n}\n\n/**\n * Check if a given object implements the ApiVideoPreparePost200Response interface.\n */\nexport function instanceOfApiVideoPreparePost200Response(value: object): boolean {\n let isInstance = true;\n\n return isInstance;\n}\n\nexport function ApiVideoPreparePost200ResponseFromJSON(json: any): ApiVideoPreparePost200Response {\n return ApiVideoPreparePost200ResponseFromJSONTyped(json, false);\n}\n\nexport function ApiVideoPreparePost200ResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): ApiVideoPreparePost200Response {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'assetName': !exists(json, 'asset_name') ? undefined : json['asset_name'],\n 'uploadUrl': !exists(json, 'upload_url') ? undefined : json['upload_url'],\n };\n}\n\nexport function ApiVideoPreparePost200ResponseToJSON(value?: ApiVideoPreparePost200Response | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'asset_name': value.assetName,\n 'upload_url': value.uploadUrl,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * hopper\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface ApiVideoUploadedPostRequest\n */\nexport interface ApiVideoUploadedPostRequest {\n /**\n * \n * @type {string}\n * @memberof ApiVideoUploadedPostRequest\n */\n assetName?: string;\n /**\n * \n * @type {string}\n * @memberof ApiVideoUploadedPostRequest\n */\n title?: string;\n /**\n * \n * @type {any}\n * @memberof ApiVideoUploadedPostRequest\n */\n folderId?: any | null;\n /**\n * \n * @type {number}\n * @memberof ApiVideoUploadedPostRequest\n */\n inputVideoDuration?: number;\n}\n\n/**\n * Check if a given object implements the ApiVideoUploadedPostRequest interface.\n */\nexport function instanceOfApiVideoUploadedPostRequest(value: object): boolean {\n let isInstance = true;\n\n return isInstance;\n}\n\nexport function ApiVideoUploadedPostRequestFromJSON(json: any): ApiVideoUploadedPostRequest {\n return ApiVideoUploadedPostRequestFromJSONTyped(json, false);\n}\n\nexport function ApiVideoUploadedPostRequestFromJSONTyped(json: any, ignoreDiscriminator: boolean): ApiVideoUploadedPostRequest {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'assetName': !exists(json, 'asset_name') ? undefined : json['asset_name'],\n 'title': !exists(json, 'title') ? undefined : json['title'],\n 'folderId': !exists(json, 'folder_id') ? undefined : json['folder_id'],\n 'inputVideoDuration': !exists(json, 'input_video_duration') ? undefined : json['input_video_duration'],\n };\n}\n\nexport function ApiVideoUploadedPostRequestToJSON(value?: ApiVideoUploadedPostRequest | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'asset_name': value.assetName,\n 'title': value.title,\n 'folder_id': value.folderId,\n 'input_video_duration': value.inputVideoDuration,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * hopper\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface ApiVideoVideoIdExamAnswersPost200Response\n */\nexport interface ApiVideoVideoIdExamAnswersPost200Response {\n /**\n * \n * @type {number}\n * @memberof ApiVideoVideoIdExamAnswersPost200Response\n */\n correctAnswerCount?: number;\n /**\n * \n * @type {number}\n * @memberof ApiVideoVideoIdExamAnswersPost200Response\n */\n totalQuestionCount?: number;\n /**\n * \n * @type {Array}\n * @memberof ApiVideoVideoIdExamAnswersPost200Response\n */\n results?: Array;\n}\n\n/**\n * Check if a given object implements the ApiVideoVideoIdExamAnswersPost200Response interface.\n */\nexport function instanceOfApiVideoVideoIdExamAnswersPost200Response(value: object): boolean {\n let isInstance = true;\n\n return isInstance;\n}\n\nexport function ApiVideoVideoIdExamAnswersPost200ResponseFromJSON(json: any): ApiVideoVideoIdExamAnswersPost200Response {\n return ApiVideoVideoIdExamAnswersPost200ResponseFromJSONTyped(json, false);\n}\n\nexport function ApiVideoVideoIdExamAnswersPost200ResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): ApiVideoVideoIdExamAnswersPost200Response {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'correctAnswerCount': !exists(json, 'correctAnswerCount') ? undefined : json['correctAnswerCount'],\n 'totalQuestionCount': !exists(json, 'totalQuestionCount') ? undefined : json['totalQuestionCount'],\n 'results': !exists(json, 'results') ? undefined : json['results'],\n };\n}\n\nexport function ApiVideoVideoIdExamAnswersPost200ResponseToJSON(value?: ApiVideoVideoIdExamAnswersPost200Response | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'correctAnswerCount': value.correctAnswerCount,\n 'totalQuestionCount': value.totalQuestionCount,\n 'results': value.results,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * hopper\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface ApiVideoVideoIdExamAnswersPostRequestAnswersInner\n */\nexport interface ApiVideoVideoIdExamAnswersPostRequestAnswersInner {\n /**\n * \n * @type {number}\n * @memberof ApiVideoVideoIdExamAnswersPostRequestAnswersInner\n */\n examQuestionId?: number;\n /**\n * \n * @type {string}\n * @memberof ApiVideoVideoIdExamAnswersPostRequestAnswersInner\n */\n text?: string;\n}\n\n/**\n * Check if a given object implements the ApiVideoVideoIdExamAnswersPostRequestAnswersInner interface.\n */\nexport function instanceOfApiVideoVideoIdExamAnswersPostRequestAnswersInner(value: object): boolean {\n let isInstance = true;\n\n return isInstance;\n}\n\nexport function ApiVideoVideoIdExamAnswersPostRequestAnswersInnerFromJSON(json: any): ApiVideoVideoIdExamAnswersPostRequestAnswersInner {\n return ApiVideoVideoIdExamAnswersPostRequestAnswersInnerFromJSONTyped(json, false);\n}\n\nexport function ApiVideoVideoIdExamAnswersPostRequestAnswersInnerFromJSONTyped(json: any, ignoreDiscriminator: boolean): ApiVideoVideoIdExamAnswersPostRequestAnswersInner {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'examQuestionId': !exists(json, 'exam_question_id') ? undefined : json['exam_question_id'],\n 'text': !exists(json, 'text') ? undefined : json['text'],\n };\n}\n\nexport function ApiVideoVideoIdExamAnswersPostRequestAnswersInnerToJSON(value?: ApiVideoVideoIdExamAnswersPostRequestAnswersInner | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'exam_question_id': value.examQuestionId,\n 'text': value.text,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * hopper\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport type { ApiVideoVideoIdExamAnswersPostRequestAnswersInner } from './ApiVideoVideoIdExamAnswersPostRequestAnswersInner';\nimport {\n ApiVideoVideoIdExamAnswersPostRequestAnswersInnerFromJSON,\n ApiVideoVideoIdExamAnswersPostRequestAnswersInnerFromJSONTyped,\n ApiVideoVideoIdExamAnswersPostRequestAnswersInnerToJSON,\n} from './ApiVideoVideoIdExamAnswersPostRequestAnswersInner';\n\n/**\n * \n * @export\n * @interface ApiVideoVideoIdExamAnswersPostRequest\n */\nexport interface ApiVideoVideoIdExamAnswersPostRequest {\n /**\n * \n * @type {Array}\n * @memberof ApiVideoVideoIdExamAnswersPostRequest\n */\n answers?: Array;\n /**\n * \n * @type {string}\n * @memberof ApiVideoVideoIdExamAnswersPostRequest\n */\n userName?: string;\n}\n\n/**\n * Check if a given object implements the ApiVideoVideoIdExamAnswersPostRequest interface.\n */\nexport function instanceOfApiVideoVideoIdExamAnswersPostRequest(value: object): boolean {\n let isInstance = true;\n\n return isInstance;\n}\n\nexport function ApiVideoVideoIdExamAnswersPostRequestFromJSON(json: any): ApiVideoVideoIdExamAnswersPostRequest {\n return ApiVideoVideoIdExamAnswersPostRequestFromJSONTyped(json, false);\n}\n\nexport function ApiVideoVideoIdExamAnswersPostRequestFromJSONTyped(json: any, ignoreDiscriminator: boolean): ApiVideoVideoIdExamAnswersPostRequest {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'answers': !exists(json, 'answers') ? undefined : ((json['answers'] as Array).map(ApiVideoVideoIdExamAnswersPostRequestAnswersInnerFromJSON)),\n 'userName': !exists(json, 'user_name') ? undefined : json['user_name'],\n };\n}\n\nexport function ApiVideoVideoIdExamAnswersPostRequestToJSON(value?: ApiVideoVideoIdExamAnswersPostRequest | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'answers': value.answers === undefined ? undefined : ((value.answers as Array).map(ApiVideoVideoIdExamAnswersPostRequestAnswersInnerToJSON)),\n 'user_name': value.userName,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * hopper\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface ApiVideoVideoIdExamGet200Response\n */\nexport interface ApiVideoVideoIdExamGet200Response {\n /**\n * \n * @type {boolean}\n * @memberof ApiVideoVideoIdExamGet200Response\n */\n published?: boolean;\n /**\n * \n * @type {boolean}\n * @memberof ApiVideoVideoIdExamGet200Response\n */\n inputName?: boolean;\n}\n\n/**\n * Check if a given object implements the ApiVideoVideoIdExamGet200Response interface.\n */\nexport function instanceOfApiVideoVideoIdExamGet200Response(value: object): boolean {\n let isInstance = true;\n\n return isInstance;\n}\n\nexport function ApiVideoVideoIdExamGet200ResponseFromJSON(json: any): ApiVideoVideoIdExamGet200Response {\n return ApiVideoVideoIdExamGet200ResponseFromJSONTyped(json, false);\n}\n\nexport function ApiVideoVideoIdExamGet200ResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): ApiVideoVideoIdExamGet200Response {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'published': !exists(json, 'published') ? undefined : json['published'],\n 'inputName': !exists(json, 'inputName') ? undefined : json['inputName'],\n };\n}\n\nexport function ApiVideoVideoIdExamGet200ResponseToJSON(value?: ApiVideoVideoIdExamGet200Response | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'published': value.published,\n 'inputName': value.inputName,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * hopper\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface ApiVideoVideoIdExamPutRequest\n */\nexport interface ApiVideoVideoIdExamPutRequest {\n /**\n * \n * @type {boolean}\n * @memberof ApiVideoVideoIdExamPutRequest\n */\n published?: boolean;\n /**\n * \n * @type {boolean}\n * @memberof ApiVideoVideoIdExamPutRequest\n */\n inputName?: boolean;\n}\n\n/**\n * Check if a given object implements the ApiVideoVideoIdExamPutRequest interface.\n */\nexport function instanceOfApiVideoVideoIdExamPutRequest(value: object): boolean {\n let isInstance = true;\n\n return isInstance;\n}\n\nexport function ApiVideoVideoIdExamPutRequestFromJSON(json: any): ApiVideoVideoIdExamPutRequest {\n return ApiVideoVideoIdExamPutRequestFromJSONTyped(json, false);\n}\n\nexport function ApiVideoVideoIdExamPutRequestFromJSONTyped(json: any, ignoreDiscriminator: boolean): ApiVideoVideoIdExamPutRequest {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'published': !exists(json, 'published') ? undefined : json['published'],\n 'inputName': !exists(json, 'input_name') ? undefined : json['input_name'],\n };\n}\n\nexport function ApiVideoVideoIdExamPutRequestToJSON(value?: ApiVideoVideoIdExamPutRequest | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'published': value.published,\n 'input_name': value.inputName,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * hopper\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface ApiVideoVideoIdExamQuestionsGet200ResponseInnerOptionsInner\n */\nexport interface ApiVideoVideoIdExamQuestionsGet200ResponseInnerOptionsInner {\n /**\n * \n * @type {string}\n * @memberof ApiVideoVideoIdExamQuestionsGet200ResponseInnerOptionsInner\n */\n text?: string;\n /**\n * \n * @type {boolean}\n * @memberof ApiVideoVideoIdExamQuestionsGet200ResponseInnerOptionsInner\n */\n correct?: boolean;\n}\n\n/**\n * Check if a given object implements the ApiVideoVideoIdExamQuestionsGet200ResponseInnerOptionsInner interface.\n */\nexport function instanceOfApiVideoVideoIdExamQuestionsGet200ResponseInnerOptionsInner(value: object): boolean {\n let isInstance = true;\n\n return isInstance;\n}\n\nexport function ApiVideoVideoIdExamQuestionsGet200ResponseInnerOptionsInnerFromJSON(json: any): ApiVideoVideoIdExamQuestionsGet200ResponseInnerOptionsInner {\n return ApiVideoVideoIdExamQuestionsGet200ResponseInnerOptionsInnerFromJSONTyped(json, false);\n}\n\nexport function ApiVideoVideoIdExamQuestionsGet200ResponseInnerOptionsInnerFromJSONTyped(json: any, ignoreDiscriminator: boolean): ApiVideoVideoIdExamQuestionsGet200ResponseInnerOptionsInner {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'text': !exists(json, 'text') ? undefined : json['text'],\n 'correct': !exists(json, 'correct') ? undefined : json['correct'],\n };\n}\n\nexport function ApiVideoVideoIdExamQuestionsGet200ResponseInnerOptionsInnerToJSON(value?: ApiVideoVideoIdExamQuestionsGet200ResponseInnerOptionsInner | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'text': value.text,\n 'correct': value.correct,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * hopper\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport type { ApiVideoVideoIdExamQuestionsGet200ResponseInnerOptionsInner } from './ApiVideoVideoIdExamQuestionsGet200ResponseInnerOptionsInner';\nimport {\n ApiVideoVideoIdExamQuestionsGet200ResponseInnerOptionsInnerFromJSON,\n ApiVideoVideoIdExamQuestionsGet200ResponseInnerOptionsInnerFromJSONTyped,\n ApiVideoVideoIdExamQuestionsGet200ResponseInnerOptionsInnerToJSON,\n} from './ApiVideoVideoIdExamQuestionsGet200ResponseInnerOptionsInner';\n\n/**\n * \n * @export\n * @interface ApiVideoVideoIdExamQuestionsGet200ResponseInner\n */\nexport interface ApiVideoVideoIdExamQuestionsGet200ResponseInner {\n /**\n * \n * @type {number}\n * @memberof ApiVideoVideoIdExamQuestionsGet200ResponseInner\n */\n id?: number;\n /**\n * \n * @type {string}\n * @memberof ApiVideoVideoIdExamQuestionsGet200ResponseInner\n */\n text?: string;\n /**\n * \n * @type {Array}\n * @memberof ApiVideoVideoIdExamQuestionsGet200ResponseInner\n */\n options?: Array;\n /**\n * \n * @type {number}\n * @memberof ApiVideoVideoIdExamQuestionsGet200ResponseInner\n */\n rowOrder?: number;\n}\n\n/**\n * Check if a given object implements the ApiVideoVideoIdExamQuestionsGet200ResponseInner interface.\n */\nexport function instanceOfApiVideoVideoIdExamQuestionsGet200ResponseInner(value: object): boolean {\n let isInstance = true;\n\n return isInstance;\n}\n\nexport function ApiVideoVideoIdExamQuestionsGet200ResponseInnerFromJSON(json: any): ApiVideoVideoIdExamQuestionsGet200ResponseInner {\n return ApiVideoVideoIdExamQuestionsGet200ResponseInnerFromJSONTyped(json, false);\n}\n\nexport function ApiVideoVideoIdExamQuestionsGet200ResponseInnerFromJSONTyped(json: any, ignoreDiscriminator: boolean): ApiVideoVideoIdExamQuestionsGet200ResponseInner {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'id': !exists(json, 'id') ? undefined : json['id'],\n 'text': !exists(json, 'text') ? undefined : json['text'],\n 'options': !exists(json, 'options') ? undefined : ((json['options'] as Array).map(ApiVideoVideoIdExamQuestionsGet200ResponseInnerOptionsInnerFromJSON)),\n 'rowOrder': !exists(json, 'rowOrder') ? undefined : json['rowOrder'],\n };\n}\n\nexport function ApiVideoVideoIdExamQuestionsGet200ResponseInnerToJSON(value?: ApiVideoVideoIdExamQuestionsGet200ResponseInner | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'id': value.id,\n 'text': value.text,\n 'options': value.options === undefined ? undefined : ((value.options as Array).map(ApiVideoVideoIdExamQuestionsGet200ResponseInnerOptionsInnerToJSON)),\n 'rowOrder': value.rowOrder,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * hopper\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport type { ApiVideoVideoIdExamQuestionsGet200ResponseInnerOptionsInner } from './ApiVideoVideoIdExamQuestionsGet200ResponseInnerOptionsInner';\nimport {\n ApiVideoVideoIdExamQuestionsGet200ResponseInnerOptionsInnerFromJSON,\n ApiVideoVideoIdExamQuestionsGet200ResponseInnerOptionsInnerFromJSONTyped,\n ApiVideoVideoIdExamQuestionsGet200ResponseInnerOptionsInnerToJSON,\n} from './ApiVideoVideoIdExamQuestionsGet200ResponseInnerOptionsInner';\n\n/**\n * \n * @export\n * @interface ApiVideoVideoIdExamQuestionsPutRequestExamQuestionsInner\n */\nexport interface ApiVideoVideoIdExamQuestionsPutRequestExamQuestionsInner {\n /**\n * \n * @type {number}\n * @memberof ApiVideoVideoIdExamQuestionsPutRequestExamQuestionsInner\n */\n id?: number;\n /**\n * \n * @type {string}\n * @memberof ApiVideoVideoIdExamQuestionsPutRequestExamQuestionsInner\n */\n text?: string;\n /**\n * \n * @type {Array}\n * @memberof ApiVideoVideoIdExamQuestionsPutRequestExamQuestionsInner\n */\n options?: Array;\n}\n\n/**\n * Check if a given object implements the ApiVideoVideoIdExamQuestionsPutRequestExamQuestionsInner interface.\n */\nexport function instanceOfApiVideoVideoIdExamQuestionsPutRequestExamQuestionsInner(value: object): boolean {\n let isInstance = true;\n\n return isInstance;\n}\n\nexport function ApiVideoVideoIdExamQuestionsPutRequestExamQuestionsInnerFromJSON(json: any): ApiVideoVideoIdExamQuestionsPutRequestExamQuestionsInner {\n return ApiVideoVideoIdExamQuestionsPutRequestExamQuestionsInnerFromJSONTyped(json, false);\n}\n\nexport function ApiVideoVideoIdExamQuestionsPutRequestExamQuestionsInnerFromJSONTyped(json: any, ignoreDiscriminator: boolean): ApiVideoVideoIdExamQuestionsPutRequestExamQuestionsInner {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'id': !exists(json, 'id') ? undefined : json['id'],\n 'text': !exists(json, 'text') ? undefined : json['text'],\n 'options': !exists(json, 'options') ? undefined : ((json['options'] as Array).map(ApiVideoVideoIdExamQuestionsGet200ResponseInnerOptionsInnerFromJSON)),\n };\n}\n\nexport function ApiVideoVideoIdExamQuestionsPutRequestExamQuestionsInnerToJSON(value?: ApiVideoVideoIdExamQuestionsPutRequestExamQuestionsInner | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'id': value.id,\n 'text': value.text,\n 'options': value.options === undefined ? undefined : ((value.options as Array).map(ApiVideoVideoIdExamQuestionsGet200ResponseInnerOptionsInnerToJSON)),\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * hopper\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport type { ApiVideoVideoIdExamQuestionsPutRequestExamQuestionsInner } from './ApiVideoVideoIdExamQuestionsPutRequestExamQuestionsInner';\nimport {\n ApiVideoVideoIdExamQuestionsPutRequestExamQuestionsInnerFromJSON,\n ApiVideoVideoIdExamQuestionsPutRequestExamQuestionsInnerFromJSONTyped,\n ApiVideoVideoIdExamQuestionsPutRequestExamQuestionsInnerToJSON,\n} from './ApiVideoVideoIdExamQuestionsPutRequestExamQuestionsInner';\n\n/**\n * \n * @export\n * @interface ApiVideoVideoIdExamQuestionsPutRequest\n */\nexport interface ApiVideoVideoIdExamQuestionsPutRequest {\n /**\n * \n * @type {Array}\n * @memberof ApiVideoVideoIdExamQuestionsPutRequest\n */\n examQuestions?: Array;\n}\n\n/**\n * Check if a given object implements the ApiVideoVideoIdExamQuestionsPutRequest interface.\n */\nexport function instanceOfApiVideoVideoIdExamQuestionsPutRequest(value: object): boolean {\n let isInstance = true;\n\n return isInstance;\n}\n\nexport function ApiVideoVideoIdExamQuestionsPutRequestFromJSON(json: any): ApiVideoVideoIdExamQuestionsPutRequest {\n return ApiVideoVideoIdExamQuestionsPutRequestFromJSONTyped(json, false);\n}\n\nexport function ApiVideoVideoIdExamQuestionsPutRequestFromJSONTyped(json: any, ignoreDiscriminator: boolean): ApiVideoVideoIdExamQuestionsPutRequest {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'examQuestions': !exists(json, 'exam_questions') ? undefined : ((json['exam_questions'] as Array).map(ApiVideoVideoIdExamQuestionsPutRequestExamQuestionsInnerFromJSON)),\n };\n}\n\nexport function ApiVideoVideoIdExamQuestionsPutRequestToJSON(value?: ApiVideoVideoIdExamQuestionsPutRequest | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'exam_questions': value.examQuestions === undefined ? undefined : ((value.examQuestions as Array).map(ApiVideoVideoIdExamQuestionsPutRequestExamQuestionsInnerToJSON)),\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * hopper\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface ApiVideoVideoIdNarrationsGet200ResponseInnerAudioData\n */\nexport interface ApiVideoVideoIdNarrationsGet200ResponseInnerAudioData {\n /**\n * \n * @type {string}\n * @memberof ApiVideoVideoIdNarrationsGet200ResponseInnerAudioData\n */\n voiceName?: string;\n /**\n * \n * @type {number}\n * @memberof ApiVideoVideoIdNarrationsGet200ResponseInnerAudioData\n */\n durationMs?: number;\n /**\n * \n * @type {string}\n * @memberof ApiVideoVideoIdNarrationsGet200ResponseInnerAudioData\n */\n speechRate?: string;\n}\n\n/**\n * Check if a given object implements the ApiVideoVideoIdNarrationsGet200ResponseInnerAudioData interface.\n */\nexport function instanceOfApiVideoVideoIdNarrationsGet200ResponseInnerAudioData(value: object): boolean {\n let isInstance = true;\n\n return isInstance;\n}\n\nexport function ApiVideoVideoIdNarrationsGet200ResponseInnerAudioDataFromJSON(json: any): ApiVideoVideoIdNarrationsGet200ResponseInnerAudioData {\n return ApiVideoVideoIdNarrationsGet200ResponseInnerAudioDataFromJSONTyped(json, false);\n}\n\nexport function ApiVideoVideoIdNarrationsGet200ResponseInnerAudioDataFromJSONTyped(json: any, ignoreDiscriminator: boolean): ApiVideoVideoIdNarrationsGet200ResponseInnerAudioData {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'voiceName': !exists(json, 'voiceName') ? undefined : json['voiceName'],\n 'durationMs': !exists(json, 'durationMs') ? undefined : json['durationMs'],\n 'speechRate': !exists(json, 'speechRate') ? undefined : json['speechRate'],\n };\n}\n\nexport function ApiVideoVideoIdNarrationsGet200ResponseInnerAudioDataToJSON(value?: ApiVideoVideoIdNarrationsGet200ResponseInnerAudioData | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'voiceName': value.voiceName,\n 'durationMs': value.durationMs,\n 'speechRate': value.speechRate,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * hopper\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport type { ApiVideoVideoIdNarrationsGet200ResponseInnerAudioData } from './ApiVideoVideoIdNarrationsGet200ResponseInnerAudioData';\nimport {\n ApiVideoVideoIdNarrationsGet200ResponseInnerAudioDataFromJSON,\n ApiVideoVideoIdNarrationsGet200ResponseInnerAudioDataFromJSONTyped,\n ApiVideoVideoIdNarrationsGet200ResponseInnerAudioDataToJSON,\n} from './ApiVideoVideoIdNarrationsGet200ResponseInnerAudioData';\n\n/**\n * \n * @export\n * @interface ApiVideoVideoIdNarrationsGet200ResponseInner\n */\nexport interface ApiVideoVideoIdNarrationsGet200ResponseInner {\n /**\n * \n * @type {string}\n * @memberof ApiVideoVideoIdNarrationsGet200ResponseInner\n */\n text?: string;\n /**\n * \n * @type {number}\n * @memberof ApiVideoVideoIdNarrationsGet200ResponseInner\n */\n startTimeMs?: number;\n /**\n * \n * @type {string}\n * @memberof ApiVideoVideoIdNarrationsGet200ResponseInner\n */\n audioBlobName?: string;\n /**\n * \n * @type {ApiVideoVideoIdNarrationsGet200ResponseInnerAudioData}\n * @memberof ApiVideoVideoIdNarrationsGet200ResponseInner\n */\n audioData?: ApiVideoVideoIdNarrationsGet200ResponseInnerAudioData;\n}\n\n/**\n * Check if a given object implements the ApiVideoVideoIdNarrationsGet200ResponseInner interface.\n */\nexport function instanceOfApiVideoVideoIdNarrationsGet200ResponseInner(value: object): boolean {\n let isInstance = true;\n\n return isInstance;\n}\n\nexport function ApiVideoVideoIdNarrationsGet200ResponseInnerFromJSON(json: any): ApiVideoVideoIdNarrationsGet200ResponseInner {\n return ApiVideoVideoIdNarrationsGet200ResponseInnerFromJSONTyped(json, false);\n}\n\nexport function ApiVideoVideoIdNarrationsGet200ResponseInnerFromJSONTyped(json: any, ignoreDiscriminator: boolean): ApiVideoVideoIdNarrationsGet200ResponseInner {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'text': !exists(json, 'text') ? undefined : json['text'],\n 'startTimeMs': !exists(json, 'startTimeMs') ? undefined : json['startTimeMs'],\n 'audioBlobName': !exists(json, 'audioBlobName') ? undefined : json['audioBlobName'],\n 'audioData': !exists(json, 'audioData') ? undefined : ApiVideoVideoIdNarrationsGet200ResponseInnerAudioDataFromJSON(json['audioData']),\n };\n}\n\nexport function ApiVideoVideoIdNarrationsGet200ResponseInnerToJSON(value?: ApiVideoVideoIdNarrationsGet200ResponseInner | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'text': value.text,\n 'startTimeMs': value.startTimeMs,\n 'audioBlobName': value.audioBlobName,\n 'audioData': ApiVideoVideoIdNarrationsGet200ResponseInnerAudioDataToJSON(value.audioData),\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * hopper\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface ApiVideoVideoIdNarrationsPutRequestNarrationsInnerAudio\n */\nexport interface ApiVideoVideoIdNarrationsPutRequestNarrationsInnerAudio {\n /**\n * \n * @type {string}\n * @memberof ApiVideoVideoIdNarrationsPutRequestNarrationsInnerAudio\n */\n blobName?: string;\n /**\n * \n * @type {string}\n * @memberof ApiVideoVideoIdNarrationsPutRequestNarrationsInnerAudio\n */\n voiceName?: string;\n /**\n * \n * @type {number}\n * @memberof ApiVideoVideoIdNarrationsPutRequestNarrationsInnerAudio\n */\n durationMs?: number;\n /**\n * \n * @type {string}\n * @memberof ApiVideoVideoIdNarrationsPutRequestNarrationsInnerAudio\n */\n speechRate?: string;\n}\n\n/**\n * Check if a given object implements the ApiVideoVideoIdNarrationsPutRequestNarrationsInnerAudio interface.\n */\nexport function instanceOfApiVideoVideoIdNarrationsPutRequestNarrationsInnerAudio(value: object): boolean {\n let isInstance = true;\n\n return isInstance;\n}\n\nexport function ApiVideoVideoIdNarrationsPutRequestNarrationsInnerAudioFromJSON(json: any): ApiVideoVideoIdNarrationsPutRequestNarrationsInnerAudio {\n return ApiVideoVideoIdNarrationsPutRequestNarrationsInnerAudioFromJSONTyped(json, false);\n}\n\nexport function ApiVideoVideoIdNarrationsPutRequestNarrationsInnerAudioFromJSONTyped(json: any, ignoreDiscriminator: boolean): ApiVideoVideoIdNarrationsPutRequestNarrationsInnerAudio {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'blobName': !exists(json, 'blob_name') ? undefined : json['blob_name'],\n 'voiceName': !exists(json, 'voice_name') ? undefined : json['voice_name'],\n 'durationMs': !exists(json, 'duration_ms') ? undefined : json['duration_ms'],\n 'speechRate': !exists(json, 'speech_rate') ? undefined : json['speech_rate'],\n };\n}\n\nexport function ApiVideoVideoIdNarrationsPutRequestNarrationsInnerAudioToJSON(value?: ApiVideoVideoIdNarrationsPutRequestNarrationsInnerAudio | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'blob_name': value.blobName,\n 'voice_name': value.voiceName,\n 'duration_ms': value.durationMs,\n 'speech_rate': value.speechRate,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * hopper\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport type { ApiVideoVideoIdNarrationsPutRequestNarrationsInnerAudio } from './ApiVideoVideoIdNarrationsPutRequestNarrationsInnerAudio';\nimport {\n ApiVideoVideoIdNarrationsPutRequestNarrationsInnerAudioFromJSON,\n ApiVideoVideoIdNarrationsPutRequestNarrationsInnerAudioFromJSONTyped,\n ApiVideoVideoIdNarrationsPutRequestNarrationsInnerAudioToJSON,\n} from './ApiVideoVideoIdNarrationsPutRequestNarrationsInnerAudio';\n\n/**\n * \n * @export\n * @interface ApiVideoVideoIdNarrationsPutRequestNarrationsInner\n */\nexport interface ApiVideoVideoIdNarrationsPutRequestNarrationsInner {\n /**\n * \n * @type {string}\n * @memberof ApiVideoVideoIdNarrationsPutRequestNarrationsInner\n */\n text?: string;\n /**\n * \n * @type {number}\n * @memberof ApiVideoVideoIdNarrationsPutRequestNarrationsInner\n */\n startTimeMs?: number;\n /**\n * \n * @type {ApiVideoVideoIdNarrationsPutRequestNarrationsInnerAudio}\n * @memberof ApiVideoVideoIdNarrationsPutRequestNarrationsInner\n */\n audio?: ApiVideoVideoIdNarrationsPutRequestNarrationsInnerAudio;\n}\n\n/**\n * Check if a given object implements the ApiVideoVideoIdNarrationsPutRequestNarrationsInner interface.\n */\nexport function instanceOfApiVideoVideoIdNarrationsPutRequestNarrationsInner(value: object): boolean {\n let isInstance = true;\n\n return isInstance;\n}\n\nexport function ApiVideoVideoIdNarrationsPutRequestNarrationsInnerFromJSON(json: any): ApiVideoVideoIdNarrationsPutRequestNarrationsInner {\n return ApiVideoVideoIdNarrationsPutRequestNarrationsInnerFromJSONTyped(json, false);\n}\n\nexport function ApiVideoVideoIdNarrationsPutRequestNarrationsInnerFromJSONTyped(json: any, ignoreDiscriminator: boolean): ApiVideoVideoIdNarrationsPutRequestNarrationsInner {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'text': !exists(json, 'text') ? undefined : json['text'],\n 'startTimeMs': !exists(json, 'start_time_ms') ? undefined : json['start_time_ms'],\n 'audio': !exists(json, 'audio') ? undefined : ApiVideoVideoIdNarrationsPutRequestNarrationsInnerAudioFromJSON(json['audio']),\n };\n}\n\nexport function ApiVideoVideoIdNarrationsPutRequestNarrationsInnerToJSON(value?: ApiVideoVideoIdNarrationsPutRequestNarrationsInner | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'text': value.text,\n 'start_time_ms': value.startTimeMs,\n 'audio': ApiVideoVideoIdNarrationsPutRequestNarrationsInnerAudioToJSON(value.audio),\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * hopper\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport type { ApiVideoVideoIdNarrationsPutRequestNarrationsInner } from './ApiVideoVideoIdNarrationsPutRequestNarrationsInner';\nimport {\n ApiVideoVideoIdNarrationsPutRequestNarrationsInnerFromJSON,\n ApiVideoVideoIdNarrationsPutRequestNarrationsInnerFromJSONTyped,\n ApiVideoVideoIdNarrationsPutRequestNarrationsInnerToJSON,\n} from './ApiVideoVideoIdNarrationsPutRequestNarrationsInner';\n\n/**\n * \n * @export\n * @interface ApiVideoVideoIdNarrationsPutRequest\n */\nexport interface ApiVideoVideoIdNarrationsPutRequest {\n /**\n * \n * @type {Array}\n * @memberof ApiVideoVideoIdNarrationsPutRequest\n */\n narrations?: Array;\n}\n\n/**\n * Check if a given object implements the ApiVideoVideoIdNarrationsPutRequest interface.\n */\nexport function instanceOfApiVideoVideoIdNarrationsPutRequest(value: object): boolean {\n let isInstance = true;\n\n return isInstance;\n}\n\nexport function ApiVideoVideoIdNarrationsPutRequestFromJSON(json: any): ApiVideoVideoIdNarrationsPutRequest {\n return ApiVideoVideoIdNarrationsPutRequestFromJSONTyped(json, false);\n}\n\nexport function ApiVideoVideoIdNarrationsPutRequestFromJSONTyped(json: any, ignoreDiscriminator: boolean): ApiVideoVideoIdNarrationsPutRequest {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'narrations': !exists(json, 'narrations') ? undefined : ((json['narrations'] as Array).map(ApiVideoVideoIdNarrationsPutRequestNarrationsInnerFromJSON)),\n };\n}\n\nexport function ApiVideoVideoIdNarrationsPutRequestToJSON(value?: ApiVideoVideoIdNarrationsPutRequest | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'narrations': value.narrations === undefined ? undefined : ((value.narrations as Array).map(ApiVideoVideoIdNarrationsPutRequestNarrationsInnerToJSON)),\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * hopper\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface ApiVideoVideoIdSubtitlesDefaultDisplayedPatchRequest\n */\nexport interface ApiVideoVideoIdSubtitlesDefaultDisplayedPatchRequest {\n /**\n * \n * @type {boolean}\n * @memberof ApiVideoVideoIdSubtitlesDefaultDisplayedPatchRequest\n */\n defaultDisplayed?: boolean;\n}\n\n/**\n * Check if a given object implements the ApiVideoVideoIdSubtitlesDefaultDisplayedPatchRequest interface.\n */\nexport function instanceOfApiVideoVideoIdSubtitlesDefaultDisplayedPatchRequest(value: object): boolean {\n let isInstance = true;\n\n return isInstance;\n}\n\nexport function ApiVideoVideoIdSubtitlesDefaultDisplayedPatchRequestFromJSON(json: any): ApiVideoVideoIdSubtitlesDefaultDisplayedPatchRequest {\n return ApiVideoVideoIdSubtitlesDefaultDisplayedPatchRequestFromJSONTyped(json, false);\n}\n\nexport function ApiVideoVideoIdSubtitlesDefaultDisplayedPatchRequestFromJSONTyped(json: any, ignoreDiscriminator: boolean): ApiVideoVideoIdSubtitlesDefaultDisplayedPatchRequest {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'defaultDisplayed': !exists(json, 'default_displayed') ? undefined : json['default_displayed'],\n };\n}\n\nexport function ApiVideoVideoIdSubtitlesDefaultDisplayedPatchRequestToJSON(value?: ApiVideoVideoIdSubtitlesDefaultDisplayedPatchRequest | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'default_displayed': value.defaultDisplayed,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * hopper\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface ApiVideoVideoIdSubtitlesGet200ResponseInner\n */\nexport interface ApiVideoVideoIdSubtitlesGet200ResponseInner {\n /**\n * \n * @type {string}\n * @memberof ApiVideoVideoIdSubtitlesGet200ResponseInner\n */\n value?: string;\n /**\n * \n * @type {number}\n * @memberof ApiVideoVideoIdSubtitlesGet200ResponseInner\n */\n startTimeMs?: number;\n /**\n * \n * @type {number}\n * @memberof ApiVideoVideoIdSubtitlesGet200ResponseInner\n */\n endTimeMs?: number;\n}\n\n/**\n * Check if a given object implements the ApiVideoVideoIdSubtitlesGet200ResponseInner interface.\n */\nexport function instanceOfApiVideoVideoIdSubtitlesGet200ResponseInner(value: object): boolean {\n let isInstance = true;\n\n return isInstance;\n}\n\nexport function ApiVideoVideoIdSubtitlesGet200ResponseInnerFromJSON(json: any): ApiVideoVideoIdSubtitlesGet200ResponseInner {\n return ApiVideoVideoIdSubtitlesGet200ResponseInnerFromJSONTyped(json, false);\n}\n\nexport function ApiVideoVideoIdSubtitlesGet200ResponseInnerFromJSONTyped(json: any, ignoreDiscriminator: boolean): ApiVideoVideoIdSubtitlesGet200ResponseInner {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'value': !exists(json, 'value') ? undefined : json['value'],\n 'startTimeMs': !exists(json, 'startTimeMs') ? undefined : json['startTimeMs'],\n 'endTimeMs': !exists(json, 'endTimeMs') ? undefined : json['endTimeMs'],\n };\n}\n\nexport function ApiVideoVideoIdSubtitlesGet200ResponseInnerToJSON(value?: ApiVideoVideoIdSubtitlesGet200ResponseInner | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'value': value.value,\n 'startTimeMs': value.startTimeMs,\n 'endTimeMs': value.endTimeMs,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * hopper\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface ApiVideoVideoIdSubtitlesPublishedPatchRequest\n */\nexport interface ApiVideoVideoIdSubtitlesPublishedPatchRequest {\n /**\n * \n * @type {boolean}\n * @memberof ApiVideoVideoIdSubtitlesPublishedPatchRequest\n */\n status?: boolean;\n}\n\n/**\n * Check if a given object implements the ApiVideoVideoIdSubtitlesPublishedPatchRequest interface.\n */\nexport function instanceOfApiVideoVideoIdSubtitlesPublishedPatchRequest(value: object): boolean {\n let isInstance = true;\n\n return isInstance;\n}\n\nexport function ApiVideoVideoIdSubtitlesPublishedPatchRequestFromJSON(json: any): ApiVideoVideoIdSubtitlesPublishedPatchRequest {\n return ApiVideoVideoIdSubtitlesPublishedPatchRequestFromJSONTyped(json, false);\n}\n\nexport function ApiVideoVideoIdSubtitlesPublishedPatchRequestFromJSONTyped(json: any, ignoreDiscriminator: boolean): ApiVideoVideoIdSubtitlesPublishedPatchRequest {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'status': !exists(json, 'status') ? undefined : json['status'],\n };\n}\n\nexport function ApiVideoVideoIdSubtitlesPublishedPatchRequestToJSON(value?: ApiVideoVideoIdSubtitlesPublishedPatchRequest | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'status': value.status,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * hopper\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface ApiVideoVideoIdSubtitlesPutRequestSubtitlesInner\n */\nexport interface ApiVideoVideoIdSubtitlesPutRequestSubtitlesInner {\n /**\n * \n * @type {string}\n * @memberof ApiVideoVideoIdSubtitlesPutRequestSubtitlesInner\n */\n value?: string;\n /**\n * \n * @type {number}\n * @memberof ApiVideoVideoIdSubtitlesPutRequestSubtitlesInner\n */\n startTimeMs?: number;\n /**\n * \n * @type {number}\n * @memberof ApiVideoVideoIdSubtitlesPutRequestSubtitlesInner\n */\n endTimeMs?: number;\n}\n\n/**\n * Check if a given object implements the ApiVideoVideoIdSubtitlesPutRequestSubtitlesInner interface.\n */\nexport function instanceOfApiVideoVideoIdSubtitlesPutRequestSubtitlesInner(value: object): boolean {\n let isInstance = true;\n\n return isInstance;\n}\n\nexport function ApiVideoVideoIdSubtitlesPutRequestSubtitlesInnerFromJSON(json: any): ApiVideoVideoIdSubtitlesPutRequestSubtitlesInner {\n return ApiVideoVideoIdSubtitlesPutRequestSubtitlesInnerFromJSONTyped(json, false);\n}\n\nexport function ApiVideoVideoIdSubtitlesPutRequestSubtitlesInnerFromJSONTyped(json: any, ignoreDiscriminator: boolean): ApiVideoVideoIdSubtitlesPutRequestSubtitlesInner {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'value': !exists(json, 'value') ? undefined : json['value'],\n 'startTimeMs': !exists(json, 'start_time_ms') ? undefined : json['start_time_ms'],\n 'endTimeMs': !exists(json, 'end_time_ms') ? undefined : json['end_time_ms'],\n };\n}\n\nexport function ApiVideoVideoIdSubtitlesPutRequestSubtitlesInnerToJSON(value?: ApiVideoVideoIdSubtitlesPutRequestSubtitlesInner | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'value': value.value,\n 'start_time_ms': value.startTimeMs,\n 'end_time_ms': value.endTimeMs,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * hopper\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport type { ApiVideoVideoIdSubtitlesPutRequestSubtitlesInner } from './ApiVideoVideoIdSubtitlesPutRequestSubtitlesInner';\nimport {\n ApiVideoVideoIdSubtitlesPutRequestSubtitlesInnerFromJSON,\n ApiVideoVideoIdSubtitlesPutRequestSubtitlesInnerFromJSONTyped,\n ApiVideoVideoIdSubtitlesPutRequestSubtitlesInnerToJSON,\n} from './ApiVideoVideoIdSubtitlesPutRequestSubtitlesInner';\n\n/**\n * \n * @export\n * @interface ApiVideoVideoIdSubtitlesPutRequest\n */\nexport interface ApiVideoVideoIdSubtitlesPutRequest {\n /**\n * \n * @type {Array}\n * @memberof ApiVideoVideoIdSubtitlesPutRequest\n */\n subtitles?: Array;\n}\n\n/**\n * Check if a given object implements the ApiVideoVideoIdSubtitlesPutRequest interface.\n */\nexport function instanceOfApiVideoVideoIdSubtitlesPutRequest(value: object): boolean {\n let isInstance = true;\n\n return isInstance;\n}\n\nexport function ApiVideoVideoIdSubtitlesPutRequestFromJSON(json: any): ApiVideoVideoIdSubtitlesPutRequest {\n return ApiVideoVideoIdSubtitlesPutRequestFromJSONTyped(json, false);\n}\n\nexport function ApiVideoVideoIdSubtitlesPutRequestFromJSONTyped(json: any, ignoreDiscriminator: boolean): ApiVideoVideoIdSubtitlesPutRequest {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'subtitles': !exists(json, 'subtitles') ? undefined : ((json['subtitles'] as Array).map(ApiVideoVideoIdSubtitlesPutRequestSubtitlesInnerFromJSON)),\n };\n}\n\nexport function ApiVideoVideoIdSubtitlesPutRequestToJSON(value?: ApiVideoVideoIdSubtitlesPutRequest | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'subtitles': value.subtitles === undefined ? undefined : ((value.subtitles as Array).map(ApiVideoVideoIdSubtitlesPutRequestSubtitlesInnerToJSON)),\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * hopper\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface ApiVideoVideoIdThumbnailSpritesGet200Response\n */\nexport interface ApiVideoVideoIdThumbnailSpritesGet200Response {\n /**\n * \n * @type {string}\n * @memberof ApiVideoVideoIdThumbnailSpritesGet200Response\n */\n signedUrl?: string;\n /**\n * \n * @type {string}\n * @memberof ApiVideoVideoIdThumbnailSpritesGet200Response\n */\n state?: string;\n}\n\n/**\n * Check if a given object implements the ApiVideoVideoIdThumbnailSpritesGet200Response interface.\n */\nexport function instanceOfApiVideoVideoIdThumbnailSpritesGet200Response(value: object): boolean {\n let isInstance = true;\n\n return isInstance;\n}\n\nexport function ApiVideoVideoIdThumbnailSpritesGet200ResponseFromJSON(json: any): ApiVideoVideoIdThumbnailSpritesGet200Response {\n return ApiVideoVideoIdThumbnailSpritesGet200ResponseFromJSONTyped(json, false);\n}\n\nexport function ApiVideoVideoIdThumbnailSpritesGet200ResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): ApiVideoVideoIdThumbnailSpritesGet200Response {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'signedUrl': !exists(json, 'signedUrl') ? undefined : json['signedUrl'],\n 'state': !exists(json, 'state') ? undefined : json['state'],\n };\n}\n\nexport function ApiVideoVideoIdThumbnailSpritesGet200ResponseToJSON(value?: ApiVideoVideoIdThumbnailSpritesGet200Response | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'signedUrl': value.signedUrl,\n 'state': value.state,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * hopper\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface ApiVideoVideoIdTimelineUpdateJobsPostRequestTimelinesInner\n */\nexport interface ApiVideoVideoIdTimelineUpdateJobsPostRequestTimelinesInner {\n /**\n * \n * @type {number}\n * @memberof ApiVideoVideoIdTimelineUpdateJobsPostRequestTimelinesInner\n */\n videoId?: number;\n /**\n * \n * @type {number}\n * @memberof ApiVideoVideoIdTimelineUpdateJobsPostRequestTimelinesInner\n */\n startMs?: number;\n /**\n * \n * @type {number}\n * @memberof ApiVideoVideoIdTimelineUpdateJobsPostRequestTimelinesInner\n */\n durationMs?: number;\n}\n\n/**\n * Check if a given object implements the ApiVideoVideoIdTimelineUpdateJobsPostRequestTimelinesInner interface.\n */\nexport function instanceOfApiVideoVideoIdTimelineUpdateJobsPostRequestTimelinesInner(value: object): boolean {\n let isInstance = true;\n\n return isInstance;\n}\n\nexport function ApiVideoVideoIdTimelineUpdateJobsPostRequestTimelinesInnerFromJSON(json: any): ApiVideoVideoIdTimelineUpdateJobsPostRequestTimelinesInner {\n return ApiVideoVideoIdTimelineUpdateJobsPostRequestTimelinesInnerFromJSONTyped(json, false);\n}\n\nexport function ApiVideoVideoIdTimelineUpdateJobsPostRequestTimelinesInnerFromJSONTyped(json: any, ignoreDiscriminator: boolean): ApiVideoVideoIdTimelineUpdateJobsPostRequestTimelinesInner {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'videoId': !exists(json, 'video_id') ? undefined : json['video_id'],\n 'startMs': !exists(json, 'start_ms') ? undefined : json['start_ms'],\n 'durationMs': !exists(json, 'duration_ms') ? undefined : json['duration_ms'],\n };\n}\n\nexport function ApiVideoVideoIdTimelineUpdateJobsPostRequestTimelinesInnerToJSON(value?: ApiVideoVideoIdTimelineUpdateJobsPostRequestTimelinesInner | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'video_id': value.videoId,\n 'start_ms': value.startMs,\n 'duration_ms': value.durationMs,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * hopper\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport type { ApiVideoVideoIdTimelineUpdateJobsPostRequestTimelinesInner } from './ApiVideoVideoIdTimelineUpdateJobsPostRequestTimelinesInner';\nimport {\n ApiVideoVideoIdTimelineUpdateJobsPostRequestTimelinesInnerFromJSON,\n ApiVideoVideoIdTimelineUpdateJobsPostRequestTimelinesInnerFromJSONTyped,\n ApiVideoVideoIdTimelineUpdateJobsPostRequestTimelinesInnerToJSON,\n} from './ApiVideoVideoIdTimelineUpdateJobsPostRequestTimelinesInner';\n\n/**\n * \n * @export\n * @interface ApiVideoVideoIdTimelineUpdateJobsPostRequest\n */\nexport interface ApiVideoVideoIdTimelineUpdateJobsPostRequest {\n /**\n * \n * @type {Array}\n * @memberof ApiVideoVideoIdTimelineUpdateJobsPostRequest\n */\n timelines?: Array;\n}\n\n/**\n * Check if a given object implements the ApiVideoVideoIdTimelineUpdateJobsPostRequest interface.\n */\nexport function instanceOfApiVideoVideoIdTimelineUpdateJobsPostRequest(value: object): boolean {\n let isInstance = true;\n\n return isInstance;\n}\n\nexport function ApiVideoVideoIdTimelineUpdateJobsPostRequestFromJSON(json: any): ApiVideoVideoIdTimelineUpdateJobsPostRequest {\n return ApiVideoVideoIdTimelineUpdateJobsPostRequestFromJSONTyped(json, false);\n}\n\nexport function ApiVideoVideoIdTimelineUpdateJobsPostRequestFromJSONTyped(json: any, ignoreDiscriminator: boolean): ApiVideoVideoIdTimelineUpdateJobsPostRequest {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'timelines': !exists(json, 'timelines') ? undefined : ((json['timelines'] as Array).map(ApiVideoVideoIdTimelineUpdateJobsPostRequestTimelinesInnerFromJSON)),\n };\n}\n\nexport function ApiVideoVideoIdTimelineUpdateJobsPostRequestToJSON(value?: ApiVideoVideoIdTimelineUpdateJobsPostRequest | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'timelines': value.timelines === undefined ? undefined : ((value.timelines as Array).map(ApiVideoVideoIdTimelineUpdateJobsPostRequestTimelinesInnerToJSON)),\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * hopper\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface ApiVideoVideoIdWatchLinkConditionResponsePostRequestResponse\n */\nexport interface ApiVideoVideoIdWatchLinkConditionResponsePostRequestResponse {\n /**\n * \n * @type {string}\n * @memberof ApiVideoVideoIdWatchLinkConditionResponsePostRequestResponse\n */\n email?: string;\n}\n\n/**\n * Check if a given object implements the ApiVideoVideoIdWatchLinkConditionResponsePostRequestResponse interface.\n */\nexport function instanceOfApiVideoVideoIdWatchLinkConditionResponsePostRequestResponse(value: object): boolean {\n let isInstance = true;\n\n return isInstance;\n}\n\nexport function ApiVideoVideoIdWatchLinkConditionResponsePostRequestResponseFromJSON(json: any): ApiVideoVideoIdWatchLinkConditionResponsePostRequestResponse {\n return ApiVideoVideoIdWatchLinkConditionResponsePostRequestResponseFromJSONTyped(json, false);\n}\n\nexport function ApiVideoVideoIdWatchLinkConditionResponsePostRequestResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): ApiVideoVideoIdWatchLinkConditionResponsePostRequestResponse {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'email': !exists(json, 'email') ? undefined : json['email'],\n };\n}\n\nexport function ApiVideoVideoIdWatchLinkConditionResponsePostRequestResponseToJSON(value?: ApiVideoVideoIdWatchLinkConditionResponsePostRequestResponse | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'email': value.email,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * hopper\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport type { ApiVideoVideoIdWatchLinkConditionResponsePostRequestResponse } from './ApiVideoVideoIdWatchLinkConditionResponsePostRequestResponse';\nimport {\n ApiVideoVideoIdWatchLinkConditionResponsePostRequestResponseFromJSON,\n ApiVideoVideoIdWatchLinkConditionResponsePostRequestResponseFromJSONTyped,\n ApiVideoVideoIdWatchLinkConditionResponsePostRequestResponseToJSON,\n} from './ApiVideoVideoIdWatchLinkConditionResponsePostRequestResponse';\n\n/**\n * \n * @export\n * @interface ApiVideoVideoIdWatchLinkConditionResponsePostRequest\n */\nexport interface ApiVideoVideoIdWatchLinkConditionResponsePostRequest {\n /**\n * \n * @type {ApiVideoVideoIdWatchLinkConditionResponsePostRequestResponse}\n * @memberof ApiVideoVideoIdWatchLinkConditionResponsePostRequest\n */\n response?: ApiVideoVideoIdWatchLinkConditionResponsePostRequestResponse;\n}\n\n/**\n * Check if a given object implements the ApiVideoVideoIdWatchLinkConditionResponsePostRequest interface.\n */\nexport function instanceOfApiVideoVideoIdWatchLinkConditionResponsePostRequest(value: object): boolean {\n let isInstance = true;\n\n return isInstance;\n}\n\nexport function ApiVideoVideoIdWatchLinkConditionResponsePostRequestFromJSON(json: any): ApiVideoVideoIdWatchLinkConditionResponsePostRequest {\n return ApiVideoVideoIdWatchLinkConditionResponsePostRequestFromJSONTyped(json, false);\n}\n\nexport function ApiVideoVideoIdWatchLinkConditionResponsePostRequestFromJSONTyped(json: any, ignoreDiscriminator: boolean): ApiVideoVideoIdWatchLinkConditionResponsePostRequest {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'response': !exists(json, 'response') ? undefined : ApiVideoVideoIdWatchLinkConditionResponsePostRequestResponseFromJSON(json['response']),\n };\n}\n\nexport function ApiVideoVideoIdWatchLinkConditionResponsePostRequestToJSON(value?: ApiVideoVideoIdWatchLinkConditionResponsePostRequest | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'response': ApiVideoVideoIdWatchLinkConditionResponsePostRequestResponseToJSON(value.response),\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * hopper\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface ApiVideoVideoIdWatchLinkGet200ResponseCondition\n */\nexport interface ApiVideoVideoIdWatchLinkGet200ResponseCondition {\n /**\n * \n * @type {boolean}\n * @memberof ApiVideoVideoIdWatchLinkGet200ResponseCondition\n */\n inputEmail?: boolean;\n}\n\n/**\n * Check if a given object implements the ApiVideoVideoIdWatchLinkGet200ResponseCondition interface.\n */\nexport function instanceOfApiVideoVideoIdWatchLinkGet200ResponseCondition(value: object): boolean {\n let isInstance = true;\n\n return isInstance;\n}\n\nexport function ApiVideoVideoIdWatchLinkGet200ResponseConditionFromJSON(json: any): ApiVideoVideoIdWatchLinkGet200ResponseCondition {\n return ApiVideoVideoIdWatchLinkGet200ResponseConditionFromJSONTyped(json, false);\n}\n\nexport function ApiVideoVideoIdWatchLinkGet200ResponseConditionFromJSONTyped(json: any, ignoreDiscriminator: boolean): ApiVideoVideoIdWatchLinkGet200ResponseCondition {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'inputEmail': !exists(json, 'inputEmail') ? undefined : json['inputEmail'],\n };\n}\n\nexport function ApiVideoVideoIdWatchLinkGet200ResponseConditionToJSON(value?: ApiVideoVideoIdWatchLinkGet200ResponseCondition | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'inputEmail': value.inputEmail,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * hopper\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport type { ApiVideoVideoIdWatchLinkGet200ResponseCondition } from './ApiVideoVideoIdWatchLinkGet200ResponseCondition';\nimport {\n ApiVideoVideoIdWatchLinkGet200ResponseConditionFromJSON,\n ApiVideoVideoIdWatchLinkGet200ResponseConditionFromJSONTyped,\n ApiVideoVideoIdWatchLinkGet200ResponseConditionToJSON,\n} from './ApiVideoVideoIdWatchLinkGet200ResponseCondition';\nimport type { ApiVideoVideoIdWatchLinkGet200ResponseMembersInner } from './ApiVideoVideoIdWatchLinkGet200ResponseMembersInner';\nimport {\n ApiVideoVideoIdWatchLinkGet200ResponseMembersInnerFromJSON,\n ApiVideoVideoIdWatchLinkGet200ResponseMembersInnerFromJSONTyped,\n ApiVideoVideoIdWatchLinkGet200ResponseMembersInnerToJSON,\n} from './ApiVideoVideoIdWatchLinkGet200ResponseMembersInner';\n\n/**\n * \n * @export\n * @interface ApiVideoVideoIdWatchLinkGet200Response\n */\nexport interface ApiVideoVideoIdWatchLinkGet200Response {\n /**\n * \n * @type {number}\n * @memberof ApiVideoVideoIdWatchLinkGet200Response\n */\n videoId?: number;\n /**\n * \n * @type {string}\n * @memberof ApiVideoVideoIdWatchLinkGet200Response\n */\n typeName?: string;\n /**\n * \n * @type {string}\n * @memberof ApiVideoVideoIdWatchLinkGet200Response\n */\n uniqKey?: string;\n /**\n * \n * @type {Array}\n * @memberof ApiVideoVideoIdWatchLinkGet200Response\n */\n members?: Array;\n /**\n * \n * @type {ApiVideoVideoIdWatchLinkGet200ResponseCondition}\n * @memberof ApiVideoVideoIdWatchLinkGet200Response\n */\n condition?: ApiVideoVideoIdWatchLinkGet200ResponseCondition | null;\n}\n\n/**\n * Check if a given object implements the ApiVideoVideoIdWatchLinkGet200Response interface.\n */\nexport function instanceOfApiVideoVideoIdWatchLinkGet200Response(value: object): boolean {\n let isInstance = true;\n\n return isInstance;\n}\n\nexport function ApiVideoVideoIdWatchLinkGet200ResponseFromJSON(json: any): ApiVideoVideoIdWatchLinkGet200Response {\n return ApiVideoVideoIdWatchLinkGet200ResponseFromJSONTyped(json, false);\n}\n\nexport function ApiVideoVideoIdWatchLinkGet200ResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): ApiVideoVideoIdWatchLinkGet200Response {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'videoId': !exists(json, 'videoId') ? undefined : json['videoId'],\n 'typeName': !exists(json, 'typeName') ? undefined : json['typeName'],\n 'uniqKey': !exists(json, 'uniqKey') ? undefined : json['uniqKey'],\n 'members': !exists(json, 'members') ? undefined : ((json['members'] as Array).map(ApiVideoVideoIdWatchLinkGet200ResponseMembersInnerFromJSON)),\n 'condition': !exists(json, 'condition') ? undefined : ApiVideoVideoIdWatchLinkGet200ResponseConditionFromJSON(json['condition']),\n };\n}\n\nexport function ApiVideoVideoIdWatchLinkGet200ResponseToJSON(value?: ApiVideoVideoIdWatchLinkGet200Response | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'videoId': value.videoId,\n 'typeName': value.typeName,\n 'uniqKey': value.uniqKey,\n 'members': value.members === undefined ? undefined : ((value.members as Array).map(ApiVideoVideoIdWatchLinkGet200ResponseMembersInnerToJSON)),\n 'condition': ApiVideoVideoIdWatchLinkGet200ResponseConditionToJSON(value.condition),\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * hopper\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface ApiVideoVideoIdWatchLinkPatch200ResponseCondition\n */\nexport interface ApiVideoVideoIdWatchLinkPatch200ResponseCondition {\n /**\n * \n * @type {boolean}\n * @memberof ApiVideoVideoIdWatchLinkPatch200ResponseCondition\n */\n inputEmail?: boolean;\n}\n\n/**\n * Check if a given object implements the ApiVideoVideoIdWatchLinkPatch200ResponseCondition interface.\n */\nexport function instanceOfApiVideoVideoIdWatchLinkPatch200ResponseCondition(value: object): boolean {\n let isInstance = true;\n\n return isInstance;\n}\n\nexport function ApiVideoVideoIdWatchLinkPatch200ResponseConditionFromJSON(json: any): ApiVideoVideoIdWatchLinkPatch200ResponseCondition {\n return ApiVideoVideoIdWatchLinkPatch200ResponseConditionFromJSONTyped(json, false);\n}\n\nexport function ApiVideoVideoIdWatchLinkPatch200ResponseConditionFromJSONTyped(json: any, ignoreDiscriminator: boolean): ApiVideoVideoIdWatchLinkPatch200ResponseCondition {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'inputEmail': !exists(json, 'inputEmail') ? undefined : json['inputEmail'],\n };\n}\n\nexport function ApiVideoVideoIdWatchLinkPatch200ResponseConditionToJSON(value?: ApiVideoVideoIdWatchLinkPatch200ResponseCondition | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'inputEmail': value.inputEmail,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * hopper\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport type { ApiVideoVideoIdWatchLinkGet200ResponseMembersInner } from './ApiVideoVideoIdWatchLinkGet200ResponseMembersInner';\nimport {\n ApiVideoVideoIdWatchLinkGet200ResponseMembersInnerFromJSON,\n ApiVideoVideoIdWatchLinkGet200ResponseMembersInnerFromJSONTyped,\n ApiVideoVideoIdWatchLinkGet200ResponseMembersInnerToJSON,\n} from './ApiVideoVideoIdWatchLinkGet200ResponseMembersInner';\nimport type { ApiVideoVideoIdWatchLinkPatch200ResponseCondition } from './ApiVideoVideoIdWatchLinkPatch200ResponseCondition';\nimport {\n ApiVideoVideoIdWatchLinkPatch200ResponseConditionFromJSON,\n ApiVideoVideoIdWatchLinkPatch200ResponseConditionFromJSONTyped,\n ApiVideoVideoIdWatchLinkPatch200ResponseConditionToJSON,\n} from './ApiVideoVideoIdWatchLinkPatch200ResponseCondition';\n\n/**\n * \n * @export\n * @interface ApiVideoVideoIdWatchLinkPatch200Response\n */\nexport interface ApiVideoVideoIdWatchLinkPatch200Response {\n /**\n * \n * @type {number}\n * @memberof ApiVideoVideoIdWatchLinkPatch200Response\n */\n videoId?: number;\n /**\n * \n * @type {string}\n * @memberof ApiVideoVideoIdWatchLinkPatch200Response\n */\n typeName?: string;\n /**\n * \n * @type {string}\n * @memberof ApiVideoVideoIdWatchLinkPatch200Response\n */\n uniqKey?: string;\n /**\n * \n * @type {Array}\n * @memberof ApiVideoVideoIdWatchLinkPatch200Response\n */\n members?: Array;\n /**\n * \n * @type {ApiVideoVideoIdWatchLinkPatch200ResponseCondition}\n * @memberof ApiVideoVideoIdWatchLinkPatch200Response\n */\n condition?: ApiVideoVideoIdWatchLinkPatch200ResponseCondition;\n}\n\n/**\n * Check if a given object implements the ApiVideoVideoIdWatchLinkPatch200Response interface.\n */\nexport function instanceOfApiVideoVideoIdWatchLinkPatch200Response(value: object): boolean {\n let isInstance = true;\n\n return isInstance;\n}\n\nexport function ApiVideoVideoIdWatchLinkPatch200ResponseFromJSON(json: any): ApiVideoVideoIdWatchLinkPatch200Response {\n return ApiVideoVideoIdWatchLinkPatch200ResponseFromJSONTyped(json, false);\n}\n\nexport function ApiVideoVideoIdWatchLinkPatch200ResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): ApiVideoVideoIdWatchLinkPatch200Response {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'videoId': !exists(json, 'videoId') ? undefined : json['videoId'],\n 'typeName': !exists(json, 'typeName') ? undefined : json['typeName'],\n 'uniqKey': !exists(json, 'uniqKey') ? undefined : json['uniqKey'],\n 'members': !exists(json, 'members') ? undefined : ((json['members'] as Array).map(ApiVideoVideoIdWatchLinkGet200ResponseMembersInnerFromJSON)),\n 'condition': !exists(json, 'condition') ? undefined : ApiVideoVideoIdWatchLinkPatch200ResponseConditionFromJSON(json['condition']),\n };\n}\n\nexport function ApiVideoVideoIdWatchLinkPatch200ResponseToJSON(value?: ApiVideoVideoIdWatchLinkPatch200Response | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'videoId': value.videoId,\n 'typeName': value.typeName,\n 'uniqKey': value.uniqKey,\n 'members': value.members === undefined ? undefined : ((value.members as Array).map(ApiVideoVideoIdWatchLinkGet200ResponseMembersInnerToJSON)),\n 'condition': ApiVideoVideoIdWatchLinkPatch200ResponseConditionToJSON(value.condition),\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * hopper\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface ApiVideoVideoIdWatchLinkPatchRequestCondition\n */\nexport interface ApiVideoVideoIdWatchLinkPatchRequestCondition {\n /**\n * \n * @type {boolean}\n * @memberof ApiVideoVideoIdWatchLinkPatchRequestCondition\n */\n inputEmail?: boolean;\n}\n\n/**\n * Check if a given object implements the ApiVideoVideoIdWatchLinkPatchRequestCondition interface.\n */\nexport function instanceOfApiVideoVideoIdWatchLinkPatchRequestCondition(value: object): boolean {\n let isInstance = true;\n\n return isInstance;\n}\n\nexport function ApiVideoVideoIdWatchLinkPatchRequestConditionFromJSON(json: any): ApiVideoVideoIdWatchLinkPatchRequestCondition {\n return ApiVideoVideoIdWatchLinkPatchRequestConditionFromJSONTyped(json, false);\n}\n\nexport function ApiVideoVideoIdWatchLinkPatchRequestConditionFromJSONTyped(json: any, ignoreDiscriminator: boolean): ApiVideoVideoIdWatchLinkPatchRequestCondition {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'inputEmail': !exists(json, 'input_email') ? undefined : json['input_email'],\n };\n}\n\nexport function ApiVideoVideoIdWatchLinkPatchRequestConditionToJSON(value?: ApiVideoVideoIdWatchLinkPatchRequestCondition | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'input_email': value.inputEmail,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * hopper\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport type { ApiVideoVideoIdWatchLinkPatchRequestCondition } from './ApiVideoVideoIdWatchLinkPatchRequestCondition';\nimport {\n ApiVideoVideoIdWatchLinkPatchRequestConditionFromJSON,\n ApiVideoVideoIdWatchLinkPatchRequestConditionFromJSONTyped,\n ApiVideoVideoIdWatchLinkPatchRequestConditionToJSON,\n} from './ApiVideoVideoIdWatchLinkPatchRequestCondition';\n\n/**\n * \n * @export\n * @interface ApiVideoVideoIdWatchLinkPatchRequest\n */\nexport interface ApiVideoVideoIdWatchLinkPatchRequest {\n /**\n * \n * @type {string}\n * @memberof ApiVideoVideoIdWatchLinkPatchRequest\n */\n type?: string;\n /**\n * \n * @type {Array}\n * @memberof ApiVideoVideoIdWatchLinkPatchRequest\n */\n emails?: Array;\n /**\n * \n * @type {ApiVideoVideoIdWatchLinkPatchRequestCondition}\n * @memberof ApiVideoVideoIdWatchLinkPatchRequest\n */\n condition?: ApiVideoVideoIdWatchLinkPatchRequestCondition;\n}\n\n/**\n * Check if a given object implements the ApiVideoVideoIdWatchLinkPatchRequest interface.\n */\nexport function instanceOfApiVideoVideoIdWatchLinkPatchRequest(value: object): boolean {\n let isInstance = true;\n\n return isInstance;\n}\n\nexport function ApiVideoVideoIdWatchLinkPatchRequestFromJSON(json: any): ApiVideoVideoIdWatchLinkPatchRequest {\n return ApiVideoVideoIdWatchLinkPatchRequestFromJSONTyped(json, false);\n}\n\nexport function ApiVideoVideoIdWatchLinkPatchRequestFromJSONTyped(json: any, ignoreDiscriminator: boolean): ApiVideoVideoIdWatchLinkPatchRequest {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'type': !exists(json, 'type') ? undefined : json['type'],\n 'emails': !exists(json, 'emails') ? undefined : json['emails'],\n 'condition': !exists(json, 'condition') ? undefined : ApiVideoVideoIdWatchLinkPatchRequestConditionFromJSON(json['condition']),\n };\n}\n\nexport function ApiVideoVideoIdWatchLinkPatchRequestToJSON(value?: ApiVideoVideoIdWatchLinkPatchRequest | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'type': value.type,\n 'emails': value.emails,\n 'condition': ApiVideoVideoIdWatchLinkPatchRequestConditionToJSON(value.condition),\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * hopper\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport type { ApiScenesIdPutRequestAudioData } from './ApiScenesIdPutRequestAudioData';\nimport {\n ApiScenesIdPutRequestAudioDataFromJSON,\n ApiScenesIdPutRequestAudioDataFromJSONTyped,\n ApiScenesIdPutRequestAudioDataToJSON,\n} from './ApiScenesIdPutRequestAudioData';\n\n/**\n * \n * @export\n * @interface ApiWordPronounciationsAffectDesignGet200ResponseDataInner\n */\nexport interface ApiWordPronounciationsAffectDesignGet200ResponseDataInner {\n /**\n * \n * @type {number}\n * @memberof ApiWordPronounciationsAffectDesignGet200ResponseDataInner\n */\n id?: number;\n /**\n * \n * @type {number}\n * @memberof ApiWordPronounciationsAffectDesignGet200ResponseDataInner\n */\n designId?: number;\n /**\n * \n * @type {string}\n * @memberof ApiWordPronounciationsAffectDesignGet200ResponseDataInner\n */\n textHtml?: string;\n /**\n * \n * @type {ApiScenesIdPutRequestAudioData}\n * @memberof ApiWordPronounciationsAffectDesignGet200ResponseDataInner\n */\n audioData?: ApiScenesIdPutRequestAudioData;\n /**\n * \n * @type {any}\n * @memberof ApiWordPronounciationsAffectDesignGet200ResponseDataInner\n */\n imageBlobName?: any | null;\n /**\n * \n * @type {number}\n * @memberof ApiWordPronounciationsAffectDesignGet200ResponseDataInner\n */\n rowOrder?: number;\n /**\n * \n * @type {string}\n * @memberof ApiWordPronounciationsAffectDesignGet200ResponseDataInner\n */\n createdAt?: string;\n /**\n * \n * @type {string}\n * @memberof ApiWordPronounciationsAffectDesignGet200ResponseDataInner\n */\n updatedAt?: string;\n}\n\n/**\n * Check if a given object implements the ApiWordPronounciationsAffectDesignGet200ResponseDataInner interface.\n */\nexport function instanceOfApiWordPronounciationsAffectDesignGet200ResponseDataInner(value: object): boolean {\n let isInstance = true;\n\n return isInstance;\n}\n\nexport function ApiWordPronounciationsAffectDesignGet200ResponseDataInnerFromJSON(json: any): ApiWordPronounciationsAffectDesignGet200ResponseDataInner {\n return ApiWordPronounciationsAffectDesignGet200ResponseDataInnerFromJSONTyped(json, false);\n}\n\nexport function ApiWordPronounciationsAffectDesignGet200ResponseDataInnerFromJSONTyped(json: any, ignoreDiscriminator: boolean): ApiWordPronounciationsAffectDesignGet200ResponseDataInner {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'id': !exists(json, 'id') ? undefined : json['id'],\n 'designId': !exists(json, 'design_id') ? undefined : json['design_id'],\n 'textHtml': !exists(json, 'text_html') ? undefined : json['text_html'],\n 'audioData': !exists(json, 'audio_data') ? undefined : ApiScenesIdPutRequestAudioDataFromJSON(json['audio_data']),\n 'imageBlobName': !exists(json, 'image_blob_name') ? undefined : json['image_blob_name'],\n 'rowOrder': !exists(json, 'row_order') ? undefined : json['row_order'],\n 'createdAt': !exists(json, 'created_at') ? undefined : json['created_at'],\n 'updatedAt': !exists(json, 'updated_at') ? undefined : json['updated_at'],\n };\n}\n\nexport function ApiWordPronounciationsAffectDesignGet200ResponseDataInnerToJSON(value?: ApiWordPronounciationsAffectDesignGet200ResponseDataInner | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'id': value.id,\n 'design_id': value.designId,\n 'text_html': value.textHtml,\n 'audio_data': ApiScenesIdPutRequestAudioDataToJSON(value.audioData),\n 'image_blob_name': value.imageBlobName,\n 'row_order': value.rowOrder,\n 'created_at': value.createdAt,\n 'updated_at': value.updatedAt,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * hopper\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport type { ApiWordPronounciationsAffectDesignGet200ResponseDataInner } from './ApiWordPronounciationsAffectDesignGet200ResponseDataInner';\nimport {\n ApiWordPronounciationsAffectDesignGet200ResponseDataInnerFromJSON,\n ApiWordPronounciationsAffectDesignGet200ResponseDataInnerFromJSONTyped,\n ApiWordPronounciationsAffectDesignGet200ResponseDataInnerToJSON,\n} from './ApiWordPronounciationsAffectDesignGet200ResponseDataInner';\n\n/**\n * \n * @export\n * @interface ApiWordPronounciationsAffectDesignGet200Response\n */\nexport interface ApiWordPronounciationsAffectDesignGet200Response {\n /**\n * \n * @type {Array}\n * @memberof ApiWordPronounciationsAffectDesignGet200Response\n */\n data?: Array;\n}\n\n/**\n * Check if a given object implements the ApiWordPronounciationsAffectDesignGet200Response interface.\n */\nexport function instanceOfApiWordPronounciationsAffectDesignGet200Response(value: object): boolean {\n let isInstance = true;\n\n return isInstance;\n}\n\nexport function ApiWordPronounciationsAffectDesignGet200ResponseFromJSON(json: any): ApiWordPronounciationsAffectDesignGet200Response {\n return ApiWordPronounciationsAffectDesignGet200ResponseFromJSONTyped(json, false);\n}\n\nexport function ApiWordPronounciationsAffectDesignGet200ResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): ApiWordPronounciationsAffectDesignGet200Response {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'data': !exists(json, 'data') ? undefined : ((json['data'] as Array).map(ApiWordPronounciationsAffectDesignGet200ResponseDataInnerFromJSON)),\n };\n}\n\nexport function ApiWordPronounciationsAffectDesignGet200ResponseToJSON(value?: ApiWordPronounciationsAffectDesignGet200Response | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'data': value.data === undefined ? undefined : ((value.data as Array).map(ApiWordPronounciationsAffectDesignGet200ResponseDataInnerToJSON)),\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * hopper\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface ApiWordPronounciationsIdGet200Response\n */\nexport interface ApiWordPronounciationsIdGet200Response {\n /**\n * \n * @type {number}\n * @memberof ApiWordPronounciationsIdGet200Response\n */\n id?: number;\n /**\n * \n * @type {string}\n * @memberof ApiWordPronounciationsIdGet200Response\n */\n literal?: string;\n /**\n * \n * @type {string}\n * @memberof ApiWordPronounciationsIdGet200Response\n */\n phoneme?: string;\n /**\n * \n * @type {any}\n * @memberof ApiWordPronounciationsIdGet200Response\n */\n lastModifiedAt?: any | null;\n /**\n * \n * @type {any}\n * @memberof ApiWordPronounciationsIdGet200Response\n */\n lastModifiedBy?: any | null;\n}\n\n/**\n * Check if a given object implements the ApiWordPronounciationsIdGet200Response interface.\n */\nexport function instanceOfApiWordPronounciationsIdGet200Response(value: object): boolean {\n let isInstance = true;\n\n return isInstance;\n}\n\nexport function ApiWordPronounciationsIdGet200ResponseFromJSON(json: any): ApiWordPronounciationsIdGet200Response {\n return ApiWordPronounciationsIdGet200ResponseFromJSONTyped(json, false);\n}\n\nexport function ApiWordPronounciationsIdGet200ResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): ApiWordPronounciationsIdGet200Response {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'id': !exists(json, 'id') ? undefined : json['id'],\n 'literal': !exists(json, 'literal') ? undefined : json['literal'],\n 'phoneme': !exists(json, 'phoneme') ? undefined : json['phoneme'],\n 'lastModifiedAt': !exists(json, 'lastModifiedAt') ? undefined : json['lastModifiedAt'],\n 'lastModifiedBy': !exists(json, 'lastModifiedBy') ? undefined : json['lastModifiedBy'],\n };\n}\n\nexport function ApiWordPronounciationsIdGet200ResponseToJSON(value?: ApiWordPronounciationsIdGet200Response | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'id': value.id,\n 'literal': value.literal,\n 'phoneme': value.phoneme,\n 'lastModifiedAt': value.lastModifiedAt,\n 'lastModifiedBy': value.lastModifiedBy,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * hopper\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface ApiWordPronounciationsIdPut200ResponseLastModifiedBy\n */\nexport interface ApiWordPronounciationsIdPut200ResponseLastModifiedBy {\n /**\n * \n * @type {string}\n * @memberof ApiWordPronounciationsIdPut200ResponseLastModifiedBy\n */\n name?: string;\n /**\n * \n * @type {string}\n * @memberof ApiWordPronounciationsIdPut200ResponseLastModifiedBy\n */\n imageUrl?: string;\n}\n\n/**\n * Check if a given object implements the ApiWordPronounciationsIdPut200ResponseLastModifiedBy interface.\n */\nexport function instanceOfApiWordPronounciationsIdPut200ResponseLastModifiedBy(value: object): boolean {\n let isInstance = true;\n\n return isInstance;\n}\n\nexport function ApiWordPronounciationsIdPut200ResponseLastModifiedByFromJSON(json: any): ApiWordPronounciationsIdPut200ResponseLastModifiedBy {\n return ApiWordPronounciationsIdPut200ResponseLastModifiedByFromJSONTyped(json, false);\n}\n\nexport function ApiWordPronounciationsIdPut200ResponseLastModifiedByFromJSONTyped(json: any, ignoreDiscriminator: boolean): ApiWordPronounciationsIdPut200ResponseLastModifiedBy {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'name': !exists(json, 'name') ? undefined : json['name'],\n 'imageUrl': !exists(json, 'imageUrl') ? undefined : json['imageUrl'],\n };\n}\n\nexport function ApiWordPronounciationsIdPut200ResponseLastModifiedByToJSON(value?: ApiWordPronounciationsIdPut200ResponseLastModifiedBy | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'name': value.name,\n 'imageUrl': value.imageUrl,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * hopper\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport type { ApiWordPronounciationsIdPut200ResponseLastModifiedBy } from './ApiWordPronounciationsIdPut200ResponseLastModifiedBy';\nimport {\n ApiWordPronounciationsIdPut200ResponseLastModifiedByFromJSON,\n ApiWordPronounciationsIdPut200ResponseLastModifiedByFromJSONTyped,\n ApiWordPronounciationsIdPut200ResponseLastModifiedByToJSON,\n} from './ApiWordPronounciationsIdPut200ResponseLastModifiedBy';\n\n/**\n * \n * @export\n * @interface ApiWordPronounciationsIdPut200Response\n */\nexport interface ApiWordPronounciationsIdPut200Response {\n /**\n * \n * @type {number}\n * @memberof ApiWordPronounciationsIdPut200Response\n */\n id?: number;\n /**\n * \n * @type {string}\n * @memberof ApiWordPronounciationsIdPut200Response\n */\n literal?: string;\n /**\n * \n * @type {string}\n * @memberof ApiWordPronounciationsIdPut200Response\n */\n phoneme?: string;\n /**\n * \n * @type {string}\n * @memberof ApiWordPronounciationsIdPut200Response\n */\n lastModifiedAt?: string;\n /**\n * \n * @type {ApiWordPronounciationsIdPut200ResponseLastModifiedBy}\n * @memberof ApiWordPronounciationsIdPut200Response\n */\n lastModifiedBy?: ApiWordPronounciationsIdPut200ResponseLastModifiedBy;\n}\n\n/**\n * Check if a given object implements the ApiWordPronounciationsIdPut200Response interface.\n */\nexport function instanceOfApiWordPronounciationsIdPut200Response(value: object): boolean {\n let isInstance = true;\n\n return isInstance;\n}\n\nexport function ApiWordPronounciationsIdPut200ResponseFromJSON(json: any): ApiWordPronounciationsIdPut200Response {\n return ApiWordPronounciationsIdPut200ResponseFromJSONTyped(json, false);\n}\n\nexport function ApiWordPronounciationsIdPut200ResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): ApiWordPronounciationsIdPut200Response {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'id': !exists(json, 'id') ? undefined : json['id'],\n 'literal': !exists(json, 'literal') ? undefined : json['literal'],\n 'phoneme': !exists(json, 'phoneme') ? undefined : json['phoneme'],\n 'lastModifiedAt': !exists(json, 'lastModifiedAt') ? undefined : json['lastModifiedAt'],\n 'lastModifiedBy': !exists(json, 'lastModifiedBy') ? undefined : ApiWordPronounciationsIdPut200ResponseLastModifiedByFromJSON(json['lastModifiedBy']),\n };\n}\n\nexport function ApiWordPronounciationsIdPut200ResponseToJSON(value?: ApiWordPronounciationsIdPut200Response | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'id': value.id,\n 'literal': value.literal,\n 'phoneme': value.phoneme,\n 'lastModifiedAt': value.lastModifiedAt,\n 'lastModifiedBy': ApiWordPronounciationsIdPut200ResponseLastModifiedByToJSON(value.lastModifiedBy),\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * hopper\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface ApiWordPronounciationsIdPutRequest\n */\nexport interface ApiWordPronounciationsIdPutRequest {\n /**\n * \n * @type {string}\n * @memberof ApiWordPronounciationsIdPutRequest\n */\n phoneme?: string;\n /**\n * \n * @type {string}\n * @memberof ApiWordPronounciationsIdPutRequest\n */\n literal?: string;\n}\n\n/**\n * Check if a given object implements the ApiWordPronounciationsIdPutRequest interface.\n */\nexport function instanceOfApiWordPronounciationsIdPutRequest(value: object): boolean {\n let isInstance = true;\n\n return isInstance;\n}\n\nexport function ApiWordPronounciationsIdPutRequestFromJSON(json: any): ApiWordPronounciationsIdPutRequest {\n return ApiWordPronounciationsIdPutRequestFromJSONTyped(json, false);\n}\n\nexport function ApiWordPronounciationsIdPutRequestFromJSONTyped(json: any, ignoreDiscriminator: boolean): ApiWordPronounciationsIdPutRequest {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'phoneme': !exists(json, 'phoneme') ? undefined : json['phoneme'],\n 'literal': !exists(json, 'literal') ? undefined : json['literal'],\n };\n}\n\nexport function ApiWordPronounciationsIdPutRequestToJSON(value?: ApiWordPronounciationsIdPutRequest | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'phoneme': value.phoneme,\n 'literal': value.literal,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * hopper\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface ApiWordPronounciationsPostRequest\n */\nexport interface ApiWordPronounciationsPostRequest {\n /**\n * \n * @type {string}\n * @memberof ApiWordPronounciationsPostRequest\n */\n literal?: string;\n /**\n * \n * @type {string}\n * @memberof ApiWordPronounciationsPostRequest\n */\n phoneme?: string;\n}\n\n/**\n * Check if a given object implements the ApiWordPronounciationsPostRequest interface.\n */\nexport function instanceOfApiWordPronounciationsPostRequest(value: object): boolean {\n let isInstance = true;\n\n return isInstance;\n}\n\nexport function ApiWordPronounciationsPostRequestFromJSON(json: any): ApiWordPronounciationsPostRequest {\n return ApiWordPronounciationsPostRequestFromJSONTyped(json, false);\n}\n\nexport function ApiWordPronounciationsPostRequestFromJSONTyped(json: any, ignoreDiscriminator: boolean): ApiWordPronounciationsPostRequest {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'literal': !exists(json, 'literal') ? undefined : json['literal'],\n 'phoneme': !exists(json, 'phoneme') ? undefined : json['phoneme'],\n };\n}\n\nexport function ApiWordPronounciationsPostRequestToJSON(value?: ApiWordPronounciationsPostRequest | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'literal': value.literal,\n 'phoneme': value.phoneme,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * hopper\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\nimport * as runtime from '../runtime';\nimport type {\n ApiAcademyCoursesIdGet200Response,\n ApiAcademyCoursesIdPatch202Response,\n ApiAcademyCoursesIdPatchRequest,\n ApiAcademyCoursesPost201Response,\n ApiAcademyCoursesPostRequest,\n} from '../models';\nimport {\n ApiAcademyCoursesIdGet200ResponseFromJSON,\n ApiAcademyCoursesIdGet200ResponseToJSON,\n ApiAcademyCoursesIdPatch202ResponseFromJSON,\n ApiAcademyCoursesIdPatch202ResponseToJSON,\n ApiAcademyCoursesIdPatchRequestFromJSON,\n ApiAcademyCoursesIdPatchRequestToJSON,\n ApiAcademyCoursesPost201ResponseFromJSON,\n ApiAcademyCoursesPost201ResponseToJSON,\n ApiAcademyCoursesPostRequestFromJSON,\n ApiAcademyCoursesPostRequestToJSON,\n} from '../models';\n\nexport interface ApiAcademyCoursesIdDeleteRequest {\n id: number;\n}\n\nexport interface ApiAcademyCoursesIdGetRequest {\n id: number;\n}\n\nexport interface ApiAcademyCoursesIdPatchOperationRequest {\n id: number;\n apiAcademyCoursesIdPatchRequest?: ApiAcademyCoursesIdPatchRequest;\n}\n\nexport interface ApiAcademyCoursesPostOperationRequest {\n apiAcademyCoursesPostRequest?: ApiAcademyCoursesPostRequest;\n}\n\n/**\n * \n */\nexport class ApiAcademyCourseApi extends runtime.BaseAPI {\n\n /**\n * destroy\n */\n async apiAcademyCoursesIdDeleteRaw(requestParameters: ApiAcademyCoursesIdDeleteRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError('id','Required parameter requestParameters.id was null or undefined when calling apiAcademyCoursesIdDelete.');\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/api/academy/courses/{id}`.replace(`{${\"id\"}}`, encodeURIComponent(String(requestParameters.id))),\n method: 'DELETE',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n if (this.isJsonMime(response.headers.get('content-type'))) {\n return new runtime.JSONApiResponse(response);\n } else {\n return new runtime.TextApiResponse(response) as any;\n }\n }\n\n /**\n * destroy\n */\n async apiAcademyCoursesIdDelete(requestParameters: ApiAcademyCoursesIdDeleteRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise {\n const response = await this.apiAcademyCoursesIdDeleteRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * show\n */\n async apiAcademyCoursesIdGetRaw(requestParameters: ApiAcademyCoursesIdGetRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError('id','Required parameter requestParameters.id was null or undefined when calling apiAcademyCoursesIdGet.');\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/api/academy/courses/{id}`.replace(`{${\"id\"}}`, encodeURIComponent(String(requestParameters.id))),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => ApiAcademyCoursesIdGet200ResponseFromJSON(jsonValue));\n }\n\n /**\n * show\n */\n async apiAcademyCoursesIdGet(requestParameters: ApiAcademyCoursesIdGetRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise {\n const response = await this.apiAcademyCoursesIdGetRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * update\n */\n async apiAcademyCoursesIdPatchRaw(requestParameters: ApiAcademyCoursesIdPatchOperationRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError('id','Required parameter requestParameters.id was null or undefined when calling apiAcademyCoursesIdPatch.');\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n const response = await this.request({\n path: `/api/academy/courses/{id}`.replace(`{${\"id\"}}`, encodeURIComponent(String(requestParameters.id))),\n method: 'PATCH',\n headers: headerParameters,\n query: queryParameters,\n body: ApiAcademyCoursesIdPatchRequestToJSON(requestParameters.apiAcademyCoursesIdPatchRequest),\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => ApiAcademyCoursesIdPatch202ResponseFromJSON(jsonValue));\n }\n\n /**\n * update\n */\n async apiAcademyCoursesIdPatch(requestParameters: ApiAcademyCoursesIdPatchOperationRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise {\n const response = await this.apiAcademyCoursesIdPatchRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * create\n */\n async apiAcademyCoursesPostRaw(requestParameters: ApiAcademyCoursesPostOperationRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n const response = await this.request({\n path: `/api/academy/courses`,\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n body: ApiAcademyCoursesPostRequestToJSON(requestParameters.apiAcademyCoursesPostRequest),\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => ApiAcademyCoursesPost201ResponseFromJSON(jsonValue));\n }\n\n /**\n * create\n */\n async apiAcademyCoursesPost(requestParameters: ApiAcademyCoursesPostOperationRequest = {}, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise {\n const response = await this.apiAcademyCoursesPostRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * hopper\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\nimport * as runtime from '../runtime';\nimport type {\n ApiAcademyCourseCategoriesIdDelete422Response,\n ApiAcademyCourseCategoriesIdGet200Response,\n ApiAcademyCourseCategoriesIdPatch202Response,\n ApiAcademyCourseCategoriesIdPatchRequest,\n ApiAcademyCourseCategoriesPost201Response,\n ApiAcademyCourseCategoriesPostRequest,\n} from '../models';\nimport {\n ApiAcademyCourseCategoriesIdDelete422ResponseFromJSON,\n ApiAcademyCourseCategoriesIdDelete422ResponseToJSON,\n ApiAcademyCourseCategoriesIdGet200ResponseFromJSON,\n ApiAcademyCourseCategoriesIdGet200ResponseToJSON,\n ApiAcademyCourseCategoriesIdPatch202ResponseFromJSON,\n ApiAcademyCourseCategoriesIdPatch202ResponseToJSON,\n ApiAcademyCourseCategoriesIdPatchRequestFromJSON,\n ApiAcademyCourseCategoriesIdPatchRequestToJSON,\n ApiAcademyCourseCategoriesPost201ResponseFromJSON,\n ApiAcademyCourseCategoriesPost201ResponseToJSON,\n ApiAcademyCourseCategoriesPostRequestFromJSON,\n ApiAcademyCourseCategoriesPostRequestToJSON,\n} from '../models';\n\nexport interface ApiAcademyCourseCategoriesIdDeleteRequest {\n id: number;\n}\n\nexport interface ApiAcademyCourseCategoriesIdGetRequest {\n id: number;\n}\n\nexport interface ApiAcademyCourseCategoriesIdPatchOperationRequest {\n id: number;\n apiAcademyCourseCategoriesIdPatchRequest?: ApiAcademyCourseCategoriesIdPatchRequest;\n}\n\nexport interface ApiAcademyCourseCategoriesPostOperationRequest {\n apiAcademyCourseCategoriesPostRequest?: ApiAcademyCourseCategoriesPostRequest;\n}\n\n/**\n * \n */\nexport class ApiAcademyCourseCategoryApi extends runtime.BaseAPI {\n\n /**\n * destroy\n */\n async apiAcademyCourseCategoriesIdDeleteRaw(requestParameters: ApiAcademyCourseCategoriesIdDeleteRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError('id','Required parameter requestParameters.id was null or undefined when calling apiAcademyCourseCategoriesIdDelete.');\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/api/academy/course_categories/{id}`.replace(`{${\"id\"}}`, encodeURIComponent(String(requestParameters.id))),\n method: 'DELETE',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n if (this.isJsonMime(response.headers.get('content-type'))) {\n return new runtime.JSONApiResponse(response);\n } else {\n return new runtime.TextApiResponse(response) as any;\n }\n }\n\n /**\n * destroy\n */\n async apiAcademyCourseCategoriesIdDelete(requestParameters: ApiAcademyCourseCategoriesIdDeleteRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise {\n const response = await this.apiAcademyCourseCategoriesIdDeleteRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * show\n */\n async apiAcademyCourseCategoriesIdGetRaw(requestParameters: ApiAcademyCourseCategoriesIdGetRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError('id','Required parameter requestParameters.id was null or undefined when calling apiAcademyCourseCategoriesIdGet.');\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/api/academy/course_categories/{id}`.replace(`{${\"id\"}}`, encodeURIComponent(String(requestParameters.id))),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => ApiAcademyCourseCategoriesIdGet200ResponseFromJSON(jsonValue));\n }\n\n /**\n * show\n */\n async apiAcademyCourseCategoriesIdGet(requestParameters: ApiAcademyCourseCategoriesIdGetRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise {\n const response = await this.apiAcademyCourseCategoriesIdGetRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * update\n */\n async apiAcademyCourseCategoriesIdPatchRaw(requestParameters: ApiAcademyCourseCategoriesIdPatchOperationRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError('id','Required parameter requestParameters.id was null or undefined when calling apiAcademyCourseCategoriesIdPatch.');\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n const response = await this.request({\n path: `/api/academy/course_categories/{id}`.replace(`{${\"id\"}}`, encodeURIComponent(String(requestParameters.id))),\n method: 'PATCH',\n headers: headerParameters,\n query: queryParameters,\n body: ApiAcademyCourseCategoriesIdPatchRequestToJSON(requestParameters.apiAcademyCourseCategoriesIdPatchRequest),\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => ApiAcademyCourseCategoriesIdPatch202ResponseFromJSON(jsonValue));\n }\n\n /**\n * update\n */\n async apiAcademyCourseCategoriesIdPatch(requestParameters: ApiAcademyCourseCategoriesIdPatchOperationRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise {\n const response = await this.apiAcademyCourseCategoriesIdPatchRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * create\n */\n async apiAcademyCourseCategoriesPostRaw(requestParameters: ApiAcademyCourseCategoriesPostOperationRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n const response = await this.request({\n path: `/api/academy/course_categories`,\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n body: ApiAcademyCourseCategoriesPostRequestToJSON(requestParameters.apiAcademyCourseCategoriesPostRequest),\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => ApiAcademyCourseCategoriesPost201ResponseFromJSON(jsonValue));\n }\n\n /**\n * create\n */\n async apiAcademyCourseCategoriesPost(requestParameters: ApiAcademyCourseCategoriesPostOperationRequest = {}, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise {\n const response = await this.apiAcademyCourseCategoriesPostRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * hopper\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\nimport * as runtime from '../runtime';\nimport type {\n ApiAcademyCourseLessonsIdGet200Response,\n ApiAcademyCourseLessonsIdPatch202Response,\n ApiAcademyCourseLessonsIdPatchRequest,\n ApiAcademyCourseLessonsPost201Response,\n ApiAcademyCourseLessonsPost422Response,\n ApiAcademyCourseLessonsPostRequest,\n} from '../models';\nimport {\n ApiAcademyCourseLessonsIdGet200ResponseFromJSON,\n ApiAcademyCourseLessonsIdGet200ResponseToJSON,\n ApiAcademyCourseLessonsIdPatch202ResponseFromJSON,\n ApiAcademyCourseLessonsIdPatch202ResponseToJSON,\n ApiAcademyCourseLessonsIdPatchRequestFromJSON,\n ApiAcademyCourseLessonsIdPatchRequestToJSON,\n ApiAcademyCourseLessonsPost201ResponseFromJSON,\n ApiAcademyCourseLessonsPost201ResponseToJSON,\n ApiAcademyCourseLessonsPost422ResponseFromJSON,\n ApiAcademyCourseLessonsPost422ResponseToJSON,\n ApiAcademyCourseLessonsPostRequestFromJSON,\n ApiAcademyCourseLessonsPostRequestToJSON,\n} from '../models';\n\nexport interface ApiAcademyCourseLessonsIdDeleteRequest {\n id: number;\n}\n\nexport interface ApiAcademyCourseLessonsIdGetRequest {\n id: number;\n}\n\nexport interface ApiAcademyCourseLessonsIdPatchOperationRequest {\n id: number;\n apiAcademyCourseLessonsIdPatchRequest?: ApiAcademyCourseLessonsIdPatchRequest;\n}\n\nexport interface ApiAcademyCourseLessonsPostOperationRequest {\n apiAcademyCourseLessonsPostRequest?: ApiAcademyCourseLessonsPostRequest;\n}\n\n/**\n * \n */\nexport class ApiAcademyCourseLessonApi extends runtime.BaseAPI {\n\n /**\n * destroy\n */\n async apiAcademyCourseLessonsIdDeleteRaw(requestParameters: ApiAcademyCourseLessonsIdDeleteRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError('id','Required parameter requestParameters.id was null or undefined when calling apiAcademyCourseLessonsIdDelete.');\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/api/academy/course_lessons/{id}`.replace(`{${\"id\"}}`, encodeURIComponent(String(requestParameters.id))),\n method: 'DELETE',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n if (this.isJsonMime(response.headers.get('content-type'))) {\n return new runtime.JSONApiResponse(response);\n } else {\n return new runtime.TextApiResponse(response) as any;\n }\n }\n\n /**\n * destroy\n */\n async apiAcademyCourseLessonsIdDelete(requestParameters: ApiAcademyCourseLessonsIdDeleteRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise {\n const response = await this.apiAcademyCourseLessonsIdDeleteRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * show\n */\n async apiAcademyCourseLessonsIdGetRaw(requestParameters: ApiAcademyCourseLessonsIdGetRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError('id','Required parameter requestParameters.id was null or undefined when calling apiAcademyCourseLessonsIdGet.');\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/api/academy/course_lessons/{id}`.replace(`{${\"id\"}}`, encodeURIComponent(String(requestParameters.id))),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => ApiAcademyCourseLessonsIdGet200ResponseFromJSON(jsonValue));\n }\n\n /**\n * show\n */\n async apiAcademyCourseLessonsIdGet(requestParameters: ApiAcademyCourseLessonsIdGetRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise {\n const response = await this.apiAcademyCourseLessonsIdGetRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * update\n */\n async apiAcademyCourseLessonsIdPatchRaw(requestParameters: ApiAcademyCourseLessonsIdPatchOperationRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError('id','Required parameter requestParameters.id was null or undefined when calling apiAcademyCourseLessonsIdPatch.');\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n const response = await this.request({\n path: `/api/academy/course_lessons/{id}`.replace(`{${\"id\"}}`, encodeURIComponent(String(requestParameters.id))),\n method: 'PATCH',\n headers: headerParameters,\n query: queryParameters,\n body: ApiAcademyCourseLessonsIdPatchRequestToJSON(requestParameters.apiAcademyCourseLessonsIdPatchRequest),\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => ApiAcademyCourseLessonsIdPatch202ResponseFromJSON(jsonValue));\n }\n\n /**\n * update\n */\n async apiAcademyCourseLessonsIdPatch(requestParameters: ApiAcademyCourseLessonsIdPatchOperationRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise {\n const response = await this.apiAcademyCourseLessonsIdPatchRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * create\n */\n async apiAcademyCourseLessonsPostRaw(requestParameters: ApiAcademyCourseLessonsPostOperationRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n const response = await this.request({\n path: `/api/academy/course_lessons`,\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n body: ApiAcademyCourseLessonsPostRequestToJSON(requestParameters.apiAcademyCourseLessonsPostRequest),\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => ApiAcademyCourseLessonsPost201ResponseFromJSON(jsonValue));\n }\n\n /**\n * create\n */\n async apiAcademyCourseLessonsPost(requestParameters: ApiAcademyCourseLessonsPostOperationRequest = {}, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise {\n const response = await this.apiAcademyCourseLessonsPostRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * hopper\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\nimport * as runtime from '../runtime';\nimport type {\n ApiAcademyLogoDelete422Response,\n ApiAcademyLogoGet200Response,\n ApiAcademyLogoPost201Response,\n ApiAcademyLogoPost422Response,\n ApiVideoIdThumbnailPresignGet201Response,\n} from '../models';\nimport {\n ApiAcademyLogoDelete422ResponseFromJSON,\n ApiAcademyLogoDelete422ResponseToJSON,\n ApiAcademyLogoGet200ResponseFromJSON,\n ApiAcademyLogoGet200ResponseToJSON,\n ApiAcademyLogoPost201ResponseFromJSON,\n ApiAcademyLogoPost201ResponseToJSON,\n ApiAcademyLogoPost422ResponseFromJSON,\n ApiAcademyLogoPost422ResponseToJSON,\n ApiVideoIdThumbnailPresignGet201ResponseFromJSON,\n ApiVideoIdThumbnailPresignGet201ResponseToJSON,\n} from '../models';\n\nexport interface ApiAcademyLogoPostRequest {\n assetName?: string;\n assetContainer?: string;\n}\n\n/**\n * \n */\nexport class ApiAcademyLogoApi extends runtime.BaseAPI {\n\n /**\n * destroy\n */\n async apiAcademyLogoDeleteRaw(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/api/academy/logo`,\n method: 'DELETE',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n if (this.isJsonMime(response.headers.get('content-type'))) {\n return new runtime.JSONApiResponse(response);\n } else {\n return new runtime.TextApiResponse(response) as any;\n }\n }\n\n /**\n * destroy\n */\n async apiAcademyLogoDelete(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise {\n const response = await this.apiAcademyLogoDeleteRaw(initOverrides);\n return await response.value();\n }\n\n /**\n * show\n */\n async apiAcademyLogoGetRaw(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/api/academy/logo`,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => ApiAcademyLogoGet200ResponseFromJSON(jsonValue));\n }\n\n /**\n * show\n */\n async apiAcademyLogoGet(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise {\n const response = await this.apiAcademyLogoGetRaw(initOverrides);\n return await response.value();\n }\n\n /**\n * create\n */\n async apiAcademyLogoPostRaw(requestParameters: ApiAcademyLogoPostRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const consumes: runtime.Consume[] = [\n { contentType: 'application/x-www-form-urlencoded' },\n ];\n // @ts-ignore: canConsumeForm may be unused\n const canConsumeForm = runtime.canConsumeForm(consumes);\n\n let formParams: { append(param: string, value: any): any };\n let useForm = false;\n if (useForm) {\n formParams = new FormData();\n } else {\n formParams = new URLSearchParams();\n }\n\n if (requestParameters.assetName !== undefined) {\n formParams.append('asset_name', requestParameters.assetName as any);\n }\n\n if (requestParameters.assetContainer !== undefined) {\n formParams.append('asset_container', requestParameters.assetContainer as any);\n }\n\n const response = await this.request({\n path: `/api/academy/logo`,\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n body: formParams,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => ApiAcademyLogoPost201ResponseFromJSON(jsonValue));\n }\n\n /**\n * create\n */\n async apiAcademyLogoPost(requestParameters: ApiAcademyLogoPostRequest = {}, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise {\n const response = await this.apiAcademyLogoPostRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * presign\n */\n async apiAcademyLogoPresignGetRaw(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/api/academy/logo/presign`,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => ApiVideoIdThumbnailPresignGet201ResponseFromJSON(jsonValue));\n }\n\n /**\n * presign\n */\n async apiAcademyLogoPresignGet(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise {\n const response = await this.apiAcademyLogoPresignGetRaw(initOverrides);\n return await response.value();\n }\n\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * hopper\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\nimport * as runtime from '../runtime';\nimport type {\n ApiAcademyAcademyIdWatchLinkGet200Response,\n ApiAcademyAcademyIdWatchLinkPatchRequest,\n ApiVideoVideoIdWatchLinkPatch422Response,\n} from '../models';\nimport {\n ApiAcademyAcademyIdWatchLinkGet200ResponseFromJSON,\n ApiAcademyAcademyIdWatchLinkGet200ResponseToJSON,\n ApiAcademyAcademyIdWatchLinkPatchRequestFromJSON,\n ApiAcademyAcademyIdWatchLinkPatchRequestToJSON,\n ApiVideoVideoIdWatchLinkPatch422ResponseFromJSON,\n ApiVideoVideoIdWatchLinkPatch422ResponseToJSON,\n} from '../models';\n\nexport interface ApiAcademyAcademyIdWatchLinkGetRequest {\n academyId: number;\n}\n\nexport interface ApiAcademyAcademyIdWatchLinkPatchOperationRequest {\n academyId: number;\n apiAcademyAcademyIdWatchLinkPatchRequest?: ApiAcademyAcademyIdWatchLinkPatchRequest;\n}\n\n/**\n * \n */\nexport class ApiAcademyWatchLinkApi extends runtime.BaseAPI {\n\n /**\n * show\n */\n async apiAcademyAcademyIdWatchLinkGetRaw(requestParameters: ApiAcademyAcademyIdWatchLinkGetRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {\n if (requestParameters.academyId === null || requestParameters.academyId === undefined) {\n throw new runtime.RequiredError('academyId','Required parameter requestParameters.academyId was null or undefined when calling apiAcademyAcademyIdWatchLinkGet.');\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/api/academy/{academy_id}/watch_link`.replace(`{${\"academy_id\"}}`, encodeURIComponent(String(requestParameters.academyId))),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => ApiAcademyAcademyIdWatchLinkGet200ResponseFromJSON(jsonValue));\n }\n\n /**\n * show\n */\n async apiAcademyAcademyIdWatchLinkGet(requestParameters: ApiAcademyAcademyIdWatchLinkGetRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise {\n const response = await this.apiAcademyAcademyIdWatchLinkGetRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * update\n */\n async apiAcademyAcademyIdWatchLinkPatchRaw(requestParameters: ApiAcademyAcademyIdWatchLinkPatchOperationRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {\n if (requestParameters.academyId === null || requestParameters.academyId === undefined) {\n throw new runtime.RequiredError('academyId','Required parameter requestParameters.academyId was null or undefined when calling apiAcademyAcademyIdWatchLinkPatch.');\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n const response = await this.request({\n path: `/api/academy/{academy_id}/watch_link`.replace(`{${\"academy_id\"}}`, encodeURIComponent(String(requestParameters.academyId))),\n method: 'PATCH',\n headers: headerParameters,\n query: queryParameters,\n body: ApiAcademyAcademyIdWatchLinkPatchRequestToJSON(requestParameters.apiAcademyAcademyIdWatchLinkPatchRequest),\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => ApiAcademyAcademyIdWatchLinkGet200ResponseFromJSON(jsonValue));\n }\n\n /**\n * update\n */\n async apiAcademyAcademyIdWatchLinkPatch(requestParameters: ApiAcademyAcademyIdWatchLinkPatchOperationRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise {\n const response = await this.apiAcademyAcademyIdWatchLinkPatchRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * hopper\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\nimport * as runtime from '../runtime';\n\n/**\n * \n */\nexport class ApiAzureCognitiveApi extends runtime.BaseAPI {\n\n /**\n * issue_token\n */\n async apiAzureCognitiveIssueTokenPostRaw(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/api/azure/cognitive/issue_token`,\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n if (this.isJsonMime(response.headers.get('content-type'))) {\n return new runtime.JSONApiResponse(response);\n } else {\n return new runtime.TextApiResponse(response) as any;\n }\n }\n\n /**\n * issue_token\n */\n async apiAzureCognitiveIssueTokenPost(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise {\n const response = await this.apiAzureCognitiveIssueTokenPostRaw(initOverrides);\n return await response.value();\n }\n\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * hopper\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\nimport * as runtime from '../runtime';\nimport type {\n ApiDesignIdAddCreatomateJobPost200ResponseInner,\n ApiDesignIdAddCreatomateJobPostRequest,\n} from '../models';\nimport {\n ApiDesignIdAddCreatomateJobPost200ResponseInnerFromJSON,\n ApiDesignIdAddCreatomateJobPost200ResponseInnerToJSON,\n ApiDesignIdAddCreatomateJobPostRequestFromJSON,\n ApiDesignIdAddCreatomateJobPostRequestToJSON,\n} from '../models';\n\nexport interface ApiDesignIdAddCreatomateJobPostOperationRequest {\n id: number;\n apiDesignIdAddCreatomateJobPostRequest?: ApiDesignIdAddCreatomateJobPostRequest;\n}\n\n/**\n * \n */\nexport class ApiDesignApi extends runtime.BaseAPI {\n\n /**\n * add_creatomate_job\n */\n async apiDesignIdAddCreatomateJobPostRaw(requestParameters: ApiDesignIdAddCreatomateJobPostOperationRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError('id','Required parameter requestParameters.id was null or undefined when calling apiDesignIdAddCreatomateJobPost.');\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n const response = await this.request({\n path: `/api/design/{id}/add_creatomate_job`.replace(`{${\"id\"}}`, encodeURIComponent(String(requestParameters.id))),\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n body: ApiDesignIdAddCreatomateJobPostRequestToJSON(requestParameters.apiDesignIdAddCreatomateJobPostRequest),\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(ApiDesignIdAddCreatomateJobPost200ResponseInnerFromJSON));\n }\n\n /**\n * add_creatomate_job\n */\n async apiDesignIdAddCreatomateJobPost(requestParameters: ApiDesignIdAddCreatomateJobPostOperationRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {\n const response = await this.apiDesignIdAddCreatomateJobPostRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * hopper\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\nimport * as runtime from '../runtime';\nimport type {\n ApiVideoVideoIdExamGet200Response,\n ApiVideoVideoIdExamPutRequest,\n} from '../models';\nimport {\n ApiVideoVideoIdExamGet200ResponseFromJSON,\n ApiVideoVideoIdExamGet200ResponseToJSON,\n ApiVideoVideoIdExamPutRequestFromJSON,\n ApiVideoVideoIdExamPutRequestToJSON,\n} from '../models';\n\nexport interface ApiVideoVideoIdExamGetRequest {\n videoId: number;\n}\n\nexport interface ApiVideoVideoIdExamPutOperationRequest {\n videoId: number;\n apiVideoVideoIdExamPutRequest?: ApiVideoVideoIdExamPutRequest;\n}\n\n/**\n * \n */\nexport class ApiExamApi extends runtime.BaseAPI {\n\n /**\n * show\n */\n async apiVideoVideoIdExamGetRaw(requestParameters: ApiVideoVideoIdExamGetRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {\n if (requestParameters.videoId === null || requestParameters.videoId === undefined) {\n throw new runtime.RequiredError('videoId','Required parameter requestParameters.videoId was null or undefined when calling apiVideoVideoIdExamGet.');\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/api/video/{video_id}/exam`.replace(`{${\"video_id\"}}`, encodeURIComponent(String(requestParameters.videoId))),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => ApiVideoVideoIdExamGet200ResponseFromJSON(jsonValue));\n }\n\n /**\n * show\n */\n async apiVideoVideoIdExamGet(requestParameters: ApiVideoVideoIdExamGetRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise {\n const response = await this.apiVideoVideoIdExamGetRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * update\n */\n async apiVideoVideoIdExamPutRaw(requestParameters: ApiVideoVideoIdExamPutOperationRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {\n if (requestParameters.videoId === null || requestParameters.videoId === undefined) {\n throw new runtime.RequiredError('videoId','Required parameter requestParameters.videoId was null or undefined when calling apiVideoVideoIdExamPut.');\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n const response = await this.request({\n path: `/api/video/{video_id}/exam`.replace(`{${\"video_id\"}}`, encodeURIComponent(String(requestParameters.videoId))),\n method: 'PUT',\n headers: headerParameters,\n query: queryParameters,\n body: ApiVideoVideoIdExamPutRequestToJSON(requestParameters.apiVideoVideoIdExamPutRequest),\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => ApiVideoVideoIdExamGet200ResponseFromJSON(jsonValue));\n }\n\n /**\n * update\n */\n async apiVideoVideoIdExamPut(requestParameters: ApiVideoVideoIdExamPutOperationRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise {\n const response = await this.apiVideoVideoIdExamPutRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * hopper\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\nimport * as runtime from '../runtime';\nimport type {\n ApiVideoVideoIdExamAnswersPost200Response,\n ApiVideoVideoIdExamAnswersPostRequest,\n} from '../models';\nimport {\n ApiVideoVideoIdExamAnswersPost200ResponseFromJSON,\n ApiVideoVideoIdExamAnswersPost200ResponseToJSON,\n ApiVideoVideoIdExamAnswersPostRequestFromJSON,\n ApiVideoVideoIdExamAnswersPostRequestToJSON,\n} from '../models';\n\nexport interface ApiVideoVideoIdExamAnswersPostOperationRequest {\n videoId: number;\n apiVideoVideoIdExamAnswersPostRequest?: ApiVideoVideoIdExamAnswersPostRequest;\n}\n\n/**\n * \n */\nexport class ApiExamAnswerApi extends runtime.BaseAPI {\n\n /**\n * create\n */\n async apiVideoVideoIdExamAnswersPostRaw(requestParameters: ApiVideoVideoIdExamAnswersPostOperationRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {\n if (requestParameters.videoId === null || requestParameters.videoId === undefined) {\n throw new runtime.RequiredError('videoId','Required parameter requestParameters.videoId was null or undefined when calling apiVideoVideoIdExamAnswersPost.');\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n const response = await this.request({\n path: `/api/video/{video_id}/exam/answers`.replace(`{${\"video_id\"}}`, encodeURIComponent(String(requestParameters.videoId))),\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n body: ApiVideoVideoIdExamAnswersPostRequestToJSON(requestParameters.apiVideoVideoIdExamAnswersPostRequest),\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => ApiVideoVideoIdExamAnswersPost200ResponseFromJSON(jsonValue));\n }\n\n /**\n * create\n */\n async apiVideoVideoIdExamAnswersPost(requestParameters: ApiVideoVideoIdExamAnswersPostOperationRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise {\n const response = await this.apiVideoVideoIdExamAnswersPostRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * hopper\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\nimport * as runtime from '../runtime';\nimport type {\n ApiVideoVideoIdExamQuestionsGet200ResponseInner,\n ApiVideoVideoIdExamQuestionsPutRequest,\n} from '../models';\nimport {\n ApiVideoVideoIdExamQuestionsGet200ResponseInnerFromJSON,\n ApiVideoVideoIdExamQuestionsGet200ResponseInnerToJSON,\n ApiVideoVideoIdExamQuestionsPutRequestFromJSON,\n ApiVideoVideoIdExamQuestionsPutRequestToJSON,\n} from '../models';\n\nexport interface ApiVideoVideoIdExamQuestionsGetRequest {\n videoId: number;\n}\n\nexport interface ApiVideoVideoIdExamQuestionsPutOperationRequest {\n videoId: number;\n apiVideoVideoIdExamQuestionsPutRequest?: ApiVideoVideoIdExamQuestionsPutRequest;\n}\n\n/**\n * \n */\nexport class ApiExamQuestionApi extends runtime.BaseAPI {\n\n /**\n * show\n */\n async apiVideoVideoIdExamQuestionsGetRaw(requestParameters: ApiVideoVideoIdExamQuestionsGetRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>> {\n if (requestParameters.videoId === null || requestParameters.videoId === undefined) {\n throw new runtime.RequiredError('videoId','Required parameter requestParameters.videoId was null or undefined when calling apiVideoVideoIdExamQuestionsGet.');\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/api/video/{video_id}/exam/questions`.replace(`{${\"video_id\"}}`, encodeURIComponent(String(requestParameters.videoId))),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(ApiVideoVideoIdExamQuestionsGet200ResponseInnerFromJSON));\n }\n\n /**\n * show\n */\n async apiVideoVideoIdExamQuestionsGet(requestParameters: ApiVideoVideoIdExamQuestionsGetRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {\n const response = await this.apiVideoVideoIdExamQuestionsGetRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * update\n */\n async apiVideoVideoIdExamQuestionsPutRaw(requestParameters: ApiVideoVideoIdExamQuestionsPutOperationRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>> {\n if (requestParameters.videoId === null || requestParameters.videoId === undefined) {\n throw new runtime.RequiredError('videoId','Required parameter requestParameters.videoId was null or undefined when calling apiVideoVideoIdExamQuestionsPut.');\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n const response = await this.request({\n path: `/api/video/{video_id}/exam/questions`.replace(`{${\"video_id\"}}`, encodeURIComponent(String(requestParameters.videoId))),\n method: 'PUT',\n headers: headerParameters,\n query: queryParameters,\n body: ApiVideoVideoIdExamQuestionsPutRequestToJSON(requestParameters.apiVideoVideoIdExamQuestionsPutRequest),\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(ApiVideoVideoIdExamQuestionsGet200ResponseInnerFromJSON));\n }\n\n /**\n * update\n */\n async apiVideoVideoIdExamQuestionsPut(requestParameters: ApiVideoVideoIdExamQuestionsPutOperationRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {\n const response = await this.apiVideoVideoIdExamQuestionsPutRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * hopper\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\nimport * as runtime from '../runtime';\nimport type {\n ApiFoldersIdRenamePatch202Response,\n ApiFoldersIdRenamePatchRequest,\n ApiFoldersIdVideosGet200ResponseInner,\n ApiFoldersPost201Response,\n ApiFoldersPost422Response,\n ApiFoldersPostRequest,\n ApiVideoIdMovePatchRequest,\n} from '../models';\nimport {\n ApiFoldersIdRenamePatch202ResponseFromJSON,\n ApiFoldersIdRenamePatch202ResponseToJSON,\n ApiFoldersIdRenamePatchRequestFromJSON,\n ApiFoldersIdRenamePatchRequestToJSON,\n ApiFoldersIdVideosGet200ResponseInnerFromJSON,\n ApiFoldersIdVideosGet200ResponseInnerToJSON,\n ApiFoldersPost201ResponseFromJSON,\n ApiFoldersPost201ResponseToJSON,\n ApiFoldersPost422ResponseFromJSON,\n ApiFoldersPost422ResponseToJSON,\n ApiFoldersPostRequestFromJSON,\n ApiFoldersPostRequestToJSON,\n ApiVideoIdMovePatchRequestFromJSON,\n ApiVideoIdMovePatchRequestToJSON,\n} from '../models';\n\nexport interface ApiFoldersIdDeleteRequest {\n id: number;\n}\n\nexport interface ApiFoldersIdMovePatchRequest {\n id: number;\n apiVideoIdMovePatchRequest?: ApiVideoIdMovePatchRequest;\n}\n\nexport interface ApiFoldersIdRenamePatchOperationRequest {\n id: number;\n apiFoldersIdRenamePatchRequest?: ApiFoldersIdRenamePatchRequest;\n}\n\nexport interface ApiFoldersIdVideosGetRequest {\n id: number;\n}\n\nexport interface ApiFoldersPostOperationRequest {\n apiFoldersPostRequest?: ApiFoldersPostRequest;\n}\n\n/**\n * \n */\nexport class ApiFolderApi extends runtime.BaseAPI {\n\n /**\n * destroy\n */\n async apiFoldersIdDeleteRaw(requestParameters: ApiFoldersIdDeleteRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError('id','Required parameter requestParameters.id was null or undefined when calling apiFoldersIdDelete.');\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/api/folders/{id}`.replace(`{${\"id\"}}`, encodeURIComponent(String(requestParameters.id))),\n method: 'DELETE',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n if (this.isJsonMime(response.headers.get('content-type'))) {\n return new runtime.JSONApiResponse(response);\n } else {\n return new runtime.TextApiResponse(response) as any;\n }\n }\n\n /**\n * destroy\n */\n async apiFoldersIdDelete(requestParameters: ApiFoldersIdDeleteRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise {\n const response = await this.apiFoldersIdDeleteRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * move\n */\n async apiFoldersIdMovePatchRaw(requestParameters: ApiFoldersIdMovePatchRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError('id','Required parameter requestParameters.id was null or undefined when calling apiFoldersIdMovePatch.');\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n const response = await this.request({\n path: `/api/folders/{id}/move`.replace(`{${\"id\"}}`, encodeURIComponent(String(requestParameters.id))),\n method: 'PATCH',\n headers: headerParameters,\n query: queryParameters,\n body: ApiVideoIdMovePatchRequestToJSON(requestParameters.apiVideoIdMovePatchRequest),\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => ApiFoldersPost201ResponseFromJSON(jsonValue));\n }\n\n /**\n * move\n */\n async apiFoldersIdMovePatch(requestParameters: ApiFoldersIdMovePatchRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise {\n const response = await this.apiFoldersIdMovePatchRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * rename\n */\n async apiFoldersIdRenamePatchRaw(requestParameters: ApiFoldersIdRenamePatchOperationRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError('id','Required parameter requestParameters.id was null or undefined when calling apiFoldersIdRenamePatch.');\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n const response = await this.request({\n path: `/api/folders/{id}/rename`.replace(`{${\"id\"}}`, encodeURIComponent(String(requestParameters.id))),\n method: 'PATCH',\n headers: headerParameters,\n query: queryParameters,\n body: ApiFoldersIdRenamePatchRequestToJSON(requestParameters.apiFoldersIdRenamePatchRequest),\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => ApiFoldersIdRenamePatch202ResponseFromJSON(jsonValue));\n }\n\n /**\n * rename\n */\n async apiFoldersIdRenamePatch(requestParameters: ApiFoldersIdRenamePatchOperationRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise {\n const response = await this.apiFoldersIdRenamePatchRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * videos\n */\n async apiFoldersIdVideosGetRaw(requestParameters: ApiFoldersIdVideosGetRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError('id','Required parameter requestParameters.id was null or undefined when calling apiFoldersIdVideosGet.');\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/api/folders/{id}/videos`.replace(`{${\"id\"}}`, encodeURIComponent(String(requestParameters.id))),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(ApiFoldersIdVideosGet200ResponseInnerFromJSON));\n }\n\n /**\n * videos\n */\n async apiFoldersIdVideosGet(requestParameters: ApiFoldersIdVideosGetRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {\n const response = await this.apiFoldersIdVideosGetRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * create\n */\n async apiFoldersPostRaw(requestParameters: ApiFoldersPostOperationRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n const response = await this.request({\n path: `/api/folders`,\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n body: ApiFoldersPostRequestToJSON(requestParameters.apiFoldersPostRequest),\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => ApiFoldersPost201ResponseFromJSON(jsonValue));\n }\n\n /**\n * create\n */\n async apiFoldersPost(requestParameters: ApiFoldersPostOperationRequest = {}, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise {\n const response = await this.apiFoldersPostRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * hopper\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\nimport * as runtime from '../runtime';\nimport type {\n ApiVideoIdThumbnailPresignGet201Response,\n ApiVideoVideoIdNarrationsGet200ResponseInner,\n ApiVideoVideoIdNarrationsPutRequest,\n} from '../models';\nimport {\n ApiVideoIdThumbnailPresignGet201ResponseFromJSON,\n ApiVideoIdThumbnailPresignGet201ResponseToJSON,\n ApiVideoVideoIdNarrationsGet200ResponseInnerFromJSON,\n ApiVideoVideoIdNarrationsGet200ResponseInnerToJSON,\n ApiVideoVideoIdNarrationsPutRequestFromJSON,\n ApiVideoVideoIdNarrationsPutRequestToJSON,\n} from '../models';\n\nexport interface ApiVideoVideoIdNarrationsGetRequest {\n videoId: number;\n}\n\nexport interface ApiVideoVideoIdNarrationsPresignGetRequest {\n videoId: number;\n}\n\nexport interface ApiVideoVideoIdNarrationsPutOperationRequest {\n videoId: number;\n apiVideoVideoIdNarrationsPutRequest?: ApiVideoVideoIdNarrationsPutRequest;\n}\n\n/**\n * \n */\nexport class ApiNarrationApi extends runtime.BaseAPI {\n\n /**\n * show\n */\n async apiVideoVideoIdNarrationsGetRaw(requestParameters: ApiVideoVideoIdNarrationsGetRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>> {\n if (requestParameters.videoId === null || requestParameters.videoId === undefined) {\n throw new runtime.RequiredError('videoId','Required parameter requestParameters.videoId was null or undefined when calling apiVideoVideoIdNarrationsGet.');\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/api/video/{video_id}/narrations`.replace(`{${\"video_id\"}}`, encodeURIComponent(String(requestParameters.videoId))),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(ApiVideoVideoIdNarrationsGet200ResponseInnerFromJSON));\n }\n\n /**\n * show\n */\n async apiVideoVideoIdNarrationsGet(requestParameters: ApiVideoVideoIdNarrationsGetRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {\n const response = await this.apiVideoVideoIdNarrationsGetRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * presign\n */\n async apiVideoVideoIdNarrationsPresignGetRaw(requestParameters: ApiVideoVideoIdNarrationsPresignGetRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {\n if (requestParameters.videoId === null || requestParameters.videoId === undefined) {\n throw new runtime.RequiredError('videoId','Required parameter requestParameters.videoId was null or undefined when calling apiVideoVideoIdNarrationsPresignGet.');\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/api/video/{video_id}/narrations/presign`.replace(`{${\"video_id\"}}`, encodeURIComponent(String(requestParameters.videoId))),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => ApiVideoIdThumbnailPresignGet201ResponseFromJSON(jsonValue));\n }\n\n /**\n * presign\n */\n async apiVideoVideoIdNarrationsPresignGet(requestParameters: ApiVideoVideoIdNarrationsPresignGetRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise {\n const response = await this.apiVideoVideoIdNarrationsPresignGetRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * update\n */\n async apiVideoVideoIdNarrationsPutRaw(requestParameters: ApiVideoVideoIdNarrationsPutOperationRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>> {\n if (requestParameters.videoId === null || requestParameters.videoId === undefined) {\n throw new runtime.RequiredError('videoId','Required parameter requestParameters.videoId was null or undefined when calling apiVideoVideoIdNarrationsPut.');\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n const response = await this.request({\n path: `/api/video/{video_id}/narrations`.replace(`{${\"video_id\"}}`, encodeURIComponent(String(requestParameters.videoId))),\n method: 'PUT',\n headers: headerParameters,\n query: queryParameters,\n body: ApiVideoVideoIdNarrationsPutRequestToJSON(requestParameters.apiVideoVideoIdNarrationsPutRequest),\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(ApiVideoVideoIdNarrationsGet200ResponseInnerFromJSON));\n }\n\n /**\n * update\n */\n async apiVideoVideoIdNarrationsPut(requestParameters: ApiVideoVideoIdNarrationsPutOperationRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {\n const response = await this.apiVideoVideoIdNarrationsPutRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * hopper\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\nimport * as runtime from '../runtime';\nimport type {\n ApiDesignDesignIdScenesPostRequest,\n ApiScenesIdGet200Response,\n ApiScenesIdPutRequest,\n ApiScenesIdUploadedAudioPost200Response,\n ApiScenesIdUploadedAudioPostRequest,\n ApiScenesIdUploadedImagePost200Response,\n ApiScenesIdUploadedImagePostRequest,\n ApiVideoIdThumbnailPresignGet201Response,\n} from '../models';\nimport {\n ApiDesignDesignIdScenesPostRequestFromJSON,\n ApiDesignDesignIdScenesPostRequestToJSON,\n ApiScenesIdGet200ResponseFromJSON,\n ApiScenesIdGet200ResponseToJSON,\n ApiScenesIdPutRequestFromJSON,\n ApiScenesIdPutRequestToJSON,\n ApiScenesIdUploadedAudioPost200ResponseFromJSON,\n ApiScenesIdUploadedAudioPost200ResponseToJSON,\n ApiScenesIdUploadedAudioPostRequestFromJSON,\n ApiScenesIdUploadedAudioPostRequestToJSON,\n ApiScenesIdUploadedImagePost200ResponseFromJSON,\n ApiScenesIdUploadedImagePost200ResponseToJSON,\n ApiScenesIdUploadedImagePostRequestFromJSON,\n ApiScenesIdUploadedImagePostRequestToJSON,\n ApiVideoIdThumbnailPresignGet201ResponseFromJSON,\n ApiVideoIdThumbnailPresignGet201ResponseToJSON,\n} from '../models';\n\nexport interface ApiDesignDesignIdScenesGetRequest {\n designId: number;\n}\n\nexport interface ApiDesignDesignIdScenesPostOperationRequest {\n designId: number;\n apiDesignDesignIdScenesPostRequest?: ApiDesignDesignIdScenesPostRequest;\n}\n\nexport interface ApiScenesIdDeleteRequest {\n id: number;\n}\n\nexport interface ApiScenesIdGetRequest {\n id: number;\n}\n\nexport interface ApiScenesIdPresignAudioGetRequest {\n id: number;\n}\n\nexport interface ApiScenesIdPresignImageGetRequest {\n id: number;\n}\n\nexport interface ApiScenesIdPutOperationRequest {\n id: number;\n apiScenesIdPutRequest?: ApiScenesIdPutRequest;\n}\n\nexport interface ApiScenesIdUploadedAudioPostOperationRequest {\n id: number;\n apiScenesIdUploadedAudioPostRequest?: ApiScenesIdUploadedAudioPostRequest;\n}\n\nexport interface ApiScenesIdUploadedImagePostOperationRequest {\n id: number;\n apiScenesIdUploadedImagePostRequest?: ApiScenesIdUploadedImagePostRequest;\n}\n\n/**\n * \n */\nexport class ApiSceneApi extends runtime.BaseAPI {\n\n /**\n * index\n */\n async apiDesignDesignIdScenesGetRaw(requestParameters: ApiDesignDesignIdScenesGetRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>> {\n if (requestParameters.designId === null || requestParameters.designId === undefined) {\n throw new runtime.RequiredError('designId','Required parameter requestParameters.designId was null or undefined when calling apiDesignDesignIdScenesGet.');\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/api/design/{design_id}/scenes`.replace(`{${\"design_id\"}}`, encodeURIComponent(String(requestParameters.designId))),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(ApiScenesIdGet200ResponseFromJSON));\n }\n\n /**\n * index\n */\n async apiDesignDesignIdScenesGet(requestParameters: ApiDesignDesignIdScenesGetRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {\n const response = await this.apiDesignDesignIdScenesGetRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * create\n */\n async apiDesignDesignIdScenesPostRaw(requestParameters: ApiDesignDesignIdScenesPostOperationRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {\n if (requestParameters.designId === null || requestParameters.designId === undefined) {\n throw new runtime.RequiredError('designId','Required parameter requestParameters.designId was null or undefined when calling apiDesignDesignIdScenesPost.');\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n const response = await this.request({\n path: `/api/design/{design_id}/scenes`.replace(`{${\"design_id\"}}`, encodeURIComponent(String(requestParameters.designId))),\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n body: ApiDesignDesignIdScenesPostRequestToJSON(requestParameters.apiDesignDesignIdScenesPostRequest),\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => ApiScenesIdGet200ResponseFromJSON(jsonValue));\n }\n\n /**\n * create\n */\n async apiDesignDesignIdScenesPost(requestParameters: ApiDesignDesignIdScenesPostOperationRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise {\n const response = await this.apiDesignDesignIdScenesPostRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * destroy\n */\n async apiScenesIdDeleteRaw(requestParameters: ApiScenesIdDeleteRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError('id','Required parameter requestParameters.id was null or undefined when calling apiScenesIdDelete.');\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/api/scenes/{id}`.replace(`{${\"id\"}}`, encodeURIComponent(String(requestParameters.id))),\n method: 'DELETE',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n if (this.isJsonMime(response.headers.get('content-type'))) {\n return new runtime.JSONApiResponse(response);\n } else {\n return new runtime.TextApiResponse(response) as any;\n }\n }\n\n /**\n * destroy\n */\n async apiScenesIdDelete(requestParameters: ApiScenesIdDeleteRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise {\n const response = await this.apiScenesIdDeleteRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * show\n */\n async apiScenesIdGetRaw(requestParameters: ApiScenesIdGetRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError('id','Required parameter requestParameters.id was null or undefined when calling apiScenesIdGet.');\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/api/scenes/{id}`.replace(`{${\"id\"}}`, encodeURIComponent(String(requestParameters.id))),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => ApiScenesIdGet200ResponseFromJSON(jsonValue));\n }\n\n /**\n * show\n */\n async apiScenesIdGet(requestParameters: ApiScenesIdGetRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise {\n const response = await this.apiScenesIdGetRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * presign_audio\n */\n async apiScenesIdPresignAudioGetRaw(requestParameters: ApiScenesIdPresignAudioGetRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError('id','Required parameter requestParameters.id was null or undefined when calling apiScenesIdPresignAudioGet.');\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/api/scenes/{id}/presign_audio`.replace(`{${\"id\"}}`, encodeURIComponent(String(requestParameters.id))),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => ApiVideoIdThumbnailPresignGet201ResponseFromJSON(jsonValue));\n }\n\n /**\n * presign_audio\n */\n async apiScenesIdPresignAudioGet(requestParameters: ApiScenesIdPresignAudioGetRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise {\n const response = await this.apiScenesIdPresignAudioGetRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * presign_image\n */\n async apiScenesIdPresignImageGetRaw(requestParameters: ApiScenesIdPresignImageGetRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError('id','Required parameter requestParameters.id was null or undefined when calling apiScenesIdPresignImageGet.');\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/api/scenes/{id}/presign_image`.replace(`{${\"id\"}}`, encodeURIComponent(String(requestParameters.id))),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => ApiVideoIdThumbnailPresignGet201ResponseFromJSON(jsonValue));\n }\n\n /**\n * presign_image\n */\n async apiScenesIdPresignImageGet(requestParameters: ApiScenesIdPresignImageGetRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise {\n const response = await this.apiScenesIdPresignImageGetRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * update\n */\n async apiScenesIdPutRaw(requestParameters: ApiScenesIdPutOperationRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError('id','Required parameter requestParameters.id was null or undefined when calling apiScenesIdPut.');\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n const response = await this.request({\n path: `/api/scenes/{id}`.replace(`{${\"id\"}}`, encodeURIComponent(String(requestParameters.id))),\n method: 'PUT',\n headers: headerParameters,\n query: queryParameters,\n body: ApiScenesIdPutRequestToJSON(requestParameters.apiScenesIdPutRequest),\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => ApiScenesIdGet200ResponseFromJSON(jsonValue));\n }\n\n /**\n * update\n */\n async apiScenesIdPut(requestParameters: ApiScenesIdPutOperationRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise {\n const response = await this.apiScenesIdPutRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * uploaded_audio\n */\n async apiScenesIdUploadedAudioPostRaw(requestParameters: ApiScenesIdUploadedAudioPostOperationRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError('id','Required parameter requestParameters.id was null or undefined when calling apiScenesIdUploadedAudioPost.');\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n const response = await this.request({\n path: `/api/scenes/{id}/uploaded_audio`.replace(`{${\"id\"}}`, encodeURIComponent(String(requestParameters.id))),\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n body: ApiScenesIdUploadedAudioPostRequestToJSON(requestParameters.apiScenesIdUploadedAudioPostRequest),\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => ApiScenesIdUploadedAudioPost200ResponseFromJSON(jsonValue));\n }\n\n /**\n * uploaded_audio\n */\n async apiScenesIdUploadedAudioPost(requestParameters: ApiScenesIdUploadedAudioPostOperationRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise {\n const response = await this.apiScenesIdUploadedAudioPostRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * uploaded_image\n */\n async apiScenesIdUploadedImagePostRaw(requestParameters: ApiScenesIdUploadedImagePostOperationRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError('id','Required parameter requestParameters.id was null or undefined when calling apiScenesIdUploadedImagePost.');\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n const response = await this.request({\n path: `/api/scenes/{id}/uploaded_image`.replace(`{${\"id\"}}`, encodeURIComponent(String(requestParameters.id))),\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n body: ApiScenesIdUploadedImagePostRequestToJSON(requestParameters.apiScenesIdUploadedImagePostRequest),\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => ApiScenesIdUploadedImagePost200ResponseFromJSON(jsonValue));\n }\n\n /**\n * uploaded_image\n */\n async apiScenesIdUploadedImagePost(requestParameters: ApiScenesIdUploadedImagePostOperationRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise {\n const response = await this.apiScenesIdUploadedImagePostRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * hopper\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\nimport * as runtime from '../runtime';\nimport type {\n ApiVideoVideoIdSubtitlesDefaultDisplayedPatchRequest,\n ApiVideoVideoIdSubtitlesGet200ResponseInner,\n ApiVideoVideoIdSubtitlesPublishedPatchRequest,\n ApiVideoVideoIdSubtitlesPutRequest,\n} from '../models';\nimport {\n ApiVideoVideoIdSubtitlesDefaultDisplayedPatchRequestFromJSON,\n ApiVideoVideoIdSubtitlesDefaultDisplayedPatchRequestToJSON,\n ApiVideoVideoIdSubtitlesGet200ResponseInnerFromJSON,\n ApiVideoVideoIdSubtitlesGet200ResponseInnerToJSON,\n ApiVideoVideoIdSubtitlesPublishedPatchRequestFromJSON,\n ApiVideoVideoIdSubtitlesPublishedPatchRequestToJSON,\n ApiVideoVideoIdSubtitlesPutRequestFromJSON,\n ApiVideoVideoIdSubtitlesPutRequestToJSON,\n} from '../models';\n\nexport interface ApiVideoVideoIdSubtitlesAddGenerateJobPatchRequest {\n videoId: number;\n}\n\nexport interface ApiVideoVideoIdSubtitlesDefaultDisplayedPatchOperationRequest {\n videoId: number;\n apiVideoVideoIdSubtitlesDefaultDisplayedPatchRequest?: ApiVideoVideoIdSubtitlesDefaultDisplayedPatchRequest;\n}\n\nexport interface ApiVideoVideoIdSubtitlesDeleteRequest {\n videoId: number;\n}\n\nexport interface ApiVideoVideoIdSubtitlesGetRequest {\n videoId: number;\n}\n\nexport interface ApiVideoVideoIdSubtitlesPublishedPatchOperationRequest {\n videoId: number;\n apiVideoVideoIdSubtitlesPublishedPatchRequest?: ApiVideoVideoIdSubtitlesPublishedPatchRequest;\n}\n\nexport interface ApiVideoVideoIdSubtitlesPutOperationRequest {\n videoId: number;\n apiVideoVideoIdSubtitlesPutRequest?: ApiVideoVideoIdSubtitlesPutRequest;\n}\n\n/**\n * \n */\nexport class ApiSubtitleApi extends runtime.BaseAPI {\n\n /**\n * add_generate_job\n */\n async apiVideoVideoIdSubtitlesAddGenerateJobPatchRaw(requestParameters: ApiVideoVideoIdSubtitlesAddGenerateJobPatchRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {\n if (requestParameters.videoId === null || requestParameters.videoId === undefined) {\n throw new runtime.RequiredError('videoId','Required parameter requestParameters.videoId was null or undefined when calling apiVideoVideoIdSubtitlesAddGenerateJobPatch.');\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/api/video/{video_id}/subtitles/add_generate_job`.replace(`{${\"video_id\"}}`, encodeURIComponent(String(requestParameters.videoId))),\n method: 'PATCH',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n if (this.isJsonMime(response.headers.get('content-type'))) {\n return new runtime.JSONApiResponse(response);\n } else {\n return new runtime.TextApiResponse(response) as any;\n }\n }\n\n /**\n * add_generate_job\n */\n async apiVideoVideoIdSubtitlesAddGenerateJobPatch(requestParameters: ApiVideoVideoIdSubtitlesAddGenerateJobPatchRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise {\n const response = await this.apiVideoVideoIdSubtitlesAddGenerateJobPatchRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * default_displayed\n */\n async apiVideoVideoIdSubtitlesDefaultDisplayedPatchRaw(requestParameters: ApiVideoVideoIdSubtitlesDefaultDisplayedPatchOperationRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {\n if (requestParameters.videoId === null || requestParameters.videoId === undefined) {\n throw new runtime.RequiredError('videoId','Required parameter requestParameters.videoId was null or undefined when calling apiVideoVideoIdSubtitlesDefaultDisplayedPatch.');\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n const response = await this.request({\n path: `/api/video/{video_id}/subtitles/default_displayed`.replace(`{${\"video_id\"}}`, encodeURIComponent(String(requestParameters.videoId))),\n method: 'PATCH',\n headers: headerParameters,\n query: queryParameters,\n body: ApiVideoVideoIdSubtitlesDefaultDisplayedPatchRequestToJSON(requestParameters.apiVideoVideoIdSubtitlesDefaultDisplayedPatchRequest),\n }, initOverrides);\n\n if (this.isJsonMime(response.headers.get('content-type'))) {\n return new runtime.JSONApiResponse(response);\n } else {\n return new runtime.TextApiResponse(response) as any;\n }\n }\n\n /**\n * default_displayed\n */\n async apiVideoVideoIdSubtitlesDefaultDisplayedPatch(requestParameters: ApiVideoVideoIdSubtitlesDefaultDisplayedPatchOperationRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise {\n const response = await this.apiVideoVideoIdSubtitlesDefaultDisplayedPatchRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * destroy\n */\n async apiVideoVideoIdSubtitlesDeleteRaw(requestParameters: ApiVideoVideoIdSubtitlesDeleteRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {\n if (requestParameters.videoId === null || requestParameters.videoId === undefined) {\n throw new runtime.RequiredError('videoId','Required parameter requestParameters.videoId was null or undefined when calling apiVideoVideoIdSubtitlesDelete.');\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/api/video/{video_id}/subtitles`.replace(`{${\"video_id\"}}`, encodeURIComponent(String(requestParameters.videoId))),\n method: 'DELETE',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n if (this.isJsonMime(response.headers.get('content-type'))) {\n return new runtime.JSONApiResponse(response);\n } else {\n return new runtime.TextApiResponse(response) as any;\n }\n }\n\n /**\n * destroy\n */\n async apiVideoVideoIdSubtitlesDelete(requestParameters: ApiVideoVideoIdSubtitlesDeleteRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise {\n const response = await this.apiVideoVideoIdSubtitlesDeleteRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * show\n */\n async apiVideoVideoIdSubtitlesGetRaw(requestParameters: ApiVideoVideoIdSubtitlesGetRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>> {\n if (requestParameters.videoId === null || requestParameters.videoId === undefined) {\n throw new runtime.RequiredError('videoId','Required parameter requestParameters.videoId was null or undefined when calling apiVideoVideoIdSubtitlesGet.');\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/api/video/{video_id}/subtitles`.replace(`{${\"video_id\"}}`, encodeURIComponent(String(requestParameters.videoId))),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(ApiVideoVideoIdSubtitlesGet200ResponseInnerFromJSON));\n }\n\n /**\n * show\n */\n async apiVideoVideoIdSubtitlesGet(requestParameters: ApiVideoVideoIdSubtitlesGetRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {\n const response = await this.apiVideoVideoIdSubtitlesGetRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * published\n */\n async apiVideoVideoIdSubtitlesPublishedPatchRaw(requestParameters: ApiVideoVideoIdSubtitlesPublishedPatchOperationRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {\n if (requestParameters.videoId === null || requestParameters.videoId === undefined) {\n throw new runtime.RequiredError('videoId','Required parameter requestParameters.videoId was null or undefined when calling apiVideoVideoIdSubtitlesPublishedPatch.');\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n const response = await this.request({\n path: `/api/video/{video_id}/subtitles/published`.replace(`{${\"video_id\"}}`, encodeURIComponent(String(requestParameters.videoId))),\n method: 'PATCH',\n headers: headerParameters,\n query: queryParameters,\n body: ApiVideoVideoIdSubtitlesPublishedPatchRequestToJSON(requestParameters.apiVideoVideoIdSubtitlesPublishedPatchRequest),\n }, initOverrides);\n\n if (this.isJsonMime(response.headers.get('content-type'))) {\n return new runtime.JSONApiResponse(response);\n } else {\n return new runtime.TextApiResponse(response) as any;\n }\n }\n\n /**\n * published\n */\n async apiVideoVideoIdSubtitlesPublishedPatch(requestParameters: ApiVideoVideoIdSubtitlesPublishedPatchOperationRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise {\n const response = await this.apiVideoVideoIdSubtitlesPublishedPatchRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * update\n */\n async apiVideoVideoIdSubtitlesPutRaw(requestParameters: ApiVideoVideoIdSubtitlesPutOperationRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>> {\n if (requestParameters.videoId === null || requestParameters.videoId === undefined) {\n throw new runtime.RequiredError('videoId','Required parameter requestParameters.videoId was null or undefined when calling apiVideoVideoIdSubtitlesPut.');\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n const response = await this.request({\n path: `/api/video/{video_id}/subtitles`.replace(`{${\"video_id\"}}`, encodeURIComponent(String(requestParameters.videoId))),\n method: 'PUT',\n headers: headerParameters,\n query: queryParameters,\n body: ApiVideoVideoIdSubtitlesPutRequestToJSON(requestParameters.apiVideoVideoIdSubtitlesPutRequest),\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(ApiVideoVideoIdSubtitlesGet200ResponseInnerFromJSON));\n }\n\n /**\n * update\n */\n async apiVideoVideoIdSubtitlesPut(requestParameters: ApiVideoVideoIdSubtitlesPutOperationRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {\n const response = await this.apiVideoVideoIdSubtitlesPutRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * hopper\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\nimport * as runtime from '../runtime';\nimport type {\n ApiVideoIdThumbnailPost200Response,\n ApiVideoIdThumbnailPresignGet201Response,\n} from '../models';\nimport {\n ApiVideoIdThumbnailPost200ResponseFromJSON,\n ApiVideoIdThumbnailPost200ResponseToJSON,\n ApiVideoIdThumbnailPresignGet201ResponseFromJSON,\n ApiVideoIdThumbnailPresignGet201ResponseToJSON,\n} from '../models';\n\nexport interface ApiVideoIdThumbnailDeleteRequest {\n id: number;\n}\n\nexport interface ApiVideoIdThumbnailPostRequest {\n id: number;\n assetName?: string;\n assetContainer?: string;\n}\n\nexport interface ApiVideoIdThumbnailPresignGetRequest {\n id: number;\n}\n\n/**\n * \n */\nexport class ApiThumbnailApi extends runtime.BaseAPI {\n\n /**\n * destroy\n */\n async apiVideoIdThumbnailDeleteRaw(requestParameters: ApiVideoIdThumbnailDeleteRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError('id','Required parameter requestParameters.id was null or undefined when calling apiVideoIdThumbnailDelete.');\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/api/video/{id}/thumbnail`.replace(`{${\"id\"}}`, encodeURIComponent(String(requestParameters.id))),\n method: 'DELETE',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n if (this.isJsonMime(response.headers.get('content-type'))) {\n return new runtime.JSONApiResponse(response);\n } else {\n return new runtime.TextApiResponse(response) as any;\n }\n }\n\n /**\n * destroy\n */\n async apiVideoIdThumbnailDelete(requestParameters: ApiVideoIdThumbnailDeleteRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise {\n const response = await this.apiVideoIdThumbnailDeleteRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * create\n */\n async apiVideoIdThumbnailPostRaw(requestParameters: ApiVideoIdThumbnailPostRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError('id','Required parameter requestParameters.id was null or undefined when calling apiVideoIdThumbnailPost.');\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const consumes: runtime.Consume[] = [\n { contentType: 'application/x-www-form-urlencoded' },\n ];\n // @ts-ignore: canConsumeForm may be unused\n const canConsumeForm = runtime.canConsumeForm(consumes);\n\n let formParams: { append(param: string, value: any): any };\n let useForm = false;\n if (useForm) {\n formParams = new FormData();\n } else {\n formParams = new URLSearchParams();\n }\n\n if (requestParameters.assetName !== undefined) {\n formParams.append('asset_name', requestParameters.assetName as any);\n }\n\n if (requestParameters.assetContainer !== undefined) {\n formParams.append('asset_container', requestParameters.assetContainer as any);\n }\n\n const response = await this.request({\n path: `/api/video/{id}/thumbnail`.replace(`{${\"id\"}}`, encodeURIComponent(String(requestParameters.id))),\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n body: formParams,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => ApiVideoIdThumbnailPost200ResponseFromJSON(jsonValue));\n }\n\n /**\n * create\n */\n async apiVideoIdThumbnailPost(requestParameters: ApiVideoIdThumbnailPostRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise {\n const response = await this.apiVideoIdThumbnailPostRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * presign\n */\n async apiVideoIdThumbnailPresignGetRaw(requestParameters: ApiVideoIdThumbnailPresignGetRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError('id','Required parameter requestParameters.id was null or undefined when calling apiVideoIdThumbnailPresignGet.');\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/api/video/{id}/thumbnail/presign`.replace(`{${\"id\"}}`, encodeURIComponent(String(requestParameters.id))),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => ApiVideoIdThumbnailPresignGet201ResponseFromJSON(jsonValue));\n }\n\n /**\n * presign\n */\n async apiVideoIdThumbnailPresignGet(requestParameters: ApiVideoIdThumbnailPresignGetRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise {\n const response = await this.apiVideoIdThumbnailPresignGetRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * hopper\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\nimport * as runtime from '../runtime';\nimport type {\n ApiVideoVideoIdThumbnailSpritesGet200Response,\n} from '../models';\nimport {\n ApiVideoVideoIdThumbnailSpritesGet200ResponseFromJSON,\n ApiVideoVideoIdThumbnailSpritesGet200ResponseToJSON,\n} from '../models';\n\nexport interface ApiVideoVideoIdThumbnailSpritesGetRequest {\n videoId: number;\n}\n\n/**\n * \n */\nexport class ApiThumbnailSpriteApi extends runtime.BaseAPI {\n\n /**\n * show\n */\n async apiVideoVideoIdThumbnailSpritesGetRaw(requestParameters: ApiVideoVideoIdThumbnailSpritesGetRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {\n if (requestParameters.videoId === null || requestParameters.videoId === undefined) {\n throw new runtime.RequiredError('videoId','Required parameter requestParameters.videoId was null or undefined when calling apiVideoVideoIdThumbnailSpritesGet.');\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/api/video/{video_id}/thumbnail_sprites`.replace(`{${\"video_id\"}}`, encodeURIComponent(String(requestParameters.videoId))),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => ApiVideoVideoIdThumbnailSpritesGet200ResponseFromJSON(jsonValue));\n }\n\n /**\n * show\n */\n async apiVideoVideoIdThumbnailSpritesGet(requestParameters: ApiVideoVideoIdThumbnailSpritesGetRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise {\n const response = await this.apiVideoVideoIdThumbnailSpritesGetRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * hopper\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\nimport * as runtime from '../runtime';\nimport type {\n ApiVideoVideoIdTimelineUpdateJobsPostRequest,\n} from '../models';\nimport {\n ApiVideoVideoIdTimelineUpdateJobsPostRequestFromJSON,\n ApiVideoVideoIdTimelineUpdateJobsPostRequestToJSON,\n} from '../models';\n\nexport interface ApiVideoVideoIdTimelineUpdateJobsPostOperationRequest {\n videoId: string;\n apiVideoVideoIdTimelineUpdateJobsPostRequest?: ApiVideoVideoIdTimelineUpdateJobsPostRequest;\n}\n\n/**\n * \n */\nexport class ApiTimelineUpdateJobApi extends runtime.BaseAPI {\n\n /**\n * create\n */\n async apiVideoVideoIdTimelineUpdateJobsPostRaw(requestParameters: ApiVideoVideoIdTimelineUpdateJobsPostOperationRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {\n if (requestParameters.videoId === null || requestParameters.videoId === undefined) {\n throw new runtime.RequiredError('videoId','Required parameter requestParameters.videoId was null or undefined when calling apiVideoVideoIdTimelineUpdateJobsPost.');\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n const response = await this.request({\n path: `/api/video/{video_id}/timeline_update_jobs`.replace(`{${\"video_id\"}}`, encodeURIComponent(String(requestParameters.videoId))),\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n body: ApiVideoVideoIdTimelineUpdateJobsPostRequestToJSON(requestParameters.apiVideoVideoIdTimelineUpdateJobsPostRequest),\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response);\n }\n\n /**\n * create\n */\n async apiVideoVideoIdTimelineUpdateJobsPost(requestParameters: ApiVideoVideoIdTimelineUpdateJobsPostOperationRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise {\n const response = await this.apiVideoVideoIdTimelineUpdateJobsPostRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * hopper\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\nimport * as runtime from '../runtime';\nimport type {\n ApiVideoIdDuplicatePost422Response,\n ApiVideoIdGet200Response,\n ApiVideoIdMovePatch200Response,\n ApiVideoIdMovePatchRequest,\n ApiVideoIdPut200Response,\n ApiVideoIdPutRequest,\n ApiVideoPreparePost200Response,\n ApiVideoUploadedPostRequest,\n} from '../models';\nimport {\n ApiVideoIdDuplicatePost422ResponseFromJSON,\n ApiVideoIdDuplicatePost422ResponseToJSON,\n ApiVideoIdGet200ResponseFromJSON,\n ApiVideoIdGet200ResponseToJSON,\n ApiVideoIdMovePatch200ResponseFromJSON,\n ApiVideoIdMovePatch200ResponseToJSON,\n ApiVideoIdMovePatchRequestFromJSON,\n ApiVideoIdMovePatchRequestToJSON,\n ApiVideoIdPut200ResponseFromJSON,\n ApiVideoIdPut200ResponseToJSON,\n ApiVideoIdPutRequestFromJSON,\n ApiVideoIdPutRequestToJSON,\n ApiVideoPreparePost200ResponseFromJSON,\n ApiVideoPreparePost200ResponseToJSON,\n ApiVideoUploadedPostRequestFromJSON,\n ApiVideoUploadedPostRequestToJSON,\n} from '../models';\n\nexport interface ApiVideoIdDeleteRequest {\n id: number;\n}\n\nexport interface ApiVideoIdDownloadGetRequest {\n id: number;\n}\n\nexport interface ApiVideoIdDuplicatePostRequest {\n id: number;\n}\n\nexport interface ApiVideoIdGetRequest {\n id: number;\n}\n\nexport interface ApiVideoIdMovePatchOperationRequest {\n id: number;\n apiVideoIdMovePatchRequest?: ApiVideoIdMovePatchRequest;\n}\n\nexport interface ApiVideoIdPutOperationRequest {\n id: number;\n apiVideoIdPutRequest?: ApiVideoIdPutRequest;\n}\n\nexport interface ApiVideoUploadedPostOperationRequest {\n apiVideoUploadedPostRequest?: ApiVideoUploadedPostRequest;\n}\n\n/**\n * \n */\nexport class ApiVideoApi extends runtime.BaseAPI {\n\n /**\n * destroy\n */\n async apiVideoIdDeleteRaw(requestParameters: ApiVideoIdDeleteRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError('id','Required parameter requestParameters.id was null or undefined when calling apiVideoIdDelete.');\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/api/video/{id}`.replace(`{${\"id\"}}`, encodeURIComponent(String(requestParameters.id))),\n method: 'DELETE',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n if (this.isJsonMime(response.headers.get('content-type'))) {\n return new runtime.JSONApiResponse(response);\n } else {\n return new runtime.TextApiResponse(response) as any;\n }\n }\n\n /**\n * destroy\n */\n async apiVideoIdDelete(requestParameters: ApiVideoIdDeleteRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise {\n const response = await this.apiVideoIdDeleteRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * download\n */\n async apiVideoIdDownloadGetRaw(requestParameters: ApiVideoIdDownloadGetRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError('id','Required parameter requestParameters.id was null or undefined when calling apiVideoIdDownloadGet.');\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/api/video/{id}/download`.replace(`{${\"id\"}}`, encodeURIComponent(String(requestParameters.id))),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n if (this.isJsonMime(response.headers.get('content-type'))) {\n return new runtime.JSONApiResponse(response);\n } else {\n return new runtime.TextApiResponse(response) as any;\n }\n }\n\n /**\n * download\n */\n async apiVideoIdDownloadGet(requestParameters: ApiVideoIdDownloadGetRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise {\n const response = await this.apiVideoIdDownloadGetRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * duplicate\n */\n async apiVideoIdDuplicatePostRaw(requestParameters: ApiVideoIdDuplicatePostRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError('id','Required parameter requestParameters.id was null or undefined when calling apiVideoIdDuplicatePost.');\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/api/video/{id}/duplicate`.replace(`{${\"id\"}}`, encodeURIComponent(String(requestParameters.id))),\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response);\n }\n\n /**\n * duplicate\n */\n async apiVideoIdDuplicatePost(requestParameters: ApiVideoIdDuplicatePostRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise {\n const response = await this.apiVideoIdDuplicatePostRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * show\n */\n async apiVideoIdGetRaw(requestParameters: ApiVideoIdGetRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError('id','Required parameter requestParameters.id was null or undefined when calling apiVideoIdGet.');\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/api/video/{id}`.replace(`{${\"id\"}}`, encodeURIComponent(String(requestParameters.id))),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => ApiVideoIdGet200ResponseFromJSON(jsonValue));\n }\n\n /**\n * show\n */\n async apiVideoIdGet(requestParameters: ApiVideoIdGetRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise {\n const response = await this.apiVideoIdGetRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * move\n */\n async apiVideoIdMovePatchRaw(requestParameters: ApiVideoIdMovePatchOperationRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError('id','Required parameter requestParameters.id was null or undefined when calling apiVideoIdMovePatch.');\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n const response = await this.request({\n path: `/api/video/{id}/move`.replace(`{${\"id\"}}`, encodeURIComponent(String(requestParameters.id))),\n method: 'PATCH',\n headers: headerParameters,\n query: queryParameters,\n body: ApiVideoIdMovePatchRequestToJSON(requestParameters.apiVideoIdMovePatchRequest),\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => ApiVideoIdMovePatch200ResponseFromJSON(jsonValue));\n }\n\n /**\n * move\n */\n async apiVideoIdMovePatch(requestParameters: ApiVideoIdMovePatchOperationRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise {\n const response = await this.apiVideoIdMovePatchRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * update\n */\n async apiVideoIdPutRaw(requestParameters: ApiVideoIdPutOperationRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError('id','Required parameter requestParameters.id was null or undefined when calling apiVideoIdPut.');\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n const response = await this.request({\n path: `/api/video/{id}`.replace(`{${\"id\"}}`, encodeURIComponent(String(requestParameters.id))),\n method: 'PUT',\n headers: headerParameters,\n query: queryParameters,\n body: ApiVideoIdPutRequestToJSON(requestParameters.apiVideoIdPutRequest),\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => ApiVideoIdPut200ResponseFromJSON(jsonValue));\n }\n\n /**\n * update\n */\n async apiVideoIdPut(requestParameters: ApiVideoIdPutOperationRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise {\n const response = await this.apiVideoIdPutRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * prepare\n */\n async apiVideoPreparePostRaw(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/api/video/prepare`,\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => ApiVideoPreparePost200ResponseFromJSON(jsonValue));\n }\n\n /**\n * prepare\n */\n async apiVideoPreparePost(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise {\n const response = await this.apiVideoPreparePostRaw(initOverrides);\n return await response.value();\n }\n\n /**\n * uploaded\n */\n async apiVideoUploadedPostRaw(requestParameters: ApiVideoUploadedPostOperationRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n const response = await this.request({\n path: `/api/video/uploaded`,\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n body: ApiVideoUploadedPostRequestToJSON(requestParameters.apiVideoUploadedPostRequest),\n }, initOverrides);\n\n return new runtime.VoidApiResponse(response);\n }\n\n /**\n * uploaded\n */\n async apiVideoUploadedPost(requestParameters: ApiVideoUploadedPostOperationRequest = {}, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise {\n await this.apiVideoUploadedPostRaw(requestParameters, initOverrides);\n }\n\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * hopper\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\nimport * as runtime from '../runtime';\nimport type {\n ApiVideoVideoIdWatchLinkGet200Response,\n ApiVideoVideoIdWatchLinkPatch200Response,\n ApiVideoVideoIdWatchLinkPatch422Response,\n ApiVideoVideoIdWatchLinkPatchRequest,\n} from '../models';\nimport {\n ApiVideoVideoIdWatchLinkGet200ResponseFromJSON,\n ApiVideoVideoIdWatchLinkGet200ResponseToJSON,\n ApiVideoVideoIdWatchLinkPatch200ResponseFromJSON,\n ApiVideoVideoIdWatchLinkPatch200ResponseToJSON,\n ApiVideoVideoIdWatchLinkPatch422ResponseFromJSON,\n ApiVideoVideoIdWatchLinkPatch422ResponseToJSON,\n ApiVideoVideoIdWatchLinkPatchRequestFromJSON,\n ApiVideoVideoIdWatchLinkPatchRequestToJSON,\n} from '../models';\n\nexport interface ApiVideoVideoIdWatchLinkGetRequest {\n videoId: number;\n}\n\nexport interface ApiVideoVideoIdWatchLinkPatchOperationRequest {\n videoId: number;\n apiVideoVideoIdWatchLinkPatchRequest?: ApiVideoVideoIdWatchLinkPatchRequest;\n}\n\n/**\n * \n */\nexport class ApiWatchLinkApi extends runtime.BaseAPI {\n\n /**\n * show\n */\n async apiVideoVideoIdWatchLinkGetRaw(requestParameters: ApiVideoVideoIdWatchLinkGetRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {\n if (requestParameters.videoId === null || requestParameters.videoId === undefined) {\n throw new runtime.RequiredError('videoId','Required parameter requestParameters.videoId was null or undefined when calling apiVideoVideoIdWatchLinkGet.');\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/api/video/{video_id}/watch_link`.replace(`{${\"video_id\"}}`, encodeURIComponent(String(requestParameters.videoId))),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => ApiVideoVideoIdWatchLinkGet200ResponseFromJSON(jsonValue));\n }\n\n /**\n * show\n */\n async apiVideoVideoIdWatchLinkGet(requestParameters: ApiVideoVideoIdWatchLinkGetRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise {\n const response = await this.apiVideoVideoIdWatchLinkGetRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * update\n */\n async apiVideoVideoIdWatchLinkPatchRaw(requestParameters: ApiVideoVideoIdWatchLinkPatchOperationRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {\n if (requestParameters.videoId === null || requestParameters.videoId === undefined) {\n throw new runtime.RequiredError('videoId','Required parameter requestParameters.videoId was null or undefined when calling apiVideoVideoIdWatchLinkPatch.');\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n const response = await this.request({\n path: `/api/video/{video_id}/watch_link`.replace(`{${\"video_id\"}}`, encodeURIComponent(String(requestParameters.videoId))),\n method: 'PATCH',\n headers: headerParameters,\n query: queryParameters,\n body: ApiVideoVideoIdWatchLinkPatchRequestToJSON(requestParameters.apiVideoVideoIdWatchLinkPatchRequest),\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => ApiVideoVideoIdWatchLinkPatch200ResponseFromJSON(jsonValue));\n }\n\n /**\n * update\n */\n async apiVideoVideoIdWatchLinkPatch(requestParameters: ApiVideoVideoIdWatchLinkPatchOperationRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise {\n const response = await this.apiVideoVideoIdWatchLinkPatchRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * hopper\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\nimport * as runtime from '../runtime';\nimport type {\n ApiVideoVideoIdWatchLinkConditionResponsePostRequest,\n} from '../models';\nimport {\n ApiVideoVideoIdWatchLinkConditionResponsePostRequestFromJSON,\n ApiVideoVideoIdWatchLinkConditionResponsePostRequestToJSON,\n} from '../models';\n\nexport interface ApiVideoVideoIdWatchLinkConditionResponsePostOperationRequest {\n videoId: number;\n apiVideoVideoIdWatchLinkConditionResponsePostRequest?: ApiVideoVideoIdWatchLinkConditionResponsePostRequest;\n}\n\n/**\n * \n */\nexport class ApiWatchLinkConditionResponseApi extends runtime.BaseAPI {\n\n /**\n * create\n */\n async apiVideoVideoIdWatchLinkConditionResponsePostRaw(requestParameters: ApiVideoVideoIdWatchLinkConditionResponsePostOperationRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {\n if (requestParameters.videoId === null || requestParameters.videoId === undefined) {\n throw new runtime.RequiredError('videoId','Required parameter requestParameters.videoId was null or undefined when calling apiVideoVideoIdWatchLinkConditionResponsePost.');\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n const response = await this.request({\n path: `/api/video/{video_id}/watch_link/condition/response`.replace(`{${\"video_id\"}}`, encodeURIComponent(String(requestParameters.videoId))),\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n body: ApiVideoVideoIdWatchLinkConditionResponsePostRequestToJSON(requestParameters.apiVideoVideoIdWatchLinkConditionResponsePostRequest),\n }, initOverrides);\n\n if (this.isJsonMime(response.headers.get('content-type'))) {\n return new runtime.JSONApiResponse(response);\n } else {\n return new runtime.TextApiResponse(response) as any;\n }\n }\n\n /**\n * create\n */\n async apiVideoVideoIdWatchLinkConditionResponsePost(requestParameters: ApiVideoVideoIdWatchLinkConditionResponsePostOperationRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise {\n const response = await this.apiVideoVideoIdWatchLinkConditionResponsePostRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * hopper\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\nimport * as runtime from '../runtime';\nimport type {\n ApiWordPronounciationsAffectDesignGet200Response,\n ApiWordPronounciationsIdGet200Response,\n ApiWordPronounciationsIdPut200Response,\n ApiWordPronounciationsIdPut422Response,\n ApiWordPronounciationsIdPutRequest,\n ApiWordPronounciationsPostRequest,\n} from '../models';\nimport {\n ApiWordPronounciationsAffectDesignGet200ResponseFromJSON,\n ApiWordPronounciationsAffectDesignGet200ResponseToJSON,\n ApiWordPronounciationsIdGet200ResponseFromJSON,\n ApiWordPronounciationsIdGet200ResponseToJSON,\n ApiWordPronounciationsIdPut200ResponseFromJSON,\n ApiWordPronounciationsIdPut200ResponseToJSON,\n ApiWordPronounciationsIdPut422ResponseFromJSON,\n ApiWordPronounciationsIdPut422ResponseToJSON,\n ApiWordPronounciationsIdPutRequestFromJSON,\n ApiWordPronounciationsIdPutRequestToJSON,\n ApiWordPronounciationsPostRequestFromJSON,\n ApiWordPronounciationsPostRequestToJSON,\n} from '../models';\n\nexport interface ApiWordPronounciationsAffectDesignGetRequest {\n designId?: number;\n}\n\nexport interface ApiWordPronounciationsGetRequest {\n page?: number;\n}\n\nexport interface ApiWordPronounciationsIdDeleteRequest {\n id: number;\n}\n\nexport interface ApiWordPronounciationsIdGetRequest {\n id: number;\n}\n\nexport interface ApiWordPronounciationsIdPutOperationRequest {\n id: number;\n apiWordPronounciationsIdPutRequest?: ApiWordPronounciationsIdPutRequest;\n}\n\nexport interface ApiWordPronounciationsPostOperationRequest {\n apiWordPronounciationsPostRequest?: ApiWordPronounciationsPostRequest;\n}\n\n/**\n * \n */\nexport class ApiWordPronounciationApi extends runtime.BaseAPI {\n\n /**\n * affect_design\n */\n async apiWordPronounciationsAffectDesignGetRaw(requestParameters: ApiWordPronounciationsAffectDesignGetRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {\n const queryParameters: any = {};\n\n if (requestParameters.designId !== undefined) {\n queryParameters['design_id'] = requestParameters.designId;\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/api/word_pronounciations/affect_design`,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => ApiWordPronounciationsAffectDesignGet200ResponseFromJSON(jsonValue));\n }\n\n /**\n * affect_design\n */\n async apiWordPronounciationsAffectDesignGet(requestParameters: ApiWordPronounciationsAffectDesignGetRequest = {}, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise {\n const response = await this.apiWordPronounciationsAffectDesignGetRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * index\n */\n async apiWordPronounciationsGetRaw(requestParameters: ApiWordPronounciationsGetRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>> {\n const queryParameters: any = {};\n\n if (requestParameters.page !== undefined) {\n queryParameters['page'] = requestParameters.page;\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/api/word_pronounciations`,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(ApiWordPronounciationsIdGet200ResponseFromJSON));\n }\n\n /**\n * index\n */\n async apiWordPronounciationsGet(requestParameters: ApiWordPronounciationsGetRequest = {}, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {\n const response = await this.apiWordPronounciationsGetRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * destroy\n */\n async apiWordPronounciationsIdDeleteRaw(requestParameters: ApiWordPronounciationsIdDeleteRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError('id','Required parameter requestParameters.id was null or undefined when calling apiWordPronounciationsIdDelete.');\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/api/word_pronounciations/{id}`.replace(`{${\"id\"}}`, encodeURIComponent(String(requestParameters.id))),\n method: 'DELETE',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n if (this.isJsonMime(response.headers.get('content-type'))) {\n return new runtime.JSONApiResponse(response);\n } else {\n return new runtime.TextApiResponse(response) as any;\n }\n }\n\n /**\n * destroy\n */\n async apiWordPronounciationsIdDelete(requestParameters: ApiWordPronounciationsIdDeleteRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise {\n const response = await this.apiWordPronounciationsIdDeleteRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * show\n */\n async apiWordPronounciationsIdGetRaw(requestParameters: ApiWordPronounciationsIdGetRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError('id','Required parameter requestParameters.id was null or undefined when calling apiWordPronounciationsIdGet.');\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/api/word_pronounciations/{id}`.replace(`{${\"id\"}}`, encodeURIComponent(String(requestParameters.id))),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => ApiWordPronounciationsIdGet200ResponseFromJSON(jsonValue));\n }\n\n /**\n * show\n */\n async apiWordPronounciationsIdGet(requestParameters: ApiWordPronounciationsIdGetRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise {\n const response = await this.apiWordPronounciationsIdGetRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * update\n */\n async apiWordPronounciationsIdPutRaw(requestParameters: ApiWordPronounciationsIdPutOperationRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError('id','Required parameter requestParameters.id was null or undefined when calling apiWordPronounciationsIdPut.');\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n const response = await this.request({\n path: `/api/word_pronounciations/{id}`.replace(`{${\"id\"}}`, encodeURIComponent(String(requestParameters.id))),\n method: 'PUT',\n headers: headerParameters,\n query: queryParameters,\n body: ApiWordPronounciationsIdPutRequestToJSON(requestParameters.apiWordPronounciationsIdPutRequest),\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => ApiWordPronounciationsIdPut200ResponseFromJSON(jsonValue));\n }\n\n /**\n * update\n */\n async apiWordPronounciationsIdPut(requestParameters: ApiWordPronounciationsIdPutOperationRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise {\n const response = await this.apiWordPronounciationsIdPutRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * create\n */\n async apiWordPronounciationsPostRaw(requestParameters: ApiWordPronounciationsPostOperationRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n const response = await this.request({\n path: `/api/word_pronounciations`,\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n body: ApiWordPronounciationsPostRequestToJSON(requestParameters.apiWordPronounciationsPostRequest),\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => ApiWordPronounciationsIdPut200ResponseFromJSON(jsonValue));\n }\n\n /**\n * create\n */\n async apiWordPronounciationsPost(requestParameters: ApiWordPronounciationsPostOperationRequest = {}, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise {\n const response = await this.apiWordPronounciationsPostRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n}\n","/* tslint:disable */\n/* This is generated by ts_routes-rails */\n\nexport type ScalarType = string | number | boolean;\n\nfunction $buildOptions(options: any, names: string[]): string {\n if (options) {\n let anchor = \"\";\n const q = [] as string[];\n for (const key of Object.keys(options)) {\n if (names.indexOf(key) !== -1) {\n // the key is already consumed\n continue;\n }\n\n const value = options[key];\n\n if (key === \"anchor\") {\n anchor = `#${$encode(value)}`;\n } else {\n $buildQuery(q, key, value);\n }\n }\n return (q.length > 0 ? \"?\" + q.join(\"&\") : \"\") + anchor;\n } else {\n return \"\";\n }\n}\n\nfunction $buildQuery(q: string[], key: string, value: any) {\n if ($isScalarType(value)) {\n q.push(`${$encode(key)}=${$encode(value)}`);\n } else if (Array.isArray(value)) {\n for (const v of value) {\n $buildQuery(q, `${key}[]`, v);\n }\n } else if (value != null) {\n // i.e. non-null, non-scalar, non-array type\n for (const k of Object.keys(value)) {\n $buildQuery(q, `${key}[${k}]`, value[k]);\n }\n }\n}\n\nfunction $encode(value: any): string {\n return encodeURIComponent(value);\n}\n\nfunction $isScalarType(value: any): value is ScalarType {\n return (\n typeof value === \"string\" ||\n typeof value === \"number\" ||\n typeof value === \"boolean\"\n );\n}\n\nfunction $isPresent(value: any): boolean {\n return value != null && (\"\" + value).length > 0;\n}\n\nfunction $hasPresentOwnProperty(options: any, key: string): boolean {\n return options && options.hasOwnProperty(key) && $isPresent(options[key]);\n}\n\n/** / */\nexport function rootPath(options?: object): string {\n return \"/\" + $buildOptions(options, []);\n}\n\n/** /home(.:format) */\nexport function homePath(options?: object): string {\n return \"/\" + \"home\" + ($hasPresentOwnProperty(options, \"format\") ? \".\" + (options as any).format : \"\") + $buildOptions(options, [\"format\"]);\n}\n\n/** /terms(.:format) */\nexport function termsPath(options?: object): string {\n return \"/\" + \"terms\" + ($hasPresentOwnProperty(options, \"format\") ? \".\" + (options as any).format : \"\") + $buildOptions(options, [\"format\"]);\n}\n\n/** /install(.:format) */\nexport function installPath(options?: object): string {\n return \"/\" + \"install\" + ($hasPresentOwnProperty(options, \"format\") ? \".\" + (options as any).format : \"\") + $buildOptions(options, [\"format\"]);\n}\n\n/** /auth/login(.:format) */\nexport function loginAuthPath(options?: object): string {\n return \"/\" + \"auth\" + \"/\" + \"login\" + ($hasPresentOwnProperty(options, \"format\") ? \".\" + (options as any).format : \"\") + $buildOptions(options, [\"format\"]);\n}\n\n/** /auth/status(.:format) */\nexport function statusAuthPath(options?: object): string {\n return \"/\" + \"auth\" + \"/\" + \"status\" + ($hasPresentOwnProperty(options, \"format\") ? \".\" + (options as any).format : \"\") + $buildOptions(options, [\"format\"]);\n}\n\n/** /auth/logout(.:format) */\nexport function logoutAuthPath(options?: object): string {\n return \"/\" + \"auth\" + \"/\" + \"logout\" + ($hasPresentOwnProperty(options, \"format\") ? \".\" + (options as any).format : \"\") + $buildOptions(options, [\"format\"]);\n}\n\n/** /auth/auth0(.:format) */\nexport function auth0AuthPath(options?: object): string {\n return \"/\" + \"auth\" + \"/\" + \"auth0\" + ($hasPresentOwnProperty(options, \"format\") ? \".\" + (options as any).format : \"\") + $buildOptions(options, [\"format\"]);\n}\n\n/** /auth/email_verifying(.:format) */\nexport function emailVerifyingAuthPath(options?: object): string {\n return \"/\" + \"auth\" + \"/\" + \"email_verifying\" + ($hasPresentOwnProperty(options, \"format\") ? \".\" + (options as any).format : \"\") + $buildOptions(options, [\"format\"]);\n}\n\n/** /auth/auth0/callback(.:format) */\nexport function callbackAuthAuth0Path(options?: object): string {\n return \"/\" + \"auth\" + \"/\" + \"auth0\" + \"/\" + \"callback\" + ($hasPresentOwnProperty(options, \"format\") ? \".\" + (options as any).format : \"\") + $buildOptions(options, [\"format\"]);\n}\n\n/** /folders/:id(.:format) */\nexport function folderPath(id: ScalarType, options?: object): string {\n return \"/\" + \"folders\" + \"/\" + id + ($hasPresentOwnProperty(options, \"format\") ? \".\" + (options as any).format : \"\") + $buildOptions(options, [\"id\",\"format\"]);\n}\n\n/** /video/:id/embed(.:format) */\nexport function embedVideoWatchPath(id: ScalarType, options?: object): string {\n return \"/\" + \"video\" + \"/\" + id + \"/\" + \"embed\" + ($hasPresentOwnProperty(options, \"format\") ? \".\" + (options as any).format : \"\") + $buildOptions(options, [\"id\",\"format\"]);\n}\n\n/** /video/:id(.:format) */\nexport function videoWatchPath(id: ScalarType, options?: object): string {\n return \"/\" + \"video\" + \"/\" + id + ($hasPresentOwnProperty(options, \"format\") ? \".\" + (options as any).format : \"\") + $buildOptions(options, [\"id\",\"format\"]);\n}\n\n/** /design/:id/info(.:format) */\nexport function infoDesignPath(id: ScalarType, options?: object): string {\n return \"/\" + \"design\" + \"/\" + id + \"/\" + \"info\" + ($hasPresentOwnProperty(options, \"format\") ? \".\" + (options as any).format : \"\") + $buildOptions(options, [\"id\",\"format\"]);\n}\n\n/** /design/:design_id/exam/edit(.:format) */\nexport function editDesignExamPath(design_id: ScalarType, options?: object): string {\n return \"/\" + \"design\" + \"/\" + design_id + \"/\" + \"exam\" + \"/\" + \"edit\" + ($hasPresentOwnProperty(options, \"format\") ? \".\" + (options as any).format : \"\") + $buildOptions(options, [\"design_id\",\"format\"]);\n}\n\n/** /design(.:format) */\nexport function designIndexPath(options?: object): string {\n return \"/\" + \"design\" + ($hasPresentOwnProperty(options, \"format\") ? \".\" + (options as any).format : \"\") + $buildOptions(options, [\"format\"]);\n}\n\n/** /design/:id/edit(.:format) */\nexport function editDesignPath(id: ScalarType, options?: object): string {\n return \"/\" + \"design\" + \"/\" + id + \"/\" + \"edit\" + ($hasPresentOwnProperty(options, \"format\") ? \".\" + (options as any).format : \"\") + $buildOptions(options, [\"id\",\"format\"]);\n}\n\n/** /video/:video_id/reviews(.:format) */\nexport function videoReviewsPath(video_id: ScalarType, options?: object): string {\n return \"/\" + \"video\" + \"/\" + video_id + \"/\" + \"reviews\" + ($hasPresentOwnProperty(options, \"format\") ? \".\" + (options as any).format : \"\") + $buildOptions(options, [\"video_id\",\"format\"]);\n}\n\n/** /video/:video_id/subtitles(.:format) */\nexport function videoSubtitlesPath(video_id: ScalarType, options?: object): string {\n return \"/\" + \"video\" + \"/\" + video_id + \"/\" + \"subtitles\" + ($hasPresentOwnProperty(options, \"format\") ? \".\" + (options as any).format : \"\") + $buildOptions(options, [\"video_id\",\"format\"]);\n}\n\n/** /video/:video_id/timeline/edit(.:format) */\nexport function editVideoTimelinePath(video_id: ScalarType, options?: object): string {\n return \"/\" + \"video\" + \"/\" + video_id + \"/\" + \"timeline\" + \"/\" + \"edit\" + ($hasPresentOwnProperty(options, \"format\") ? \".\" + (options as any).format : \"\") + $buildOptions(options, [\"video_id\",\"format\"]);\n}\n\n/** /video/:video_id/narrations/edit(.:format) */\nexport function editVideoNarrationsPath(video_id: ScalarType, options?: object): string {\n return \"/\" + \"video\" + \"/\" + video_id + \"/\" + \"narrations\" + \"/\" + \"edit\" + ($hasPresentOwnProperty(options, \"format\") ? \".\" + (options as any).format : \"\") + $buildOptions(options, [\"video_id\",\"format\"]);\n}\n\n/** /video/:video_id/exam/edit(.:format) */\nexport function editVideoExamPath(video_id: ScalarType, options?: object): string {\n return \"/\" + \"video\" + \"/\" + video_id + \"/\" + \"exam\" + \"/\" + \"edit\" + ($hasPresentOwnProperty(options, \"format\") ? \".\" + (options as any).format : \"\") + $buildOptions(options, [\"video_id\",\"format\"]);\n}\n\n/** /video/:id(.:format) */\nexport function videoPath(id: ScalarType, options?: object): string {\n return \"/\" + \"video\" + \"/\" + id + ($hasPresentOwnProperty(options, \"format\") ? \".\" + (options as any).format : \"\") + $buildOptions(options, [\"id\",\"format\"]);\n}\n\n/** /teams/members/:id(.:format) */\nexport function teamsMemberPath(id: ScalarType, options?: object): string {\n return \"/\" + \"teams\" + \"/\" + \"members\" + \"/\" + id + ($hasPresentOwnProperty(options, \"format\") ? \".\" + (options as any).format : \"\") + $buildOptions(options, [\"id\",\"format\"]);\n}\n\n/** /teams/invites(.:format) */\nexport function teamsInvitesPath(options?: object): string {\n return \"/\" + \"teams\" + \"/\" + \"invites\" + ($hasPresentOwnProperty(options, \"format\") ? \".\" + (options as any).format : \"\") + $buildOptions(options, [\"format\"]);\n}\n\n/** /teams/invites/:id(.:format) */\nexport function teamsInvitePath(id: ScalarType, options?: object): string {\n return \"/\" + \"teams\" + \"/\" + \"invites\" + \"/\" + id + ($hasPresentOwnProperty(options, \"format\") ? \".\" + (options as any).format : \"\") + $buildOptions(options, [\"id\",\"format\"]);\n}\n\n/** /teams(.:format) */\nexport function teamsPath(options?: object): string {\n return \"/\" + \"teams\" + ($hasPresentOwnProperty(options, \"format\") ? \".\" + (options as any).format : \"\") + $buildOptions(options, [\"format\"]);\n}\n\n/** /academies/:id/edit(.:format) */\nexport function editAcademyPath(id: ScalarType, options?: object): string {\n return \"/\" + \"academies\" + \"/\" + id + \"/\" + \"edit\" + ($hasPresentOwnProperty(options, \"format\") ? \".\" + (options as any).format : \"\") + $buildOptions(options, [\"id\",\"format\"]);\n}\n\n/** /academies/:academy_id/search(.:format) */\nexport function academySearchPath(academy_id: ScalarType, options?: object): string {\n return \"/\" + \"academies\" + \"/\" + academy_id + \"/\" + \"search\" + ($hasPresentOwnProperty(options, \"format\") ? \".\" + (options as any).format : \"\") + $buildOptions(options, [\"academy_id\",\"format\"]);\n}\n\n/** /academies/:id(.:format) */\nexport function academyPath(id: ScalarType, options?: object): string {\n return \"/\" + \"academies\" + \"/\" + id + ($hasPresentOwnProperty(options, \"format\") ? \".\" + (options as any).format : \"\") + $buildOptions(options, [\"id\",\"format\"]);\n}\n\n/** /academies/courses/:id/edit(.:format) */\nexport function editAcademiesCoursePath(id: ScalarType, options?: object): string {\n return \"/\" + \"academies\" + \"/\" + \"courses\" + \"/\" + id + \"/\" + \"edit\" + ($hasPresentOwnProperty(options, \"format\") ? \".\" + (options as any).format : \"\") + $buildOptions(options, [\"id\",\"format\"]);\n}\n\n/** /academies/courses/:id(.:format) */\nexport function academiesCoursePath(id: ScalarType, options?: object): string {\n return \"/\" + \"academies\" + \"/\" + \"courses\" + \"/\" + id + ($hasPresentOwnProperty(options, \"format\") ? \".\" + (options as any).format : \"\") + $buildOptions(options, [\"id\",\"format\"]);\n}\n\n/** /academies/course_lessons/new(.:format) */\nexport function newAcademiesCourseLessonPath(options?: object): string {\n return \"/\" + \"academies\" + \"/\" + \"course_lessons\" + \"/\" + \"new\" + ($hasPresentOwnProperty(options, \"format\") ? \".\" + (options as any).format : \"\") + $buildOptions(options, [\"format\"]);\n}\n\n/** /academies/course_lessons/:id/edit(.:format) */\nexport function editAcademiesCourseLessonPath(id: ScalarType, options?: object): string {\n return \"/\" + \"academies\" + \"/\" + \"course_lessons\" + \"/\" + id + \"/\" + \"edit\" + ($hasPresentOwnProperty(options, \"format\") ? \".\" + (options as any).format : \"\") + $buildOptions(options, [\"id\",\"format\"]);\n}\n\n/** /academies/course_lessons/:id(.:format) */\nexport function academiesCourseLessonPath(id: ScalarType, options?: object): string {\n return \"/\" + \"academies\" + \"/\" + \"course_lessons\" + \"/\" + id + ($hasPresentOwnProperty(options, \"format\") ? \".\" + (options as any).format : \"\") + $buildOptions(options, [\"id\",\"format\"]);\n}\n\n/** /academies/course_categories/:id/edit(.:format) */\nexport function editAcademiesCourseCategoryPath(id: ScalarType, options?: object): string {\n return \"/\" + \"academies\" + \"/\" + \"course_categories\" + \"/\" + id + \"/\" + \"edit\" + ($hasPresentOwnProperty(options, \"format\") ? \".\" + (options as any).format : \"\") + $buildOptions(options, [\"id\",\"format\"]);\n}\n\n/** /academies/course_categories/:id(.:format) */\nexport function academiesCourseCategoryPath(id: ScalarType, options?: object): string {\n return \"/\" + \"academies\" + \"/\" + \"course_categories\" + \"/\" + id + ($hasPresentOwnProperty(options, \"format\") ? \".\" + (options as any).format : \"\") + $buildOptions(options, [\"id\",\"format\"]);\n}\n\n/** /summary/team(.:format) */\nexport function summaryTeamPath(options?: object): string {\n return \"/\" + \"summary\" + \"/\" + \"team\" + ($hasPresentOwnProperty(options, \"format\") ? \".\" + (options as any).format : \"\") + $buildOptions(options, [\"format\"]);\n}\n\n/** /summary/folders(.:format) */\nexport function summaryFoldersPath(options?: object): string {\n return \"/\" + \"summary\" + \"/\" + \"folders\" + ($hasPresentOwnProperty(options, \"format\") ? \".\" + (options as any).format : \"\") + $buildOptions(options, [\"format\"]);\n}\n\n/** /summary/folders/:id(.:format) */\nexport function summaryFolderPath(id: ScalarType, options?: object): string {\n return \"/\" + \"summary\" + \"/\" + \"folders\" + \"/\" + id + ($hasPresentOwnProperty(options, \"format\") ? \".\" + (options as any).format : \"\") + $buildOptions(options, [\"id\",\"format\"]);\n}\n\n/** /summary/users(.:format) */\nexport function summaryUsersPath(options?: object): string {\n return \"/\" + \"summary\" + \"/\" + \"users\" + ($hasPresentOwnProperty(options, \"format\") ? \".\" + (options as any).format : \"\") + $buildOptions(options, [\"format\"]);\n}\n\n/** /summary/users/:id(.:format) */\nexport function summaryUserPath(id: ScalarType, options?: object): string {\n return \"/\" + \"summary\" + \"/\" + \"users\" + \"/\" + id + ($hasPresentOwnProperty(options, \"format\") ? \".\" + (options as any).format : \"\") + $buildOptions(options, [\"id\",\"format\"]);\n}\n\n/** /exam_question_answers(.:format) */\nexport function examQuestionAnswersPath(options?: object): string {\n return \"/\" + \"exam_question_answers\" + ($hasPresentOwnProperty(options, \"format\") ? \".\" + (options as any).format : \"\") + $buildOptions(options, [\"format\"]);\n}\n\n/** /exam_csvs/academy_csv_download(.:format) */\nexport function academyCsvDownloadExamCsvsPath(options?: object): string {\n return \"/\" + \"exam_csvs\" + \"/\" + \"academy_csv_download\" + ($hasPresentOwnProperty(options, \"format\") ? \".\" + (options as any).format : \"\") + $buildOptions(options, [\"format\"]);\n}\n\n/** /exam_csvs/folder_csv_download(.:format) */\nexport function folderCsvDownloadExamCsvsPath(options?: object): string {\n return \"/\" + \"exam_csvs\" + \"/\" + \"folder_csv_download\" + ($hasPresentOwnProperty(options, \"format\") ? \".\" + (options as any).format : \"\") + $buildOptions(options, [\"format\"]);\n}\n\n/** /exam_csvs(.:format) */\nexport function examCsvsPath(options?: object): string {\n return \"/\" + \"exam_csvs\" + ($hasPresentOwnProperty(options, \"format\") ? \".\" + (options as any).format : \"\") + $buildOptions(options, [\"format\"]);\n}\n\n/** /word_pronounciations(.:format) */\nexport function wordPronounciationsPath(options?: object): string {\n return \"/\" + \"word_pronounciations\" + ($hasPresentOwnProperty(options, \"format\") ? \".\" + (options as any).format : \"\") + $buildOptions(options, [\"format\"]);\n}\n\n/** /api/azure/cognitive/issue_token(.:format) */\nexport function apiAzureCognitiveIssueTokenPath(options?: object): string {\n return \"/\" + \"api\" + \"/\" + \"azure\" + \"/\" + \"cognitive\" + \"/\" + \"issue_token\" + ($hasPresentOwnProperty(options, \"format\") ? \".\" + (options as any).format : \"\") + $buildOptions(options, [\"format\"]);\n}\n\n/** /api/design/:id/add_creatomate_job(.:format) */\nexport function addCreatomateJobApiDesignPath(id: ScalarType, options?: object): string {\n return \"/\" + \"api\" + \"/\" + \"design\" + \"/\" + id + \"/\" + \"add_creatomate_job\" + ($hasPresentOwnProperty(options, \"format\") ? \".\" + (options as any).format : \"\") + $buildOptions(options, [\"id\",\"format\"]);\n}\n\n/** /api/design/:design_id/scenes(.:format) */\nexport function apiDesignScenesPath(design_id: ScalarType, options?: object): string {\n return \"/\" + \"api\" + \"/\" + \"design\" + \"/\" + design_id + \"/\" + \"scenes\" + ($hasPresentOwnProperty(options, \"format\") ? \".\" + (options as any).format : \"\") + $buildOptions(options, [\"design_id\",\"format\"]);\n}\n\n/** /api/scenes/:id/presign_image(.:format) */\nexport function presignImageApiScenePath(id: ScalarType, options?: object): string {\n return \"/\" + \"api\" + \"/\" + \"scenes\" + \"/\" + id + \"/\" + \"presign_image\" + ($hasPresentOwnProperty(options, \"format\") ? \".\" + (options as any).format : \"\") + $buildOptions(options, [\"id\",\"format\"]);\n}\n\n/** /api/scenes/:id/uploaded_image(.:format) */\nexport function uploadedImageApiScenePath(id: ScalarType, options?: object): string {\n return \"/\" + \"api\" + \"/\" + \"scenes\" + \"/\" + id + \"/\" + \"uploaded_image\" + ($hasPresentOwnProperty(options, \"format\") ? \".\" + (options as any).format : \"\") + $buildOptions(options, [\"id\",\"format\"]);\n}\n\n/** /api/scenes/:id/presign_audio(.:format) */\nexport function presignAudioApiScenePath(id: ScalarType, options?: object): string {\n return \"/\" + \"api\" + \"/\" + \"scenes\" + \"/\" + id + \"/\" + \"presign_audio\" + ($hasPresentOwnProperty(options, \"format\") ? \".\" + (options as any).format : \"\") + $buildOptions(options, [\"id\",\"format\"]);\n}\n\n/** /api/scenes/:id/uploaded_audio(.:format) */\nexport function uploadedAudioApiScenePath(id: ScalarType, options?: object): string {\n return \"/\" + \"api\" + \"/\" + \"scenes\" + \"/\" + id + \"/\" + \"uploaded_audio\" + ($hasPresentOwnProperty(options, \"format\") ? \".\" + (options as any).format : \"\") + $buildOptions(options, [\"id\",\"format\"]);\n}\n\n/** /api/scenes/:id(.:format) */\nexport function apiScenePath(id: ScalarType, options?: object): string {\n return \"/\" + \"api\" + \"/\" + \"scenes\" + \"/\" + id + ($hasPresentOwnProperty(options, \"format\") ? \".\" + (options as any).format : \"\") + $buildOptions(options, [\"id\",\"format\"]);\n}\n\n/** /api/video/prepare(.:format) */\nexport function prepareApiVideoIndexPath(options?: object): string {\n return \"/\" + \"api\" + \"/\" + \"video\" + \"/\" + \"prepare\" + ($hasPresentOwnProperty(options, \"format\") ? \".\" + (options as any).format : \"\") + $buildOptions(options, [\"format\"]);\n}\n\n/** /api/video/uploaded(.:format) */\nexport function uploadedApiVideoIndexPath(options?: object): string {\n return \"/\" + \"api\" + \"/\" + \"video\" + \"/\" + \"uploaded\" + ($hasPresentOwnProperty(options, \"format\") ? \".\" + (options as any).format : \"\") + $buildOptions(options, [\"format\"]);\n}\n\n/** /api/video/:id/move(.:format) */\nexport function moveApiVideoPath(id: ScalarType, options?: object): string {\n return \"/\" + \"api\" + \"/\" + \"video\" + \"/\" + id + \"/\" + \"move\" + ($hasPresentOwnProperty(options, \"format\") ? \".\" + (options as any).format : \"\") + $buildOptions(options, [\"id\",\"format\"]);\n}\n\n/** /api/video/:id/duplicate(.:format) */\nexport function duplicateApiVideoPath(id: ScalarType, options?: object): string {\n return \"/\" + \"api\" + \"/\" + \"video\" + \"/\" + id + \"/\" + \"duplicate\" + ($hasPresentOwnProperty(options, \"format\") ? \".\" + (options as any).format : \"\") + $buildOptions(options, [\"id\",\"format\"]);\n}\n\n/** /api/video/:id/download(.:format) */\nexport function downloadApiVideoPath(id: ScalarType, options?: object): string {\n return \"/\" + \"api\" + \"/\" + \"video\" + \"/\" + id + \"/\" + \"download\" + ($hasPresentOwnProperty(options, \"format\") ? \".\" + (options as any).format : \"\") + $buildOptions(options, [\"id\",\"format\"]);\n}\n\n/** /api/video/:id/thumbnail/presign(.:format) */\nexport function presignApiThumbnailPath(id: ScalarType, options?: object): string {\n return \"/\" + \"api\" + \"/\" + \"video\" + \"/\" + id + \"/\" + \"thumbnail\" + \"/\" + \"presign\" + ($hasPresentOwnProperty(options, \"format\") ? \".\" + (options as any).format : \"\") + $buildOptions(options, [\"id\",\"format\"]);\n}\n\n/** /api/video/:id/thumbnail(.:format) */\nexport function apiThumbnailPath(id: ScalarType, options?: object): string {\n return \"/\" + \"api\" + \"/\" + \"video\" + \"/\" + id + \"/\" + \"thumbnail\" + ($hasPresentOwnProperty(options, \"format\") ? \".\" + (options as any).format : \"\") + $buildOptions(options, [\"id\",\"format\"]);\n}\n\n/** /api/video/:video_id/watch_link(.:format) */\nexport function apiVideoWatchLinkPath(video_id: ScalarType, options?: object): string {\n return \"/\" + \"api\" + \"/\" + \"video\" + \"/\" + video_id + \"/\" + \"watch_link\" + ($hasPresentOwnProperty(options, \"format\") ? \".\" + (options as any).format : \"\") + $buildOptions(options, [\"video_id\",\"format\"]);\n}\n\n/** /api/video/:video_id/watch_link/condition/response(.:format) */\nexport function apiVideoWatchLinkConditionResponseIndexPath(video_id: ScalarType, options?: object): string {\n return \"/\" + \"api\" + \"/\" + \"video\" + \"/\" + video_id + \"/\" + \"watch_link\" + \"/\" + \"condition\" + \"/\" + \"response\" + ($hasPresentOwnProperty(options, \"format\") ? \".\" + (options as any).format : \"\") + $buildOptions(options, [\"video_id\",\"format\"]);\n}\n\n/** /api/video/:video_id/subtitles/add_generate_job(.:format) */\nexport function addGenerateJobApiVideoSubtitlesPath(video_id: ScalarType, options?: object): string {\n return \"/\" + \"api\" + \"/\" + \"video\" + \"/\" + video_id + \"/\" + \"subtitles\" + \"/\" + \"add_generate_job\" + ($hasPresentOwnProperty(options, \"format\") ? \".\" + (options as any).format : \"\") + $buildOptions(options, [\"video_id\",\"format\"]);\n}\n\n/** /api/video/:video_id/subtitles/published(.:format) */\nexport function publishedApiVideoSubtitlesPath(video_id: ScalarType, options?: object): string {\n return \"/\" + \"api\" + \"/\" + \"video\" + \"/\" + video_id + \"/\" + \"subtitles\" + \"/\" + \"published\" + ($hasPresentOwnProperty(options, \"format\") ? \".\" + (options as any).format : \"\") + $buildOptions(options, [\"video_id\",\"format\"]);\n}\n\n/** /api/video/:video_id/subtitles/default_displayed(.:format) */\nexport function defaultDisplayedApiVideoSubtitlesPath(video_id: ScalarType, options?: object): string {\n return \"/\" + \"api\" + \"/\" + \"video\" + \"/\" + video_id + \"/\" + \"subtitles\" + \"/\" + \"default_displayed\" + ($hasPresentOwnProperty(options, \"format\") ? \".\" + (options as any).format : \"\") + $buildOptions(options, [\"video_id\",\"format\"]);\n}\n\n/** /api/video/:video_id/subtitles(.:format) */\nexport function apiVideoSubtitlesPath(video_id: ScalarType, options?: object): string {\n return \"/\" + \"api\" + \"/\" + \"video\" + \"/\" + video_id + \"/\" + \"subtitles\" + ($hasPresentOwnProperty(options, \"format\") ? \".\" + (options as any).format : \"\") + $buildOptions(options, [\"video_id\",\"format\"]);\n}\n\n/** /api/video/:video_id/narrations/presign(.:format) */\nexport function presignApiVideoNarrationsPath(video_id: ScalarType, options?: object): string {\n return \"/\" + \"api\" + \"/\" + \"video\" + \"/\" + video_id + \"/\" + \"narrations\" + \"/\" + \"presign\" + ($hasPresentOwnProperty(options, \"format\") ? \".\" + (options as any).format : \"\") + $buildOptions(options, [\"video_id\",\"format\"]);\n}\n\n/** /api/video/:video_id/narrations(.:format) */\nexport function apiVideoNarrationsPath(video_id: ScalarType, options?: object): string {\n return \"/\" + \"api\" + \"/\" + \"video\" + \"/\" + video_id + \"/\" + \"narrations\" + ($hasPresentOwnProperty(options, \"format\") ? \".\" + (options as any).format : \"\") + $buildOptions(options, [\"video_id\",\"format\"]);\n}\n\n/** /api/video/:video_id/thumbnail_sprites(.:format) */\nexport function apiVideoThumbnailSpritesPath(video_id: ScalarType, options?: object): string {\n return \"/\" + \"api\" + \"/\" + \"video\" + \"/\" + video_id + \"/\" + \"thumbnail_sprites\" + ($hasPresentOwnProperty(options, \"format\") ? \".\" + (options as any).format : \"\") + $buildOptions(options, [\"video_id\",\"format\"]);\n}\n\n/** /api/video/:video_id/timeline_update_jobs(.:format) */\nexport function apiVideoTimelineUpdateJobsPath(video_id: ScalarType, options?: object): string {\n return \"/\" + \"api\" + \"/\" + \"video\" + \"/\" + video_id + \"/\" + \"timeline_update_jobs\" + ($hasPresentOwnProperty(options, \"format\") ? \".\" + (options as any).format : \"\") + $buildOptions(options, [\"video_id\",\"format\"]);\n}\n\n/** /api/video/:video_id/exam/questions(.:format) */\nexport function apiVideoExamQuestionsPath(video_id: ScalarType, options?: object): string {\n return \"/\" + \"api\" + \"/\" + \"video\" + \"/\" + video_id + \"/\" + \"exam\" + \"/\" + \"questions\" + ($hasPresentOwnProperty(options, \"format\") ? \".\" + (options as any).format : \"\") + $buildOptions(options, [\"video_id\",\"format\"]);\n}\n\n/** /api/video/:video_id/exam/answers(.:format) */\nexport function apiVideoExamAnswersPath(video_id: ScalarType, options?: object): string {\n return \"/\" + \"api\" + \"/\" + \"video\" + \"/\" + video_id + \"/\" + \"exam\" + \"/\" + \"answers\" + ($hasPresentOwnProperty(options, \"format\") ? \".\" + (options as any).format : \"\") + $buildOptions(options, [\"video_id\",\"format\"]);\n}\n\n/** /api/video/:video_id/exam(.:format) */\nexport function apiVideoExamPath(video_id: ScalarType, options?: object): string {\n return \"/\" + \"api\" + \"/\" + \"video\" + \"/\" + video_id + \"/\" + \"exam\" + ($hasPresentOwnProperty(options, \"format\") ? \".\" + (options as any).format : \"\") + $buildOptions(options, [\"video_id\",\"format\"]);\n}\n\n/** /api/video/:id(.:format) */\nexport function apiVideoPath(id: ScalarType, options?: object): string {\n return \"/\" + \"api\" + \"/\" + \"video\" + \"/\" + id + ($hasPresentOwnProperty(options, \"format\") ? \".\" + (options as any).format : \"\") + $buildOptions(options, [\"id\",\"format\"]);\n}\n\n/** /api/folders/:id/move(.:format) */\nexport function moveApiFolderPath(id: ScalarType, options?: object): string {\n return \"/\" + \"api\" + \"/\" + \"folders\" + \"/\" + id + \"/\" + \"move\" + ($hasPresentOwnProperty(options, \"format\") ? \".\" + (options as any).format : \"\") + $buildOptions(options, [\"id\",\"format\"]);\n}\n\n/** /api/folders/:id/rename(.:format) */\nexport function renameApiFolderPath(id: ScalarType, options?: object): string {\n return \"/\" + \"api\" + \"/\" + \"folders\" + \"/\" + id + \"/\" + \"rename\" + ($hasPresentOwnProperty(options, \"format\") ? \".\" + (options as any).format : \"\") + $buildOptions(options, [\"id\",\"format\"]);\n}\n\n/** /api/folders/:id/videos(.:format) */\nexport function videosApiFolderPath(id: ScalarType, options?: object): string {\n return \"/\" + \"api\" + \"/\" + \"folders\" + \"/\" + id + \"/\" + \"videos\" + ($hasPresentOwnProperty(options, \"format\") ? \".\" + (options as any).format : \"\") + $buildOptions(options, [\"id\",\"format\"]);\n}\n\n/** /api/folders(.:format) */\nexport function apiFoldersPath(options?: object): string {\n return \"/\" + \"api\" + \"/\" + \"folders\" + ($hasPresentOwnProperty(options, \"format\") ? \".\" + (options as any).format : \"\") + $buildOptions(options, [\"format\"]);\n}\n\n/** /api/folders/:id(.:format) */\nexport function apiFolderPath(id: ScalarType, options?: object): string {\n return \"/\" + \"api\" + \"/\" + \"folders\" + \"/\" + id + ($hasPresentOwnProperty(options, \"format\") ? \".\" + (options as any).format : \"\") + $buildOptions(options, [\"id\",\"format\"]);\n}\n\n/** /api/academy/:academy_id/watch_link(.:format) */\nexport function apiAcademyWatchLinkPath(academy_id: ScalarType, options?: object): string {\n return \"/\" + \"api\" + \"/\" + \"academy\" + \"/\" + academy_id + \"/\" + \"watch_link\" + ($hasPresentOwnProperty(options, \"format\") ? \".\" + (options as any).format : \"\") + $buildOptions(options, [\"academy_id\",\"format\"]);\n}\n\n/** /api/word_pronounciations/affect_design(.:format) */\nexport function affectDesignApiWordPronounciationsPath(options?: object): string {\n return \"/\" + \"api\" + \"/\" + \"word_pronounciations\" + \"/\" + \"affect_design\" + ($hasPresentOwnProperty(options, \"format\") ? \".\" + (options as any).format : \"\") + $buildOptions(options, [\"format\"]);\n}\n\n/** /api/word_pronounciations(.:format) */\nexport function apiWordPronounciationsPath(options?: object): string {\n return \"/\" + \"api\" + \"/\" + \"word_pronounciations\" + ($hasPresentOwnProperty(options, \"format\") ? \".\" + (options as any).format : \"\") + $buildOptions(options, [\"format\"]);\n}\n\n/** /api/word_pronounciations/:id(.:format) */\nexport function apiWordPronounciationPath(id: ScalarType, options?: object): string {\n return \"/\" + \"api\" + \"/\" + \"word_pronounciations\" + \"/\" + id + ($hasPresentOwnProperty(options, \"format\") ? \".\" + (options as any).format : \"\") + $buildOptions(options, [\"id\",\"format\"]);\n}\n\n/** /api/academy/logo/presign(.:format) */\nexport function presignApiAcademyLogoPath(options?: object): string {\n return \"/\" + \"api\" + \"/\" + \"academy\" + \"/\" + \"logo\" + \"/\" + \"presign\" + ($hasPresentOwnProperty(options, \"format\") ? \".\" + (options as any).format : \"\") + $buildOptions(options, [\"format\"]);\n}\n\n/** /api/academy/logo(.:format) */\nexport function apiAcademyLogoPath(options?: object): string {\n return \"/\" + \"api\" + \"/\" + \"academy\" + \"/\" + \"logo\" + ($hasPresentOwnProperty(options, \"format\") ? \".\" + (options as any).format : \"\") + $buildOptions(options, [\"format\"]);\n}\n\n/** /api/academy/courses(.:format) */\nexport function apiAcademyCoursesPath(options?: object): string {\n return \"/\" + \"api\" + \"/\" + \"academy\" + \"/\" + \"courses\" + ($hasPresentOwnProperty(options, \"format\") ? \".\" + (options as any).format : \"\") + $buildOptions(options, [\"format\"]);\n}\n\n/** /api/academy/courses/:id(.:format) */\nexport function apiAcademyCoursePath(id: ScalarType, options?: object): string {\n return \"/\" + \"api\" + \"/\" + \"academy\" + \"/\" + \"courses\" + \"/\" + id + ($hasPresentOwnProperty(options, \"format\") ? \".\" + (options as any).format : \"\") + $buildOptions(options, [\"id\",\"format\"]);\n}\n\n/** /api/academy/course_lessons(.:format) */\nexport function apiAcademyCourseLessonsPath(options?: object): string {\n return \"/\" + \"api\" + \"/\" + \"academy\" + \"/\" + \"course_lessons\" + ($hasPresentOwnProperty(options, \"format\") ? \".\" + (options as any).format : \"\") + $buildOptions(options, [\"format\"]);\n}\n\n/** /api/academy/course_lessons/:id(.:format) */\nexport function apiAcademyCourseLessonPath(id: ScalarType, options?: object): string {\n return \"/\" + \"api\" + \"/\" + \"academy\" + \"/\" + \"course_lessons\" + \"/\" + id + ($hasPresentOwnProperty(options, \"format\") ? \".\" + (options as any).format : \"\") + $buildOptions(options, [\"id\",\"format\"]);\n}\n\n/** /api/academy/course_categories(.:format) */\nexport function apiAcademyCourseCategoriesPath(options?: object): string {\n return \"/\" + \"api\" + \"/\" + \"academy\" + \"/\" + \"course_categories\" + ($hasPresentOwnProperty(options, \"format\") ? \".\" + (options as any).format : \"\") + $buildOptions(options, [\"format\"]);\n}\n\n/** /api/academy/course_categories/:id(.:format) */\nexport function apiAcademyCourseCategoryPath(id: ScalarType, options?: object): string {\n return \"/\" + \"api\" + \"/\" + \"academy\" + \"/\" + \"course_categories\" + \"/\" + id + ($hasPresentOwnProperty(options, \"format\") ? \".\" + (options as any).format : \"\") + $buildOptions(options, [\"id\",\"format\"]);\n}\n","import {\n ApiAzureCognitiveApi,\n Configuration,\n ResponseError,\n} from \"../generated/api\";\nimport {\n ConvertParam,\n text2Ssml,\n textWithWordPronounciations2Ssml,\n} from \"./ssmlHelper\";\n\ntype AudioInfo = {\n blob: Blob;\n blobSize: number;\n blobUrl: string;\n durationMs: number;\n};\n\ntype ConvertParamWithWordPronounciations = ConvertParam & {\n wordPronounciations: { literal: string; phoneme: string }[];\n};\n\n/**\n * https://learn.microsoft.com/ja-jp/azure/cognitive-services/speech-service/rest-text-to-speech\n */\nexport class AzureCognitiveService {\n /** 透過的キャッシュ */\n private caches = new Map();\n\n private cachedToken = {\n exp: new Date(\"1970-01-01T00:00:00.000Z\"),\n token: null as string,\n };\n\n constructor(private csrfToken: string) {}\n\n async ensureToken(): Promise {\n if (this.cachedToken.exp > new Date()) {\n return this.cachedToken.token;\n }\n\n const api = new ApiAzureCognitiveApi(\n new Configuration({\n basePath: \"\",\n headers: {\n \"x-hopper-api-version\": \"1.0\",\n \"X-CSRF-Token\": this.csrfToken,\n },\n })\n );\n const token = await api.apiAzureCognitiveIssueTokenPost();\n // https://openid-foundation-japan.github.io/draft-ietf-oauth-json-web-token-11.ja.html#expDef\n const exp = new Date(JSON.parse(atob(token.split(\".\")[1])).exp * 1000);\n this.cachedToken = { exp, token };\n return token;\n }\n\n async convert(\n { text, voiceName, speechRate }: ConvertParam,\n opt?: { abortSignal: AbortSignal }\n ): Promise {\n const ssml = text2Ssml({ text, voiceName, speechRate });\n\n return this.convertSsml(ssml, opt);\n }\n\n async convertWithWordPronounciations(\n {\n text,\n voiceName,\n speechRate,\n wordPronounciations,\n }: ConvertParamWithWordPronounciations,\n opt?: { abortSignal: AbortSignal }\n ): Promise {\n const ssml = textWithWordPronounciations2Ssml({\n text,\n voiceName,\n speechRate,\n wordPronounciations,\n });\n\n return this.convertSsml(ssml, opt);\n }\n\n async convertSsml(\n ssml: string,\n opt?: { abortSignal: AbortSignal }\n ): Promise {\n if (this.caches.has(ssml)) {\n return this.caches.get(ssml);\n }\n\n const token = await this.ensureToken();\n\n const res = await this.fetch(\n \"https://japaneast.tts.speech.microsoft.com/cognitiveservices/v1\",\n {\n method: \"POST\",\n headers: {\n Authorization: `Bearer ${token}`,\n \"Content-Type\": \"application/ssml+xml\",\n \"X-Microsoft-OutputFormat\": \"audio-48khz-96kbitrate-mono-mp3\",\n },\n body: ssml,\n signal: opt?.abortSignal,\n }\n );\n if (!res.ok) {\n throw new ResponseError(\n res,\n `Request to cognitive service failed with status ${res.status} ${res.statusText}`\n );\n }\n const result = await this.resolveAudioInfo(await res.blob());\n this.caches.set(ssml, result);\n return result;\n }\n\n private fetchingPromises: Promise[] = [];\n async fetch(...args: Parameters): Promise {\n // 同時接続数によるクォータ制限を回避するため、少しずつリクエストを待ち合わせる。\n while (this.fetchingPromises.length > 20) {\n await Promise.allSettled([...this.fetchingPromises]);\n }\n\n const promise = window.fetch(...args);\n this.fetchingPromises.push(promise);\n const res = await promise;\n const index = this.fetchingPromises.findIndex((p) => p === promise);\n this.fetchingPromises.splice(index, 1);\n return res;\n }\n\n disposeAudioCaches() {\n this.caches.forEach((c) => URL.revokeObjectURL(c.blobUrl));\n this.caches.clear();\n }\n\n async resolveAudioInfo(blob: Blob): Promise {\n const blobSize = blob.size;\n // 句読点だけなど有意でないテキストの場合は生成結果ファイルサイズが 0 になる。\n if (blobSize === 0) {\n return { blob, blobSize, blobUrl: null, durationMs: null };\n }\n const blobUrl = URL.createObjectURL(blob);\n const durationMs = await resolveDurationMs(blobUrl);\n return { blob, blobSize, blobUrl, durationMs };\n }\n}\n\nfunction resolveDurationMs(blobUrl: string) {\n return new Promise((resolve, reject) => {\n const elem = new Audio(blobUrl);\n elem.addEventListener(\"loadedmetadata\", () => {\n const durationMs = Math.round(elem.duration * 1000);\n elem.remove();\n resolve(durationMs);\n });\n elem.addEventListener(\"error\", reject);\n });\n}\n","const formatOptions: Intl.DateTimeFormatOptions = {\n minute: \"2-digit\",\n second: \"2-digit\",\n fractionalSecondDigits: 1,\n timeZone: \"UTC\", // 時刻ではなく再生時間のフォーマットに使いたいのでタイムゾーン調整しないように。\n};\n/** e.g. `12:34.5` */\nconst formatter = Intl.DateTimeFormat(\"ja-JP\", formatOptions);\n/** e.g. `12:34:56.7` */\nconst formatterWithHour = Intl.DateTimeFormat(\"ja-JP\", {\n ...formatOptions,\n hour: \"numeric\",\n});\n\n/**\n * Format milliseconds to time notation.\n * @param {number} timeMs\n * @returns {string} `12:34.5` or `12:34:56.7` or null\n */\nexport function formatTimeMs(timeMs: number): string {\n if (Number.isFinite(timeMs)) {\n const f = timeMs >= 3600_000 ? formatterWithHour : formatter;\n return f.format(timeMs);\n }\n return null;\n}\n","import { ResponseError } from \"../generated/api\";\n\nexport function isResponseError(err: unknown): err is ResponseError {\n return (err as ResponseError)?.name === \"ResponseError\";\n}\n","export type ConvertParam = {\n text: string;\n voiceName: string;\n speechRate: string;\n};\n\ntype PhonemeConvertParam = {\n phoneme: string;\n literal: string;\n voiceName: string;\n speechRate: string;\n};\n\ntype WordPronounciationConvertParam = ConvertParam & {\n wordPronounciations: { literal: string; phoneme: string }[];\n};\n\nexport const BREAK_NOTATION = \"^【無音([1-9]\\\\d*)秒】$\";\n\nexport function text2Ssml({\n text,\n voiceName,\n speechRate,\n}: ConvertParam): string {\n // e.g. \n const xml = ssmlDocumentWithExpressAs({ voiceName, speechRate });\n const expressAs = xml.querySelector(\"mstts\\\\:express-as\");\n expressAs.appendChild(xml.createTextNode(text.trim()));\n return toSsmlString(xml);\n}\n\nexport function textWithWordPronounciations2Ssml({\n text,\n voiceName,\n speechRate,\n wordPronounciations,\n}: WordPronounciationConvertParam): string {\n const sortedWordPronounciations = wordPronounciations.sort(\n (a, b) => [...b.literal].length - [...a.literal].length\n );\n const xml = ssmlDocumentWithExpressAs({ voiceName, speechRate });\n const breakProcessedText = processBreakNotation(text, xml);\n const textAndPhonemeNodes = sortedWordPronounciations.reduce(\n (acc, { literal, phoneme }) => {\n return acc.flatMap((node) => {\n if (typeof node !== \"string\") {\n return node;\n }\n return node\n .split(literal) // 置換対象が失われ、その位置で分割された配列\n .reduce((result, node, index, srcArr) => {\n // 先頭、末尾以外の間(失われた置換対象の場所)に置換後のXML要素を挿入\n result.push(node);\n if (index < srcArr.length - 1) {\n result.push(createPhonemeElement(xml, phoneme, literal));\n }\n return result;\n }, [])\n .filter(Boolean);\n });\n },\n breakProcessedText\n );\n const expressAs = xml.querySelector(\"mstts\\\\:express-as\");\n textAndPhonemeNodes.forEach((node) => {\n if (typeof node === \"string\") {\n expressAs.appendChild(xml.createTextNode(node));\n } else {\n expressAs.appendChild(node);\n }\n });\n\n return toSsmlString(xml);\n}\n\nexport function phoneme2Ssml({\n phoneme,\n literal,\n voiceName,\n speechRate,\n}: PhonemeConvertParam): string {\n const xml = ssmlDocumentWithExpressAs({\n voiceName,\n speechRate,\n });\n const phonemeEl = createPhonemeElement(xml, phoneme, literal);\n xml.querySelector(\"mstts\\\\:express-as\").appendChild(phonemeEl);\n return toSsmlString(xml);\n}\n\nfunction createPhonemeElement(\n xml: XMLDocument,\n phoneme: string,\n literal: string\n) {\n const phonemeEl = xml.createElement(\"phoneme\");\n phonemeEl.setAttribute(\"alphabet\", \"sapi\");\n phonemeEl.setAttribute(\"ph\", phoneme);\n phonemeEl.textContent = literal;\n return phonemeEl;\n}\n\nfunction processBreakNotation(text: string, xml: XMLDocument) {\n if (typeof text !== \"string\") {\n return [text];\n }\n const matches = [...text.matchAll(new RegExp(BREAK_NOTATION, \"gm\"))];\n if (!matches.length) {\n return [text];\n }\n const lastMatch = matches[matches.length - 1];\n const resultBeforeLastText = matches.flatMap((match, index, self) => {\n const previousEndIndex =\n index === 0 ? 0 : self[index - 1].index + self[index - 1][0].length + 1;\n const textBeforeNotation = text.substring(previousEndIndex, match.index);\n const breakEl = xml.createElement(\"break\");\n const breakTime = Math.min(parseInt(match[1]), 20);\n breakEl.setAttribute(\"time\", `${breakTime}s`);\n return [textBeforeNotation, breakEl];\n });\n\n return [\n ...resultBeforeLastText,\n text.substring(lastMatch.index + lastMatch[0].length),\n ].filter(Boolean);\n}\n\nfunction ssmlDocumentWithExpressAs({\n voiceName,\n speechRate,\n}: Omit) {\n // e.g. \n const xml = document.implementation.createDocument(\n \"http://www.w3.org/2001/10/synthesis\",\n \"speak\"\n );\n const root = xml.firstElementChild;\n root.setAttribute(\"version\", \"1.0\");\n root.setAttribute(\"xml:lang\", \"ja-JP\");\n root.setAttribute(\"xmlns:mstts\", \"https://www.w3.org/2001/mstts\");\n const voice = xml.createElement(\"voice\");\n voice.setAttribute(\"name\", voiceName);\n const prosody = xml.createElement(\"prosody\");\n prosody.setAttribute(\"rate\", speechRate);\n const expressAs = xml.createElement(\"mstts:express-as\");\n expressAs.setAttribute(\"style\", \"cheerful\");\n prosody.appendChild(expressAs);\n voice.appendChild(prosody);\n root.appendChild(voice);\n return xml;\n}\n\nfunction toSsmlString(xml: XMLDocument): string {\n return new XMLSerializer()\n .serializeToString(xml.getRootNode())\n .replaceAll(` xmlns=\"\"`, \"\"); // 不要な属性出力を除去;\n}\n","import DOMPurify from \"dompurify\";\n\nexport function stripTags(html: string): string {\n return DOMPurify.sanitize(html, { RETURN_DOM: true }).textContent.trim();\n}\n","// mm:ss , m:ss , hh:mm:ss のいずれか\nconst TIMESTAMP_REGEXP = /(^|\\s)((?:(\\d?\\d):)?(\\d?\\d):(\\d\\d))(?=\\s|$)/;\nconst PARAM_NAME = \"t\";\n\nexport function queryTimestampAnchorElements(root: ParentNode = document) {\n const selector = `a[href^='?${PARAM_NAME}='],a[href*='&${PARAM_NAME}=']`;\n return Array.from(root.querySelectorAll(selector))\n .map((elem) => ({\n elem,\n time: new TimestampLinkParser(elem.href).time(),\n }))\n .filter((item) => item.time != null);\n}\n\nexport class TimestampLinkParser {\n private url: URL;\n private isSameSite = false;\n\n constructor(\n urlStr: string,\n loc: { origin: string; pathname: string } = location\n ) {\n const url = new URL(urlStr);\n this.url = url;\n this.isSameSite =\n url.origin === loc.origin && url.pathname === loc.pathname;\n }\n\n time() {\n if (this.isSameSite) {\n const paramValue = this.url.searchParams.get(PARAM_NAME);\n const sec = paramValue ? Number(paramValue) : null;\n if (Number.isSafeInteger(sec)) {\n return sec;\n }\n }\n return null;\n }\n}\n\nexport class TimestampLinkBuilder {\n constructor(private text: string) {}\n\n containsTimestampNotation(): boolean {\n return TIMESTAMP_REGEXP.test(this.text);\n }\n\n href() {\n const time = this.match()?.time;\n if (time != null) {\n const params = new URLSearchParams();\n params.append(PARAM_NAME, `${time}`);\n return `?${params}`;\n }\n return null;\n }\n\n match() {\n const match = (this.text || \"\").match(TIMESTAMP_REGEXP);\n if (match) {\n const [, lookbehind, captured, hour, min, sec] = [...match];\n const time = Number(hour || 0) * 3600 + Number(min) * 60 + Number(sec);\n return {\n time,\n index: match.index + lookbehind.length,\n captured,\n source: match,\n };\n }\n return null;\n }\n}\n","import { Folder } from \"../types/folder\";\n\nexport type TreeFolder = Folder & {\n children?: TreeFolder[];\n};\n\n/**\n * ユーザーのフォルダをツリー構造に変換する\n * @param folders ユーザーの全フォルダ\n */\nexport function toTreeFolderFromUserFolders(folders: Folder[]): TreeFolder {\n const map: Record = {};\n for (const folder of folders) {\n const parentFolderId = folder.ancestry\n ? folder.ancestry.split(\"/\").pop()\n : null;\n map[parentFolderId] ??= [];\n map[parentFolderId].push(folder);\n }\n const rootFolder: Folder = {\n id: null,\n name: \"マイライブラリー\",\n ancestry: null,\n hashid: null,\n };\n return toTreeFolder(rootFolder, map);\n}\n\n/**\n * チームのフォルダをツリー構造に変換する\n * @param folders チームの全フォルダ\n */\nexport function toTreeFolderFromTeamFolders(folders: Folder[]): TreeFolder {\n const map: Record = {};\n for (const folder of folders) {\n const parentFolderId = folder.ancestry\n ? folder.ancestry.split(\"/\").pop()\n : null;\n map[parentFolderId] ??= [];\n map[parentFolderId].push(folder);\n }\n // チームライブラリでは1件rootのフォルダが用意されている\n const rootFolder = folders.find((f) => f.ancestry == null);\n return toTreeFolder(rootFolder, map);\n}\n\nfunction toTreeFolder(\n folder: Folder,\n map: Record\n): TreeFolder {\n if (!map[folder.id]) {\n return { ...folder };\n }\n const children = map[folder.id].map((folder) => toTreeFolder(folder, map));\n return { ...folder, children };\n}\n","import { useEffect, useRef } from \"react\";\n\n/**\n * ページ離脱確認カスタムフック\n */\nexport function useBeforeUnload(shouldConfirm: boolean) {\n const shouldConfirmRef = useRef(false);\n shouldConfirmRef.current = shouldConfirm;\n useEffect(() => {\n const listener = (event: BeforeUnloadEvent) => {\n if (shouldConfirmRef.current) {\n event.returnValue = true;\n }\n };\n window.addEventListener(\"beforeunload\", listener);\n return () => window.removeEventListener(\"beforeunload\", listener);\n }, []);\n}\n","import { useState, useEffect } from \"react\";\n\n// 参考: https://dev.to/gabe_ragland/debouncing-with-react-hooks-jci\nexport function useDebounceState(state: T, delay: number): [T] {\n const [debouncedState, setDebouncedState] = useState(state);\n useEffect(() => {\n const handler = setTimeout(() => {\n setDebouncedState(state);\n }, delay);\n return () => {\n clearTimeout(handler);\n };\n }, [state, delay]);\n return [debouncedState];\n}\n","// videojsの共通処理や型定義をまとめるためのwrapper\n\nimport { default as videojsOriginal } from \"video.js\";\nimport \"videojs-hls-quality-selector\";\n\n// 副作用で暗黙にaddLanguageを呼び出すのは動作しないので、明示的に呼び出す\nimport langJa from \"video.js/dist/lang/ja.json\";\nvideojsOriginal.addLanguage(\"ja\", langJa);\n\nexport const videojs: VideoJs = videojsOriginal;\n\ninterface VideoJs {\n (...args: Parameters): VideoJsPlayer;\n // 必要に応じてvideojsのモジュール定義を追加する\n // 例: browser: typeof videojsOriginal.browser;\n}\n\n// videojsの足りない型定義を補完するworkaround\ninterface VideoJsPlayer extends ReturnType {\n /** https://docs.videojs.com/texttracksettings */\n textTrackSettings?: import(\"video.js/dist/types/tracks/text-track-settings\").default;\n textTracks?: () => TextTrackList;\n textTrackDisplay?: {\n updateDisplay(): void;\n };\n /** https://github.com/chrisboustead/videojs-hls-quality-selector */\n hlsQualitySelector?: () => void;\n /** https://github.com/videojs/videojs-contrib-quality-levels */\n qualityLevels?: () => QualityLevelList;\n /** https://github.com/videojs/http-streaming/blob/v3.13.2/docs/reload-source-on-error.md */\n reloadSourceOnError?: (options?: {\n errorInterval?: number;\n getSource?: (\n reload: (src: Parameters[0]) => void\n ) => void;\n }) => void;\n}\n\n// videojs-contrib-quality-levels の型定義を補完するworkaround\n// パッケージに含まれている型定義が実態と差があるため再定義する。\ntype _QualityLevelList =\n import(\"videojs-contrib-quality-levels/dist/types/quality-level-list\").default;\ntype _QualityLevel =\n import(\"videojs-contrib-quality-levels/dist/types/quality-level\").default;\ninterface QualityLevelList extends _QualityLevelList {\n get selectedIndex(): number;\n get length(): number;\n [Symbol.iterator]: () => IterableIterator;\n}\ninterface QualityLevel extends _QualityLevel {\n get enabled(): boolean;\n set enabled(value: boolean);\n}\n","// This file is automatically compiled by Webpack, along with any other files\n// present in this directory. You're encouraged to place your actual application logic in\n// a relevant structure within app/javascript and only use these pack files to reference\n// that code so it'll be compiled.\n\nimport Rails from \"@rails/ujs\";\nRails.start();\n\n// Uncomment to copy all static images under ../images to the output folder and reference\n// them with the image_pack_tag helper in views (e.g <%= image_pack_tag 'rails.png' %>)\n// or the `imagePath` JavaScript helper below.\n//\n// const images = require.context('../images', true)\n// const imagePath = (name) => images(name, true)\n\ndocument.addEventListener(\"DOMContentLoaded\", () => {\n const container = document.getElementById(\"container\");\n if (container) {\n require(\"react-modal\").setAppElement(container);\n }\n\n // ヘッダメニュー\n document.getElementById(\"headerUser\")?.addEventListener(\"click\", () => {\n const nav = document.getElementById(\"headerUserNav\");\n if (nav.style.display) {\n nav.style.display = null;\n setTimeout(() => {\n document.body.addEventListener(\n \"click\",\n () => (nav.style.display = \"none\"),\n { once: true, passive: true }\n );\n }, 100);\n } else {\n nav.style.display = \"none\";\n }\n });\n});\n\nconst componentRequireContext = require.context(\"components\", true);\nconst ReactRailsUJS = require(\"react_ujs\");\nReactRailsUJS.useContext(componentRequireContext);\n"],"names":["map","webpackContext","req","id","webpackContextResolve","__webpack_require__","o","e","Error","code","keys","Object","resolve","module","exports","AcademyCourseCategoryEdit","props","_props$courseCategory","title","setTitle","useState","courseCategory","_jsxs","children","_jsx","className","htmlFor","TextareaAutosize","rows","value","required","maxLength","placeholder","onChange","target","onBlur","ApiAcademyCourseCategoryApi","Configuration","basePath","headers","csrfToken","apiAcademyCourseCategoriesIdPatch","apiAcademyCourseCategoriesIdPatchRequest","academyCourseCategory","_objectSpread","catch","reason","notify","onKeyPress","key","currentTarget","blur","AcademyCourseCategoryListEdit","_props$courseCategori","dndSensors","useSensors","useSensor","PointerSensor","KeyboardSensor","coordinateGetter","sortableKeyboardCoordinates","courseCategories","setCourseCategories","DndContext","sensors","collisionDetection","closestCenter","onDragEnd","event","active","over","oldIndex","findIndex","i","toString","newIndex","arrayMove","academyCourseCategoryApi","rowOrderPosition","SortableContext","items","c","strategy","verticalListSortingStrategy","category","ListItem","length","style","background","colSpan","linkPath","editAcademiesCourseCategoryPath","hashid","attributes","listeners","setNodeRef","transform","transition","useSortable","subMenuVisible","toggleSubMenuVisible","useSubMenuVisible","rowStyle","CSS","Transform","onClick","HTMLElement","closest","location","assign","ref","cursor","href","state","coursesCount","copyLink","url","URL","academiesCourseCategoryPath","navigator","clipboard","writeText","toggleMenu","onClickDel","confirm","apiAcademyCourseCategoriesIdDelete","then","reload","response","json","errorResponse","errorMessages","values","messages","join","AcademyCourseEdit","_props$course$title","_props$course$descrip","_props$course$iconNam","course","description","setDescription","iconName","setIconName","visibleIconChooser","setVisibleIconChooser","patchCourse","ApiAcademyCourseApi","apiAcademyCoursesIdPatch","apiAcademyCoursesIdPatchRequest","academyCourse","AcademyCourseIcon","AcademyCourseIconChooser","newIconName","ICON_LIST","name","img","iconSupport","iconCalendar","iconPc","iconDevice","iconSetting","iconSpeaker","iconLightBulb","iconSearch","iconChat","iconMedal","iconNote","iconDiamond","iconHandshake","iconEye","iconGroup","iconComment","iconChecklist","iconShield","iconGraph","iconMoney","iconStar","iconVideo","iconShare","iconTime","iconContents","iconMap","reduce","ret","item","src","alt","inputRef","useRef","useEffect","width","height","opacity","padding","margin","border","display","type","icon","AcademyCourseLessonListEdit","_props$lessons","lessons","setLessons","lessonApi","apiAcademyCourseLessonsIdPatch","apiAcademyCourseLessonsIdPatchRequest","courseLesson","lesson","video","lessonId","videoThumbnailUrl","thumbnailUrl","bodyHtml","descriptionHtml","watchLinkType","watchLink","typeName","playTimeSec","editMenuHref","videoPath","textHtml","editAcademiesCourseLessonPath","bodyText","stripTags","video_create_user_only","member_only","no_limit","DurationText","format","hours","minutes","apiAcademyCourseLessonsIdDelete","ApiAcademyCourseLessonApi","AcademyCourseLessonTextEdit","_props$lesson$title","_props$lesson","_props$lesson$textHtm","_props$lesson2","setTextHtml","submitable","actionName","onSubmit","preventDefault","api","params","academyCourseId","apiAcademyCourseLessonsPostRaw","apiAcademyCourseLessonsPostRequest","editAcademiesCoursePath","handleSubmit","handleInputTitle","disabled","RichTextEditor","toolbarStickyOffset","onChangeValue","handleInputTextHtml","AcademyCourseListEdit","_props$courses","courses","setCourses","academyCourseApi","lessonsCount","academiesCoursePath","apiAcademyCoursesIdDelete","acceptMimeTypes","AcademyLogoEdit","errors","setErrors","uploading","setUploading","errorType","_errMsgs$errorType","errMsgs","fileSize","fileType","unknown","imgUrl","accept","file","files","size","push","includes","validateFile","async","ApiAcademyLogoApi","apiAcademyLogoDelete","res","apiAcademyLogoPresignGet","blobClient","BlockBlobClient","endpoint","uploadData","blobHTTPHeaders","blobContentType","assetContainer","assetName","pathname","split","apiAcademyLogoPost","uploadImage","console","error","_Fragment","loadingImg","AcademyWatchLinkIconMap","team_only","domain_only","AcademyShareMenu","setWatchLinkType","inviteMembersCount","setInviteMembersCount","modalVisible","setModalVisible","minWidth","ReactTooltip","effect","place","globalEventOff","AcademyWatchLinkTooltipContent","linkIcon","AcademyShareModal","isOpen","requestClose","onUpdated","count","academyId","shareUrl","domainWatchLinkAvailable","tooltipTitle","tooltipDesc","WatchLinkTooltipContent","_typeItems$find","setType","members","setMembers","errMsg","setErrMsg","typeItems","copyDesc","splice","find","closeModal","undefined","ReactModal","onAfterOpen","initialize","watchLinkApi","apiAcademyAcademyIdWatchLinkGet","data","_data$members","_data$members2","Rollbar","warn","onRequestClose","overlayClassName","base","afterOpen","beforeClose","WatchLinkTypeSelect","WatchLinkInvitationForm","onUpdate","updateShareSettings","emails","m","email","apiAcademyAcademyIdWatchLinkPatch","apiAcademyAcademyIdWatchLinkPatchRequest","isResponseError","status","body","flat","msg","LinkCopyButton","ApiAcademyWatchLinkApi","AddAcademyCourseLessonButton","visible","toggleVisible","role","newAcademiesCourseLessonPath","course_id","academyCourseHashid","VideoSelectorModal","onClose","onSelect","videos","videoIds","v","requestFactories","videoId","apiAcademyCourseLessonsPost","requestFactory","teamFolders","folders","headerTitle","ChangeAcademyCourseCategoryStateSwitch","courseState","setCourseState","checked","academyCourseCategoryId","ChangeAcademyCourseStateSwitch","CreateAcademyCourseCategoryModal","handleCloseButton","onAfterClose","shouldCloseOnEsc","shouldCloseOnOverlayClick","apiAcademyCourseCategoriesPost","apiAcademyCourseCategoriesPostRequest","autoFocus","autoComplete","_e$target$value","trim","CreateAcademyCourseModal","apiAcademyCoursesPost","apiAcademyCoursesPostRequest","_props$format","_props$value","_format$separator","seconds","NaN","Math","floor","separator","isNaN","FolderSelectorModal","_props$selectedFolder","rootTeamFolder","toTreeFolderFromTeamFolders","folderHashid","setFolderHashid","selectedFolder","TreeView","selectedItemId","onItemSelected","itemId","TreeViewThemeContext","Provider","TreeItem","label","buildTreeView","folder","f","_props$className","copied","setCopied","timeoutId","setTimeout","clearTimeout","copyUrl","ReactTooltipWrapper","SaveButton","forwardRef","setState","useImperativeHandle","startSaving","finishSaving","Promise","reset","TIME_MS_REGEXP","TimeMsInput","text","setText","formatTimeMs","propValue","useMemo","pattern","source","timeMs","match","hour","min","sec","tenthOfSec","Number","isSafeInteger","parse","_props$headerTitle","rootUserFolder","userFolders","toTreeFolderFromUserFolders","folderId","setFolderId","selectedVideos","setSelectedVideos","VideosChooser","onChangeSelectedVideos","filter","loading","setLoading","setVideos","cancelled","ApiFolderApi","apiFoldersIdVideosGet","finally","isSelected","some","selectVideo","textarea","editor","enableTimestampLink","Jodit","plugins","add","TimestampLink","config","tabIndex","language","theme","disablePlugins","buttons","cleanHTML","denyTags","statusbar","showTooltipDelay","askBeforePasteHTML","defaultActionOnPaste","constants","INSERT_CLEAR_HTML","link","modeClassName","noFollowCheckbox","colorPickerDefaultTab","current","make","destruct","events","on","off","Plugin","modules","constructor","args","_defineProperty","LazyWalker","this","jodit","afterInit","walker","node","ensureTimestampLink","affected","synchronizeValues","setWork","normalize","Dom","builder","TimestampLinkBuilder","textContent","isHTMLElement","tagName","isHTMLAnchorElement","currentNodeTime","TimestampLinkParser","time","containsTimestampNotation","selection","save","unwrap","restore","hasPrevTimestampPartNode","isText","previousSibling","test","hasNextTimestampPartNode","nextSibling","parent","parentElement","anchor","getAttribute","setAttribute","isOrContains","timestampTextNode","splitText","index","captured","wrap","createInside","beforeDestruct","AnswerFeedback","feedback","rate","round","correctAnswerCount","totalQuestionCount","CreateExamAnswer","setFeedback","CreateExamAnswerModal","inputName","isLoggedIn","userNameCandidate","userName","answers","ApiExamAnswerApi","apiVideoVideoIdExamAnswersPost","apiVideoVideoIdExamAnswersPostRequest","questions","setAnswers","Array","from","setUserName","resetInputs","userNameInput","terms","rel","question","ExamQuestion","questionText","questionNumber","examQuestionId","options","selectedAnswer","answer","_props$selectedAnswer","LoadingContext","createContext","isLoading","LoadingContextProvider","loadingKeys","setLoadingKeys","handleLoading","useCallback","promise","crypto","randomUUID","k","contextValue","displayName","VideoPlayer","_ref","_props$subtitles","window","_objectWithoutProperties","_excluded","videoRef","addWatchLog","addV2WatchLog","usePlayerWatchLog","apiV2BaseUrl","videoUUID","teamId","tenantId","ipAddress","fill","playbackRates","controlBar","remainingTimeDisplay","sources","sourceUrl","contentType","player","videojs","_player$tech","err","techErr","tech","IWillNotUseThisInPlugins","errTitle","errInfo","isExpired","buildErrorInfo","debug","MediaError","MEDIA_ERR_NETWORK","MEDIA_ERR_SRC_NOT_SUPPORTED","_errorDisplay$el","errorDisplay","getChild","fillWith","el","append","buildReloadButton","reloadSourceOnError","hlsQualitySelector","ready","textTrackSettings","setValues","backgroundOpacity","updateDisplay","lastError","enableWatchLog","playerName","playerVersion","entries","version","currentTime","paused","mute","muted","volume","enableTimestampLinkHook","initialTime","duration","poster","one","play","queryTimestampAnchorElements","forEach","elem","addEventListener","ctrlKey","metaKey","scroll","top","dispose","controls","posterUrl","preload","onContextMenu","crossOrigin","subtitles","track","srcLang","lang","kind","default","pollWaitUrlReady","retryNum","method","fetch","ok","btn","document","createElement","classList","readyState","initialReqRef","useWaitUrlReady","sasExpiresAtStr","searchParams","get","Date","isSourceUrlExpired","message","metadata","responseText","BASE_PATH","replace","configuration","fetchApi","middleware","queryParamsStringify","querystring","username","password","apiKey","accessToken","credentials","DefaultConfig","BaseAPI","init","fetchParams","pre","onError","clone","FetchError","post","withMiddleware","middlewares","next","concat","withPreMiddleware","preMiddlewares","withPostMiddleware","postMiddlewares","isJsonMime","mime","jsonRegex","request","context","initOverrides","createFetchParams","ResponseError","path","query","initOverrideFn","initParams","overriddenInit","FormData","URLSearchParams","isBlob","JSON","stringify","slice","Blob","RegExp","super","cause","prefix","querystringSingleKey","part","keyPrefix","fullKey","multiValue","singleValue","encodeURIComponent","String","Set","toISOString","JSONApiResponse","raw","transformer","jsonValue","TextApiResponse","ApiStatsWatchApi","runtime","apiStatsWatchGetRaw","requestParameters","queryParameters","vid","uid","startTime","endTime","userAgent","referrer","apiStatsWatchGet","_cookies$find","cookie","startsWith","avertedSyntaxErrorAlreadySentToRollbar","avertedFetchErrorAlreadySentToRollbar","apiBaseUrl","lastSec","setLastSec","log","setLog","isFetchError","sendLog","FolderSubMenu","folderName","parentFolderId","renameModalVisible","setRenameModalVisible","moveModalVisible","setMoveModalVisible","origin","apiFoldersIdDelete","deleteFolder","RenameFolderModal","MoveFolderModal","currentParentFolderId","userTreeFolder","teamTreeFolder","setVisible","setParentFolderId","newParentFolderId","apiFoldersIdMovePatch","apiVideoIdMovePatchRequest","msgs","MoveVideoModal","ApiVideoApi","apiVideoIdMovePatch","setName","apiFoldersIdRenamePatch","apiFoldersIdRenamePatchRequest","requestFolderRename","VideoSubMenu","pageReloadAfterDuplicateVideo","parentFolderPath","canDuplicate","canDownload","submitting","setSubmitting","apiVideoIdDuplicatePostRaw","newVideoPath","alert","apiVideoIdDownloadGetRaw","downloadPath","apiVideoIdDelete","deleteVideo","handler","once","passive","removeEventListener","newVisible","startTransition","DescendantsContext","depth","expandIfChildSelected","_icon","themeIcon","useContext","selectItem","TreeViewContext","expanded","setExpanded","selected","selectedClassName","expandedClassName","paddingInlineStart","visibility","stopPropagation","setSelectedItemId","_props$onItemSelected","call","EMAIL_REGEXP","textfield","setEmails","emailList","arr","setCustomValidity","reportValidity","isInvalidPattern","isInvitedEmail","ng","alreadyInvitedEmails","newMembers","maxRows","member","imageUrl","userImageDefault","delMember","_props$items$find","DesignHeader","setVideo","VideoContext","watchLinkTooltipValue","setWatchLinkTooltipValue","useVideoWatchLinkTooltipValue","intervalId","setInterval","getVideo","clearInterval","requestGenerateVideo","onRequestGenerateVideo","folderPath","folderHashId","defaultValue","newVideo","updateVideo","updateTitle","onKeyDown","nativeEvent","isComposing","altKey","shiftKey","VideoWatchLinkTooltipContent","VideoShareModal","videoShareUrl","DesignSideNav","canExpand","toggleExpanded","useExpandable","expandButtonText","Anchor","editDesignPath","designHashId","isCurrent","mode","infoDesignPath","editDesignExamPath","VideoContextProvider","useInitialVideo","CreatomatePreviewPlayer","_creatomateParam$sour","playerContainerRef","previewRef","setReady","isPreviewLoading","setIsPreviewLoading","scenes","setIsLoading","prevValue","setPrevValue","s","durationMs","useIsPreviewLoading","setCurrentTime","subtitleFontSize","setSubtitleFontSize","debouncedScenes","useDeferredValue","creatomateParam","buildCreatomateParam","subtitlesDisplayed","buildSubtitles","currentSubtitle","Preview","publicToken","onReady","setLoop","onTimeChange","onScaleChange","scale","onLoadComplete","outputFormat","frameRate","elements","output_format","frame_rate","setSource","seekToScene","targetScene","targetIndex","ds","result","setTime","fontSize","isPreviewGenerating","DesignPreviewPane","acceptImageMimeTypes","DesignSceneItem","_scene$textHtml","scene","sceneId","isChecked","isDragging","isActiveScene","isTextareaFocused","isCompleteUpdateNotify","beforeScene","afterScene","isUpdateWordPronounciationsLiteralScene","inputText","setInputText","textareaRef","validateText","breakRegex","BREAK_NOTATION","matchAll","parseInt","backgroundColor","borderTop","borderBottom","pointerEvents","padStart","position","onCheckboxSceneChange","validateImageFile","newScene","uploadDesignSceneImage","onUpdateScene","onPaste","clipboardData","getData","updateText","updateDesignScene","onFocus","deleteDesignScene","onDeleteScene","selectionStart","selectionEnd","newInputText","DesignSceneItemOverlay","checkedScenesCount","times","_","_props$scenesWithAudi","_props$scenesWithAudi2","left","activeSceneIndex","activeScene","scenesWithAudio","VOICE_NAME_LIST","SPEECH_RATE_LIST","DesignScenesEdit","_scenes$at$audioData$","_scenes$at","_scenes$at$audioData","_scenes$at$audioData$2","_scenes$at2","_scenes$at2$audioData","_formRef$current","_video$subtitles","_video$subtitles2","_video$subtitles3","_video$subtitles4","_video$subtitles5","wordPronounciations","refreshWordPronounciations","useWordPronounciations","setScenes","useInitialDesignScenes","designId","voiceName","at","audioData","speechRate","isGeneratingAudio","useDesignScenesWithAudio","playerRef","formRef","useBeforeUnload","setIsDragging","setActiveScene","handleSubtitlesDefaultDisplayedChange","isDisplayed","updateVideoSubtitlesDefaultDisplayed","isDefaultDisplayed","checkedScenes","setCheckedScenes","completeUpdateScene","setCompleteUpdateScene","setIsTextareaFocused","affectDesignScenes","setAffectDesignScenes","updateAudioData","arg","newList","handleCheckboxChange","prevCheckedScenes","matchedScene","handleSelectAllChange","checkedSceneIds","checkValidity","audioUrl","_affectedScenes$data","startTimeMs","endTimeMs","affectedScenes","getAffectDesignScenes","hasAffectedScenes","addCreatomateJob","publishVideoSubtitles","startGenerateVideo","videoEmbedHtml","embedHtml","onDragStart","draggedSceneId","draggedScene","overId","activeId","newScenes","updateCheckedScenes","updateSceneOrder","newRowOrder","previousPromise","updateScenesSequentially","filterCheckedScene","_scenesWithAudio$inde","has","_playerRef$current","designScene","DragOverlay","FileUploadDropzone","onUpdateScenes","creatomatePublicToken","overScene","overIndex","activeIndex","newActiveIndex","sortedCheckedScenes","sort","a","b","rowOrder","reverse","fileInputRef","setError","addScene","rowIndex","createDesignScene","updateSceneId","uploadImages","every","filesSortByName","sortFilesByName","krt","fileCount","uploadedScene","onDrop","dataTransfer","onDragOver","handleClick","_fileInputRef$current","click","icnAddMultiFile","multiple","collator","Intl","Collator","numeric","compare","DesignExamEdit","ExamEdit","videoHashId","exam","examQuestions","totalDuration","animations","easing","Boolean","fit","max","t","param","multipartPoints","point","multipart","ceil","textParser","loadDefaultJapaneseParser","texts","lines","MAX_CHARS","line","chunks","chunk","currentIndex","totalCharLength","r","totalBreakDurationMs","acc","exec","totalSpeakDurationMs","splitSubtitle","getDesignScenes","setValue","getVideoWatchLink","_watchLink$members","useDebounceState","setIsGeneratingAudio","designSceneWithAudio","setDesignSceneWithAudio","audioService","caches","Map","AzureCognitiveService","ensureToken","_caches$current","_audioService$current","clear","disposeAudioCaches","ignore","abortController","AbortController","all","audioInfo","convertWithWordPronounciations","abortSignal","signal","blob","blobUrl","cached","File","uploadDesignSceneAudio","set","abort","words","setwords","refresh","getAllWordPronounciations","defaultExpanded","thresholdWidth","setWidth","innerWidth","onResize","useWindowWidth","actualExpanded","prev","DesignInfoEdit","_video$descriptionHtm3","shouldSaveDescription","setShouldSaveDescription","VideoThumbnail","thumbnailResettable","newValue","_video$descriptionHtm","_video$descriptionHtm2","ApiSceneApi","apiDesignDesignIdScenesPost","apiDesignDesignIdScenesPostRequest","apiScenesIdPut","apiScenesIdPutRequest","apiScenesIdDelete","presign","apiScenesIdPresignImageGet","blobName","apiScenesIdUploadedImagePost","apiScenesIdUploadedImagePostRequest","imageBlobName","opt","apiScenesIdPresignAudioGet","apiScenesIdUploadedAudioPost","apiScenesIdUploadedAudioPostRequest","audioBlobName","apiDesignDesignIdScenesGet","ApiDesignApi","apiDesignIdAddCreatomateJobPost","apiDesignIdAddCreatomateJobPostRequest","ApiSubtitleApi","apiVideoVideoIdSubtitlesPublishedPatch","apiVideoVideoIdSubtitlesPublishedPatchRequest","apiVideoVideoIdSubtitlesPut","apiVideoVideoIdSubtitlesPutRequest","defaultDisplayed","apiVideoVideoIdSubtitlesDefaultDisplayedPatch","apiVideoVideoIdSubtitlesDefaultDisplayedPatchRequest","ApiWatchLinkApi","apiVideoVideoIdWatchLinkGet","ApiWordPronounciationApi","page","pageResponse","apiWordPronounciationsGet","apiVideoIdGet","apiVideoIdPut","apiVideoIdPutRequest","apiWordPronounciationsAffectDesignGet","shouldConfirmBeforeUnload","saveButtonRef","published","setPublished","setInputName","setExamQuestions","withKey","listener","returnValue","ApiExamQuestionApi","apiVideoVideoIdExamQuestionsPut","apiVideoVideoIdExamQuestionsPutRequest","withoutKey","resBody","info","PublishSwitch","ApiExamApi","apiVideoVideoIdExamPut","apiVideoVideoIdExamPutRequest","changePublished","EditSubmenu","onClickClear","changeInputName","examQuestion","ExamQuestionItem","onDelete","onMoveUp","onMoveDown","addExamQuestion","correct","eq","_excluded2","submenu","toggleSubmenu","hidden","addOptionButtonRef","ExamQuestionOptions","newOptions","radioButtonName","option","ExamQuestionOptionsItem","onChangeText","newText","onChangeCorrect","newCorrect","isTextDuplicated","_props$value$text","textfieldRef","LessonItem","setChecked","videoTitle","CourseItem","indeterminate","chilldChecked","onChnage","CategoryItem","AcademySelector","courseCategoryTree","toAcademyCourseCategoryTree","categories","courseTree","childLessons","rowOrderRank","childCourses","childrenTree","action","academyCsvDownloadExamCsvsPath","setSubmitable","Fragment","ownerId","ownerType","apiFoldersPost","apiFoldersPostRequest","handleInputValue","uploadVideo","createObjectURL","onloadedmetadata","remove","revokeObjectURL","isFinite","onerror","loadVideoDuration","apiVideoPreparePost","uploadUrl","apiVideoUploadedPost","apiVideoUploadedPostRequest","inputVideoDuration","VideoUploader","inputFileRef","NarrationPreviewPlayer","currentTimeMs","setCurrentTimeMs","disablePictureInPicture","pictureInPictureToggle","volumePanel","isPlaying","playing","pause","onChangePlaying","onPlaying","onPause","onTimeUpdate","onPlay","rafId","loop","newCurrentTimeMs","requestAnimationFrame","playCallback","pauseCallback","cancelAnimationFrame","subtitlesUrl","narrations","n","_n$audio","audio","blobSize","narration","PreviewAudio","onlyWithin","audioRef","actualTimeMs","actualMs","expectMs","num","start","end","MAX_NARRATION_ITEM_COUNT","FORM_ID","VideoNarrationsEdit","acsRef","viewState","dispatch","useNarrationsView","videoNarrations","hasError","_acsRef$current","_acsRef$current2","convertNarrationAudios","flushSync","requestSubmit","importSubtitles","Accept","apiVideoVideoIdSubtitlesGet","viewNarrations","narrationsAndBlobNames","uploadAudio","uploadedBlobUrl","ApiNarrationApi","apiVideoVideoIdNarrationsPut","apiVideoVideoIdNarrationsPutRequest","saveNarrations","NarrationEditItem","playingNarrationKey","onAddAfter","_acsRef$current3","promises","convertingNarrationAudio","VoiceNameSelect","form","_value$audio","scrollIntoView","_elem$scrollIntoView","behavior","block","update","dateTime","ms","wordBreak","voice","convert","fileBlob","apiVideoVideoIdNarrationsPresignGet","reducer","_n$key","_state$narrations$ind","_state$narrations$ind2","newNarration","_state$narrations$fil","_narration$text","nextNarration","playTimeMs","validate","defaultVoiceName","defaultSpeechRate","useReducer","_arg$videoNarrations","_arg$videoNarrations2","_arg$videoNarrations3","_arg$videoNarrations4","_arg$videoNarrations5","_arg$videoNarrations6","_arg$videoNarrations7","_arg$videoNarrations8","vn","getElementById","show","querySelector","dataset","domReady","SubtitlesView","isRequesting","requestGenerateJob","startEditView","useSubtitleView","generateJobState","canRequestGenerateJob","SubtitlesEditView","savable","setSavable","cues","dispatchCues","requestSaveCues","requestDestroyCues","useSubtitlesCues","subtitlesPublished","requestSaveSubtitlesPublished","useSubtitlesPublished","currentCue","useCurrentSubtitlesCue","hasStartTimeError","hasEndTimeError","onBeforeUnload","SubtitlesEditPublishSwitch","SubtitlesEditSubmenu","onClickDestroy","_unused","cue","SubtitlesEditCueItem","SubtitlesPreviewPlayer","currentCueItemRef","updateCue","newCue","trimStart","playerInitialized","setPlayerInitialized","debouncedCues","textTracks","removeCue","addCue","VTTCue","textTrackDisplay","setCurrentCue","validateCues","_cues2","_cues3","_cues$index$endTimeMs","_cues$index","_cues$startTimeMs","_cues","spanMs","reduceCues","videoApi","subtitleApi","initialCues","apiVideoVideoIdSubtitlesDelete","setSubtitlesPublished","_video$subtitles$isPu","isPublished","initialSubtitlesGenerateJobState","initialSubtitlesSize","setIsRequesting","setViewState","toViewState","getSubtitles","apiVideoVideoIdSubtitlesAddGenerateJobPatch","postSubtitlesGenerateJob","subtitlesGenerateJobState","subtitlesSize","_table$subtitlesGener","none","running","finished","SelectFolderButton","summaryFolderPath","Chart","register","BarController","BarElement","LinearScale","CategoryScale","Tooltip","dataTypeUnits","watchtime","views","SummaryBarGraph","canvasRef","tooltipModel","setTooltipModel","convertGraphData","periodType","dataType","hoverColor","colorHelper","color","alpha","rgbString","chart","animation","responsive","scales","y","grid","drawBorder","ticks","autoSkipPadding","callback","x","bar","hoverBackgroundColor","tooltip","intersect","enabled","external","destroy","caretX","caretY","dataPoints","formattedValue","dateFormatter","DateTimeFormat","year","month","day","startedAt","amount","labels","datasets","PreviewPlayer","clips","onPlayingStateUpdate","onCurrentTimeMsUpdate","containerRef","wrapperRefs","playerRefs","isPlayingRef","isSeekingWithinClip","currentClipIndex","setCurrentClipIndex","containerStyle","documentElement","clientHeight","clipsWithOffset","offsetMs","clip","targetClipIndex","p","enterFullscreen","resolveRequestFullscreen","seekInTimeline","positionMsInClip","startMs","seekInClip","players","videoEl","autoplay","qualityLevels","bitrateList","level","bitrate","highestBitrateIndex","indexOf","selectedIndex_","trigger","selectedIndex","forceUseHighestQualityLevel","sourceContentType","endMs","_clipsWithOffset$next","nextIndex","togglePlayPause","getRequestFullscreenFunc","_ref$current$requestF","requestFullscreen","webkitRequestFullscreen","dndSensorOptions","activationConstraint","distance","zoomList","CLIP_THUMB_WIDTH","VideoTimelineEdit","setPlaying","tlScrollContainerRef","tlClipItemContainerRef","playheadIndicatorRef","zoom","setZoom","currentClip","setCurrentClip","requestPlayheadScrollIntoView","useScrollIntoView","inline","draggingClipData","retainPointerPosition","showDraggingOverlayClip","hideDraggingOverlayClip","useClipItemDraggingPosition","clipContextMenuPosition","showClipContextMenu","useClipContextMenuPosition","itemContainerStyle","startChangingClipStart","updateChangingClipStart","endChangingClipStart","useChangingClipStart","restoredClips","storeDraftClips","useRestoreClips","initialVideo","lastTransformedAt","totalDurationMs","updateClips","addClips","splitClip","delClip","changeClipStart","changeClipEnd","hasUndoStack","hasRedoStack","undo","redo","useTimelineClips","initialVideoThumbnailSprite","requestVideo","requestThumbnailSprites","thumbnailSprite","videoAndThumbs","newClips","resolved","thumbnailSpritesUrl","signedUrl","handleWheel","deltaY","scrollBy","_findClipFromPosition","findClipFromPositionMs","openVideoSelector","updateCurrentTimeMs","handleTimelineClick","offset","getBoundingClientRect","px2ms","clientX","handleVideoSave","ApiTimelineUpdateJobApi","timelines","apiVideoVideoIdTimelineUpdateJobsPost","apiVideoVideoIdTimelineUpdateJobsPostRequest","step","valueAsNumber","calcClipItemWidth","marginLeft","tlMarginLeft","calcClipStartMsOfTimeline","horizontalListSortingStrategy","ClipItem","scrollContainerRef","changeStart","sum","changeEnd","seekWithinClip","onStartChangingClipStart","onUpdateChangingClipStart","onEndChangingClipStart","onPointerDown","OverlayClipItem","adjustX","overlayClipItemAdjustX","DurationTimeElem","maxDurationMs","backgroundSize","inputMode","targetVideos","promiseResolveVideos","promiseSprites","filtered","_item$thumbnailSprite","calcClipEndMsOfTimeline","_item$thumbnailSprite2","timelineEditable","isSorting","slidingDurationMs","setSlidingDurationMs","slidingStartMs","setSlidingStartMs","clipWidth","thumbPositions","calcClipThumbPositions","_listeners$onPointerD","ClipItemThumbs","ClipEdgeSlider","restrictDeltaX","deltaMs","endMsWithMinDuration","ms2px","onDragMove","delta","scrollLeft","videoDurationMs","startMsWithMinDuration","backgroundImage","backgroundRepeat","backgroundPosition","zoomSizeSnapModifier","createSnapModifier","modifiers","restrictToHorizontalAxis","restrictToWindowEdges","ClipEdgeSliderItem","useDraggable","durationFormatOptions","minute","second","fractionalSecondDigits","timeZone","durationFormatter","durationFormatterWithHour","_props","attrs","iso8601","px","thumbCount","stepMs","positionMs","targetMs","column","retryCount","ApiThumbnailSpriteApi","apiVideoVideoIdThumbnailSpritesGet","endMsOfPrevClip","setItemContainerStyle","offsetWidth","justifyContent","setPosition","clientY","clientWidth","fixedClipItemWidth","draggingClip","setDraggingClip","setOverlayClipItemAdjustX","draggingClipItemX","setDraggingClipItemX","prevClipItemsWidth","setPrevClipItemsWidth","rect","xOnTl","storingKey","localStorage","getItem","getStoredData","lastModifiedAt","getTime","setStoredData","storingClips","setStoringClips","setItem","removeItem","elemRef","setReq","_elemRef$current","_elemRef$current$scro","useStack","initialValues","stack","setStack","fn","newStack","pop","MIN_DURATION_MS","defaultClips","setClips","floorLT100ms","generateId","setTotalDurationMs","sumDurationMs","undoStack","pushUndoStack","popUndoStack","redoStack","pushRedoStack","popRedoStack","clearRedoStack","updateUndoRedoStack","newItem","newOnes","timePositionMs","newItems","clip1","clip2","prevClips","currentClips","nextClips","searchingOffset","currentClipEnd","VideoDescriptionEdit","_props$descriptionHtm","setDescriptionHtml","submit","VideoEditMenu","viewMode","setViewMode","lastNarrationJobFailed","his","lastVideoTransformJobHistory","jobTypeName","CSSTransition","classNames","timeout","in","mountOnEnter","unmountOnExit","MenuAnchor","videoPlayable","subtitlesGenerateJobRunning","thumbnailSpritesShowable","editVideoTimelinePath","MenuButton","videoSubtitlesPath","editVideoNarrationsPath","forceShowTooltipOnLoad","editVideoExamPath","enableVideoElemCapture","anchorAttrs","dataTip","buttonAttrs","CopyButton","linkIconMap","VideoShareMenu","videoWatchLinkType","watchLinkConditionAvailable","_condition$inputEmail","condition","setCondition","_data$condition","inputEmail","apiVideoVideoIdWatchLinkPatch","apiVideoVideoIdWatchLinkPatchRequest","VideoStateChecker","uploadThumbnail","ApiThumbnailApi","apiVideoIdThumbnailDelete","apiVideoIdThumbnailPresignGet","assetContainerName","apiVideoIdThumbnailPost","resettable","captureVideoElemInThisPage","canvas","videoWidth","videoHeight","getContext","drawImage","toBlob","initializeThumbnail","purgeThumbnail","LineController","PointElement","LineElement","Filler","primaryColor","LineGraph","aspectRatio","yTickScale","yMax","tooltipMode","beginAtZero","stepSize","font","maxRotation","legend","hover","borderColor","tension","radius","hoverRadius","borderWidth","pointStyle","model","dateTimeFormater","weekday","dateLabel","WatchCumulativeGraph","chartData","maxValue","d","convert2ChartData","yScale","timeFormater","WatchRetensionGraph","WatchedUserList","user","videoID","localStorageVideoID","setLocalStorageVideoID","setRate","reviewdVideoID","setReviewdVideoID","rateArr","image","worstImage","worseImage","normalImage","betterImage","bestImage","videoReviewsPath","review","handleSelect","WatchLinkConditionFormModal","open","setOpen","setEmail","ApiWatchLinkConditionResponseApi","apiVideoVideoIdWatchLinkConditionResponsePost","apiVideoVideoIdWatchLinkConditionResponsePostRequest","_wordPronounciation$l","_wordPronounciation$l2","_wordPronounciation$l3","wordPronounciation","phoneme","setPhoneme","literal","setLiteral","phonemeRef","literalRef","formattedLastModifiedAt","isDirty","ssmlString","phoneme2Ssml","convertSsml","Audio","handleDelete","apiWordPronounciationsIdDelete","apiWordPronounciationsIdPut","apiWordPronounciationsIdPutRequest","lastModifiedBy","referrerPolicy","hasInput","apiWordPronounciationsPost","apiWordPronounciationsPostRequest","func","_document","RequiredError","field","exists","canConsumeForm","consumes","consume","VoidApiResponse","ApiVideoVideoIdWatchLinkGet200ResponseMembersInnerFromJSON","ApiVideoVideoIdWatchLinkGet200ResponseMembersInnerFromJSONTyped","ApiAcademyAcademyIdWatchLinkGet200ResponseFromJSON","ApiAcademyAcademyIdWatchLinkGet200ResponseFromJSONTyped","ApiAcademyAcademyIdWatchLinkPatchRequestToJSON","ApiAcademyCourseCategoriesIdGet200ResponseFromJSON","ApiAcademyCourseCategoriesIdGet200ResponseFromJSONTyped","ApiAcademyCourseCategoriesIdPatch202ResponseFromJSON","ApiAcademyCourseCategoriesIdPatch202ResponseFromJSONTyped","ApiAcademyCourseCategoriesIdPatchRequestAcademyCourseCategoryToJSON","ApiAcademyCourseCategoriesIdPatchRequestToJSON","ApiAcademyCourseCategoriesPost201ResponseFromJSON","ApiAcademyCourseCategoriesPost201ResponseFromJSONTyped","ApiAcademyCourseCategoriesPostRequestAcademyCourseCategoryToJSON","ApiAcademyCourseCategoriesPostRequestToJSON","ApiAcademyCourseLessonsIdGet200ResponseVideoFromJSON","ApiAcademyCourseLessonsIdGet200ResponseVideoFromJSONTyped","ApiAcademyCourseLessonsIdGet200ResponseFromJSON","ApiAcademyCourseLessonsIdGet200ResponseFromJSONTyped","ApiAcademyCourseLessonsPost201ResponseVideoFromJSON","ApiAcademyCourseLessonsPost201ResponseVideoFromJSONTyped","ApiAcademyCourseLessonsIdPatch202ResponseFromJSON","ApiAcademyCourseLessonsIdPatch202ResponseFromJSONTyped","ApiAcademyCourseLessonsIdPatchRequestCourseLessonToJSON","ApiAcademyCourseLessonsIdPatchRequestToJSON","ApiAcademyCourseLessonsPost201ResponseFromJSON","ApiAcademyCourseLessonsPost201ResponseFromJSONTyped","ApiAcademyCourseLessonsPostRequestCourseLessonToJSON","ApiAcademyCourseLessonsPostRequestToJSON","ApiAcademyCoursesIdGet200ResponseFromJSON","ApiAcademyCoursesIdGet200ResponseFromJSONTyped","ApiAcademyCoursesIdPatch202ResponseFromJSON","ApiAcademyCoursesIdPatch202ResponseFromJSONTyped","ApiAcademyCoursesIdPatchRequestAcademyCourseToJSON","ApiAcademyCoursesIdPatchRequestToJSON","ApiAcademyCoursesPost201ResponseFromJSON","ApiAcademyCoursesPost201ResponseFromJSONTyped","ApiAcademyCoursesPostRequestAcademyCourseToJSON","ApiAcademyCoursesPostRequestToJSON","ApiAcademyLogoGet200ResponseFromJSON","ApiAcademyLogoGet200ResponseFromJSONTyped","ApiAcademyLogoPost201ResponseFromJSON","ApiAcademyLogoPost201ResponseFromJSONTyped","ApiScenesIdPutRequestAudioDataFromJSON","ApiScenesIdPutRequestAudioDataFromJSONTyped","ApiScenesIdPutRequestAudioDataToJSON","ApiDesignDesignIdScenesPostRequestToJSON","ApiDesignIdAddCreatomateJobPost200ResponseInnerFromJSON","ApiDesignIdAddCreatomateJobPost200ResponseInnerFromJSONTyped","ApiDesignIdAddCreatomateJobPostRequestCreatomateParamSourceElementsInnerAnimationsInnerToJSON","reversed","ApiDesignIdAddCreatomateJobPostRequestCreatomateParamSourceElementsInnerToJSON","ApiDesignIdAddCreatomateJobPostRequestCreatomateParamSourceToJSON","ApiDesignIdAddCreatomateJobPostRequestCreatomateParamToJSON","ApiDesignIdAddCreatomateJobPostRequestToJSON","ApiFoldersIdRenamePatch202ResponseFromJSON","ApiFoldersIdRenamePatch202ResponseFromJSONTyped","ApiFoldersIdRenamePatchRequestFolderToJSON","ApiFoldersIdRenamePatchRequestToJSON","ApiVideoIdMovePatch200ResponseWatchLinkFromJSON","ApiVideoIdMovePatch200ResponseWatchLinkFromJSONTyped","ApiFoldersIdVideosGet200ResponseInnerFromJSON","ApiFoldersIdVideosGet200ResponseInnerFromJSONTyped","ApiFoldersPost201ResponseFromJSON","ApiFoldersPost201ResponseFromJSONTyped","ApiFoldersPostRequestFolderToJSON","ApiFoldersPostRequestToJSON","ApiScenesIdGet200ResponseAudioDataFromJSON","ApiScenesIdGet200ResponseAudioDataFromJSONTyped","ApiScenesIdGet200ResponseFromJSON","ApiScenesIdGet200ResponseFromJSONTyped","ApiScenesIdPutRequestToJSON","ApiScenesIdUploadedAudioPost200ResponseFromJSON","ApiScenesIdUploadedAudioPost200ResponseFromJSONTyped","ApiScenesIdUploadedAudioPostRequestToJSON","ApiScenesIdUploadedImagePost200ResponseFromJSON","ApiScenesIdUploadedImagePost200ResponseFromJSONTyped","ApiScenesIdUploadedImagePostRequestToJSON","ApiVideoIdMovePatch200ResponseSubtitlesFromJSON","ApiVideoIdMovePatch200ResponseSubtitlesFromJSONTyped","ApiVideoIdGet200ResponseFromJSON","ApiVideoIdGet200ResponseFromJSONTyped","ApiVideoIdMovePatch200ResponseFromJSON","ApiVideoIdMovePatch200ResponseFromJSONTyped","ApiVideoIdMovePatchRequestToJSON","ApiVideoIdPut200ResponseFromJSON","ApiVideoIdPut200ResponseFromJSONTyped","ApiVideoIdPutRequestToJSON","ApiVideoIdThumbnailPost200ResponseFromJSON","ApiVideoIdThumbnailPost200ResponseFromJSONTyped","ApiVideoIdThumbnailPresignGet201ResponseFromJSON","ApiVideoIdThumbnailPresignGet201ResponseFromJSONTyped","ApiVideoPreparePost200ResponseFromJSON","ApiVideoPreparePost200ResponseFromJSONTyped","ApiVideoUploadedPostRequestToJSON","ApiVideoVideoIdExamAnswersPost200ResponseFromJSON","ApiVideoVideoIdExamAnswersPost200ResponseFromJSONTyped","ApiVideoVideoIdExamAnswersPostRequestAnswersInnerToJSON","ApiVideoVideoIdExamAnswersPostRequestToJSON","ApiVideoVideoIdExamGet200ResponseFromJSON","ApiVideoVideoIdExamGet200ResponseFromJSONTyped","ApiVideoVideoIdExamPutRequestToJSON","ApiVideoVideoIdExamQuestionsGet200ResponseInnerOptionsInnerFromJSON","ApiVideoVideoIdExamQuestionsGet200ResponseInnerOptionsInnerFromJSONTyped","ApiVideoVideoIdExamQuestionsGet200ResponseInnerOptionsInnerToJSON","ApiVideoVideoIdExamQuestionsGet200ResponseInnerFromJSON","ApiVideoVideoIdExamQuestionsGet200ResponseInnerFromJSONTyped","ApiVideoVideoIdExamQuestionsPutRequestExamQuestionsInnerToJSON","ApiVideoVideoIdExamQuestionsPutRequestToJSON","ApiVideoVideoIdNarrationsGet200ResponseInnerAudioDataFromJSON","ApiVideoVideoIdNarrationsGet200ResponseInnerAudioDataFromJSONTyped","ApiVideoVideoIdNarrationsGet200ResponseInnerFromJSON","ApiVideoVideoIdNarrationsGet200ResponseInnerFromJSONTyped","ApiVideoVideoIdNarrationsPutRequestNarrationsInnerAudioToJSON","ApiVideoVideoIdNarrationsPutRequestNarrationsInnerToJSON","ApiVideoVideoIdNarrationsPutRequestToJSON","ApiVideoVideoIdSubtitlesDefaultDisplayedPatchRequestToJSON","ApiVideoVideoIdSubtitlesGet200ResponseInnerFromJSON","ApiVideoVideoIdSubtitlesGet200ResponseInnerFromJSONTyped","ApiVideoVideoIdSubtitlesPublishedPatchRequestToJSON","ApiVideoVideoIdSubtitlesPutRequestSubtitlesInnerToJSON","ApiVideoVideoIdSubtitlesPutRequestToJSON","ApiVideoVideoIdThumbnailSpritesGet200ResponseFromJSON","ApiVideoVideoIdThumbnailSpritesGet200ResponseFromJSONTyped","ApiVideoVideoIdTimelineUpdateJobsPostRequestTimelinesInnerToJSON","ApiVideoVideoIdTimelineUpdateJobsPostRequestToJSON","ApiVideoVideoIdWatchLinkConditionResponsePostRequestResponseToJSON","ApiVideoVideoIdWatchLinkConditionResponsePostRequestToJSON","ApiVideoVideoIdWatchLinkGet200ResponseConditionFromJSON","ApiVideoVideoIdWatchLinkGet200ResponseConditionFromJSONTyped","ApiVideoVideoIdWatchLinkGet200ResponseFromJSON","ApiVideoVideoIdWatchLinkGet200ResponseFromJSONTyped","ApiVideoVideoIdWatchLinkPatch200ResponseConditionFromJSON","ApiVideoVideoIdWatchLinkPatch200ResponseConditionFromJSONTyped","ApiVideoVideoIdWatchLinkPatch200ResponseFromJSON","ApiVideoVideoIdWatchLinkPatch200ResponseFromJSONTyped","ApiVideoVideoIdWatchLinkPatchRequestConditionToJSON","ApiVideoVideoIdWatchLinkPatchRequestToJSON","ApiWordPronounciationsAffectDesignGet200ResponseDataInnerFromJSON","ApiWordPronounciationsAffectDesignGet200ResponseDataInnerFromJSONTyped","ApiWordPronounciationsAffectDesignGet200ResponseFromJSON","ApiWordPronounciationsAffectDesignGet200ResponseFromJSONTyped","ApiWordPronounciationsIdGet200ResponseFromJSON","ApiWordPronounciationsIdGet200ResponseFromJSONTyped","ApiWordPronounciationsIdPut200ResponseLastModifiedByFromJSON","ApiWordPronounciationsIdPut200ResponseLastModifiedByFromJSONTyped","ApiWordPronounciationsIdPut200ResponseFromJSON","ApiWordPronounciationsIdPut200ResponseFromJSONTyped","ApiWordPronounciationsIdPutRequestToJSON","ApiWordPronounciationsPostRequestToJSON","apiAcademyCoursesIdDeleteRaw","apiAcademyCoursesIdGetRaw","apiAcademyCoursesIdGet","apiAcademyCoursesIdPatchRaw","headerParameters","apiAcademyCoursesPostRaw","apiAcademyCourseCategoriesIdDeleteRaw","apiAcademyCourseCategoriesIdGetRaw","apiAcademyCourseCategoriesIdGet","apiAcademyCourseCategoriesIdPatchRaw","apiAcademyCourseCategoriesPostRaw","apiAcademyCourseLessonsIdDeleteRaw","apiAcademyCourseLessonsIdGetRaw","apiAcademyCourseLessonsIdGet","apiAcademyCourseLessonsIdPatchRaw","apiAcademyLogoDeleteRaw","apiAcademyLogoGetRaw","apiAcademyLogoGet","apiAcademyLogoPostRaw","formParams","apiAcademyLogoPresignGetRaw","apiAcademyAcademyIdWatchLinkGetRaw","apiAcademyAcademyIdWatchLinkPatchRaw","ApiAzureCognitiveApi","apiAzureCognitiveIssueTokenPostRaw","apiAzureCognitiveIssueTokenPost","apiDesignIdAddCreatomateJobPostRaw","apiVideoVideoIdExamGetRaw","apiVideoVideoIdExamGet","apiVideoVideoIdExamPutRaw","apiVideoVideoIdExamAnswersPostRaw","apiVideoVideoIdExamQuestionsGetRaw","apiVideoVideoIdExamQuestionsGet","apiVideoVideoIdExamQuestionsPutRaw","apiFoldersIdDeleteRaw","apiFoldersIdMovePatchRaw","apiFoldersIdRenamePatchRaw","apiFoldersIdVideosGetRaw","apiFoldersPostRaw","apiVideoVideoIdNarrationsGetRaw","apiVideoVideoIdNarrationsGet","apiVideoVideoIdNarrationsPresignGetRaw","apiVideoVideoIdNarrationsPutRaw","apiDesignDesignIdScenesGetRaw","apiDesignDesignIdScenesPostRaw","apiScenesIdDeleteRaw","apiScenesIdGetRaw","apiScenesIdGet","apiScenesIdPresignAudioGetRaw","apiScenesIdPresignImageGetRaw","apiScenesIdPutRaw","apiScenesIdUploadedAudioPostRaw","apiScenesIdUploadedImagePostRaw","apiVideoVideoIdSubtitlesAddGenerateJobPatchRaw","apiVideoVideoIdSubtitlesDefaultDisplayedPatchRaw","apiVideoVideoIdSubtitlesDeleteRaw","apiVideoVideoIdSubtitlesGetRaw","apiVideoVideoIdSubtitlesPublishedPatchRaw","apiVideoVideoIdSubtitlesPutRaw","apiVideoIdThumbnailDeleteRaw","apiVideoIdThumbnailPostRaw","apiVideoIdThumbnailPresignGetRaw","apiVideoVideoIdThumbnailSpritesGetRaw","apiVideoVideoIdTimelineUpdateJobsPostRaw","apiVideoIdDeleteRaw","apiVideoIdDownloadGet","apiVideoIdDuplicatePost","apiVideoIdGetRaw","apiVideoIdMovePatchRaw","apiVideoIdPutRaw","apiVideoPreparePostRaw","apiVideoUploadedPostRaw","apiVideoVideoIdWatchLinkGetRaw","apiVideoVideoIdWatchLinkPatchRaw","apiVideoVideoIdWatchLinkConditionResponsePostRaw","apiWordPronounciationsAffectDesignGetRaw","apiWordPronounciationsGetRaw","apiWordPronounciationsIdDeleteRaw","apiWordPronounciationsIdGetRaw","apiWordPronounciationsIdGet","apiWordPronounciationsIdPutRaw","apiWordPronounciationsPostRaw","$buildOptions","names","q","$encode","$buildQuery","$isScalarType","isArray","$hasPresentOwnProperty","hasOwnProperty","design_id","video_id","exp","token","cachedToken","atob","ssml","text2Ssml","textWithWordPronounciations2Ssml","Authorization","statusText","resolveAudioInfo","fetchingPromises","allSettled","reject","resolveDurationMs","formatOptions","formatter","formatterWithHour","xml","ssmlDocumentWithExpressAs","appendChild","createTextNode","toSsmlString","sortedWordPronounciations","breakProcessedText","matches","lastMatch","resultBeforeLastText","flatMap","self","previousEndIndex","textBeforeNotation","substring","breakEl","breakTime","processBreakNotation","textAndPhonemeNodes","srcArr","createPhonemeElement","expressAs","phonemeEl","implementation","createDocument","root","firstElementChild","prosody","XMLSerializer","serializeToString","getRootNode","replaceAll","html","DOMPurify","sanitize","RETURN_DOM","TIMESTAMP_REGEXP","PARAM_NAME","selector","querySelectorAll","urlStr","loc","isSameSite","paramValue","_this$match","lookbehind","_map$parentFolderId","ancestry","toTreeFolder","_map$parentFolderId2","shouldConfirm","shouldConfirmRef","delay","debouncedState","setDebouncedState","videojsOriginal","addLanguage","langJa","Rails","_document$getElementB","container","require","nav","componentRequireContext"],"sourceRoot":""}