{"version":3,"file":"video.18056d8f.js","sources":["app/assets/vite/stores/VideoDonation.ts","app/assets/vite/modules/video/views/donate/Confirm.ts","app/assets/vite/modules/video/views/donate/Payments.ts","app/assets/vite/modules/video/views/donate/Amount.ts","app/assets/vite/modules/video/views/donate/Root.ts","app/assets/vite/modules/video/views/Share.ts","app/assets/vite/modules/video/views/User.ts","app/assets/vite/factories/infiniteList.ts","app/assets/vite/modules/video/views/People.ts","app/assets/vite/modules/video/views/Chat.ts","app/assets/vite/modules/video/views/Root.ts","app/assets/vite/modules/video/elements/Card.ts"],"sourcesContent":["import { store, Model } from \"hybrids\";\nimport { get, post, put } from \"~/utils/api\";\nimport ArtistVideo from \"./ArtistVideo\";\nimport PaymentRequest from \"./PaymentRequest\";\n\ninterface VideoDonation {\n id: string;\n video: ArtistVideo;\n amount: number;\n tip: number;\n currency: string;\n paymentRequest: PaymentRequest;\n paymentMethod: string;\n paymentId: string;\n\n // computed\n total: number;\n disabled: boolean;\n}\n\nconst VideoDonation: Model = {\n id: true,\n video: ArtistVideo,\n amount: 0,\n tip: 0,\n currency: \"USD\",\n paymentRequest: PaymentRequest,\n paymentMethod: \"\",\n paymentId: \"\",\n\n total: ({ amount, tip }) => amount + tip,\n disabled: ({ amount, tip }) => !amount || amount < 1 || tip < 0,\n\n [store.connect]: {\n get: (id) => get(\"/video_donations/:id\", id),\n set: (id, values) => {\n if (values) {\n if (!id) {\n return post(\"/video_donations\", values);\n }\n if (values?.paymentId && values?.paymentMethod) {\n return post(`/video_donations/${id}/complete`, values);\n }\n\n return put(\"/video_donations/:id\", id, values);\n }\n\n throw Error(\"Unsupported action\");\n },\n },\n};\n\nexport default VideoDonation;\n","import {define, html, store, router, Descriptor} from \"hybrids\";\nimport ArtistVideo from \"~/stores/ArtistVideo\";\nimport Course from \"~/stores/Course\";\n\ninterface VViewDonateConfirmView {\n video: ArtistVideo;\n status: string;\n}\n\nexport default define({\n [router.connect]: {\n url: \"/watch/:video/confirm?status\",\n },\n tag: \"v-view-donate-confirm-view\",\n video: store(ArtistVideo) as Descriptor,\n status: \"\",\n content: ({status}) => html`\n ${status === \"succeeded\" &&\n html`\n Success!\n \n Thank you for your donation.\n \n `}\n ${status === \"processing\" &&\n html`\n Payment processing\n \n We'll update you when payment is received.\n \n `}\n ${status === \"requires_action\" &&\n html`\n Payment requires action\n \n Your payment requires action, please contact your payment provider.\n \n `}\n ${[\"requires_payment_method\", \"requires_source\", \"canceled\"].includes(status) &&\n html`\n Payment failed\n \n Payment failed or was canceled. Please try again.\n \n `}\n `,\n});\n","import { define, html, router, store } from \"hybrids\";\n\nimport { PaymentEvent } from \"~/modules/website/elements/Stripe\";\nimport { formatPrice } from \"~/utils/currency\";\n\nimport ArtistVideo from \"~/stores/ArtistVideo\";\nimport PaymentMethods from \"~/stores/PaymentMethods\";\nimport VideoDonation from \"~/stores/VideoDonation\";\n\nimport Confirm from \"./Confirm\";\n\ninterface VVideoDonatePaymentsView extends HTMLElement {\n video?: ArtistVideo;\n payments: PaymentMethods;\n donation?: VideoDonation;\n}\n\nfunction submit(host: VVideoDonatePaymentsView, event: PaymentEvent) {\n store.set(host.donation, { ...event.detail }).then(() => {\n (host.querySelector(\"#submit-button\") as HTMLElement).click();\n });\n}\n\nexport default define({\n tag: \"v-video-donate-payments-view\",\n video: store(ArtistVideo),\n payments: store(PaymentMethods, {\n id: ({ video }) => (store.ready(video) ? video?.owner?.id : undefined),\n }),\n donation: store(VideoDonation),\n render: () => html``.css`\n :host { display: flex; flex-flow: column;height: 100%;}\n ::slotted(form) { display: flex; flex-flow: column; flex: 1 0 auto; }\n `,\n content: ({ donation, payments, video }) => html`\n Choose Payment\n\n
\n ${donation &&\n store.ready(payments, donation) &&\n html`\n ${store.ready(donation) && store.pending(donation)\n ? html`\n \n \n \n Your payment is being processed,\n
\n please wait...\n
\n Warning: Navigating back could create a double transaction\n
\n
\n `\n : html`\n \n \n ${formatPrice(donation.total, payments.currency)}\n \n ${payments.stripe.account &&\n html`\n Credit or debit card\n \n `}\n ${payments.paypal.clientId &&\n donation.currency !== \"INR\" &&\n html`\n \n `}\n \n `}\n `}\n \n
\n `,\n});\n","import { define, html, router, store } from \"hybrids\";\n\nimport ArtistVideo from \"~/stores/ArtistVideo\";\nimport VideoDonation from \"~/stores/VideoDonation\";\nimport PaymentMethods from \"~/stores/PaymentMethods\";\n\nimport Payments from \"./Payments\";\n\ninterface VVideoDonateAmountView {\n video?: ArtistVideo;\n payments: PaymentMethods;\n donation: VideoDonation;\n tipOption: \"5%\" | \"7.5%\" | \"10%\" | \"12.5%\" | \"custom\";\n}\n\nfunction getTipValue(amount: number, tipOption: string) {\n return (parseFloat(tipOption.replace(\"%\", \"\")) / 100) * amount;\n}\n\nfunction setTipOption(\n host: VVideoDonateAmountView,\n e: { target: HTMLInputElement }\n) {\n const { amount } = host.donation;\n if (!amount) return;\n\n const value = (e.target as HTMLInputElement).value;\n const tip = value !== \"custom\" ? getTipValue(amount, value) : 0;\n\n store.set(host.donation, { tip });\n}\n\nfunction setAmountAndTip(host: VVideoDonateAmountView, e: Event) {\n const value = (e.target as HTMLInputElement).valueAsNumber;\n const { tip } = host.donation;\n\n store.set(host.donation, {\n amount: value,\n tip: host.tipOption !== \"custom\" ? getTipValue(value, host.tipOption) : tip,\n });\n}\n\nfunction submit(host: VVideoDonateAmountView, event: Event) {\n router.resolve(event, store.submit(host.donation, { video: host.video }));\n}\n\nexport default define({\n [router.connect]: { stack: [Payments] },\n tag: \"v-video-donate-amount-view\",\n video: store(ArtistVideo),\n payments: store(PaymentMethods, {\n id: ({ video }) => (store.ready(video) ? video?.owner?.id : undefined),\n }),\n donation: store(VideoDonation, { draft: true }),\n tipOption: \"7.5%\",\n content: ({ payments, tipOption, donation }) => html`\n Donate\n\n ${payments &&\n store.ready(payments) &&\n html`\n \n
\n \n Enter amount (${payments.currency})\n \n \n \n \n
\n
\n Tip Viewcy\n \n Viewcy relies on generous patrons like you to keep streaming free.\n \n \n \n \n
\n\n ${tipOption === \"custom\" &&\n html`\n
\n \n Enter tip amount (${payments.currency})\n \n \n \n \n
\n `}\n\n \n Continue\n \n
\n `}\n `,\n});\n","import { define, html, router, store } from \"hybrids\";\n\nimport layout from \"~/factories/layout\";\nimport ArtistVideo from \"~/stores/ArtistVideo\";\n\nimport Amount from \"./Amount\";\nimport Confirm from \"./Confirm\";\n\ninterface VVideoDonateView {\n views: HTMLElement[];\n video?: ArtistVideo;\n}\n\nexport default define({\n tag: \"v-video-donate-view\",\n video: store(ArtistVideo),\n views: router([Amount, Confirm], { params: [\"video\"] }),\n render: layout(\"flex\"),\n content: ({ views }) => html`\n ${views}\n `,\n});\n","import { define, html, store } from \"hybrids\";\nimport layout from \"~/factories/layout\";\nimport ArtistVideo from \"~/stores/ArtistVideo\";\n\ninterface VVideoShareView {\n video?: ArtistVideo;\n}\n\nexport default define({\n tag: \"v-video-share-view\",\n video: store(ArtistVideo),\n render: layout(\"flex\"),\n content: ({ video }) => html`\n \n Share\n \n \n `,\n});\n","import { define, html, router, store } from \"hybrids\";\n\nimport layout from \"~/factories/layout\";\n\nimport ArtistVideo from \"~/stores/ArtistVideo\";\nimport { Patron } from \"~/stores/Broadcast\";\nimport Session from \"~/stores/Session\";\nimport User from \"~/stores/User\";\nimport UserDetails from \"~/stores/UserDetails\";\nimport UserFollow from \"~/stores/UserFollow\";\n\nexport interface VVideoUserView {\n session: Session;\n user?: User;\n video?: ArtistVideo;\n featuredVideos: ArtistVideo[];\n details: UserDetails;\n follow: UserFollow;\n header: string;\n patron?: Patron;\n member?: boolean;\n}\n\nfunction toggleFollow(host: VVideoUserView) {\n if (store.ready(host.follow)) {\n store.set(host.follow, null);\n } else {\n store.set(UserFollow, { user: host.user });\n }\n}\n\nexport default define({\n [router.connect]: { replace: true },\n tag: \"v-video-user-view\",\n session: store(Session),\n user: store(User),\n video: store(ArtistVideo),\n featuredVideos: store([ArtistVideo], {\n id: ({ user }) => ({\n featured: true,\n artist_id: user?.id ?? \"\",\n artist_type: user?.type ?? \"\",\n page: 1,\n }),\n }),\n details: store(UserDetails, { id: ({ user }) => user?.id }),\n follow: store(UserFollow, { id: ({ user }) => user?.id }),\n header: ({ video, user }) => {\n if (!user || !video || !store.ready(video)) return \"\";\n\n if (video.collaborators.includes(user)) {\n return \"Artists\";\n }\n\n if (video.sponsors.find((s) => s.profile === user)) {\n return \"Sponsors\";\n }\n\n return \"People\";\n },\n patron: ({ video, user }) =>\n video && store.ready(video)\n ? video.patrons.find((p) => p.user === user)\n : undefined,\n member: ({ user }) => user?.member,\n render: layout(\"flex\"),\n content: ({\n session,\n video,\n user,\n patron,\n member,\n featuredVideos,\n details,\n follow,\n header,\n }) => html`\n \n ${header}\n ${video &&\n user &&\n store.ready(video, user) &&\n html`\n \n \n \n \n \n \n ${store.ready(session) &&\n user !== session.user &&\n (store.ready(follow) || store.error(follow)) &&\n html`\n \n \n \n `}\n \n\n \n
\n \n ${user.registered &&\n html`\n ${user.name}\n `}\n ${!user.registered && user.name}\n ${patron &&\n html``}\n \n \n @${user.username}\n \n
\n ${member &&\n html`\n ${user.name} is a Viewcy member.\n \n Become a member now\n \n to support and preserve our global heritage.\n `}\n
\n\n ${store.ready(details) &&\n details.fullDescription &&\n html`\n \n \n ${details.fullDescription\n .trim()\n .substring(0, 125)\n .split(\"\\n\")\n .map((line) => html`${line}`)}\n ${details.fullDescription.length > 125 &&\n details.fullDescription\n .split(\"\\n\")\n .map((line) => html`${line}`)}\n \n `}\n ${store.ready(featuredVideos) &&\n !!featuredVideos.length &&\n html`\n \n \n Featured Videos\n \n ${featuredVideos.map(\n (video) => html``\n )}\n \n \n `}\n `}\n
\n `,\n});\n","import { Descriptor } from \"hybrids\";\n\nexport default function infiniteList(\n fn: (host: E, page: number) => M[]\n): Descriptor> {\n return {\n get(host, lastValue: Array) {\n const result = lastValue.map((_, index) => fn(host, index + 1));\n result.toString = () => String(result.length);\n\n return result;\n },\n set(_, value, lastValue) {\n if (!value) return [null];\n\n if (lastValue && lastValue[lastValue.length - 1].length === 0) {\n return lastValue;\n }\n\n return Array(Number(value)).fill(null);\n },\n };\n}\n\nexport function nextPage(key: keyof E) {\n return (host: E) => {\n (host[key] as number) = (host[key] as []).length + 1;\n };\n}\n","import { define, html, router, store } from \"hybrids\";\n\nimport layout from \"~/factories/layout\";\nimport infiniteList, { nextPage } from \"~/factories/infiniteList\";\n\nimport ArtistVideo, { sortVideoCollaboratorsGroups } from \"~/stores/ArtistVideo\";\nimport Session from \"~/stores/Session\";\n\nimport Donate from \"./donate/Root\";\nimport Share from \"./Share\";\nimport User from \"./User\";\n\ninterface VVideoPeopleView {\n video?: ArtistVideo;\n relatedVideos: Array;\n relatedVideosTag: string;\n session: Session;\n}\n\nexport default define({\n [router.connect]: { url: \"/watch/:video\", stack: [Donate, User, Share] },\n tag: \"v-video-people-view\",\n video: store(ArtistVideo),\n relatedVideos: infiniteList(({ video, relatedVideosTag }, page) => {\n return store.get([ArtistVideo], {\n related: true,\n tag: relatedVideosTag,\n id: String(video),\n page,\n });\n }),\n relatedVideosTag: {\n value: \"\",\n observe(host, value, lastValue) {\n if (value || lastValue) {\n // @ts-ignore\n host.relatedVideos = undefined;\n }\n },\n },\n session: store(Session),\n render: layout(\"flex\"),\ncontent: ({ video, relatedVideos, relatedVideosTag, session }) => {\n\n if (relatedVideos.length) {\n const rv = relatedVideos[0]\n\n if (rv.length) {\n document.addEventListener(\"video-ended\", (event) => {\n const nextVideo = rv[0]\n window.location.href = nextVideo.url\n })\n }\n }\n\n return (\n html`\n \n ${video?.description &&\n html`\n \n \n ${video?.description\n .trim()\n .substring(0, 125)\n .split(\"\\n\")\n .map((line) => html`\n ${line}`)}\n ${video?.description.length > 125 &&\n video?.description\n .trim()\n .split(\"\\n\")\n .map((line) => html`\n ${line}`)}\n \n \n \n `}\n ${!!video?.collaboratorsGroups.length &&\n sortVideoCollaboratorsGroups(video?.collaboratorsGroups).map(group =>\n html`\n \n ${group.collaborators.map((user) =>\n html`\n \n \n \n `)}\n \n `\n )\n }\n ${!!video?.patrons.length &&\n html`\n \n ${video.patrons\n .filter(\n ({ user }) =>\n !store.ready(session) || !session.blockedUsers.includes(user)\n )\n .map((patron) =>\n html`\n \n \n `.key(patron.user.id)\n )}\n \n \n `}\n ${(!!relatedVideos.length || relatedVideosTag) &&\n html`\n \n \n Related Videos\n \n \n ${!!video?.tags.length &&\n html`\n \n ${[\"\", ...video?.tags].map((tag) =>\n tag === relatedVideosTag\n ? html`\n `\n : html`\n `\n )}\n \n `}\n \n ${relatedVideos.map(\n (page) =>\n store.ready(page) &&\n page.map(\n (video) =>\n html`\n `\n )\n )}\n ${!!(relatedVideos.length && relatedVideos[0].length) &&\n html`\n \n \n `}\n \n \n \n `}\n \n `\n)}});\n","import { define, html, router, store } from \"hybrids\";\n\nimport layout from \"~/factories/layout\";\n\nimport ArtistVideo, { removeComment, toggleCommentLike, } from \"~/stores/ArtistVideo\";\nimport Comment from \"~/stores/Comment\";\nimport Session from \"~/stores/Session\";\n\nimport { VBroadcastContainer } from \"~/modules/broadcast/elements/Container\";\nimport { VBroadcastChatForm } from \"~/modules/broadcast/elements/ChatForm\";\nimport { CommentClickEvent } from \"~/modules/broadcast/elements/ChatComment\";\n\nimport Share from \"./Share\";\nimport User from \"./User\";\nimport Donate from \"./donate/Root\";\n\ninterface VVideoChatView extends HTMLElement {\n video?: ArtistVideo;\n comments: Comment[];\n session: Session;\n limit: number;\n}\n\nconst DEFAULT_LIMIT = 20;\n\nfunction offsetLimit(host: VVideoChatView) {\n host.limit += DEFAULT_LIMIT;\n\n const container = host.querySelector(\n \"v-broadcast-container[stick-to-bottom]\"\n ) as VBroadcastContainer;\n if (container) {\n const firstComment = container.children[1];\n\n requestAnimationFrame(() => {\n firstComment.scrollIntoView({ block: \"center\" });\n });\n }\n}\n\nfunction setCommentQuote(host: VVideoChatView, event: CommentClickEvent) {\n const form = host.querySelector(\"v-broadcast-chat-form\") as VBroadcastChatForm;\n form.quote = event.detail.comment;\n form.input.focus();\n}\n\nfunction remove(host: VVideoChatView, event: CommentClickEvent) {\n if (confirm(\"Are you sure you want to delete this comment?\")) {\n removeComment(host.video as ArtistVideo, event.detail.comment);\n }\n}\n\nfunction toggleLike(host: VVideoChatView, event: CommentClickEvent) {\n toggleCommentLike(host.video as ArtistVideo, event.detail.comment);\n}\n\nfunction focusForm(host: VVideoChatView) {\n const form = host.querySelector(\"v-broadcast-chat-form\") as VBroadcastChatForm;\n if (form) form.input.focus();\n}\n\nexport default define({\n [router.connect]: { url: \"/watch/:video/chat\", stack: [Donate, User, Share] },\n tag: \"v-video-chat-view\",\n video: store(ArtistVideo),\n session: store(Session),\n comments: ({ video, limit }, lastComments) => {\n if (!video || !store.ready(video)) return [];\n\n const offset = lastComments\n ? video.comments.findIndex((c) => lastComments.includes(c))\n : 0;\n\n return video.comments.slice(0, limit + offset).reverse();\n },\n limit: DEFAULT_LIMIT,\n render: layout(\"flex\"),\n content: ({ video, comments, session, limit }) => html`\n ${video &&\n store.ready(video) &&\n html`\n ${!!comments.length\n ? html`\n \n ${video.comments.length > limit &&\n html`\n \n \n \n \n Show older comments\n \n \n `}\n ${comments\n .filter(\n ({ user }) =>\n store.error(session) ||\n (store.ready(session) && !session.blockedUsers.includes(user))\n )\n .map((comment, index) =>\n html`\n DEFAULT_LIMIT &&\n index < DEFAULT_LIMIT}\"\n >\n `.key(comment.id)\n )}\n `\n : html`\n \n Start conversation here...\n \n `}\n \n `}\n `,\n});\n","import { define, html, router, store } from \"hybrids\";\n\nimport layout from \"~/factories/layout\";\nimport socketio from \"~/factories/socketio\";\n\nimport ArtistVideo, { toggleVideoFavorite } from \"~/stores/ArtistVideo\";\nimport Comment from \"~/stores/Comment\";\nimport PaymentMethods from \"~/stores/PaymentMethods\";\n\nimport { VBroadcastContainer } from \"~/modules/broadcast/elements/Container\";\n\nimport { Socket } from \"socket.io-client\";\n\nimport Donate from \"./donate/Root\";\nimport Share from \"./Share\";\nimport People from \"./People\";\nimport User from \"./User\";\nimport Chat from \"./Chat\";\nimport Session from \"~/stores/Session\";\nimport { redirectToSignIn } from \"~/utils/redirections\";\n\nexport interface VVideoRoot extends HTMLElement {\n video?: ArtistVideo;\n payments: PaymentMethods;\n views: HTMLElement[];\n session: Session;\n socketUrl: string;\n accessToken: string;\n socket: Socket | null;\n unreadComments: boolean;\n autoLike: boolean;\n\n videoId: string;\n}\n\nfunction handleChatClick(host: VVideoRoot, event: Event) {\n host.unreadComments = false;\n\n if (router.active(Chat)) {\n event.preventDefault();\n\n const el = host.querySelector(\n \"v-broadcast-container[stick-to-bottom]\"\n ) as VBroadcastContainer;\n\n el?.scrollToBottom();\n }\n}\n\nconst toggleFavoriteHandler = async (host: VVideoRoot, event: Event) => {\n try {\n const session = await store.resolve(Session);\n toggleVideoFavorite(host.video);\n } catch (error) {\n redirectToSignIn(\"autoLike=true\");\n }\n}\n\nexport default define({\n tag: \"v-video-root\",\n video: store(ArtistVideo),\n payments: store(PaymentMethods, {\n id: ({ video }) => (store.ready(video) ? video?.owner?.id : undefined),\n }),\n videoId: ({ video }) => `/watch/${video?.id}`,\n session: store(Session),\n views: router([People, Chat], { params: [\"video\"] }),\n unreadComments: false,\n socketUrl: \"\",\n accessToken: \"\",\n autoLike: {\n value: false,\n observe({ video }, value) {\n if (value && !video?.hasLike) {\n toggleVideoFavorite(video);\n }\n }\n },\n render: layout(\"flex\"),\n socket: socketio(async (host, socket) => {\n socket.on(\"comments:create\", async (comment: Comment) => {\n console.log(\"socket event: 'comments:create'\");\n const video = await store.resolve(host.video);\n const session = await store.resolve(host.session);\n\n if (session.blockedUsers.find((u) => u == comment.user)) {\n return;\n }\n\n if (video && !video.comments.find((c) => c.id === comment.id)) {\n store.sync(video, {\n comments: [comment].concat(video.comments),\n });\n\n if (!router.active(Chat, { stack: true })) {\n host.unreadComments = true;\n }\n }\n });\n\n socket.on(\"comments:update\", async (values: Comment) => {\n console.log(\"socket event: 'comments:update'\");\n const comment = store.get(Comment, values.id);\n\n if (store.ready(comment)) {\n const { id, ...fields } = values;\n store.sync(comment, fields);\n }\n });\n\n socket.on(\"comments:delete\", async (values: Comment) => {\n console.log(\"socket event: 'comments:delete'\");\n const video = await store.resolve(host.video);\n const comment = store.get(Comment, values.id);\n\n if (video && store.ready(comment)) {\n store.sync(video, {\n comments: video.comments.filter(\n (c) => c !== comment && c.parent !== comment\n ),\n });\n store.sync(comment, null);\n }\n });\n\n socket.on(\"connect_error\", console.error);\n }),\n content: ({\n video,\n payments,\n views,\n unreadComments,\n session,\n videoId,\n }) => html`\n \n ${video &&\n store.ready(video) &&\n html`\n \n\n ${(window.innerWidth > 921 || !router.active(Chat)) && html`\n \n ${video.name}\n \n\n \n \n \n \n ${video.permissions.canManageAllComments &&\n html`\n `\n }\n `}\n\n ${video.sponsors.map(\n (sponsor) =>\n html`\n \n \n \n `\n )}\n\n ${views}\n `}\n\n
\n ${store.ready(video) &&\n !router.active([Donate]) &&\n html`\n \n ${store.ready(payments) &&\n !payments.disabled &&\n html`\n `}\n \n \n \n `}\n
\n
\n `,\n});\n","import { define, html, store } from \"hybrids\";\n\nimport ArtistVideo from \"~/stores/ArtistVideo\";\n\ninterface VVideoCard {\n video?: ArtistVideo;\n}\n\nconst handleClick = ({ video }: { video: ArtistVideo }) => {\n window.location.href = video.url\n}\n\nexport default define({\n tag: \"v-video-card\",\n video: store(ArtistVideo),\n render: ({ video }) => html`\n \n `.css`\n .video-link-holder {\n cursor: pointer;\n }\n \n v-ui-poster {\n flex: 1;\n max-width: 140px;\n }\n\n v-ui-text {\n flex: 2;\n }\n `,\n});\n"],"names":["VideoDonation","id","video","ArtistVideo","amount","tip","currency","paymentRequest","PaymentRequest","paymentMethod","paymentId","total","disabled","store","connect","get","set","values","post","put","Error","Confirm","define","router","url","tag","status","content","html","includes","submit","host","event","donation","detail","then","querySelector","click","Payments","payments","PaymentMethods","ready","_a","owner","render","css","pending","formatPrice","stripe","account","paypal","clientId","getTipValue","tipOption","parseFloat","replace","setTipOption","e","value","target","setAmountAndTip","valueAsNumber","resolve","Amount","stack","draft","Donate","views","params","layout","Share","name","toggleFollow","follow","UserFollow","user","fn","User","session","Session","featuredVideos","featured","artist_id","artist_type","_b","type","page","details","UserDetails","header","collaborators","sponsors","find","s","profile","patron","patrons","p","member","error","registered","pathname","username","fullDescription","trim","substring","split","map","line","length","People","relatedVideos","relatedVideosTag","related","String","lastValue","result","_","index","toString","Array","Number","fill","observe","rv","document","addEventListener","nextVideo","window","location","href","description","collaboratorsGroups","sortVideoCollaboratorsGroups","group","filter","blockedUsers","key","tags","offsetLimit","limit","container","firstComment","children","requestAnimationFrame","scrollIntoView","block","setCommentQuote","form","quote","comment","input","focus","remove","confirm","removeComment","toggleLike","toggleCommentLike","focusForm","Chat","comments","lastComments","offset","findIndex","c","slice","reverse","handleChatClick","unreadComments","active","preventDefault","el","scrollToBottom","toggleFavoriteHandler","async","toggleVideoFavorite","redirectToSignIn","videoId","socketUrl","accessToken","autoLike","hasLike","socket","socketio","on","console","log","u","sync","concat","Comment","fields","parent","src","iframely","muxDataApiKey","innerWidth","permissions","canManageAllComments","sponsor","image","handleClick","thumbnail"],"mappings":"4gBAoBA,MAAMA,EAAsC,CAC1CC,IAAI,EACJC,MAAOC,EACPC,OAAQ,EACRC,IAAK,EACLC,SAAU,MACVC,eAAgBC,EAChBC,cAAe,GACfC,UAAW,GAEXC,MAAO,EAAGP,OAAAA,EAAQC,IAAAA,KAAUD,EAASC,EACrCO,SAAU,EAAGR,OAAAA,EAAQC,IAAAA,MAAWD,GAAUA,EAAS,GAAKC,EAAM,EAE9D,CAACQ,EAAMC,SAAU,CACfC,IAAMd,GAAOc,EAAI,uBAAwBd,GACzCe,IAAK,CAACf,EAAIgB,KACR,GAAIA,EACF,OAAKhB,GAGD,MAAAgB,OAAA,EAAAA,EAAQP,aAAa,MAAAO,OAAA,EAAAA,EAAQR,eACxBS,EAAK,oBAAoBjB,aAAegB,GAG1CE,EAAI,uBAAwBlB,EAAIgB,GAN9BC,EAAK,mBAAoBD,GASpC,MAAMG,MAAM,yBCtClB,IAAAC,EAAeC,EAA+B,CAC5C,CAACC,EAAOT,SAAU,CAChBU,IAAK,gCAEPC,IAAK,6BACLvB,MAAOW,EAAMV,GACbuB,OAAQ,GACRC,QAAS,EAAED,OAAAA,KAAYE,CAAA;MACR,cAAXF,GACFE,CAAA;;;;;;MAMa,eAAXF,GACFE,CAAA;;;;;;MAMa,oBAAXF,GACFE,CAAA;;;;;;MAME,CAAC,0BAA2B,kBAAmB,YAAYC,SAASH,IACtEE,CAAA;;;;;;MCtBJ,SAASE,EAAOC,EAAgCC,GACxCnB,EAAAG,IAAIe,EAAKE,SAAU,IAAKD,EAAME,SAAUC,MAAK,KAC3CJ,EAAAK,cAAc,kBAAkCC,WAI1D,IAAAC,EAAehB,EAAiC,CAC9CG,IAAK,+BACLvB,MAAOW,EAAMV,GACboC,SAAU1B,EAAM2B,EAAgB,CAC9BvC,GAAI,EAAGC,MAAAA,YAAa,OAAAW,EAAM4B,MAAMvC,GAAS,OAAAwC,EAAO,MAAAxC,OAAA,EAAAA,EAAAyC,gBAAO1C,QAAK,KAE9DgC,SAAUpB,EAAMb,GAChB4C,OAAQ,IAAMhB,CAAoB,gBAAAiB,GAAA;;;IAIlClB,QAAS,EAAGM,SAAAA,EAAUM,SAAAA,EAAUrC,MAAAA,KAAY0B,CAAA;;;oBAG1BL,EAAOC,IAAIH,EAAS,CAAEnB,MAAAA,EAAcwB,OAAQ;QACxDO,GACFpB,EAAM4B,MAAMF,EAAUN,IACtBL,CAAA;UACIf,EAAM4B,MAAMR,IAAapB,EAAMiC,QAAQb,GACrCL,CAAA;;;;;;;;;;;cAYAA,CAAA;;;oBAGQmB,EAAYd,EAAStB,MAAO4B,EAASjC;;kBAEvCiC,EAASS,OAAOC,SAClBrB,CAAA;;;gCAGgBW,EAASS;qCACJf,EAAS1B;iCACbuB;;;kBAGfS,EAASW,OAAOC,UACI,QAAtBlB,EAAS3B,UACTsB,CAAA;;gCAEgBW,EAASW,OAAOC;qCACXlB,EAAS1B;iCACbuB;;;;;;;;MC3DjC,SAASsB,EAAYhD,EAAgBiD,GACnC,OAAQC,WAAWD,EAAUE,QAAQ,IAAK,KAAO,IAAOnD,EAG1D,SAASoD,EACPzB,EACA0B,GAEM,MAAArD,OAAEA,GAAW2B,EAAKE,SACxB,IAAK7B,EAAQ,OAEP,MAAAsD,EAASD,EAAEE,OAA4BD,MACvCrD,EAAgB,WAAVqD,EAAqBN,EAAYhD,EAAQsD,GAAS,EAE9D7C,EAAMG,IAAIe,EAAKE,SAAU,CAAE5B,IAAAA,IAG7B,SAASuD,EAAgB7B,EAA8B0B,GAC/C,MAAAC,EAASD,EAAEE,OAA4BE,eACvCxD,IAAEA,GAAQ0B,EAAKE,SAEfpB,EAAAG,IAAIe,EAAKE,SAAU,CACvB7B,OAAQsD,EACRrD,IAAwB,WAAnB0B,EAAKsB,UAAyBD,EAAYM,EAAO3B,EAAKsB,WAAahD,IAI5E,SAASyB,EAAOC,EAA8BC,GACrCT,EAAAuC,QAAQ9B,EAAOnB,EAAMiB,OAAOC,EAAKE,SAAU,CAAE/B,MAAO6B,EAAK7B,SAGlE,IAAA6D,EAAezC,EAA+B,CAC5C,CAACC,EAAOT,SAAU,CAAEkD,MAAO,CAAC1B,IAC5Bb,IAAK,6BACLvB,MAAOW,EAAMV,GACboC,SAAU1B,EAAM2B,EAAgB,CAC9BvC,GAAI,EAAGC,MAAAA,YAAa,OAAAW,EAAM4B,MAAMvC,GAAS,OAAAwC,EAAO,MAAAxC,OAAA,EAAAA,EAAAyC,gBAAO1C,QAAK,KAE9DgC,SAAUpB,EAAMb,EAAe,CAAEiE,OAAO,IACxCZ,UAAW,OACX1B,QAAS,EAAGY,SAAAA,EAAUc,UAAAA,EAAWpB,SAAAA,KAAeL,CAAA;;;MAG5CW,GACF1B,EAAM4B,MAAMF,IACZX,CAAA;;;;4BAIwBW,EAASjC;;oCAEDiC,EAASjC;;;;;;uBAMtB2B,EAAS7B,QAAU;yBACjBwD;;;;;;;;;mCASUhC,EAAKZ,IAAI;6BACfqC,gBAAwBG;;;;;;;;;;UAU7B,WAAdH,GACFzB,CAAA;;;kCAG0BW,EAASjC;;sCAELiC,EAASjC;;;;;;yBAMtB2B,EAAS5B,KAAO;2BACduB,EAAKZ,IAAIiB,EAAU;;;;;;;kBAO5BV,EAAOC,IAAIc,EAAU,CAAEL,SAAAA;qBACpBH;oBACDjB,EAAMiC,QAAQb;sBACZA,EAASrB;;;;;;MCvG/BsD,EAAe5C,EAAyB,CACtCG,IAAK,sBACLvB,MAAOW,EAAMV,GACbgE,MAAO5C,EAAO,CAACwC,EAAQ1C,GAAU,CAAE+C,OAAQ,CAAC,WAC5CxB,OAAQyB,EAAO,QACf1C,QAAS,EAAGwC,MAAAA,KAAYvC,CAAA;2CACiBuC;MCX3CG,EAAehD,EAAwB,CACrCG,IAAK,qBACLvB,MAAOW,EAAMV,GACbyC,OAAQyB,EAAO,QACf1C,QAAS,EAAGzB,MAAAA,KAAY0B,CAAA;;;;eAIJ,MAAP1B,OAAO,EAAAA,EAAAsB;gBACC,MAAPtB,OAAO,EAAAA,EAAAqE;;;MCMvB,SAASC,EAAazC,GAChBlB,EAAM4B,MAAMV,EAAK0C,QACb5D,EAAAG,IAAIe,EAAK0C,OAAQ,MAEvB5D,EAAMG,IAAI0D,EAAY,CAAEC,KAAM5C,EAAK4C,OAIvC,IC5BEC,ED4BFC,EAAevD,EAAuB,CACpC,CAACC,EAAOT,SAAU,CAAEyC,SAAS,GAC7B9B,IAAK,oBACLqD,QAASjE,EAAMkE,GACfJ,KAAM9D,EAAMgE,GACZ3E,MAAOW,EAAMV,GACb6E,eAAgBnE,EAAM,CAACV,GAAc,CACnCF,GAAI,EAAG0E,KAAAA,cAAY,MAAA,CACjBM,UAAU,EACVC,UAAW,OAAAxC,EAAM,MAAAiC,OAAA,EAAAA,EAAA1E,IAAMyC,EAAA,GACvByC,YAAa,OAAAC,EAAM,MAAAT,OAAA,EAAAA,EAAAU,MAAQD,EAAA,GAC3BE,KAAM,MAGVC,QAAS1E,EAAM2E,EAAa,CAAEvF,GAAI,EAAG0E,KAAAA,KAAiB,MAANA,OAAM,EAAAA,EAAA1E,KACtDwE,OAAQ5D,EAAM6D,EAAY,CAAEzE,GAAI,EAAG0E,KAAAA,KAAiB,MAANA,OAAM,EAAAA,EAAA1E,KACpDwF,OAAQ,EAAGvF,MAAAA,EAAOyE,KAAAA,KACXA,GAASzE,GAAUW,EAAM4B,MAAMvC,GAEhCA,EAAMwF,cAAc7D,SAAS8C,GACxB,UAGLzE,EAAMyF,SAASC,MAAMC,GAAMA,EAAEC,UAAYnB,IACpC,WAGF,SAV4C,GAYrDoB,OAAQ,EAAG7F,MAAAA,EAAOyE,KAAAA,KAChBzE,GAASW,EAAM4B,MAAMvC,GACjBA,EAAM8F,QAAQJ,MAAMK,GAAMA,EAAEtB,OAASA,SACrC,EACNuB,OAAQ,EAAGvB,KAAAA,KAAiB,MAANA,OAAM,EAAAA,EAAAuB,OAC5BtD,OAAQyB,EAAO,QACf1C,QAAS,EACPmD,QAAAA,EACA5E,MAAAA,EACAyE,KAAAA,EACAoB,OAAAA,EACAG,OAAAA,EACAlB,eAAAA,EACAO,QAAAA,EACAd,OAAAA,EACAgB,OAAAA,KACI7D,CAAA;;kCAE0B6D;QAC1BvF,GACFyE,GACA9D,EAAM4B,MAAMvC,EAAOyE,IACnB/C,CAAA;;;;;wBAKkB+C;6BACKzE;;2BAEH;;;;YAIdW,EAAM4B,MAAMqC,IACdH,IAASG,EAAQH,OAChB9D,EAAM4B,MAAMgC,IAAW5D,EAAMsF,MAAM1B,KACpC7C,CAAA;;;wBAGcf,EAAM4B,MAAMgC,GAAU,YAAc;2BACjCD;;;;;;;;;;;uBAWJ0B,EAAS,SAAWH,EAAS,SAAW;;;;gBAI/CpB,EAAKyB,YACPxE,CAAA,mBAAuB+C,EAAK0B;kBACxB1B,EAAKJ;;iBAENI,EAAKyB,YAAczB,EAAKJ;gBACzBwB,GACFnE,CAAA;;yBAEWsE,EAAS,SAAW;;;;iBAI5BvB,EAAK2B;;;YAGVJ,GACFtE,CAAA;cACI+C,EAAKJ;;;;;;;;UAQT1D,EAAM4B,MAAM8C,IACdA,EAAQgB,iBACR3E,CAAA;;;cAGM2D,EAAQgB,gBACPC,OACAC,UAAU,EAAG,KACbC,MAAM,MACNC,KAAKC,GAAShF,eAAkBgF;cACjCrB,EAAQgB,gBAAgBM,OAAS,KACnCtB,EAAQgB,gBACLG,MAAM,MACNC,KAAKC,GAAShF,2BAA8BgF;;;UAGjD/F,EAAM4B,MAAMuC,MACZA,EAAe6B,QACjBjF,CAAA;;;;;;;gBAOQoD,EAAe2B,KACdzG,GAAU0B,CAA4B1B,wBAAAA;;;;;;MEpJvD4G,EAAexF,EAAyB,CACtC,CAACC,EAAOT,SAAU,CAAEU,IAAK,gBAAiBwC,MAAO,CAACE,EAAQW,EAAMP,IAChE7C,IAAK,sBACLvB,MAAOW,EAAMV,GACb4G,eDpBAnC,ECoB4B,EAAG1E,MAAAA,EAAO8G,iBAAAA,GAAoB1B,IACjDzE,EAAME,IAAI,CAACZ,GAAc,CAC9B8G,SAAS,EACTxF,IAAKuF,EACL/G,GAAIiH,OAAOhH,GACXoF,KAAAA,IDvBG,CACLvE,IAAIgB,EAAMoF,GACF,MAAAC,EAASD,EAAUR,KAAI,CAACU,EAAGC,IAAU1C,EAAG7C,EAAMuF,EAAQ,KAGrD,OAFPF,EAAOG,SAAW,IAAML,OAAOE,EAAOP,QAE/BO,GAETpG,IAAA,CAAIqG,EAAG3D,EAAOyD,IACPzD,EAEDyD,GAAwD,IAA3CA,EAAUA,EAAUN,OAAS,GAAGA,OACxCM,EAGFK,MAAMC,OAAO/D,IAAQgE,KAAK,MANd,CAAC,QCkBxBV,iBAAkB,CAChBtD,MAAO,GACPiE,QAAQ5F,EAAM2B,EAAOyD,IACfzD,GAASyD,KAEXpF,EAAKgF,mBAAgB,KAI3BjC,QAASjE,EAAMkE,GACfnC,OAAQyB,EAAO,QACjB1C,QAAS,EAAGzB,MAAAA,EAAO6G,cAAAA,EAAeC,iBAAAA,EAAkBlC,QAAAA,MAEhD,GAAIiC,EAAcF,OAAQ,CACxB,MAAMe,EAAKb,EAAc,GAErBa,EAAGf,QACIgB,SAAAC,iBAAiB,eAAgB9F,IACxC,MAAM+F,EAAYH,EAAG,GACdI,OAAAC,SAASC,KAAOH,EAAUvG,OAMrC,OAAAI,CAAA;;eAEE1B,WAAOiI,cACTvG,CAAA;;;cAGQ,MAAA1B,OAAA,EAAAA,EAAOiI,YACN3B,OACAC,UAAU,EAAG,KACbC,MAAM,MACNC,KAAKC,GAAShF,CAAA;6BACAgF;eACf,MAAA1G,OAAA,EAAAA,EAAOiI,YAAYtB,QAAS,MAC9B,MAAA3G,OAAA,EAAAA,EAAOiI,YACJ3B,OACAE,MAAM,MACNC,KAAKC,GAAShF,CAAA;yCACYgF;;;;;WAKxB,MAAP1G,OAAO,EAAAA,EAAAkI,oBAAoBvB,SAC/BwB,EAA6B,MAAAnI,OAAA,EAAAA,EAAOkI,qBAAqBzB,KACvD2B,GAAA1G,CAAA;6CACqC0G,EAAM/D;cACrC+D,EAAM5C,cAAciB,KAAKhC,GACzB/C,CAAA;mCACqBL,EAAOC,IAAIqD,EAAM,CAAEF,KAAAA;4CACVA;;;;;WAO3B,MAAPzE,OAAO,EAAAA,EAAA8F,QAAQa,SACnBjF,CAAA;;YAEM1B,EAAM8F,QACLuC,QACC,EAAG5D,KAAAA,MACA9D,EAAM4B,MAAMqC,KAAaA,EAAQ0D,aAAa3G,SAAS8C,KAE3DgC,KAAKZ,GACJnE,CAAA;;0BAEYL,EAAOC,IAAIqD,EAAM,CAAEF,KAAMoB,EAAOpB;;;;4BAI9BoB,EAAOpB;iCACFzE;;+BAEH;;8BAEAuI,IAAI1C,EAAOpB,KAAK1E;;;;WAKnC8G,EAAcF,QAAUG,IAC7BpF,CAAA;;;;;;iBAMiB,MAAP1B,OAAO,EAAAA,EAAAwI,KAAK7B,SAChBjF,CAAA;;kBAEM,CAAC,MAAO,MAAA1B,OAAA,EAAAA,EAAOwI,MAAM/B,KAAKlF,GAC1BA,IAAQuF,EACJpF,CAAA;;;;;;gCAMUH,EAAI8B,QAAQ,KAAM,MAAQ;uCAEpC3B,CAAA;;;;mCAIaA,EAAKZ,IAAI,mBAAoBS;gCAChCA,EAAI8B,QAAQ,KAAM,MAAQ;;;;;gBAM1CwD,EAAcJ,KACbrB,GACCzE,EAAM4B,MAAM6C,IACZA,EAAKqB,KACFzG,GACC0B,CAAA;+CACyB1B;mBAG5B6G,EAAcF,SAAUE,EAAc,GAAGF,SAC9CjF,CAAA;6CDtIc6G,ECuI0B,gBDtI5C1G,IACAA,EAAA0G,GAAmB1G,EAAK0G,GAAY5B,OAAS;;;;;;;;IAFhD,IAAqB4B,KEC5B,SAASE,EAAY5G,GACnBA,EAAK6G,OAHe,GAKpB,MAAMC,EAAY9G,EAAKK,cACrB,0CAEF,GAAIyG,EAAW,CACP,MAAAC,EAAeD,EAAUE,SAAS,GAExCC,uBAAsB,KACpBF,EAAaG,eAAe,CAAEC,MAAO,eAK3C,SAASC,EAAgBpH,EAAsBC,GACvC,MAAAoH,EAAOrH,EAAKK,cAAc,yBAC3BgH,EAAAC,MAAQrH,EAAME,OAAOoH,QAC1BF,EAAKG,MAAMC,QAGb,SAASC,EAAO1H,EAAsBC,GAChC0H,QAAQ,kDACVC,EAAc5H,EAAK7B,MAAsB8B,EAAME,OAAOoH,SAI1D,SAASM,EAAW7H,EAAsBC,GACxC6H,EAAkB9H,EAAK7B,MAAsB8B,EAAME,OAAOoH,SAG5D,SAASQ,EAAU/H,GACX,MAAAqH,EAAOrH,EAAKK,cAAc,yBAC5BgH,GAAMA,EAAKG,MAAMC,QAGvB,IAAAO,EAAezI,EAAuB,CACpC,CAACC,EAAOT,SAAU,CAAEU,IAAK,qBAAsBwC,MAAO,CAACE,EAAQW,EAAMP,IACrE7C,IAAK,oBACLvB,MAAOW,EAAMV,GACb2E,QAASjE,EAAMkE,GACfiF,SAAU,EAAG9J,MAAAA,EAAO0I,MAAAA,GAASqB,KAC3B,IAAK/J,IAAUW,EAAM4B,MAAMvC,GAAQ,MAAO,GAEpC,MAAAgK,EAASD,EACX/J,EAAM8J,SAASG,WAAWC,GAAMH,EAAapI,SAASuI,KACtD,EAEJ,OAAOlK,EAAM8J,SAASK,MAAM,EAAGzB,EAAQsB,GAAQI,WAEjD1B,MApDoB,GAqDpBhG,OAAQyB,EAAO,QACf1C,QAAS,EAAGzB,MAAAA,EAAO8J,SAAAA,EAAUlF,QAAAA,EAAS8D,MAAAA,KAAYhH,CAAA;MAC9C1B,GACFW,EAAM4B,MAAMvC,IACZ0B,CAAA;QACMoI,EAASnD,OACTjF,CAAA;;cAEI1B,EAAM8J,SAASnD,OAAS+B,GAC1BhH,CAAA;;yDAE6C+G;;;;;;;;;;;cAW3CqB,EACCzB,QACC,EAAG5D,KAAAA,KACD9D,EAAMsF,MAAMrB,IACXjE,EAAM4B,MAAMqC,KAAaA,EAAQ0D,aAAa3G,SAAS8C,KAE3DgC,KAAI,CAAC2C,EAAShC,IACb1F,CAAA;;+BAEe0H;+BACApJ;4BACHqB,EAAOC,IAAIqD,EAAM,CAAEF,KAAM2E,EAAQ3E;gCAC7BwE;gCACAM;oCACIG;kCACFhB,EA1FZ,IA2FFtB,EA3FE;;kBA6FJmB,IAAIa,EAAQrJ;oCAGpB2B,CAAA;yDAC+CkI;;;;;mBAKtC5J;;;;MC1FnB,SAASqK,EAAgBxI,EAAkBC,GAGrC,GAFJD,EAAKyI,gBAAiB,EAElBjJ,EAAOkJ,OAAOV,GAAO,CACvB/H,EAAM0I,iBAEN,MAAMC,EAAK5I,EAAKK,cACd,0CAGE,MAAAuI,GAAAA,EAAAC,kBAIR,MAAMC,EAAwBC,MAAO/I,EAAkBC,KACjD,UACoBnB,EAAMiD,QAAQiB,GACpCgG,EAAoBhJ,EAAK7B,aAClBiG,GACP6E,EAAiB,mBAIN1J,EAAmB,CAChCG,IAAK,eACLvB,MAAOW,EAAMV,GACboC,SAAU1B,EAAM2B,EAAgB,CAC9BvC,GAAI,EAAGC,MAAAA,YAAa,OAAAW,EAAM4B,MAAMvC,GAAS,OAAAwC,EAAO,MAAAxC,OAAA,EAAAA,EAAAyC,gBAAO1C,QAAK,KAE9DgL,QAAS,EAAG/K,MAAAA,KAAY,UAAiB,MAAPA,OAAO,EAAAA,EAAAD,KACzC6E,QAASjE,EAAMkE,GACfZ,MAAO5C,EAAO,CAACuF,EAAQiD,GAAO,CAAE3F,OAAQ,CAAC,WACzCoG,gBAAgB,EAChBU,UAAW,GACXC,YAAa,GACbC,SAAU,CACR1H,OAAO,EACPiE,SAAQzH,MAAEA,GAASwD,GACbA,KAAU,MAAAxD,OAAA,EAAAA,EAAOmL,UACnBN,EAAoB7K,KAI1B0C,OAAQyB,EAAO,QACfiH,OAAQC,GAAST,MAAO/I,EAAMuJ,KACrBA,EAAAE,GAAG,mBAAmBV,MAAOxB,IAClCmC,QAAQC,IAAI,mCACZ,MAAMxL,QAAcW,EAAMiD,QAAQ/B,EAAK7B,cACjBW,EAAMiD,QAAQ/B,EAAK+C,UAE7B0D,aAAa5C,MAAM+F,GAAMA,GAAKrC,EAAQ3E,QAI9CzE,IAAUA,EAAM8J,SAASpE,MAAMwE,GAAMA,EAAEnK,KAAOqJ,EAAQrJ,OACxDY,EAAM+K,KAAK1L,EAAO,CAChB8J,SAAU,CAACV,GAASuC,OAAO3L,EAAM8J,YAG9BzI,EAAOkJ,OAAOV,EAAM,CAAE/F,OAAO,MAChCjC,EAAKyI,gBAAiB,OAKrBc,EAAAE,GAAG,mBAAmBV,MAAO7J,IAClCwK,QAAQC,IAAI,mCACZ,MAAMpC,EAAUzI,EAAME,IAAI+K,EAAS7K,EAAOhB,IAEtC,GAAAY,EAAM4B,MAAM6G,GAAU,CAClB,MAAArJ,GAAEA,KAAO8L,GAAW9K,EACpBJ,EAAA+K,KAAKtC,EAASyC,OAIjBT,EAAAE,GAAG,mBAAmBV,MAAO7J,IAClCwK,QAAQC,IAAI,mCACZ,MAAMxL,QAAcW,EAAMiD,QAAQ/B,EAAK7B,OACjCoJ,EAAUzI,EAAME,IAAI+K,EAAS7K,EAAOhB,IAEtCC,GAASW,EAAM4B,MAAM6G,KACvBzI,EAAM+K,KAAK1L,EAAO,CAChB8J,SAAU9J,EAAM8J,SAASzB,QACtB6B,GAAMA,IAAMd,GAAWc,EAAE4B,SAAW1C,MAGnCzI,EAAA+K,KAAKtC,EAAS,UAIjBgC,EAAAE,GAAG,gBAAiBC,QAAQtF,UAErCxE,QAAS,EACPzB,MAAAA,EACAqC,SAAAA,EACA4B,MAAAA,EACAqG,eAAAA,EACA1F,QAAAA,EACAmG,QAAAA,KACIrJ,CAAA;;QAEA1B,GACFW,EAAM4B,MAAMvC,IACZ0B,CAAA;;;iBAGW1B,EAAM+L;yBACE/L,EAAMgM;2BACJhM,EAAMiM;qBACZlB;wBACG/K,EAAMqE;0BACJ1D,EAAM4B,MAAMqC,IAAYA,EAAQH,KAAK1E;;;WAGpD+H,OAAOoE,WAAa,MAAQ7K,EAAOkJ,OAAOV,KAAUnI,CAAA;;cAEjD1B,EAAMqE;;;;;;;;qBAQCrE,EAAMmL,QAAU,YAAc;0BACzBnL,EAAMmL,QAAU,UAAY;;;wBAG9BR;;;;;sBAKFtJ,EAAOC,IAAI8C;;;;;;;;;cASnBpE,EAAMmM,YAAYC,sBACpB1K,CAAA;;;;;gCAKoB1B,EAAMyC,qBAAqBzC,EAAMD;;;;;;;UAQvDC,EAAMyF,SAASgB,KACd4F,GACC3K,CAAA;;wBAEYL,EAAOC,IAAIqD,EAAM,CAAEF,KAAM4H,EAAQzG;;;;;yBAKhCyG,EAAQC;yBACRD,EAAQhI;;;;;4CAMWJ;;;;UAIlCtD,EAAM4B,MAAMvC,KACbqB,EAAOkJ,OAAO,CAACvG,KAChBtC,CAAA;yCACiCL,EAAOkJ,OAAO3D;cACzCjG,EAAM4B,MAAMF,KACbA,EAAS3B,UACVgB,CAAA;;wBAEYL,EAAOC,IAAI0C;;;;;;sBAMb3C,EAAOC,IAAIsF,EAAQ,CAAE5G,MAAAA;;;;wBAInBqB,EAAOkJ,OAAO3D;;;;sBAIhBvF,EAAOC,IAAIuI,EAAM,CAAE7J,MAAAA;;;;wBAIjBqB,EAAOkJ,OAAOV;qBACjBS;yBACID;;;;;;;MCvOzB,MAAMkC,EAAc,EAAGvM,MAAAA,MACd8H,OAAAC,SAASC,KAAOhI,EAAMsB,KAGhBF,EAAmB,CAChCG,IAAK,eACLvB,MAAOW,EAAMV,GACbyC,OAAQ,EAAG1C,MAAAA,KAAY0B,CAAA;oBACL6K;;4BAEe,MAAPvM,OAAO,EAAAA,EAAAwM;qBACP,MAAPxM,OAAO,EAAAA,EAAAqE;;;IAGxB1B,GAAA"}